2013-04-11 68 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()