stringa corrispondente è molto specifico problema-, perché la maggior parte del tempo si avrà le stesse caratteristiche di rumore nelle stringhe da abbinare, sia esso la punteggiatura in più, errori di battitura o errori di ortografia.Dovrai trovare un algoritmo appropriato per i problemi nei tuoi dati di input se lo stai facendo su larga scala.
Soundex offre una certa sicurezza che due stringhe suonino allo stesso modo, ma potrebbe essere necessario eseguire prima una pulizia iniziale (come la rimozione della punteggiatura e la tokenizzazione della stringa in parole separate).
La cosa migliore che puoi fare è eseguire un test, ci sono un'enorme quantità di algoritmi diversi che puoi usare, levenshtein è uno dei migliori, così come soundex (anche se il tuo chilometraggio varierà con l'area problematica). Ci sono anche variazioni su questi due algoritmi, BTW.
Suggerisco di dare un'occhiata alle librerie simmetrics e second string che hanno un sacco di implementazioni di corrispondenza delle stringhe (tra le due preferisco la seconda libreria di stringhe).
Sembra che tu abbia un problema interessante da risolvere, buona fortuna!
fonte
2010-03-17 10:33:00
Dovresti sapere che Soundex e il Levenshtein sono due cose molto diverse! Levenshtein ti aiuta a cogliere errori di battitura. Per esempio. un utente che digita "Wrich" invece di "Erich", anche se quelle parole non sembrerebbero affatto simili quando pronunciate ad alta voce. Soundex ti consente di trovare parole che sembrano simili, indipendentemente dal numero di lettere che hanno in comune, ad es. potrebbe farti trovare "Erich" quando cerchi "Eryk". –