Нормализовать полнотекстовую оценку MySQL - PullRequest
0 голосов
/ 24 марта 2011

Я делаю довольно стандартный запрос MySQL MATCH(...) AGAINST(...).Я возвращаю счет каждой строки в столбце score.Проблема здесь в том, что оценка может быть больше 1, поэтому получить процент сложно (умножив на 100), потому что я могу получить баллы больше 1. Мой вопрос, могу ли я нормализовать колонку баллов, чтобы получить все баллыот 0 до 1, но сохраняйте их пропорционально (например, оценка 4 будет 1, а оценка 2 станет 0,5 и т. д., но 4 может быть динамической верхней границей).

Myзапрос выглядит следующим образом:

SELECT *, MATCH(body) AGAINST ('string') AS score 
FROM home_posts 
WHERE MATCH(body) AGAINST ('string') 

1 Ответ

1 голос
/ 24 марта 2011

Оценка в MySQL MATCH не является процентной долей, и попытка конвертировать ее в такое было бы совершенно неправильным подходом.Вы можете прочитать математику за этим в http://forge.mysql.com/wiki/MySQL_Internals_Algorithms#Full-text_Search

РЕДАКТИРОВАТЬ: я бы попробовал

SELECT *, 
    MATCH(body) AGAINST ('string') AS score, 
    (MATCH(body) AGAINST ('string') / maxScore) AS normalisedScore
FROM home_posts, 
    (SELECT MAX(MATCH(body) AGAINST ('string')) AS maxScore 
     FROM home_posts) maxScoreTable
WHERE MATCH(body) AGAINST ('string') 
...