2011-03-07 3 views
2

У меня есть база данных заголовков профессий. Я пытаюсь запустить некоторые запросы. Я использую Match(), чтобы попытаться найти лучший матч профессиональное название для введенной пользователем строки с помощью этого SQL:MySQL Match() не находит наиболее оптимальное совпадение

SELECT *, MATCH (occupation_title) AGAINST ('EGG PROCESSOR') 
AS score FROM occupational_titles WHERE MATCH (occupation_title) 
AGAINST ('EGG PROCESSOR') ORDER BY score DESC; 

Когда я запускаю этот запрос к моей базе данных, первые три результата являются «Процессор» , «Яичный процессор» и «Процессор COPRA». Первые два имеют ту же самую парную оценку 6.04861688613892. Почему на земле MySQL не оценивал бы точное совпадение в качестве результата номер один? Я могу что-то сделать, чтобы уточнить алгоритм поиска?

ответ

0

Возможно, вы захотите использовать один из режимов модификатора при поиске. Проверьте fulltext documentation.

В частности, по умолчанию он использует поиск «естественного языка», хотя вы, вероятно, захотите рассмотреть «логический режим» и префикс каждого ключевого слова с помощью знака «плюс», чтобы сделать его обязательным в результатах или с помощью двойных кавычек для поиска точная фраза. Check the boolean mode documentation для получения дополнительной информации о синтаксисе.

Вы также можете рассмотреть возможность выполнения нескольких поисков с использованием различных режимов и собственного взвешивания.

+0

Я не против естественного языка, когда я не могу найти точное совпадение, но в таких случаях, что он не работает – MarathonStudios

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