Скажем, у меня есть таблица вроде этого:Получить наиболее соответствует результат на вершине в MySQL LIKE запроса
Таблица: businesses
+----+------------------------+
| id | name |
+----+------------------------+
| 1 | Carolyn Wong Cakes |
| 2 | Cupcakin Cackes Shop |
| 3 | Wong Cackes Shop |
| 4 | Indie Cakes & Pastries |
+----+------------------------+
Я хочу, чтобы получить best matched result
в то время как я ищу для некоторых слов внутри имени. Например, я хочу найти: Wong Cackes Shop
который составляет 3 слова.
Я использую этот запрос для поиска выше:
SELECT * FROM businesses WHERE (
name LIKE '% Wong %' OR
name LIKE '% Cackes %' OR
name LIKE '% Shop %'
)
Я ожидаю record 3
быть первым соответствуют результату, но результат:
Carolyn Wong Cakes
// с2
согласующимися словамиCupcaking Cackes Shop
// с2
соответствующие словаWong Cackes Shop
// с3
соответствующие слова
Как я могу искать слова и получать записи с большинством согласованных результатов поверх других результатов?
Как это:
Wong Cackes Shop
// с3
согласующихся словCupcaking Cackes Shop
Carolyn Wong Cakes
EDIT: Мой word-boundaries
LIKE метод также имеет проблемы. он не получит результатов, которые начинаются или заканчиваются одним из трех слов. из-за тех, кто spaces
в LIKE '% word %'
, например:
Wong[space]
// не соответствует
[space]Wong[space]
матч
[space]Wong
// не соответствует
Спасибо.
вопрос напоминает другой вопрос: http://stackoverflow.com/questions/23153515/mysql-count-number-of-like-matches-per-entry – Bee157
вы смотрели на индексы FULLTEXT ли ? – Strawberry
@Strawberry мой настольный двигатель 'innoDB'. поддерживает ли он FULLTEXT? – Pars