Mit der MySQL-Volltextsuche MATCH (col1,col2,...) AGAINST (expr [search_modifier])
Sache.
Nehmen wir an, Ihre Tabelle ist articles
und Sie müssen verwandte Beiträge zu einem Titel des aktuellen Beitrags finden. Gehen Sie folgendermaßen vor:
SELECT *, MATCH(title, body) AGAINST('$CurrentPostTitle') AS score
FROM articles
WHERE MATCH(title, body) AGAINST('$CurrentPostTitle')
ORDER BY score DESC LIMIT 5
Dadurch erhalten Sie die Top 5 der verwandten Beiträge.
Denken Sie jedoch zuerst daran, die Volltextsuche für die Spalten dieser Tabelle zu aktivieren, indem Sie diese Abfrage ausführen:
ALTER TABLE articles ADD FULLTEXT (title, body);
[BEARBEITEN]:Warum man LIKE
nicht verwendet : Erläuterung zu OP:
Weil es keine korrekten Ergebnisse liefert. Angenommen, Ihr aktueller Titel lautet „Music of 1980“ und Sie möchten verwandte Beiträge dazu. Nun, wenn Sie LIKE
verwenden dann erscheinen nur die Beiträge, die GENAU die Wortfolge "Music of 1980" enthalten. Wenn Sie jedoch MATCH ... AGAINST
verwenden , dann werden Beiträge angezeigt, die Music OR 1980 enthalten. Außerdem werden die Posts, die sowohl Musik als auch 1980 enthalten, oben angezeigt, da sie eine SCORE
ergeben zu jedem Ergebnis und wir sortieren nach dieser Punktzahl. Ich hoffe, das ist klar.
[BEARBEITEN]:2 :
Wenn Sie Kategorien haben, können Sie AND Category = '$CurrentCategory'
hinzufügen in der SQL-Abfrage where clause
um spezifischere Ergebnisse zu erhalten.
[EDIT]:3:OP kann Volltext nicht verwenden :
Wenn Sie (aus irgendeinem Grund) keinen Volltext verwenden können, können Sie einfach 5 zufällige Beiträge aus derselben Kategorie anzeigen. Da sie sich in derselben Kategorie befinden, sind sie zumindest irgendwie verwandt:
SELECT *
FROM articles
WHERE Category = '$CurrentCategory'
LIMIT 5
Bearbeitete Syntax:LIMTI im MySQL-Code in LIMIT geändert