D'accord, je suis en train d'essayer de faire une recherche de texte intégral dans plusieurs colonnes, quelque chose de simple comme ceci :
SELECT * FROM pages WHERE MATCH(head, body) AGAINST('quelques mots' IN BOOLEAN MODE)
Maintenant, je veux trier par pertinence, (combien des mots sont retrouvés?) ce que j'ai pu faire avec quelque chose comme ceci :
SELECT * , MATCH (head, body) AGAINST ('quelques mots' IN BOOLEAN MODE) AS pertinence
FROM pages
WHERE MATCH (head, body) AGAINST ('quelques mots' IN BOOLEAN MODE)
ORDER BY pertinence
Maintenant vient la partie où je suis perdu, je veux donner la priorité à la pertinence dans la colonne head
.
Je suppose que je pourrais créer deux colonnes de pertinence, une pour head
et une pour body
, mais à ce moment-là, je ferais en quelque sorte la même recherche dans la table trois fois, et pour ce pour quoi je fais cette fonction, les performances sont importantes, car la requête sera à la fois jointe et comparée à d'autres tables.
Alors, ma question principale est, y a-t-il un moyen plus rapide de rechercher la pertinence et de donner la priorité à certaines colonnes ? (Et en bonus, éventuellement faire en sorte que la pertinence compte le nombre de fois où les mots apparaissent dans les colonnes ?)
Toutes suggestions ou conseils seraient les bienvenus.
Note : Je vais exécuter ceci sur un serveur LAMP. (WAMP en test local)