Estaba mirando a mi alrededor y me preguntaba cómo iba a hacer una publicación relacionada o similar para mostrar en mi sitio web usando PHP & MySQL? ¿Cuál es un ejemplo básico de cómo hacer esto?Creación de publicaciones relacionadas o similares usando PHP y MySQL
Respuesta
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 un título de publicación actual. Hágalo así:
SELECT *, MATCH(title, body) AGAINST('$CurrentPostTitle') AS score
FROM articles
WHERE MATCH(title, body) AGAINST('$CurrentPostTitle')
ORDER BY score DESC LIMIT 5
Esto le dará las 5 mejores publicaciones relacionadas.
Pero primero recuerde permitido búsqueda de texto completo para las columnas de esa tabla, mediante la ejecución de esta consulta:
ALTER TABLE articles ADD FULLTEXT (title, body);
[EDIT]: ¿Por qué no usar LIKE
: Aclaración a OP:
Porque no dará resultados correctos. Digamos que tu título actual es "Música de 1980" y quieres publicaciones relacionadas sobre eso. Ahora, si usa LIKE
, solo aparecerán las publicaciones que contengan EXACTAMENTE la secuencia de palabras "Música de 1980". Sin embargo, si usa MATCH ... AGAINST
, aparecerán las publicaciones que contienen Música OR 1980. Además, las publicaciones que contienen tanto Música como 1980 aparecerán en la parte superior porque dan un SCORE
a cada resultado y estamos ordenando por ese puntaje. Espero que eso esté claro.
[EDIT]: 2:
Si tiene categorías, puede agregar AND Category = '$CurrentCategory'
en la consulta SQL where clause
para obtener resultados más específicos.
[EDIT]: 3: OP no se puede utilizar el texto completo:
Si no puede utilizar texto completo (por alguna razón), sólo puede mostrar 5 mensajes al azar de la misma categoría. Ya que están en una misma categoría, que están relacionados de alguna manera al menos:
SELECT *
FROM articles
WHERE Category = '$CurrentCategory'
LIMIT 5
Editado Sintaxis: Se ha cambiado LIMTI a LIMIT en MySQL Code
¿Puedo usar LIKE en lugar de FULLTEXT? – leftout
@leftout, he actualizado la respuesta. – shamittomar
Pero, ¿qué pasa si no puedo usar la búsqueda FULLTEXT, lo siento por toda la pregunta? – leftout
- 1. Cómo utilizar SIMILARES O operador utilizando CakePHP y MySQL
- 2. MySQL: Obtener publicaciones de categorías
- 3. Manejo de publicaciones no leídas en PHP/MySQL
- 4. Mysql: ordenar por similares?
- 5. Creación de sistema de código de descuento (MySQL/php)
- 6. UIActivityIndicatorView o similares
- 7. Creación de una matriz asociativa de MySQL Query Results - PHP
- 8. Árbol binario usando PHP + MySQL
- 9. ¿Puedo exponer datos de MySQL usando PHP y OData?
- 10. Acciones de creación de publicaciones en Flex Builder
- 11. Protección de inyección MySQL y señales de vulnerabilidad usando PHP
- 12. Cargar contenido de publicaciones de Wordpress en DIV usando AJAX
- 13. PHP Herencia y MySQL
- 14. Funciones en mysql o php
- 15. PHP MySql y geolocalización
- 16. Creación de API pública segura con PHP/MYSQL
- 17. C# métodos de extensión similares en PHP?
- 18. Importación de datos CSV usando PHP/MySQL
- 19. Cómo mostrar la cuenta regresiva usando PHP y MySQL
- 20. ¿Almacena cuerpos de publicaciones en bases de datos o archivos?
- 21. Word Net - Word Sinónimos y construcciones de palabras relacionadas - Java o Python
- 22. Cómo contar intereses similares en MySQL
- 23. Creación de un diccionario simple usando WordNet
- 24. PHP Extraer partes similares de varias cadenas
- 25. Problemas al mostrar caracteres japoneses usando PHP y MySQL
- 26. Usando funciones como array_walk (y funciones similares) para modificar matrices en PHP> = 5.3
- 27. Google Maps Guardar polígono y puntos en MySQL usando PHP
- 28. ¿Mysql o/y precedencia?
- 29. Filtrar publicaciones usando categorías en Jekyll-Bootstrap
- 30. Publicar publicaciones en WordPress usando jwordpress
Es necesario ser más específico. ¿Qué tipo de datos tienes y cómo defines una "publicación similar"? – casablanca
@casablanca ¿Tengo etiquetas, categorías y publicaciones con títulos y contenido corporal si eso es lo que estás tratando? – leftout