Added support for a simple search result json
parent
2d50b9bb73
commit
2bf175e705
|
@ -199,21 +199,30 @@ object SearchHandler extends HttpRequestHandler {
|
|||
val query = params("query")(0)
|
||||
val page = params.get("page").collect({ case l => l.get(0) })
|
||||
val pageSize = params.get("pageSize").collect({ case l => l.get(0) })
|
||||
val details = params.get("details").collect({ case l => l.get(0) })
|
||||
|
||||
var sr = new SearchRequest(server, channel, botName, query)
|
||||
if (page.isDefined)
|
||||
sr = sr.copy(page = page.get.toInt)
|
||||
if (pageSize.isDefined)
|
||||
sr = sr.copy(pageSize = pageSize.get.toInt)
|
||||
if (details.isDefined)
|
||||
sr = sr.copy(details = details.get.toBoolean)
|
||||
sr
|
||||
} else {
|
||||
throw new UnsupportedOperationException("HTTP method " + method + " is not supported")
|
||||
}
|
||||
|
||||
Searcher.search(searchRequest)
|
||||
(searchRequest, Searcher.search(searchRequest))
|
||||
}
|
||||
f onSuccess {
|
||||
case searchResult =>
|
||||
logRequest(ctx, request, sendSuccess(ctx, request, Serialization.write(searchResult)))
|
||||
case (searchRequest, searchResult) =>
|
||||
logRequest(ctx, request,
|
||||
sendSuccess(ctx, request,
|
||||
if (searchRequest.details)
|
||||
Serialization.write(searchResult)
|
||||
else
|
||||
Serialization.write(searchResult.toSimpleSearchResult)))
|
||||
}
|
||||
f onFailure { case e : Exception => {
|
||||
logger.error("Error", e)
|
||||
|
|
|
@ -18,16 +18,28 @@ case class IndexRequest(
|
|||
|
||||
case class SearchRequest(
|
||||
server : String, channel : String, botName : String, query: String,
|
||||
page : Int = 0, pageSize : Int = 10)
|
||||
page : Int = 0, pageSize : Int = 10, details : Boolean = false)
|
||||
|
||||
case class SearchResult(
|
||||
server : String, channel : String, botName : String, query: String,
|
||||
page : Int, pageSize : Int, totalResults : Int, chatLines : List[ChatLine])
|
||||
page : Int, pageSize : Int, totalResults : Int, chatLines : List[ChatLine]) {
|
||||
def toSimpleSearchResult =
|
||||
SimpleSearchResult(server, channel, botName, query, page, pageSize, totalResults,
|
||||
chatLines map {
|
||||
case mline@ChatLine(_, _, _, contextBefore, contextAfter) =>
|
||||
((contextBefore :+ mline) ++ contextAfter) map { line =>
|
||||
List(line.timestamp.toString, line.user, line.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
object SearchResult {
|
||||
def fromSearchRequest(searchRequest : SearchRequest) = searchRequest match {
|
||||
case SearchRequest(server, channel, botName, query, page, pageSize) =>
|
||||
case SearchRequest(server, channel, botName, query, page, pageSize, _) =>
|
||||
new SearchResult(server, channel, botName, query, page, pageSize, 0, List())
|
||||
}
|
||||
}
|
||||
|
||||
case class SimpleSearchResult(
|
||||
server : String, channel : String, botName : String, query: String,
|
||||
page : Int, pageSize : Int, totalResults : Int, lines : List[List[List[String]]])
|
||||
|
|
Caricamento…
Fai riferimento in un nuovo problema