MySQL match() contre() - tri par pertinence et de la colonne?

Ok, donc j'essaie de faire une recherche en plein texte en plusieurs colonnes, quelque chose de simple comme ceci:

SELECT * FROM pages WHERE MATCH(head, body) AGAINST('some words' IN BOOLEAN MODE)

Maintenant, je veux à l'ordre par pertinence, (combien de mots?) que j'ai été capable de le faire avec quelque chose comme ceci:

SELECT * , MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance 
FROM pages
WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE)
ORDER BY relevance

Maintenant, voici la partie où je me suis perdu, je veux prioriser la pertinence, dans le head colonne.

Je suppose que je pourrais faire deux de la pertinence des colonnes, l'une pour head et un pour body, mais à ce point, je ferais un peu la même recherche dans la table trois fois, et pour ce que je suis en train de faire cette fonction, la performance est importante, puisque la requête à la fois être rejoint et comparés à d'autres tables.

Donc, ma question principale est de, est-il un moyen plus rapide pour la recherche de la pertinence et de donner la priorité à certaines colonnes? (Et en bonus, peut-être même faire la pertinence de compter le nombre de fois où les mots se produire dans les colonnes?)

Des suggestions ou des conseils seraient les grands.

Remarque: je vais être en cours d'exécution sur une LAMPE-serveur. (WAMP en local tests)

  • Avez-vous vraiment besoin de mettre de MATCH...CONTRE à la fois la clause SELECT et dans la clause where? Ne pouvez-vous pas d'alias dans la clause SELECT et reportez-vous à l'alias dans la clause where? Je suis en train d'utiliser les requêtes préparées, ce qui semble redondant/étrange pour moi.