¿Cómo detectar un error tipográfico en una búsqueda de productos y sugerir posibles correcciones?
-
20-08-2019 - |
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;
Solución
Hay varios enfoques para este problema:
- Mantener una tabla de errores ortográficos más populares en su base de datos. Si necesita algunos errores ortográficos comunes: aquí )
- 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.
- 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.
- 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).