Was ich suche, ist klar, klare Erklärung, wie Standard-Scoring-Mechanismus von ElasticSearch (Lucene) wirklich funktioniert. Ich meine, verwendet es Lucene Scoring, oder nutzt es vielleicht eigene Scoring?ElasticSearch Standard-Scoring-Mechanismus
Zum Beispiel möchte ich nach Dokumenten suchen, zum Beispiel nach "Name" -Feld. Ich benutze .NET NEST Client, um meine Abfragen zu schreiben. Lassen Sie uns diese Art der Abfrage betrachten:
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")))
);
, die zu solchen JSON Abfrage übersetzt:
{
"from": 0,
"size": 300,
"explain": true,
"query": {
"match": {
"Name": {
"query": "ExampleName"
}
}
}
}
Es rund 1,1 Millionen Dokumente, die Suche auf durchgeführt wird. Was ich dafür zu bekommen, ist (dass nur ein Teil des Ergebnisses ist, formatiert auf meinem eigenen):
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
wo erste Feld nur eine ID, die zweite ist Namensfeld, auf dem Elasticsearch ausgeführt es die Suche und dritten ist Punktzahl.
Wie Sie sehen können, gibt es viele Duplikate im ES-Index. Da einige der gefundenen Dokumente unterschiedliche Werte haben, obwohl sie genau die gleichen sind (mit nur unterschiedlicher ID), kam ich zu dem Schluss, dass verschiedene Shards die Suche nach verschiedenen Teilen des gesamten Datasets durchführen Daten in gegebener Shard, nicht ausschließlich auf Dokument, das tatsächlich von der Suchmaschine berücksichtigt wird.
Die Frage ist, wie funktioniert das Scoring genau? Ich meine, könnten Sie mir sagen/zeigen Sie mir/genaue Formel, um die Punktzahl für jedes von ES gefundene Dokument zu berechnen? Und schließlich, wie kann dieser Bewertungsmechanismus geändert werden?
OK, das deckt ziemlich genau das ab, was ich wissen wollte. Die Information, dass ES ausschließlich Lucenes Ähnlichkeit verwendet, ist sehr hilfreich. Vielen Dank! –
Weitere Einzelheiten zu Faktoren in Lucenes Bewertungsalgorithmus: http://www.lucenetutorial.com/advanced-topics/scoring.html – ThoQ