2014-04-11 3 views
0

Привет, у меня проблемы с сортировкой результатов моего запроса sql на основе релевантности.Как отсортировать результаты поиска по полнотекстовому индексу по релевантности

Вот мой запрос в настоящее время.

SELECT author FROM search WHERE MATCH(author,title,series) AGAINST('Anna Selby' in BOOLEAN MODE) 

Может кто-нибудь сказать мне решение о том, как сортировать результаты, основанные на уместности

+0

возможно дубликат [Mysql полнотекстового поиска булева - сортировать по релевантности, и еще одно поле] (http://stackoverflow.com/questions/ 16812501/mysql-fulltext-boolean-search-sort-by-reality-and-one-more-field) – StanislavL

ответ

1

Вы можете выбрать матч, как часть вашего запроса, и он возвращается как «оценка». Затем вы можете отсортировать его. IE:

SELECT 
    author, 
    MATCH(author,title,series) AGAINST('Anna Selby' in BOOLEAN MODE) as score 
FROM 
    search 
WHERE 
    MATCH(author,title,series) AGAINST('Anna Selby' in BOOLEAN MODE) 
ORDER BY 
    score 

UPDATE: Вот взвешенный пример

SELECT 
    author, 
    (
    (MATCH(author) AGAINST('Anna Selby' in BOOLEAN MODE) * 20) + 
    (MATCH(title) AGAINST('Anna Selby' in BOOLEAN MODE) * 10) + 
    (MATCH(series) AGAINST('Anna Selby' in BOOLEAN MODE) * 5)) as score 
FROM 
    search 
WHERE 
    MATCH(author,title,series) AGAINST('Anna Selby' in BOOLEAN MODE) 
ORDER BY 
    score 
+0

Эй, спасибо за ваш ответ. Но результат все же не подходит. Название с Теддом Селби имеет более высокий балл, чем у Анны Селби. Любая идея как? Я использовал тот же самый запрос, который вы дали. Я также получаю предупреждение ... «Текущий выбор не содержит уникального столбца. Редактирование сетки, флажок, редактирование, копирование и удаление недоступны». – sss999

+0

Трудно сказать, почему, не глядя на ваши данные, но поскольку вы сопоставляетесь с 3 столбцами и используете логический поиск, ваш поиск, вероятно, находит больше совпадений (т. Е. На Selby) в трех столбцах, объединенных для Tedd, а затем для Anna. Вы можете весить свою оценку, если хотите, давая больше очков автору или титулу. Я добавил пример выше. Проверьте [full docs] (http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html) для получения дополнительной информации – Arkitecht

+0

Привет, спасибо за помощь, но я снова получаю сообщение об ошибке , Невозможно найти индекс FULLTEXT, соответствующий списку столбцов Это ошибка его показа. – sss999

Смежные вопросы