Java: Hat jemand eine Methode, um die beste Übereinstimmung der Zeichenfolge im Array zu finden?

7

Im Grunde versuche ich nur einen Weg zu finden, um die engste Übereinstimmung (nicht unbedingt genau) eines String

zu finden

Finden Sie zum Beispiel "delicous" in {"pie", "delicious", "test"}

Das ist ziemlich offensichtlich, aber die Werte im Array sind möglicherweise nicht immer eindeutig.

Könnte mir jemand bitte mit einem Weg helfen, dies zu erreichen.

    
Alex Coleman 31.05.2012, 02:27
quelle

3 Antworten

17

Hängt davon ab, wie Sie "am nächsten" definieren, aber eine gängige Methode ist die Verwendung eines Levenshtein-Abstands . Apache Commons hat solche eine Methode in StringUtils .

Von hier aus wird Ihre Suchmethode im Grunde: Finden Sie die Zeichenfolge in der Sammlung, die die kleinste Levenshtein-Distanz für eine gegebene Eingabe hat.

    
Andrew White 31.05.2012, 02:33
quelle
2

Dafür ist nichts in Java eingebaut. Sie könnten versuchen, eine Drittanbieter-Bibliothek wie SecondString oder FREJ .

    
Ted Hopp 31.05.2012 02:33
quelle
2

Ein anderer Ansatz, der in Verbindung mit Levenshtein Distance verwendet werden kann, ist die phonetische Darstellung der Wörter zuerst. Ein Algorithmus, um dies zu tun, ist Metaphone .

Das Benutzerhandbuch für Apache Commons Codec enthält Details zu diesem und einigen anderen Encodern.

    
Greg Kopff 31.05.2012 02:34
quelle