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('боятись');
Зміст