2013-03-13 6 views
6

Я пытаюсь реализовать поиск по имени и фамилии, используя полнотекстовый поиск и SOUNDEX (в случае, если имя написано неправильно).MySQL Полнотекстовый поиск и SOUNDEX

Я пытался сделать что-то вроде

SELECT * 
    FROM employees 
WHERE 
    MATCH SOUNDEX(first_name, last_name) AGAINST SOUNDEX('John 1969 Ivan') 

, но это не является допустимым синтаксисом.

То, что я хочу достичь, в том, что, когда пользователь, например «Джон Иван», столбцы

first_name | last_name 
---------------------- 
    John  Ivan 

будет соответствовать.

Спасибо заранее!

+0

Не уверен, что это можно комбинировать с MATCH ... ПРОТИВ, но, возможно, полнотекстовый поиск может решить его в одиночку? У этого есть * некоторый * толерантность для разметки разницы –

+1

Связанный: [Что самое легкое приложение поиска сайта для реализации, которое поддерживает нечеткий поиск?] (Http://stackoverflow.com/q/1899470) –

ответ

3

MySQL имеет тенденцию падать, когда дело доходит до текстовых запросов, нечетких запросов, орфографических ошибок и т. Д. Я настоятельно рекомендую такое решение для индексирования, как Solr. Solr поддерживает четыре различных типа фонетических поисков: Soundex, RefinedSoundex, Metaphone и DoubleMetaphone. Он имеет геопространственный поиск и орфографические поиски, а также поиск бабочек/бабочек. Я думаю, вы будете ДЕЙСТВИТЕЛЬНО довольны результатами, которые вы получите. Он быстро ослабевает по сравнению с MySQL