algorithm - update - ¿Cómo detectar un error tipográfico en una búsqueda de producto y sugerir posibles correcciones?
microformats validator (3)
Estoy seguro de que he leído que google mantiene una lista de lo que un usuario vuelve a escribir cuando no obtienen ningún resultado. Podría mantener un mapeo de estos valores (por ejemplo, si la cadena re-escrita comienza con la misma letra).
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 posibles correcciones (algo así como la forma en que Google los presenta)?
P.ej
El usuario ingresa "horquillas de horquilla" y presiona "buscar".
Ellos regresan
"Sin resultados. ¿Querías decir ''asas de horquilla''?"
Hay varios enfoques para este problema:
- Mantener una tabla de los errores ortográficos más populares en su base de datos. Si necesita algunas faltas de ortografía comunes: aquí )
- Usar un algoritmo basado en la distancia de edición : en la teoría de la información y en la informática, la distancia de edición entre dos cadenas de caracteres es la cantidad 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 de 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 la función "¿Quiso decir?".
- Si ve esa característica como una simple corrección ortográfica, aquí hay algunas implementaciones agradables, muy cortas en varios idiomas: Cómo escribir un corrector ortográfico
Puede usar un algoritmo fonético , como Soundex, para encontrar coincidencias que suenen similares.
PostgreSQL tiene un módulo llamado fuzzystrmatch , con los documentos que muestran ejemplos del uso de Soundex, Levenshtein, Metaphone y Double Metaphone.