2011-11-23 3 views
8

私は多くのエントリを持つSolrインデックスを持っており、クエリにはいくつかのサブセットが返されます。結果が得点で返されると、あるスコア以上の結果(つまり、特定の品質の結果のみ)を「保持」できるようにしたい。返されたサブセットが何かになる可能性があるときにこれを行うことは可能ですか?返される結果とは関係なく、Solr Scoreのしきい値を '合理的に'設定できますか? (すなわち、Solrスコアリングはどのような方法でも標準化されています)

いくつかのクエリのように思われるので、0.008というスコアはまともな一致をもたらしますが、他のクエリのスコアが高いほど結果は劣ります。

理想的には、少なくとも特定の品質である限り、トップxのエントリを取得する方法を探しています。

ありがとうございます!

+0

も参照してください:http://stackoverflow.com/questions/5379176/how-to-normalize-lucene -scores http://stackoverflow.com/questions/3986220/how-do-i-normalise-a-solr-lucene-score http://stackoverflow.com/questions/2871558/remove-results-below-a-certain -score-threshold-in-solr-lucene/15765203 – kenorb

答えて

4

私はあなたがこれを行うべきではないと思います。 TF-IDFスコアリングモデルでは、すべての結果が関連しているスコアを計算する方法はなく、その逆もあります。これを行うと、(ドキュメントの頻度が変わるため)インデックスの更新後にこのしきい値が有効にならない可能性が高くなります。

これをやりたければ、関数クエリを使用して達成できると思います:if(トランク内)とqueryの関数がSolrで利用可能です。特定のしきい値よりも高いスコアを持つエントリだけを保持できるように、結果をフィルタリングしてください。

+0

+1 for "... co上記のすべての結果が関連しているスコアを返す " – aitchnyu

+0

ありがとう!、あなたには最良の結果を「選別する」推奨方法がありますか? maxScoreで割る@Jayendraの解の線に沿った何か。 – csjohn

+0

これを行う良い方法がないので、私は持っていません。スコアをパーセンテージとして書き直しても、欺瞞的な結果が得られます。しかし、純粋な分離型クエリを使用している場合は、(E)DisMaxQueryParserの 'minimum should match'パラメータに興味があるかもしれません。たとえば、少なくとも75%の句がドキュメントと一致する必要があります。結果に含めること。 – jpountz

2

最初にScoresAsPercentagesに行きたいですか?

Solrは、クライアント側で簡単に実行できるため、スコアを正規化しません。
すべてのスコアを maxScoreで割って、結果に表示されるmaxScoreを使用できます。
最初のレコードのスコアは1、残りは1です。

+0

私は以前にScoresAsPercentagesの文書を読んだことがあります。そのようなことをしないと重い提案です。 maxScoreで分けるとどう思いますか?つまり、結果の意味のある比較を提供するのか、それともそれほど優れていないのでしょうか。答えをありがとう。 – csjohn

+0

maxscoreで除算すると、結果をフィルタリングして範囲指定できるはずです。ただし、maxscoreを持つ文書が関連していることを保証するものではありません。 – Jayendra

関連する問題