Question

J'ai une grande liste (plus de 200 000) de chaînes que je voudrais comparer à une chaîne donnée. La chaîne donnée est insérée par un utilisateur, il peut être légèrement incorrecte.

Ce que j'espérais faire était de créer une sorte de hachage précalculé sur chaque chaîne à ajouter à la liste. Ce hachage contiendra des informations telles que la longueur de chaîne, l'ajout de tous les personnages, etc.

Ma question est, ne quelque chose comme ça existe déjà? Certes, il y aurait quelque chose qui me permet d'éviter une marche Levenshtein sur chaque chaîne dans la liste?

Ou peut-être il y a une troisième option, je ne l'ai pas encore pensé?

Était-ce utile?

La solution

On dirait que vous voulez utiliser un hachage flou de quelque sorte. Il y a beaucoup de fonctions de hachage disponibles qui peuvent faire des choses comme ça. Le classique ancien algorithme " SOUNDEX " pourrait même fonctionner.

Une autre pensée - si vous estimez que la probabilité d'une entrée incorrecte est faible, alors vous pourriez effectivement être bien avoir un coup direct 99,9% du temps, de retomber à SOUNDEX qui pourrait prendre 90% des cas restants, puis la recherche de la liste entière pour 0,01% du temps restant.

convient également de vérifier cette discussion: Comment trouver le meilleur correspondance floue pour une chaîne dans une grande base de données de chaîne

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top