Quello che sto cercando è una spiegazione chiara e chiara di come funziona davvero il meccanismo di punteggio predefinito di ElasticSearch (Lucene). Voglio dire, usa il punteggio di Lucene, o forse usa un punteggio proprio?Meccanismo di punteggio predefinito ElasticSearch
Ad esempio, desidero cercare il documento, ad esempio, nel campo "Nome". Uso il client .NET NEST per scrivere le mie domande. Prendiamo in considerazione questo tipo di query:
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")))
);
che si traduce a tale interrogazione JSON:
{
"from": 0,
"size": 300,
"explain": true,
"query": {
"match": {
"Name": {
"query": "ExampleName"
}
}
}
}
V'è di circa 1,1 milioni di documenti che la ricerca viene eseguita su. Quello che ricevo in cambio, è (che è solo una parte del risultato, formattato per conto mio):
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
cui primo campo è solo un ID, secondo è Nome campo su cui elasticsearch eseguita è la ricerca, e la terza è il punteggio.
Come potete vedere, ci sono molti duplicati nell'indice ES. Dato che alcuni dei documenti trovati hanno un punteggio diverso, nonostante siano esattamente gli stessi (con solo Id diffrent), ho concluso che frammenti diversi eseguivano ricerche su parti differenti dell'intero set di dati, il che mi porta a seguire che il punteggio è in qualche modo basato sull'intero dati in frammenti dati, non solo su documento effettivamente considerato dal motore di ricerca.
La domanda è: come funziona esattamente questo punteggio? Voglio dire, potresti dirmi/mostrami/indicarmi la formula esatta per calcolare il punteggio per ogni documento trovato da ES? E alla fine, come si può cambiare questo meccanismo di punteggio?
OK, questo copre praticamente ciò che volevo sapere. L'informazione che ES sta usando puramente la similarità di Lucene è molto utile. Grazie! –
Ulteriori dettagli sui fattori nell'algoritmo di punteggio di Lucene: http://www.lucenetutorial.com/advanced-topics/scoring.html – ThoQ