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

Geben Sie einigen Feldern mehr Relevanz und sortieren Sie sie in der MySQL-Volltextsuche nach Relevanz

Erstellen Sie zunächst drei FULLTEXT-Indizes:

* one on the title column
* one on the body column
* one on both title and body columns

Erstellen Sie dann Ihre Abfrage wie folgt:

SELECT field1, field2, field3, title, body,
MATCH (title) AGAINST ('word_to_search') AS rel_title,
MATCH (body) AGAINST ('word_to_search') AS rel_body
FROM table_to_use
WHERE MATCH (title,body) AGAINST ('word_to_search')
ORDER BY (rel_title*2)+(rel_body)

Dadurch erhält der Titel 2-mal mehr Relevanz als der Text.

Dies ist sehr praktisch, wenn Sie zulassen möchten, dass der Inhalt beispielsweise nach Tags (die von den Benutzern nicht angezeigt werden) sortiert werden kann, da Sie die Ergebnisse hinter den Kulissen optimieren können.