Официальный плагин для сегментации слов по умолчанию в 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
Install 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: Он проведёт самый грубый уровень разделения, например, разделит «Национальный гимн Китайской Народной Республики» на «Национальный гимн Китайской Народной Республики».
|