So verbessern Sie die Relevanz der MySQL-Volltextsuche für bestimmte Felder
Angenommen, Sie haben eine Datenbank mit zwei Spalten: Schlüsselwörter und Inhalt. Sie haben einen Volltextindex erstellt, der beide Spalten abdeckt. Sie möchten jedoch Zeilen mit bestimmten Wörtern in der Schlüsselwortspalte Vorrang vor Zeilen mit denselben Wörtern in der Inhaltsspalte einräumen.
Lösung:
Erstellen Sie drei Volltextindizes:
- Index nur auf Schlüsselwortspalte
- Index nur auf Inhaltsspalte
- Index sowohl auf Schlüsselwörtern als auch auf Inhaltsspalten
Ändern Sie dann Ihre Anfrage wie folgt:
SELECT id, keyword, content,
MATCH (keyword) AGAINST ('watermelon') AS rel1,
MATCH (content) AGAINST ('watermelon') AS rel2
FROM table
WHERE MATCH (keyword,content) AGAINST ('watermelon')
ORDER BY (rel1*1.5)+(rel2) DESC
Erklärung:
- rel1 und rel2 berechnen die Relevanz Ihrer Anfrage in den Schlüsselwörtern bzw. Inhaltsspalten.
- Indem Sie rel1 mit 1,5 multiplizieren, geben Sie Schlüsselwörtern eine höhere Gewichtung.
- Die WHERE-Klausel verwendet weiterhin den zusammengesetzten Index für Schlüsselwörter und Inhalte, um sicherzustellen, dass Ergebnisse zurückgegeben werden.
- Diese Technik ermöglicht Ihnen die Steuerung von Recall (welche Ergebnisse zurückgegeben werden) und Relevanz (wie der Abgleich priorisiert wird), wodurch bestimmte Felder stärker hervorgehoben werden.
Das obige ist der detaillierte Inhalt vonWie kann die Relevanz bestimmter Felder in der MySQL-Volltextsuche gesteigert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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