Ho già fornito la mia risposta in un'altra domanda.
https://stackoverflow.com/a/30120166/2282794
Ho lavorato sul sistema davvero vasta scala con nome corrispondente requisiti simili che hai parlato. La corrispondenza dei nomi non è molto semplice e l'ordine del nome e del cognome potrebbe essere diverso. Gli algoritmi di corrispondenza dei nomi fuzzy falliscono miseramente in tali scenari.
Se vogliamo solo parlare degli algoritmi di corrispondenza delle stringhe approssimative, ce ne sono molti. Pochi di loro sono: Jaro-Winkler, Modifica distanza (Levenshtein), somiglianza Jaccard, algoritmi basati su Soundex/Phonetics ecc. Un semplice googling ci darebbe tutti i dettagli. È possibile implementare tutti in C#
Ironia, funzionano mentre si tenta di far corrispondere due stringhe di input. Va bene in teoria e per dimostrare come funzionano le corrispondenze sfocate o approssimative.
Tuttavia, il punto grossolanamente sottovalutato è, come utilizziamo lo stesso nelle impostazioni di produzione. Non tutti quelli che conosco su chi stava cercando un algoritmo approssimativo per la corrispondenza delle stringhe sapevano come avrebbero potuto risolvere lo stesso nell'ambiente di produzione.
Potrei aver appena parlato di Lucene che è specifico di Java ma c'è anche Lucene per .Net.
https://lucenenet.apache.org/
fonte
2015-05-08 09:26:56
Penso che ho intenzione di rimuovere tutto il carattere punto e quindi utilizzare la distanza Levenshtein dopo. Solo una nota, ho trovato un altro algoritmo simile ma più veloce di levenshtein, il nome del ragazzo l'algoritmo sift3. Molto interessante. – Max