Результаты упорядочения MySQL по порядку совпадения предложения - PullRequest
1 голос
/ 24 января 2010

У меня есть запрос, который разбивает фразу на пробелы и должен найти лучшее соответствие для фразы. Сначала нужно вернуть этот матч. Я пытаюсь сделать это в одном запросе, используя предложения where. Это возможно? Я пытаюсь что-то вроде этого:

для: моя фраза

выберите имя из myTable, где name = "моя фраза" или имя как "% my фразу%" или (имя как "% my%" и имя как "% фразу%") или (имя как "% my%" или имя как "% фразу%") предел 5;

По сути, я хочу, чтобы пять лучших соответствий были в порядке совпадения предложения. Я знаю, что по умолчанию MySQL оптимизирует предложения where оптимизированным способом. Есть ли способ заставить его оценить их по порядку? И если да, то как я могу заставить его возвращать результаты в порядке совпадения с предложением where?

1 Ответ

1 голос
/ 24 января 2010

Используйте полнотекстовый поиск вместо этого. Это намного быстрее, гибче и позволяет вам получать результаты. Google для более

SELECT ..., MATCH(col_name) AGAINST ('my pharse') AS score FROM tbl_name WHERE MATCH(col_name) AGAINST('my pharse') ORDER BY score DESC;
...