33 Stimmen

MySQL: Nach Relevanz sortieren

Frage von Progger99 | Letztes Update am 04.05.2021 | Erstellt am 31.12.2011

Ich möchte eine Suchanfrage nach mehreren Wörtern nach Ihrer Relevanz sortieren, das heißt: Umso mehr meiner Suchwörter in dem Datensatz enthalten sind, umso höher soll der Datensatz angezeigt werden, weil er mehr Relevanz besitzt.

Meine Abfrage sieht bisher etwa so aus:

SELECT * FROM tabelle WHERE 
  text LIKE 'wort1' OR
  text LIKE 'wort2' OR
  text LIKE 'wort3'
LIMIT 10 ORDER BY ??

Aber was kommt hinter dem ORDER BY? Ich hoffe mir kann jemand helfen. Ich möchte übrigens keine Volltextsuche benutzen!

AntwortenPositivNegativ
4Beste Antwort6 Stimmen

Eine Möglichkeit ohne Volltextsuche wäre es, eine Abfrage zu nehmen, die ungefähr so aussieht:

ORDER BY
  CASE WHEN text LIKE 'wort1' THEN 1 ELSE 0 END
+ CASE WHEN text LIKE 'wort2' THEN 1 ELSE 0 END
+ CASE WHEN text LIKE 'wort3' THEN 1 ELSE 0 END
DESC

Jedes zutreffende Wort führt damit zu einer Erhöhung des Rangs bei der Sortierung. Wenn alle drei Worte in "text" vorkommen, kommen wir auf einen Rang von 3, während die Summe bei nur einem zutreffenden Wort 1 beträgt und der Datensatz entsprechend weiter unten erscheint.
Letztes Update am 04.05.2021 | Erstellt am 02.01.2012

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.