Oficiální výchozí plugin pro segmentaci slov v elasticsearch není ideální pro segmentaci čínských slov. Například nyní uvedu konkrétní příklad, abych ukázal, proč plugin pro segmentaci slov poskytovaný oficiálním webem ES není efektivní pro segmentaci čínských slov. Referenční dokumentace:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
Odesíláme část dat do analytického rozhraní, a to následovně:
http://ip:9200/_analyze POST请求
Pokud používáte Elasticsearch přímo, určitě narazíte na nepříjemné problémy při vyhledávání čínského obsahu.Čínská slova jsou jedno po druhém rozdělena na čínské znakyPři kreslení pomocí Kibana se seskupuje podle termínu, a výsledkem je, že čínský znak se rozdělí do skupiny.
Naštěstí existují dva čínské pluginy pro segmentaci slov napsané medclem (jedním z prvních lidí, kteří studovali ES v Číně), jeden je ik a druhý mmseg, a následující pouze uvádí použití ik.
Plugin IK Analysis integruje analyzátor Lucene IK do elasticsearch a podporuje vlastní slovníky.
Adresa projektu elasticsearch-analysis-ik:https://github.com/medcl/elasticsearch-analysis-ik
Install elasticsearch-analysis-ik
Nejprve zastavte spuštění Elasticsearch, JPS najde ID procesu a ukončí ho pomocí kill -9 process ID! (Stejně jsem to netestoval, je bezpečnější zastavit a nainstalovat)
Instalace pomocí elasticsearch-pluginu (podporovaného od verze v5.5.1):
Poznámka: Nahraďte 6.3.0 vlastní verzí elasticsearch
Nainstaloval jsem ho na svůj serverElasticsearch je 6.5.2Takže příkaz je následující:
Chyba instalace je následující:
Výjimka ve vlákně "main" java.nio.file.FileSystemException: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Operace není povolena
Instalační plugin Elasticsearch musí být spuštěn jako rootTakže použijeme su root k přepnutí na status správce, opětovné provedení instalace a je to úspěšné, jak je znázorněno na obrázku níže:
Testujeme tak, že znovu pošleme žádost o příspěvek do rozhraní a obsah příspěvku je následující:
Zjistil jsem, že normálně rozumím naší sémantice, a rozdělil jsem "architekt", "krásný" a "architektura" do jednoho slova.
Jaký je rozdíl mezi ik_max_word a ik_smart?
ik_max_word: Text bude rozdělen do nejjemnějších detailů, například "Národní hymna Čínské lidové republiky" bude rozdělena na "Čínská lidová republika, Čínský lid, Čína, Čína, Lid, Lid, Lid, Republika, Republika, Republika, Státní hymna" a vyčerpá všechny možné kombinace;
ik_smart: Udělá to nejhrubší rozdělení, například rozdělení "Národní hymny Čínské lidové republiky" na "Národní hymnu Čínské lidové republiky".
|