2008-08-02 13 views
36

それぞれ1つのパーティションしかカバーしていない複数のインデックスがある場合、Luceneでは、なぜ異なるインデックスで同じ検索が異なるスコアで結果を返しますか?異なるサーバーの結果が正確に一致します。Luceneスコアの結果

私が検索した場合、すなわち:

  • 名 - ジョン・スミス
  • DOB - 1934年11月11日

パーティション0は0.345

のスコアを返しますパーティション1は、0.337

のスコアを返します

名前とDOBの両方が正確に一致します。

答えて

18

scoringには、Inverse Document Frequency(IDF)が含まれています。 「John Smith」という用語が1つのパーティションにある場合は、0回、100回、パーティション1では1回です。ジョン・スミスを検索するスコアは、用語がより少ないため、パーティション1での検索が高くなります。

これを回避するには、インデックスをすべてのパーティションに配置する必要があります。そうしないと、IDFを上書きする必要があります。

+1

また、すべてのインデックスからマルチサーチを構築することもできます。 –

13

私が完全に間違っていない場合、スコアはインデックス上で決定されるためです。あなたが別のインデックス(インデックス付けされた以上/以下または異なるデータ)を持っている場合

、スコアが異なります:

http://lucene.apache.org/core/3_6_0/scoring.html

(警告:数学:-)を含みます)

+2

更新されたリンク: http://lucene.apache.org/java/2_4_0/scoring.html –

7

あなたがかもしれませんまた、explain() methodの出力とその結果のExplanation objectの出力に興味があります。これにより、物事がどのように採点されているかを知ることができます。

関連する問題