Офіційний плагін сегментації слів за замовчуванням elasticsearch не є ідеальним для сегментації китайських слів. Наприклад, тепер я візьму конкретний приклад, щоб показати, чому плагін сегментації слів, наданий офіційним сайтом ES, не є ефективним для сегментації китайською мовою. Довідкова документація:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
Ми подаємо дані на інтерфейс аналізу наступним чином:
http://ip:9200/_analyze POST请求
Якщо ви користуєтеся Elasticsearch безпосередньо, ви точно зіткнетеся з незручними проблемами під час пошуку китайського контенту.Китайські слова по черзі поділяються на китайські ієрогліфиПри використанні Кібани для малювання групуйте відповідно до терміну, і в результаті китайський ієрогліф ділиться на групу.
На щастя, існує два китайські плагіни для сегментації слів, написані medcl (одним із перших людей, які вивчали ES у Китаї): один — ik, інший — mmseg, а наступний лише вводить використання ik.
Плагін IK Analysis інтегрує аналізатор Lucene IK у elasticsearch і підтримує власні словники.
Адреса проєкту elasticsearch-analysis-ik:https://github.com/medcl/elasticsearch-analysis-ik
Встановити elasticsearch-analysis-ik
По-перше, зупиніть запуск Elasticsearch, JPS знаходить ID процесу і вибийте його за допомогою kill -9 process ID! (Я все одно не тестував, безпечніше зупинитися і встановити)
Встановлення за допомогою elasticsearch-plugin (підтримується з версії v5.5.1):
Примітка: замініть версію 6.3.0 власною версією elasticsearch
Я встановив його на свій серверElasticsearch — 6.5.2версія, отже, команда виглядає так:
Помилка встановлення виглядає так:
Виняток у потоку "main" java.nio.file.FileSystemException: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Операція не дозволена
Плагін встановлення Elasticsearch потрібно запускати як rootОтже, ми використовуємо su root, щоб переключитися на статус адміністратора, повторити встановлення, і це успішно, як показано на рисунку нижче:
Ми тестуємо, знову надсилаючи запит на пост на інтерфейс, і вміст публікації виглядає так:
Я зрозумів, що можу нормально розуміти нашу семантику і поділив «архітектор», «красивий» і «архітектуру» в одному слові.
У чому різниця між ik_max_word і ik_smart?
ik_max_word: Текст буде розбитий на найдрібніші деталі, наприклад, «Національний гімн Китайської Народної Республіки» буде розділений на «Народна Республіка Китай, Народна Республіка, Китай, Китай, Народна Республіка, Народ, Народ, Народ, Республіка, Республіка, Хе, Національний гімн», і буде вичерпано всі можливі комбінації;
ik_smart: Буде найгрубіший рівень розділення, наприклад, розділення «Національного гімну Китайської Народної Республіки» на «Національний гімн Китайської Народної Республіки».
|