2013-04-11 42 views
0

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

我使用方面获得前10名,那么接下来的100

我的想法是使用范围方面。问题是,我从来不知道最大的scor。每次都不一样。但由于搜索结果是按照分值为了返回我也许可以使用的范围小而无需关心AB范围:
//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.我可以检查结果中最后一个项目的得分,返回第一个方面并将其用作我的顶部范围内,但如果有确切分数的项目,他们将被跳过。

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

+0

只是一个评论。就我个人而言,我不使用方面,甚至不知道它们是什么。使用ORM并请求从N到M的条目(严格按照某种方式排序)。 – VasyaNovikov 2013-04-22 06:41:26

回答

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()