「*」(アスタリスク文字)を検索する際の結果セットの順序

トピック作成者:ks-solruserml-bot (2024/06/04 22:46 投稿)
4
CloseClose

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

こんにちは皆さん、

「*」(アスタリスク文字)で検索すると、結果のソート順序は何に基づいていますか?

ありがとうございます

Steven

返信投稿者:ks-solruserml-bot (2024/06/04 22:46 投稿)

ソートオプションが設定されていない場合、スコアフィールドを追加してみてください。すべてのドキュメントが表示され(スコア順に並べられています)、通常はクエリがない場合はスコアが1になります。

Vincenzo D'Amore

返信投稿者:ks-solruserml-bot (2024/06/04 22:46 投稿)

ソートオプションは何も設定していません。取得しているスコアは各ヒット項目に対して1.0です。

Luceneの内部機能について、返される順序を理解するための情報を知っている人はいますか?

Steven

返信投稿者:ks-solruserml-bot (2024/06/04 22:46 投稿)

ソートオプションが設定されていない場合、通常はスコア(現在は「:」のようなケース(MatchAllDocsQuery)でもスコアが無関係であることが保証されています;詳細は https://issues.apache.org/jira/browse/SOLR-14765 を参照してください)にデフォルトでなります。

しかし、機能的にはそれほど重要ではありません。主要なソートが「タイ」の場合(この場合、実質的に「1つの大きなタイ」があります)、またはソートが一切ない場合、結果の順序はLuceneインデックスでシリアル化されたドキュメントの順序によって決まります。この順序は任意のものであり、同じインデックスの異なるレプリカ間で異なる可能性があります。

安定性が必要な場合(多くの場合そうです)、例えば sort=score,id のようなデフォルトのsortパラメータを追加することができます(id はユニークな明示的なタイブレーカーとして機能します)。この状況の処理や考慮すべき微妙な点には他のオプションがありますが、それらはすべて、タイやソートがない場合の返される結果の順序が任意で不安定であるという直接的な答えに基づいています。

返信投稿者:ks-solruserml-bot (2024/06/04 22:47 投稿)

追加情報として、Michael が指定した内容について補足します。

「Lucene インデックス内のドキュメントの順序は、Lucene インデックスでシリアル化されたドキュメントの順序によって決まります。この順序は任意であり、同じ「シャード」の異なるレプリカ間で異なる可能性があります。」

バックグラウンドでセグメントがマージされるまで、ドキュメントの内部 Lucene ID はインデックス作成の順序と一致します。
したがって、この特性(つまり、最終的なタイブレーカーはインデックス作成のタイミングである)に依存することに惑わされる可能性があります。
ただし、更新、削除、バックグラウンドでのマージ(および可能性がある他の内部メカニズム)が常に発生するため、スコアのタイブレークを解決する責任は常に自身にあり、ドキュメントの内部 Lucene ID に依存することは決してありません。

よろしくお願いします。

Alessandro Benedetti
Apache Lucene/Solr コミッター
ディレクター, R&D ソフトウェアエンジニア, 検索コンサルタント

www.sease.io

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

KandaSearch

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

投稿の削除

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