Я думаю, вы имеете в виду, что вы хотите актуальность, а также результат.Это будет выглядеть примерно так:
SELECT id, title, body, MATCH(title, body) AGAINST ('database') as Relevance FROM `articles` WHERE MATCH(title, body) AGAINST ('database' IN BOOLEAN MODE) ORDER BY `Relevance` DESC
edit Я неправильно понял вопрос.Вот список всех релевантностей в процентном выражении:
SELECT a.id, a.title, a.body,
MATCH(a.title) AGAINST ('database') as titleRelevance,
MATCH(a.body) AGAINST ('database') as bodyRelevance,
MATCH(a.title) AGAINST ('database')/c.maxTitleRelevance *100 AS percentageTitleRelevance,
MATCH(a.body) AGAINST ('database')/d.maxBodyRelevance *100 AS percentageBodyRelevance,
c.maxTitleRelevance + d.maxBodyRelevance AS maxTotalRelevance,
(MATCH(a.title) AGAINST ('database')+MATCH(a.body) AGAINST ('database'))/(c.maxTitleRelevance + d.maxBodyRelevance)*100 AS percentageTotalRelevance
FROM `articles` a,
(SELECT MAX(MATCH(b.title) AGAINST('database')) as maxTitleRelevance FROM articles b LIMIT 1) c,
(SELECT MAX(MATCH(b.body) AGAINST('database')) as maxBodyRelevance FROM articles b LIMIT 1) d
WHERE MATCH(a.title, a.body) AGAINST ('database' IN BOOLEAN MODE)
Это может быть легче прочитать в следующей скрипте.http://sqlfiddle.com/#!2/c7885/14 Полнотекстовый поиск в MySQL в лучшем случае ненадежен.Если база данных слов находится не менее чем в 50% строк базы данных, она будет игнорироваться как общее стоп-слово, если вы не укажете логический режим, как в запросе выше.С точки зрения того, как вычисляется релевантность, я боюсь, что не могу вам помочь.