Поиск без учета акцента в таблице InnoDB MySQL! - PullRequest
1 голос
/ 31 августа 2010

Я работаю над простым поисковым скриптом, который просматривает два столбца определенной таблицы. По сути, я ищу совпадение между номером компании или их названием. Я использую оператор LIKE в SQL, потому что я использую таблицы InnoDB (что означает отсутствие полнотекстового поиска).

Проблема в том, что я работаю в двуязычной среде (на французском и английском), и некоторые персонажи на французском языке имеют акценты. Я хотел бы, чтобы акцентированные символы рассматривались так же, как и их неакцентированные аналоги, другими словами, é = e, e = é, à = a и т. Д. У SO много вопросов, касающихся этой проблемы, но ни один из них не работает для меня.

Вот мой SQL-оператор:

SELECT id, name FROM clients WHERE id LIKE '%éc%' OR name LIKE '%éc%';

Я бы хотел найти слова "école" и "ecole", но он находит только "école".

Я также хотел бы отметить, что все мои таблицы - utf8_general_ci.

Помоги мне, StackOverflow, ты моя единственная надежда! :)

Ответы [ 2 ]

3 голосов
/ 02 сентября 2010

Я собираюсь предложить вам другой ответ.

Я только что прочитал, что utf8_general_ci нечувствителен к акценту, поэтому вы должны быть в порядке.

Одним из решений является использование

 mysql_query("SET NAMES 'utf8'"); 

Это сообщает клиенту, в каком наборе символов отправляются операторы SQL.

Другое решение, по-видимому, заключается в использовании функции HEX() MySQL для преобразования акцентированных символов в их значения Hex. Но я не смог найти хороших примеров этой работы, и после прочтения документации по MySQL для HEX() похоже, что она не будет работать.

0 голосов
/ 31 августа 2010

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

В таком случае у вас будет два столбца, один из которых содержит акцентированные символы, а другой - текст, доступный для поиска на английском.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...