Cómo “redefinir búsqueda” o correcta “falta de ortografía” de la base de datos

StackOverflow https://stackoverflow.com/questions/2788192

  •  04-10-2019
  •  | 
  •  

Pregunta

Quiero añadir nueva funcionalidad a la búsqueda en mi página web. Estoy usando PHP y MySQL. base de datos MySQL que contiene una tabla con los elementos que el usuario va a buscar, para cada elemento hay una columna "palabra clave" que comas de palabras clave separadas "Ejemplo: gato, perro, caballo". después de la búsqueda de usuarios en mi página web quiero conseguir las palabras que se Permítanme decir "85%", similar a la palabra clave de búsqueda, esto es para redefinir búsqueda. y de la ortografía quiero un servicio o algo que ofrecer si la palabra clave es correcta o mal escrito así que conseguir algunas correcciones y comprobar si los que existe en la base de datos y luego dar esas correcciones al usuario cambiar su palabra clave de búsqueda.

No estoy pidiendo una solución aquí ... pero si me puedo dirigir en un una forma u otra que será grande

Gracias chicos

Saludos

¿Fue útil?

Solución

La clave está en su idea de "85% similar". Aquí están algunas ideas:

Palabras similares Tabla

Se puede definir una tabla en la que enumera los errores ortográficos comunes para las palabras clave. A continuación, tendrá que aumentar cómo buscar en la base de datos para mapear los errores ortográficos comunes en el valor adecuado.

Palabras similares Buscar

Al realizar la búsqueda, usar una biblioteca para generar palabras similares y la búsqueda de todos ellos. Se puede utilizar cualquier tipo de biblioteca de ortografía para generar posibles coincidencias de palabras antes de enviar la búsqueda. O escribir su propio basado en el algoritmo href="http://en.wikipedia.org/wiki/Edit_distance" rel="nofollow noreferrer"> Editar Distancia

Sólo comprobar si es necesario: Puesto que usted está usando PHP, puede considerar pspell. Puede llamar primero pspell_check para ver si la palabra está escrita correctamente. A continuación, llame pspell_suggest para obtener sugerencias.

Ver este enlace para ver un ejemplo.

utilizar una función de base de datos

MySQL, por ejemplo, tiene un operador de SOUNDS_LIKE. Puede buscar WHERE keyword SOUNDS_LIKE 'kat' y (presumiblemente) cat get. Más información se encuentra en la página de documentación , que indica que tiene algunas limitaciones (como Inglés y UTF-8 solamente).


Suena como un problema bastante común, por lo que quizás hay otras soluciones más canónicas a este problema. Tal vez hay algo específico para el idioma que está utilizando (o en la capa de interfaz de base de datos) que puede abstraer esto para usted.

Los dos primeros se permitirá cumplir con alguna noción de 85% de similitud. No tengo idea de lo bien que la tercera opción va a funcionar, pero "soundz Kool."

Otros consejos

Hay similar_text () en PHP, pero que después de la consulta; también se puede comprobar a cabo la búsqueda de texto completo en MySQL.

Trate de buscar en el Editar Distancia algoritmo. Básicamente por dos cadenas de entradas, el valor de retorno es el número mínimo de ediciones necesarias para transformar una cadena en la otra. Que le puede dar una idea acerca de qué tan cerca están dos cadenas.

Editar Distancia

Apache Solr es una plataforma de búsqueda de código abierto que proporciona no sólo con las capacidades de búsqueda de texto completo, sino también con una función en la adecuación de los sistemas de puntuación y de auto-sugestión, entre muchas otras características de gran alcance .

Si la cantidad de información en su sitio no es lo suficientemente significativo, esta opción puede parecer excesiva, aunque me gustaría recomendar a por lo menos echarle un vistazo.

La comunicación entre la aplicación y Solr puede ser manejado a través de una interfaz REST estándar. Que yo sepa hay dos buenas bibliotecas Solr-específica PHP disponibles en la actualidad

Configuración del servidor es bastante sencillo, siendo la parte más laboriosa (así como el interesante) que la de ajuste y la optimización de Solr mejor se ajuste a sus necesidades.

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