Pregunta

Dada una gran base de datos de nombres de productos, ¿cómo detectaría posibles errores tipográficos en las búsquedas de los usuarios y sugeriría posibles correcciones (algo así como la forma en que Google los presenta)?

Por ejemplo

El usuario ingresa " tenedores de horquilla " y presiona 'buscar'.

Vuelven

" Sin resultados. ¿Quiso decir 'horquillas'? & Quot;

¿Fue útil?

Solución

Hay varios enfoques para este problema:

  1. Mantener una tabla de errores ortográficos más populares en su base de datos. Si necesita algunos errores ortográficos comunes: aquí )
  2. Utilizando un algoritmo basado en editar distancia : en información Según la teoría y la informática, la distancia de edición entre dos cadenas de caracteres es el número de operaciones necesarias para transformar una de ellas en la otra. Existen varios algoritmos diferentes para definir o calcular esta métrica. Lea el artículo de Wikipedia para el algoritmo Levenshtein , por ejemplo.
  3. Si está utilizando Lucene para la búsqueda de texto completo, aquí hay un buen artículo que muestra cómo implementar " ¿Quiso decir " característica.
  4. Si ve esa característica como una simple corrección de hechizos, aquí hay algunas implementaciones agradables y muy cortas en varios idiomas: Cómo escribir un corrector ortográfico

Otros consejos

Puede usar un algoritmo fonético , como Soundex para encontrar coincidencias que suenen similares.

PostgreSQL tiene un módulo llamado fuzzystrmatch , con los documentos mostrando ejemplos de uso de Soundex, Levenshtein, Metaphone y Double Metaphone.

Estoy seguro de que leí que google mantiene una lista de lo que un usuario vuelve a escribir cuando no obtiene resultados. Puede mantener una asignación de estos valores (por ejemplo, si la cadena reescrita comienza con la misma letra).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top