レプリケーションとスコアの問題

トピック作成者:ks-solruserml-bot (2024/05/23 12:45 投稿)
2
CloseClose

(The bot translated the original post https://lists.apache.org/thread/4lj4o6g6xh94lccf9zpwx2dxc76rj8xw into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

ソーラーバージョン8.6.2を使用しています。

私のコレクションには48個のシャードがあり、30秒のソフトコミットと2分のハードコミット(opensearcher=false)を設定しています。

二つのレプリカが、Num Docsは完全に一致しているのに、Max DocとDeleted Docsが異なることに気付きました。

同じクエリを何度も実行すると、最大スコアが異なることがあります。クエリのnumFoundは完全に同じです。

expungeDeletesを実行すると、同じ最大スコアが返されます。

以下の質問があります:

  1. レプリカのMax DocとDeleted Docが異なるのは正常ですか?
  2. BM25はMax DocsおよびDeleted Docsを気にしますか?

Jae

返信投稿者:ks-solruserml-bot (2024/05/23 12:46 投稿)

こんにちは、

もしあなたのレプリカがすべてNRT(Near Real-Time)であれば、それぞれのレプリカがドキュメントをインデックス化します。彼らのコミットとセグメントマージサイクルは独立しているため、各レプリカで異なるMaxDocおよびDeletedDocが表示されるのは正常です。

BM25が削除されたドキュメントを気にしないと期待できますが、確実に答えることはできません。

よろしくお願いします。

Dominique

返信投稿者:ks-solruserml-bot (2024/05/23 12:46 投稿)

BM25スコアのDF(ドキュメント頻度)コンポーネントを計算する際、Apache Lucene BM25の類似度は以下を使用します:

org.apache.lucene.search.similarities.BM25Similarity#idfExplain(org.apache.lucene.search.CollectionStatistics, org.apache.lucene.search.TermStatistics)

注:

  • CollectionStatistics.docCount() は IndexReader#numDocs() の代わりに使用されます。これは TermStatistics.docFreq() も使用されるためであり、後者が不正確な場合、前者も同じ方向で不正確になるためです。また、CollectionStatistics.docCount() はフィールドがスパース(まばら)な場合に偏りません。

CollectionStatistics.docCount()

  • このフィールドに少なくとも1つの用語が含まれているドキュメントの総数。この値は常に正の数であり、maxDoc() を超えることはありません。
  • 戻り値:
  • このフィールドを含むドキュメントの総数、範囲は [1 .. maxDoc()] です。
  • 参照:
  • このフィールドに少なくとも1つの用語が含まれているドキュメントの数を返します。他の用語の測定値と同様に、この測定値も削除されたドキュメントは考慮しません。

したがって、現在のところ docCount は削除されたドキュメントに関して問題ありません(以前は問題がありました: LUCENE-6711)。

分散DF

よろしくお願いします。


Alessandro Benedetti
Apache Lucene/Solr Committer
Director, R&D Software Engineer, Search Consultant
www.sease.io

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?