validator update type microformat hentry hatom falta estructurados errores datos algorithm validation search user-interface data-entry

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:

  1. 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í )
  2. 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.
  3. 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?".
  4. 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.