sql >> Base de Datos >  >> RDS >> Mysql

Creación de publicaciones relacionadas o similares usando PHP y MySQL

Usando la búsqueda de texto completo de MySQL MATCH (col1,col2,...) AGAINST (expr [search_modifier]) cosa.

Digamos que su tabla es articles y necesita encontrar publicaciones relacionadas sobre el título de la publicación actual. Hazlo así:

SELECT *, MATCH(title, body) AGAINST('$CurrentPostTitle') AS score
FROM articles 
WHERE MATCH(title, body) AGAINST('$CurrentPostTitle') 
ORDER BY score DESC LIMIT 5

Esto te dará las 5 publicaciones relacionadas principales.

Pero primero recuerde habilitar la búsqueda de texto completo para las columnas de esa tabla, ejecutando esta consulta:

ALTER TABLE articles ADD FULLTEXT (title, body);

[EDITAR]:Por qué no usar LIKE : Aclaración al OP:

Porque no dará resultados correctos. Digamos que su título actual es "Música de 1980" y quiere publicaciones relacionadas con eso. Ahora, si usas LIKE entonces solo aparecerán las publicaciones que contengan EXACTAMENTE la secuencia de palabras "Música de 1980". Sin embargo, si usa MATCH ... AGAINST , luego aparecerán las publicaciones que contengan Música O 1980. Además, las publicaciones que contienen Música y 1980 aparecerán en la parte superior porque otorga una SCORE. a cada resultado y estamos clasificando por ese puntaje. Espero que quede claro.

[EDITAR]:2 :

Si tiene categorías, puede agregar AND Category = '$CurrentCategory' en la consulta SQL where clause para obtener resultados más específicos.

[EDITAR]:3:OP no puede usar el texto completo :

Si no puede usar Texto completo (por alguna razón), puede mostrar 5 publicaciones aleatorias de la misma categoría. Como están en la misma categoría, están relacionados de alguna manera al menos:

SELECT *
FROM articles 
WHERE Category = '$CurrentCategory'
LIMIT 5

Sintaxis editada:Cambió LIMTI a LIMIT en el código MySQL