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 に答える