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, по крайней мере, в отношении этого вопроса.)

Другие вопросы по тегам