2011-07-24 18 views
6

異なるLuceneクエリ間で検索結果の関連性を比較する必要があります。Lucene:クエリ間の結果を比較する

実際にはインデックス付きのテキストドキュメントがあり、このセットで検索が行われると、このセットのN個の最良の結果ではなく、「十分に良い」クエリに一致するすべての結果が返されます。

この「十分な」パラメータは、0(ドキュメントは絶対に無関係)と1(ドキュメントは最もマッチ可能です)の間で設定可能ですが、同じ方法ですべてのクエリに影響を与えたいと思います。

私がインターネット上で見つけたことから、それは簡単な作業ではありません。誰も私にこの問題にアプローチする方法のヒントを教えてもらえますか?

ありがとうございます!

+0

どういう意味ですか?クエリ結果のしきい値を外しますか?それはSolrと簡単に行うことができます。 Luceneでは、カスタムコレクタを作成する必要があります:ここを見てくださいhttp://stackoverflow.com/questions/2871558/remove-results-below-a-certain-score-threshold-in-solr-lucene – Mikos

+0

ありがとうMikos、それとしてShashikant Koreのコメントに書かれていますが、スコアはクエリに関連しているため、複数のクエリで結果の「良さ」を測定するために同じしきい値を使用することはできません。私は何らかの形でスコアを正規化する方法を検討しているので、これらの正規化された値はすべてのクエリの「良さ」の点で同じ意味を持ちます。 – Serpenty

+0

ああ!私はあなたの質問をよく理解していると思うが、それはLucene自身よりも統計に適していると感じている。統計上のANOVA検定またはChi-squared検定を検索すると同時に、結果文書のスコアの配列を使用して問合せ全体の適合度を判断するのに役立ちます。 HTH。 – Mikos

答えて

1

あなたは[0,1]区間にスコアを正規化する場合であっても、それは別のクエリのスコアを比較することが明らかに間違っている、私はちょうどこれと同じ質問への答えを探していたHow to normalize Lucene scores?

0

2つ以上のクエリを比較する場合は、回避策が見つかりました。 LevenstheinDistanceまたはLuceneLevenstheinDistance(Damerau)クラスを使用して、あなたの最高得点のドキュメントとあなたのクエリーの結果を比較することができます。

結果は類似しています。比較するクエリごとにこれを行います。今度は、クエリの類似性と最高の結果を使ってクエリを比較するツールがあります。類似度のスコアが最も高いクエリを選択して、次に適切なアクションに使用できます。

//Damerau LevenstheinDistance 
LuceneLevenshteinDistance d = new LuceneLevenshteinDistance(); 

similiarity = d.getDistance(queryterm, yourResult); 
+0

@piyushj私を修正していただきありがとうございますbtw :) – Blackeye

関連する問題