2010-03-31 8 views
6

Quelqu'un pourrait-il me donner un exemple sur la façon de faire correspondre fuzzy de deux chaînes en utilisant Lucene.NET (ou en utilisant la version Java de Lucene, ou dans tout autre langage qui a le port de Lucene).Lucene.NET (chaînes floues correspondant)

Répondre

5

Pourriez-vous être un peu plus précis sur ce que vous entendez par appariement flou?

Lucene offre des requêtes floues en utilisant le tilde (~) opérateur et les wildcard (* &?) See here

Si vous voulez comparer la distance de chaîne de 2 chaînes en utilisant des méthodes telles que Levenshtein, Jaro-Winkler, etc. il vaut mieux utiliser une bibliothèque séparée telle que SimMetrics. J'utilise Simmetrics sur mon site de production et ça fonctionne fab.

SimMetricsMetricUtilities.Levenstein ls = new SimMetricsMetricUtilities.Levenstein(); //compare string 1, string 2 
double sim = ls.GetSimilarity(string_1, string_2); 
if(sim > [some value]) 
{ 
//do something 
} 
+0

Merci pour la réponse monsieur. Vous avez raison, je veux comparer deux chaînes à l'aide de l'algorithme de Levenshtein, pourriez-vous me donner un exemple de la façon dont vous faites des chaînes de correspondance floue en utilisant SimMetrics? – user306080

+1

est en fait très straight-forward: 1. Ajoutez une référence à la dll Simmetrics dans votre projet 2. Dans la méthode où vous voulez exécuter la similitude, SimMetricsMetricUtilities.Levenstein ls = new SimMetricsMetricUtilities.Levenstein(); // comparer chaîne 1, chaîne 2 double sim = js.GetSimilarity (string_1, string_2); if (sim> [une valeur]) { // faire quelque chose } – Mikos

+0

le seul problème que je vois avec cela, est-ce que vous faites la mise en correspondance après avoir obtenu les résultats de Lucene. – Dementic