2010-11-10 4 views
2

Comme indiqué dans the Lucene documentation, il existe un paramètre qui permet de spécifier la similarité requise pour une correspondance. La valeur de est comprise entre 0 et 1, avec une valeur plus proche de 1 seuls les termes ayant une similarité plus élevée seront appariés. Par exemple: roam ~ 0.8Signification du paramètre Fuzzy dans Lucene

Sachez que je me demande si ce paramètre est compris dans un sens relatif, c'est-à-dire pour une chaîne plus longue, la distance d'édition de chaîne peut être plus élevée et il y a toujours correspondance. Ou, s'agit-il d'une valeur absolue, c'est-à-dire que jusqu'à x substitutions/suppressions/insertions sont autorisées à faire une correspondance?

Répondre

4

La recherche de term~sim permet de trouver tous les termes dont la distance d'édition est inférieure à length(term) * (1- sim). Donc roam~0.8 trouvera tous les termes avec une distance d'édition de moins de 4 * (1-.8) = .8 de itinérance.

EDIT:

Le terme doit être supérieure à 1/(1 - sim). Donc, une recherche de roam~.8 ne fera rien de flou, parce que les choses avec une similarité de .8 doivent avoir une longueur d'au moins 5.

+0

Merci. Et savez-vous quel est le coût pour les substitutions/suppressions/insertions, sont-ils également 1 comme suggéré par Levenshtein ou sont-ils légèrement différents? – bertolami

+0

@bertolami: oui, c'est une implémentation exacte de Levenshtein. Vous pouvez voir la méthode 'Similarity' dans la classe' FuzzyTermEnum' pour le code. – Xodarap

Questions connexes