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:
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
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).
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)
Diese Abfrage ordnet die Ergebnisse basierend auf dem Index des ersten Vorkommens der Suchzeichenfolge innerhalb jedes Wortes Wort.
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
Das
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!