2013-10-11 4 views
0

Я пытаюсь найти имя магазина в одной из таблиц MySQL, в таблице есть поле с именем fullname. На данный момент я использую метод MySQL SOUNDS LIKE, но вот пример неудачного:Как выполнить поиск интеллектуального текста MySQL в столбце?

Скажем, у меня есть магазин бананов. Тогда использование SOUNDS LIKE с запросом 'nana' или 'bananas' не даст мне результата. Вот мой текущий запрос:

SELECT `fullName` FROM `shop` WHERE `fullName` SOUNDS LIKE 'nana'; 

есть лучший способ сделать простой поиск, как это в MySQL, что умнее, так что опечатка будет также по-прежнему соответствовать?

ответ

0

Древний и слегка почетный алгоритм SOUNDEX, используемый SOUNDS LIKE, не обрабатывает суффиксные звуки. То есть nana не соответствует и не может соответствовать banana. banani будет соответствовать banana, однако.

Два высказывания не обязательно звучат одинаково, если они не имеют одинакового количества слогов. Это хорошо для сопоставления таких вещей, как фамилии: Смит, Шмитт и Шмидт имеют одинаковое значение SOUNDEX.

Вызов интеллектуального текстового поиска SOUNDEX является преувеличением. http://en.wikipedia.org/wiki/Soundex

Вы можете рассмотреть поиск MySQL FULLTEXT, который вы можете найти. Это делает определенное количество соответствия фразы. То есть, если у вас в вашей колонке есть «банановый магазин» и «банановая слизь», слово «банан» будет иметь шанс сопоставить оба эти значения.

Будьте осторожны с FULLTEXT. Он работает контринтуитивно, когда у вас меньше, чем около двухсот строк в таблице, которую вы ищете.

Но это не подходящее словосочетание слов. То, что вы просите, не очень просто.

Вы можете рассмотреть алгоритм Левенштейна (который вы можете найти). Но это шарик, чтобы нормально работать.

+0

перефразировал вопрос немного – adit

+0

добавил некоторую информацию, чтобы ответить. –

+0

спасибо за ответ, у вас был опыт работы с эластичным поиском или люценом? – adit