44

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

つまり、次を検索した場合:

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

パーティション 0は 0.345 のスコアを返します

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

どちらも名前と生年月日が完全に一致します。

4

3 に答える 3

19

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

これを回避するには、インデックスをすべてのパーティションに配置するか、IDF をオーバーライドする必要があります。

于 2008-08-02T09:51:00.883 に答える
13

私が完全に間違っていなければ、スコアはインデックスで決まるからです。

異なるインデックス (インデックス化されたデータが多い/少ない、または異なるデータ) がある場合、スコアは異なります。

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

(警告: 数学が含まれています :-))

于 2008-08-02T09:52:36.870 に答える
8

explain()methodの出力と結果のExplanationobjectにも興味があるかもしれません。これにより、物事がどのようにスコアリングされるかがわかります。

于 2008-08-02T20:03:06.483 に答える