2

SolrNet を使用してアクセスする solr インデックスがあり、結果セット全体を返すことなく、結果内の特定のドキュメントのインデックス (位置) を取得したいと考えています。

さらに詳しく説明すると、クエリは最大 30,000 のドキュメントを返し、整数フィールドで並べ替えられます。一意のキー フィールドには Guid が含まれており、最初の 10 件の結果のみを返しながら、一意のキーに基づいて特定のドキュメントが結果のどこにあるかを見つけたいと考えています。

このインデックスはもともとプレーンな古い Lucene で実装されており、このタスクは 2 つのクエリで達成されました。次に、ドキュメント ID を使用して、ドキュメントが完全な結果セットのどこに表示されるかを見つけることができますが、最初の 10 個のドキュメントのみを列挙します。

30000 の結果すべてを返さずに、Solr を使用して目的を達成する方法はありますか (これを Guid に限定しても遅すぎるようです)。

ありがとう

4

2 に答える 2

5

ユーザーポイントの下位レベルを含め、範囲クエリを使用して、上位のユーザー数を取得できると思います。明示的なクエリを実行するか、ファセット範囲アプローチを使用してその情報を取得できます。

したがって、ユーザー ポイントが 10.000 であることがわかっている場合、次のクエリを実行できます: game:tetris points[MaxInt TO 10000]。結果が 375 の場合、ユーザーのランクは 375 であることがわかります。

于 2011-01-14T11:03:11.880 に答える
0

私が考えることができる唯一の信頼できる方法は、インデックス時にランキングを構築することです。つまり、「ランク」整数フィールドを持ち、インデックスを構築するときに入力します。これの欠点は、すべての更新でインデックス全体を再構築する必要があることです。

Lucene doc id は安定していないため、これを使用することはお勧めしません ( thisthisthisを参照)。また、Solr はとにかくそれらを公開しません。

于 2011-01-06T14:44:56.917 に答える