MySQL полнотекстовый поиск скандинавских символов ø æ - PullRequest
1 голос
/ 29 марта 2019

Это единственная информация, которую я могу найти по этой теме, но, похоже, она не отвечает на вопрос: Полнотекстовый поиск по северным буквам (æ, ø, å)

В MySQL у меня есть пользователь по имени "Джон Норбек".

Я бы хотел иметь возможность сопоставить этого пользователя при поиске:

"Noerbaek", "Nørbaek" или "Noerbæk"

(Было бы неплохо иметь возможность совпадать и с «Norbaek», но мой Гуглинг предположил, что ø эквивалентно «oe», а не «o», поэтому теперь неправильно это запрашивать).

Я использую utf8mb4_unicode_ci

Я создал SQL Fiddle здесь: http://sqlfiddle.com/#!9/b5be3d4/3

Кажется, что каждый результат, который я нашел в Интернете, связан с PHP и заменой этих символов на str_replace, но если в моей базе данных указано «Nørbæk», то это не так уж полезно.

Я не могу сделать что-то подобное, потому что соответствующая строка должна быть в полнотекстовом индексе:

SELECT * FROM users WHERE MATCH (REPLACE(`name`, 'æ', 'ae'))
AGAINST ('Nørbaek' IN BOOLEAN MODE);

Это сработало бы, но, конечно, потерпело неудачу при поиске чего-то вроде «Майкла», потому что оно было бы преобразовано в Michæl, так что об этом не может быть и речи.

SELECT * FROM users WHERE MATCH (`name`)
AGAINST (REPLACE('Nørbaek', 'ae', 'æ') IN BOOLEAN MODE);

Значит, у меня нет идей, должен быть лучший способ сопоставить этих персонажей, верно?

Меня больше интересует удобство использования, чем все остальное.

Например, если пожилой пользователь хочет найти своего «доктора Нёрбека», он должен иметь возможность набирать что-то, что найдет его, а не просто учить, как печатать «ø».

...