MYSQL Принудительное сопоставление с образцом - PullRequest
0 голосов
/ 08 февраля 2012

У меня возникают проблемы с выяснением, можно ли заставить mysql считать определенные указанные строки идентичными при выборе результатов в запросе на выборку.

Например, у меня есть столбец, содержащий слово "трахиотомия", ноИз-за особенностей языка очень вероятно, что поисковый запрос будет «трахиотомией» (обратите внимание, что c отсутствует).

Есть ли способ заставить запрос распознать любой шаблон букв для другого?Например, чтобы сопоставить любой экземпляр в словах последовательности букв "ach" и "ah" - и наоборот.По сути, используйте его независимо от того, как оно было написано.

Другим примером может служить слово Archon, которое я также хотел бы сопоставить с Arhon.Так что, если пользовательский ввод был Archon, он соответствовал бы данным базы данных Arhon и наоборот.

Я немного поэкспериментировал с soundex, и он действительно соответствует некоторым экземплярам, ​​но кажется, что из-за того, как работает алгоритмне может сделать это в тех случаях, когда искомая совпадающая строка находится в начале слова.

Например, слово "Chorevo" не может соответствовать слову "Horevo", если я не могу каким-то образом заставить его считать, что "chor"равно "hor" и наоборот в любом слове.

Я читаю в REGEXP, чтобы посмотреть, может ли оно быть каким-то образом сопоставлено.(что-то вроде REGEXP 'arch', 'arh')

На данный момент я использую полнотекстовый запрос на совпадение, но могу изменить его, если это окажется проблемой.

Яне уверен, что я ясно дал понять, но буду признателен за любую возможную помощь.

1 Ответ

0 голосов
/ 08 февраля 2012

Это называется фонетическим соответствием. MySQL реализует относительно примитивную версию этого в функции soundex(str) и в предложении a SOUNDS_LIKE b (что является просто сокращением для soundex(a) = soundex(b). По своей природе такое сопоставление зависит от языка, а реализация MySQL разработана для английских слов и поэтому может не работает в вашей ситуации.

В качестве альтернативы вы можете исследовать / написать собственное преобразование, которое делает то, что вы хотите, и применить его к данным перед сохранением в базе данных (в отдельном столбце или таблице).

...