8.7.15. Настройка украинской морфологии в Manticore Search

Морфология позволяет находить однокоренные слова. Например, при настроенной украинской морфологии поиск по слову «кіт» вернёт результаты со словами «коти», «котів» и т. д.

Для работы украинской морфологии у таблицы обязательно должны быть указаны следующие настройки:

  • «Морфология» — «lemmatize_uk_all» (можно указывать совместно с другими морфологиями).
  • «Таблица кодировки» — как в подсказке под полем в настройках таблицы:
    0..9, _, A..Z->a..z, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+404->U+454, U+454, U+406->U+456, U+456, U+407->U+457, U+457, U+490->U+491, U+491, U+401->U+435, U+451->U+435, U+002D
  1. Добавьте в разрешённые IP-адрес, с которого будете подключаться к Manticore Search (без этого подключение по MySQL работать не будет).
  2. Подключитесь к Manticore Search по MySQL:
    • Используйте хост и порт из строки «MySQL» в блоке «Инстанс» в разделе «Manticore Search».
    • Название базы данных и пароль можно указать любые или не указывать совсем (они игнорируются).
    • Подключаться можно через консоль или с помощью любого MySQL-клиента.
    • Пример команды для подключения через консоль:
      mysql -h example.manticore.tools -P 10000
  3. Создайте таблицу с нужными настройками:
    • Можно создавать либо через панель управления, либо с помощью SQL-запросов.
    • Пример SQL-запросов для создания таблицы:
      CREATE TABLE tbl (f text) charset_table='non_cjk,0..9,_,A..Z->a..z,a..z,U+410..U+42F->U+430..U+44F,U+430..U+44F,U+404->U+454,U+454,U+406->U+456,U+456,U+407->U+457,U+457,U+490->U+491,U+491,U+401->U+435,U+451->U+435,U+002D' morphology='lemmatize_uk_all';
      INSERT INTO tbl VALUES(1,'Коти ловлять мишей');
      INSERT INTO tbl VALUES(2,'Миша боїться котів');
    • Можно указывать несколько морфологий через запятую, например morphology='lemmatize_uk_all, lemmatize_en_all.
  4. Выполните поиск по нужному слову в таблице (highlight() выделяет найденное слово):
    • Поиск по слову «кіт» в примере выше вернёт строки со словами «коти» и «котів»:
      SELECT highlight() FROM tbl WHERE MATCH('кіт');
    • Поиск по слову «боятись» в примере выше вернёт строку со словом «боїться»:
      SELECT highlight() FROM tbl WHERE MATCH('боятись');
Содержание