MySQL совпадает с 'ch' в utf8_czech_ci
Мы успешно используем MATCH AGAINST
в запросах для поиска в нашей базе данных, которая в основном на чешском языке, поэтому мы используем utf8_czech_ci
как сопоставление по умолчанию. Мы установили минимальную длину запроса в 1 и отключили все стоп-слова.
Тем не менее, рассмотреть вопрос о поиске слова Schedule
,
Когда вы пишете:
s
:Schedule
найденныйsc
: Ничего не найденоsch
:Schedule
найденный
Похоже, это лечит ch
как одиночный символ (который является правильным в чешском языке), но, безусловно, неверно, когда мы делаем полнотекстовый поиск.
Есть ли способ избежать такого поведения?
1 ответ
Да, utf8_czech_ci лечит ch
одной буквой между h
а также i
, Č
а также č
равны, но приходят в конце концов c
, Точно так же и для других писем с Caron.
Это обеспечивает особенности сопоставления различных параметров сопоставления utf8.
Я бы сказал, что ваши наблюдения верны для этого сопоставления. Является ли "расписание" чешским словом?
Чтобы избежать этого, выберите другой utf8 COLLATION
для столбца, и восстановить FULLTEXT
индекс. utf8_bin
а также utf8_general_ci
а также utf8_unicode_ci
вероятные кандидаты. Возможно, вам понадобится два столбца (и индексы) с одинаковым текстом, но с разным сопоставлением. Затем выберите столбец, чтобы указать, на каком языке вы хотите искать.
Вы "сравниваете" строки? Если это так, сопоставление будет иметь большое значение - "скажем" <"см." <"Sch" на чешском языке, но не любое (?) Другое сопоставление.
(utf8mb4 действует так же, как utf8, по крайней мере, в отношении этого вопроса.)