Если вы хотите, чтобы релевантность, а также результаты сортировались по релевантности, общий формат запроса FULLTEXT:
SELECT name, MATCH(name) AGAINST('Bob') AS relevance FROM users WHERE MATCH(name) AGAINST('Bob')
Как разработчик, мне всегда нравится делать мой код СУХИМ (не повторяйте себя). Есть ли причина не писать запрос как:
SELECT name, MATCH(name) AGAINST('Bob') AS relevance FROM users HAVING relevance > 0 ORDER BY relevance DESC
Кажется, он возвращает те же результаты, но стоит ли мне беспокоиться о том, что ORDER BY приведет к замедлению запроса? Эти запросы эквивалентны?
Задание MATCH()
дважды не снижает производительность, как отмечено в руководстве по MySQL.
Полнотекстовый поиск на естественном языке
Чтобы достичь этого результата, вы должны
укажите MATCH()
дважды: один раз в
SELECT
список и один раз в WHERE
пункт. Это не вызывает никаких дополнительных
накладные расходы, потому что оптимизатор MySQL
замечает, что два MATCH()
звонка
идентичен и вызывает полный текст
Искать код только один раз.