Xrist1An
@Xrist1An
задаю глупые вопросы

Как влиять на релевантность MySQL fulltext поиска?

Столбцы в таблице: id, text, source

Использую обычный запрос:

SELECT * FROM `articles` WHERE MATCH (text) AGAINST ('database');


...как сделать так, чтобы результаты поиска\строки, в которых в столбце 'source' указано слово "auto", ранжировались с бОльшим приоритетом, нежели другие строки?

Спасибо!
  • Вопрос задан
  • 686 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Строки с 'auto' всегда впереди:
SELECT * 
    FROM (
        SELECT *, MATCH `text` AGAINST('database') AS `score`
            FROM `articles`
    ) AS `t`
    WHERE `score` > 0
    ORDER BY `source` != 'auto', `score`


Строки с 'auto' имеют больший вес (+0.5):
SELECT *
    FROM (
        SELECT *, MATCH `text` AGAINST('database') AS `score`
            FROM `articles`
    ) AS `t`
    WHERE `score` > 0
    ORDER BY `score`+(`source` = 'auto')*0.5 DESC
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы