Pregunta Sugerencias de búsqueda de PHP MySQL


En mi aplicación web habrá varios usuarios. y tienen sus propios contenidos subidos a mi aplicación web. Para cada contenido que cargan tiene un título, descripción y etiquetas (palabras clave). Puedo escribir un script de búsqueda para buscar contenido o nombre de usuario. pero las palabras clave cuando han dado un error ortográfico no arrojan ningún resultado. Por ejemplo, si hay un usuario llamado "Michael" en la base de datos y la consulta de búsqueda fue "Micheal" debería obtener "¿Quiso decir 'Michael'", que no es otra cosa que una sugerencia de búsqueda.

También esta sugerencia debería ser para los contenidos cargados por el usuario. Un usuario puede mantener el título de su contenido como "Actividades de Michael en mayo de 2011" y se deben generar sugerencias para palabras individuales.


5
2017-08-27 11:13


origen


Respuestas:


Podrías usar SOUNDEX para buscar nombres que suenen similares, así:

SELECT * FROM users WHERE SOUNDEX(name) = SOUNDEX(:input)

o así

SELECT * FROM users WHERE name SOUNDS_LIKE :input

(que es completamente equivalente)

Editar: si necesita usar un algoritmo que no sea Soundex, como sugirió Martin Hohenberg, debería agregar una columna adicional a su tabla, llamada, por ejemplo, sound_equivalent. (Esta es en realidad una solución más eficiente ya que esta columna puede ser indexada). La solicitud sería entonces:

SELECT * FROM users WHERE sound_equivalent = :input_sound_equivalent

El contenido de la columna sound_equivalent se puede generar con un algoritmo PHP e insertarse en la tabla con el resto de los parámetros del usuario.


8
2017-08-27 11:28



También puedes utilizar la librería php. pspell para obtener sugerencias si no tiene resultados de búsqueda.


2
2017-08-27 11:31



Tal vez cree una base de datos de las palabras más comunes (como: perro, casa, ciudad, números, agua, internet). No es necesario que sea grande (<10000 palabras). Luego, cuando explotas el término de búsqueda, busca en la base de datos "palabra" palabras COMO los términos de búsqueda. Entonces simplemente haz eco de las sugerencias.


0
2017-08-27 11:23