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 query = params("query")(0)
|
||||||
val page = params.get("page").collect({ case l => l.get(0) })
|
val page = params.get("page").collect({ case l => l.get(0) })
|
||||||
val pageSize = params.get("pageSize").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)
|
var sr = new SearchRequest(server, channel, botName, query)
|
||||||
if (page.isDefined)
|
if (page.isDefined)
|
||||||
sr = sr.copy(page = page.get.toInt)
|
sr = sr.copy(page = page.get.toInt)
|
||||||
if (pageSize.isDefined)
|
if (pageSize.isDefined)
|
||||||
sr = sr.copy(pageSize = pageSize.get.toInt)
|
sr = sr.copy(pageSize = pageSize.get.toInt)
|
||||||
|
if (details.isDefined)
|
||||||
|
sr = sr.copy(details = details.get.toBoolean)
|
||||||
sr
|
sr
|
||||||
} else {
|
} else {
|
||||||
throw new UnsupportedOperationException("HTTP method " + method + " is not supported")
|
throw new UnsupportedOperationException("HTTP method " + method + " is not supported")
|
||||||
}
|
}
|
||||||
|
|
||||||
Searcher.search(searchRequest)
|
(searchRequest, Searcher.search(searchRequest))
|
||||||
}
|
}
|
||||||
f onSuccess {
|
f onSuccess {
|
||||||
case searchResult =>
|
case (searchRequest, searchResult) =>
|
||||||
logRequest(ctx, request, sendSuccess(ctx, request, Serialization.write(searchResult)))
|
logRequest(ctx, request,
|
||||||
|
sendSuccess(ctx, request,
|
||||||
|
if (searchRequest.details)
|
||||||
|
Serialization.write(searchResult)
|
||||||
|
else
|
||||||
|
Serialization.write(searchResult.toSimpleSearchResult)))
|
||||||
}
|
}
|
||||||
f onFailure { case e : Exception => {
|
f onFailure { case e : Exception => {
|
||||||
logger.error("Error", e)
|
logger.error("Error", e)
|
||||||
|
|
|
@ -18,16 +18,28 @@ case class IndexRequest(
|
||||||
|
|
||||||
case class SearchRequest(
|
case class SearchRequest(
|
||||||
server : String, channel : String, botName : String, query: String,
|
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(
|
case class SearchResult(
|
||||||
server : String, channel : String, botName : String, query: String,
|
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 {
|
object SearchResult {
|
||||||
def fromSearchRequest(searchRequest : SearchRequest) = searchRequest match {
|
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())
|
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]]])
|
||||||
|
|
Loading…
Reference in New Issue