Je voudrais rechercher un index Lucene avec les distances d'édition. Par exemple, disons, il y a un document avec un champ FIRST_NAME; Je veux que tous les documents dont le prénom est à 1 distance de distance, par exemple, 'john'.Recherche Lucene avec des distances d'édition précises
Je sais que Lucene supporte les recherches floues (FIRST_NAME: john ~) et prend un nombre entre 0 et 1 pour contrôler le flou. Le problème (pour moi) est que ce nombre ne se traduit pas directement par une distance d'édition. Et lorsque les valeurs dans les documents sont des chaînes courtes (moins de 3 caractères), la recherche floue a du mal à les trouver. Par exemple, s'il y a un document avec FIRST_NAME "J" et que je recherche FIRST_NAME: I ~ 0.0, je ne reçois rien.
En regardant Lucene en Action, la formule qu'ils ont sur la page 93 est '1 - distance/min (textlen, targetlen)', mais cela ne peut pas être entièrement correct car il permet des valeurs inférieures à 0.0. Dans mes tests, la formule utilise en fait 'min (textlen, targetlen)' (contrairement à leur implémentation de LevensteinDistance, qui utilise '1 - distance/max (textlen, targetlen)'), ils doivent donc rendre impossible le retour de chaînes nécessitant plus de changements que la longueur de la chaîne plus courte. –