Solr/Luceneが完全な結果ではなく選択した文書のランクを返す方法はありますか?

{10、20、30、...}のドキュメントが返されたときに、 q クエリでSolrにクエリを行い、ドキュメントセットのリコールを図表することに興味があります。

現在、私は完全な結果、すなわち(solrpyを介して)返されたdocidsのリストを持っていて、それを繰り返して DD 検索結果のインデックスに表示されます。私は厳密にマッピングを必要とせず、マップされたランクのみを必要とします。

完全な結果ではなく、一連のIDに対してSolr/Luceneの戻り値のランク付けを行う方法はありますか?

この問題に近づく他の方法:

  • For a query, return the rank of document d
  • For a query up to a specified rank, return whether or not document d is present
  • From a query q1 result up to a specified number of records, return the number of records matched by another query q2
8
+そのような珍しい質問のために1を出しました。あなたが解決しようとしている問題は?
追加された 著者 aitchnyu,
うーん、Luceneライブラリを使うほうが良い方法だと思う。
追加された 著者 aitchnyu,
一般的に、私は選択されたドキュメントのソールのリコールを異なるクエリの下でチャート化したいと思います。より具体的には、言語学的に制約のあるクエリに対して最高の記事を見つけることを含む計算言語学の研究のために収集されたデータを分析しています。私は、さまざまなクエリを構築し、私の問題をどれほどうまく解決できるかを判断できる必要があります。
追加された 著者 joeln,

2 答え

スコアフィールドでランクを取得できます。

Append &fl=KeyFieldName,score to retrieve document id and score to your query. If you need all fields append &fl=*,score to your query.

詳細については、 http://wiki.apache.org/solr/SolrRelevancyFAQ#How_can_I_see_the_relevancy_scores_for_search_results を参照してください。

4
追加された
スコアフィールドは私に必要以上の情報を提供します。私は実際にリストの結果を必要としません、私はちょうど特定の結果が表示されるランクで知る必要があります。したがって、結果を調べるには&fl = KeyFieldName で十分です。しかし、何千もの結果があれば、サーバーから戻ってきた情報は、特定のKeyFieldName値がどのランクで表示されているかを知るためだけに必要以上に多くなります。
追加された 著者 joeln,

いいえ、私はこれを行うSOLRやLuceneの方法を考えることはできません。 私はここで最も簡単な解決策は、これを簡単なHashSetでプログラムすることだと思います...

1
追加された
ハッシュはどのように役立つでしょうか? 1つのフィールドでソートしてインデックスを照会すると、リスト内の特定のドキュメントのランクを知りたいとします。
追加された 著者 toni,
これはおそらくあなたがすでにやっていることでしょう:すべてのDのcodIDを(HashSet)セットに入れて、SOLR結果セットを繰り返してIDがあなたのセットに入っているかどうかチェックしてください。結果セット(多くのページ)を詳しく調べる場合は、SOLRカーソルを使用します。
追加された 著者 Hugo Zaragoza,