2009-04-24 4 views
0

Voilà équation de notation Lucene:Comment Lucene calcule-t-elle le score multifil?

partition (q, d) = Coord (q, d) · queryNorm (q) · Σ (tf (t en d) · idf (t) 2 · t.getBoost() · Norme (t, d))

Qu'en est-il de la notation multifil?

Le score est-il additionné directement ou moyenné ou?

Répondre

0

Cela dépend de l'opération. Si vous faites un OR comme dans (nom: facture OR sexe: masculin), il prend le maximum des deux. Si vous faites un ET, il fera une somme.

+0

Votre réponse est incorrecte. Shashikant Kore a bien compris. –

3

Vous pouvez lire les détails de notation dans la classe Similarity. Dans cette équation, les paramètres sont référencés en référence à Document quand ils signifient réellement Field. Donc, Fréquence Terminale est la fréquence du terme dans un champ donné dans le document. Cela prend automatiquement en charge les requêtes sur plusieurs champs.

La réponse de KenE ci-dessus est incorrecte. (Il n'y a pas d'opérateur MAX dans l'équation.) Le score pour chaque requête sur un champ est ajouté au score final. Pour la requête (nom: facture OR sexe: masculin) le résultat est la somme du score pour (nom: facture) et (genre: masculin). En règle générale, les documents qui satisfont à ces deux critères seront plus élevés (en raison de la somme) et venir.

0

Shashikant Kore a raison de dire que les scores de chaque champ sont additionnés. Ceci, cependant, n'est vrai que devant la contribution des facteurs queryNorm et coord, ce qui signifie que les scores finaux ne s'additionneront probablement pas.

Chaque score est multiplié par le facteur queryNorm, qui est calculée par la requête et diffère donc pour chacun des (name:bill), (gender:male) et (name:bill OR gender:male). Le queryNorm pour la requête combinée n'est pas non plus la somme des queryNorm s pour les deux requêtes à un seul terme. Ainsi, les scores ne totalisent que si vous divisez chaque score par le facteur queryNorm pour cette requête.

Le facteur coord peut également payer une partie: le marqueur par défaut multiplie le score par la proportion de termes de requête qui ont été appariés. Vous ne pouvez donc compter sur la sommation qu'après avoir pris en compte queryNorm où tous les termes correspondent (ou coord est désactivé).

Vous pouvez voir exactement comment un score est calculé à l'aide de la fonctionnalité explain, disponible dans Solr via le paramètre debugQuery=true.

0

En utilisant le score de similarité par défaut de Lucene, je l'ai utilisé une requête booléenne et a obtenu la formule finale comme suit: (désolé il est latex)

score(q, d) = \sum_{f \in fields} \sum_{t \in query} idf(t, f) queryNorm(query) \times idf(t, f) tf(t, d, f) fieldNorm(f) 
+0

Ceci est basé sur lucene 5_3_0 – vahid