Heim > Datenbank > MySQL-Tutorial > Wie kann ich MySQL-Suchergebnisse nach „Best Match' sortieren?

Wie kann ich MySQL-Suchergebnisse nach „Best Match' sortieren?

Barbara Streisand
Freigeben: 2024-12-28 15:21:14
Original
210 Leute haben es durchsucht

How Can I Order MySQL Search Results by

Sortieren von MySQL-Ergebnissen nach „Best Match“

Beim Durchsuchen einer Datenbanktabelle mit einer Live-Suchfunktion ist es oft wünschenswert, die Ergebnisse so zu ordnen, dass sie Priorität haben beste Übereinstimmungen. Standardmäßig ordnet eine einfache Abfrage wie die bereitgestellte die Ergebnisse möglicherweise nicht effektiv nach der Startposition der Suchzeichenfolge.

Um eine genauere Sortierung nach der „besten Übereinstimmung“ zu erreichen, ziehen Sie die folgenden Optionen in Betracht:

Übereinstimmungen nach Startposition sortieren

Wenn das Ziel darin besteht, die Ergebnisse so zu sortieren, dass die übereinstimmende Zeichenfolge am Anfang die höchste Priorität hat, kann die Abfrage wie folgt geändert werden folgt:

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

Dadurch werden Übereinstimmungen priorisiert, die mit der Suchzeichenfolge beginnen (mit einem Wert von 1 zugewiesen), gefolgt von Übereinstimmungen, die die Zeichenfolge enthalten (mit einem Wert von 3 zugewiesen), und schließlich Übereinstimmungen mit der Zeichenfolge tritt an jeder anderen Position auf (Wert 2 zugewiesen).

Übereinstimmungen nach Position sortieren

Alternativ, wenn das Ziel das Sortieren ist Um Ergebnisse basierend auf der Position der übereinstimmenden Zeichenfolge innerhalb des Wortes zu erhalten, kann die Abfrage die LOCATE-Funktion verwenden:

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

Diese Abfrage ordnet die Ergebnisse basierend auf dem Index des ersten Vorkommens der Suchzeichenfolge innerhalb jedes Wortes Wort.

Gleichheitstrennung

In Situationen, in denen mehrere Wörter gleichermaßen mit den Suchkriterien übereinstimmen, kann es wünschenswert sein, eine Gleichheitstrennung einzuführen, um die Reihenfolge weiter zu verfeinern. Dies kann durch Hinzufügen einer zusätzlichen ORDER BY-Klausel erreicht werden:

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

Das Der Platzhalter kann durch jedes zusätzliche Kriterium ersetzt werden, das für die Rangfolge verwendet wird, z. B. Wortlänge, alphabetische Reihenfolge oder eine benutzerdefinierte Metrik.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Suchergebnisse nach „Best Match' 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage