私が探しているのは、ElasticSearch(Lucene)のデフォルト採点メカニズムが実際にどのように機能しているかについての明確かつ明確な説明です。つまりLuceneスコアリングを使用するのでしょうか、それとも独自のスコアリングを使用するのでしょうか?ElasticSearchのデフォルトの採点メカニズム
たとえば、「名前」フィールドなどでドキュメントを検索したいとします。私は.NET NESTクライアントを使用してクエリを記述します。のは、このタイプの問合せを考えてみましょう:
なJSONクエリに変換されIQueryResponse<SomeEntity> queryResult = client.Search<SomeEntity>(s =>
s.From(0)
.Size(300)
.Explain()
.Query(q => q.Match(a => a.OnField(q.Resolve(f => f.Name)).QueryString("ExampleName")))
);
:
{
"from": 0,
"size": 300,
"explain": true,
"query": {
"match": {
"Name": {
"query": "ExampleName"
}
}
}
}
検索がオンに行われる程度110万のドキュメントがあります。私は、見返りに取得すること(つまり、自分でフォーマットされた結果の一部だけ、である)である:
最初のフィールドはちょうど同上、第二は、名前ElasticSearchは、それが検索です行われているフィールド、および第三である650 "ExampleName" 7,313398
651 "ExampleName" 7,313398
652 "ExampleName" 7,313398
653 "ExampleName" 7,239194
654 "ExampleName" 7,239194
860 "ExampleName of Something" 4,5708737
スコアです。
ご覧のとおり、ESインデックスには重複が多数あります。発見された文書の中には異なるスコアがあるものの、それらがまったく同じであるにもかかわらず、異なるアイデアでは同じであるにもかかわらず、異なるデータセットの異なる部分を検索することで、全体的にスコアがいくぶんかとなる検索エンジンで実際に検討されている文書に限定されるわけではありません。
質問は、どのくらい正確にこのスコアリングが機能しますか? ESで見つかった各文書のスコアを計算するための正確な公式を教えてもらえますか?そして、最終的に、この採点メカニズムをどのように変更することができますか?
OK、それは私が知りたいと思っていたことをかなりカバーしています。 ESが純粋にLuceneの類似性を使用しているという情報は非常に役に立ちます。ありがとう! –
Luceneの得点アルゴリズムの要因に関する詳細:http://www.lucenetutorial.com/advanced-topics/scoring.html – ThoQ