0

Solr インデックスから特定の (「n 番目の行」のようなもの) のみをフェッチする必要があります。たとえば、完全な結果に 10000 行が含まれている場合、100 アイテム バケットごとに最初と最後の行のみを受け取りたいと考えています。

アイテム 1 と 100 アイテム 101 と 200 アイテム 201 と 300...

このグループ化は動的で、結果の数に依存します。したがって、合計結果行が 5000 しかない場合、バケット サイズは 100 ではなく 50 になります。実際のインデックスを計算することはできますが、問題は Solr からそれらをフェッチする方法です。

クエリ パラメータとして直接使用できるインデックス付きフィールドはありません。実際には、「A で始まる名前」(または他の文字) で検索を行っており、A で始まる 1 番目のアイテム、A で始まる 100 番目のアイテム、A で始まる 101 番目のアイテムなどを受け取りたいと考えています。

クエリ パラメーターhttp://wiki.apache.org/solr/CommonQueryParametersには「行」と「開始」がありますが、これらは項目をスキップできないため、非効率的な個別のクエリで各項目を取得する必要があります。また、項目 2...99、192...199 を除外するフィルター クエリを実装することも考えていましたが、その実装方法がわかりません。

4

1 に答える 1

0

startこれを行う簡単な方法はわかりませんが、これにより、やり取りする必要のあるデータの量が減ります。通常のパラメーターとパラメーターを使用して通常のクエリを実行しますrowsが、Solrに次のIDフィールドのみを返すように指示します。各ドキュメント(flパラメーターを介して)。クライアントコードで、最初と最後のドキュメントのIDを保存し、次の値を使用してクエリを繰り返しますstart。検索結果の最後に到達すると、必要なドキュメントIDのリストが表示されます。新しいクエリを実行して、返すドキュメントIDのリストを指定します。今回は、完全なドキュメントを取得します。

于 2012-07-12T18:00:35.747 に答える