Работает ли полнотекстовый поиск MySql с нелатинскими языками (иврит, арабский, японский ...) - PullRequest
8 голосов
/ 30 августа 2009

Работает ли полнотекстовый поиск MySql разумно с нелатинскими языками? (Иврит, арабский, японский ...)

Дополнение: сделал несколько тестов ... Есть некоторые проблемы с ивритом. Пример: имя מו ס ינזון произносится так же, как מו ש ינזון , но при поиске одного не будет найдено другое, так как это распространенная орфографическая ошибка на иврите, кажется, мне придется сделать некоторые манипуляции с данными, чтобы он работал идеально.

Ответы [ 5 ]

3 голосов
/ 21 ноября 2011

Хотя поддержка иврита в MySQL ограничена, ваша проблема - это скорее проблема людей, использующих неправильное написание, чем дисфункция сервера MySQL с этой точки зрения. Если вы неправильно введете слово в Google, оно покажет вам предложение, и вы можете нажать на это предложение, чтобы найти этот термин.

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

2 голосов
/ 30 августа 2009

Пока ваше сопоставление установлено правильно, оно работает великолепно.

Unicode будет работать для большей части этого, конечно. Но это не очень хорошо переводит латинские символы (например, в голландском сопоставлении aa будет распознано как å).

1 голос
/ 02 сентября 2013

Да Полнотекстовый поиск MySQL хорошо работает для Арабский . Просто убедитесь, что в следующих случаях:

  1. COLLATION = utf8_unicode_ci & CHARACTER SET = utf8. (Базы данных, таблицы и столбцы).
  2. Индексные слова из 3 букв и более . Это Очень важно для арабского языка, ft_min_word_len = 3 (см. show variables like "ft_%";)
  3. Проверьте версию MySQL (5.5 или 5.6) и Engine (InnoDb или MyIsam)
1 голос
/ 31 августа 2009

Japanese и Chinese используют свои собственные символы пробела, которые MySQL не понимает.

Убедитесь, что слова в текстах, которые вы хотите проиндексировать, разделены ASCII разделителями (пробелами, запятыми и т. Д.). Все, что находится за пределами диапазона ASCII, вероятно, не будет работать.

Кроме того, вам, вероятно, понадобится исправить ft_min_word_len: по умолчанию MySQL не будет индексировать слова короче 4 символов и большинство слов Japanese и Chinese.

В Cyrillic ошибки перевода весьма распространены.

Все буквы из этой последовательности: АВЕКМНОРСТуХ / ABEKMHOPCTyX неотличимы в большинстве шрифтов.

Наихудшим из них является кириллица С / латиница C: оба эти символа расположены на одной клавише на клавиатуре и практически не различаются в большинстве шрифтов, но имеют разные коды.

MySQL тоже не поймает его.

1 голос
/ 30 августа 2009

Да, однако, проверьте, что такое стоп-слова .

...