我正在使用facet将分区搜索结果放入范围。 搜索返回一个列表项,每个项都有一个分数。在列表中,项目按从高到低的分数排序。有些项目也可能有相同的分数。
我使用facet获得前10名,然后是下一名100。
我的想法是使用范围方面。问题是,我从来不知道格言scor。每次都不同。但是由于搜索结果按照得分顺序返回,我可以使用范围方面而不关心范围:
//top 10 best matches with score: [0-infinity) but since they items are ordered I think it will return top 10 items
FacetBuilders.rangeFacet("top10Matches").field("score").addUnboundedTo(0).size(10)
这很简单。现在我不知道如何获得下一个块,这是上一个方面停止的地方,大小为100.我可以检查结果中第一个方面返回的结果中的最后一个项目的分数,并将其用作我的顶部范围,但如果有具有该确切分数的项目,则将跳过它们。
有没有办法用facet做我需要的东西?
答案 0 :(得分:0)
我可以使用setFrom(Int)
方法。不需要任何方面。
val queryString = client.get.prepareSearch()
.setQuery(QueryBuilders.matchQuery(NODE_PATH_TO_SEARCH, query))
.setFrom(currentPageNumber*MAX_DISPLAYABLE_RESULTS)
.setSize(MAX_DISPLAYABLE_RESULTS)
queryString.execute().actionGet()