Lucene で、それぞれ 1 つのパーティションのみをカバーする複数のインデックスがある場合。異なるインデックスで同じ検索を行うと、異なるスコアの結果が返されるのはなぜですか? 異なるサーバーからの結果は正確に一致します。
つまり、次を検索した場合:
- 名前 - ジョン・スミス
- 生年月日 - 1934 年 11 月 11 日
パーティション 0は 0.345 のスコアを返します
パーティション 1は 0.337 のスコアを返します
どちらも名前と生年月日が完全に一致します。
スコアリングには、Inverse Document Frequency (IDF) が含まれます。「John Smith」という用語が 1 つのパーティションにある場合は、0 で 100 回、パーティション 1 で 1 回です。John Smith を検索するためのスコアは、用語がより少ないため、パーティション 1 でより高い検索になります。
これを回避するには、インデックスをすべてのパーティションに配置するか、IDF をオーバーライドする必要があります。
私が完全に間違っていなければ、スコアはインデックスで決まるからです。
異なるインデックス (インデックス化されたデータが多い/少ない、または異なるデータ) がある場合、スコアは異なります。
http://lucene.apache.org/core/3_6_0/scoring.html
(警告: 数学が含まれています :-))
explain()
methodの出力と結果のExplanation
objectにも興味があるかもしれません。これにより、物事がどのようにスコアリングされるかがわかります。