Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die MySQL-Volltext-Suche im Booleschen Modus gibt zu viele Ergebnisse zurück

Um die Sortierung der Ergebnisse im booleschen Modus zu verbessern, können Sie Folgendes verwenden:

SELECT column_names, MATCH (text) AGAINST ('word1 word2 word3')
AS col1 FROM table1
WHERE MATCH (text) AGAINST ('+word1 +word2 +word3' in boolean mode) 
order by col1 desc;

Mit dem ersten MATCH() Wir erhalten die Punktzahl im nicht-booleschen Suchmodus (unterscheidbarer) . Die zweite MATCH() stellt sicher, dass wir wirklich nur die gewünschten Ergebnisse zurückerhalten (mit allen 3 Wörtern) .

Ihre Abfrage wird also:

SELECT *, MATCH (artist, title) AGAINST ('paul van dyk')
    AS score FROM tracks
    WHERE MATCH (artist, title) 
    AGAINST ('+paul +van +dyk' in boolean mode) 
    order by score desc;

Hoffentlich; Sie werden jetzt bessere Ergebnisse erzielen.

Wenn es funktioniert oder nicht funktioniert; Bitte lassen Sie es mich wissen.