Heim > Datenbank > MySQL-Tutorial > Wie kann ich MySQL-Suchergebnisse nach „Best Match' basierend auf der Position des Suchbegriffs sortieren?

Wie kann ich MySQL-Suchergebnisse nach „Best Match' basierend auf der Position des Suchbegriffs sortieren?

DDD
Freigeben: 2024-12-30 00:37:20
Original
948 Leute haben es durchsucht

How Can I Order MySQL Search Results by

Sortieren von MySQL-Ergebnissen basierend auf „Best Match“

In diesem Szenario besteht das Ziel darin, eine MySQL-Live-Suchabfrage zu verbessern, um Ergebnisse zu priorisieren wobei der Suchbegriff früher im Wort vorkommt.

Derzeit sortiert die Abfrage die Ergebnisse alphabetisch:

SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY word ASC
Nach dem Login kopieren

Um die gewünschte Sortierung zu erreichen, können wir eine bedingte Logik einführen, um zwischen den Positionen des Suchbegriffs in den Ergebnissen zu unterscheiden.

Sortierung nach Anfang, Mitte, Ende des Wortes

Um Ergebnisse anzuordnen, bei denen Übereinstimmungen am Wortanfang priorisiert werden, können wir Folgendes verwenden Abfrage:

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY
  CASE
    WHEN word LIKE 'searchstring%' THEN 1
    WHEN word LIKE '%searchstring' THEN 3
    ELSE 2
  END
Nach dem Login kopieren

Diese Abfrage weist jedem Ergebnis eine Gewichtung zu: 1 für perfekte Übereinstimmungen, die mit dem Suchbegriff beginnen, 3 für Übereinstimmungen irgendwo im Wort und 2 ansonsten. Diese Gewichte bestimmen die Sortierreihenfolge.

Sortierung nach Position der übereinstimmenden Zeichenfolge

Wenn wir Ergebnisse basierend auf der genauen Position der Übereinstimmung ordnen möchten, können wir die nutzen LOCATE-Funktion:

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
Nach dem Login kopieren

Diese Abfrage berechnet die Position des Suchbegriffs innerhalb jedes Ergebnisses und sortiert entsprechend.

Umgang mit Gleichständen

In Fällen, in denen mehrere Ergebnisse die gleiche Punktzahl oder Position haben, können wir ein sekundäres Sortierkriterium einführen:

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
Nach dem Login kopieren

Durch Ersetzen von Mit einem relevanten Feld (z. B. Worthäufigkeit) können wir Verknüpfungen auflösen und die Ergebnisse weiter sortieren.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Suchergebnisse nach „Best Match' basierend auf der Position des Suchbegriffs sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage