0

我正在使用构面将分区搜索结果划分为范围。搜索返回一个列表项,每个项都有一个分数。在列表中,项目按分数从高到低排序。有些项目也可能有相同的分数。

我使用构面来获得前 10 名,然后是下 100 名。

我的想法是使用范围方面。问题是我从来不知道格言分数。每次都不一样。但是由于搜索结果是按分数顺序返回的,我可能可以使用范围方面而不关心范围:
//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。我可能会检查结果中最后一项的分数,第一个方面返回并将其用作我的顶部范围,但如果有具有该精确分数的项目,它们将被跳过。

有没有办法用方面做我需要的事情?

4

1 回答 1

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()
于 2013-04-22T21:25:59.317 回答