2012-05-31 31 views

Respuesta

17

Depende de cómo se define "más cercano", pero una forma común es mediante el uso de una puntuación de Levenshtein Distance. Apache Commons tiene tal a method in StringUtils.

A partir de ahí su método de búsqueda se convierte básicamente en: encontrar la cadena en la colección que tiene la menor distancia de Levenshtein para una entrada determinada.

+0

Gracias, esto está funcionando bastante bien :) Si tengo chocolatedessert y chocolatepie y escribo chocolatedes, parece que sigue siendo un pastel, pero sigue siendo mucho mejor que antes: p ¡Muchas gracias! –

+0

El segundo enlace está roto. Por favor actualice. (Este es posiblemente el enlace - https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#getLevenshteinDistance(java.lang.CharSequence,%20java.lang. CharSequence)) –

+0

@KazekageGaara gracias, hecho. –

2

No hay nada integrado en Java para eso. Puede probar una biblioteca de terceros como SecondString o FREJ.

2

Otro enfoque que se puede utilizar junto con Levenshtein Distance es tomar primero la representación fonética de las palabras. Un algoritmo para hacer esto es Metaphone.

El user guide for Apache Commons Codec tiene detalles de este y algunos otros codificadores.

Cuestiones relacionadas