Den offisielle standard ordsegmenteringspluginen i elasticsearch er ikke ideell for kinesisk ordsegmentering. For eksempel vil jeg nå ta et konkret eksempel for å vise hvorfor ordsegmenteringspluginen fra ESs offisielle nettside ikke er effektiv for kinesisk ordsegmentering. Referansedokumentasjon:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
Vi sender inn en databit til analysegrensesnittet, som følger:
http://ip:9200/_analyze POST请求
Hvis du bruker Elasticsearch direkte, vil du definitivt støte på pinlige problemer når du håndterer søk etter kinesisk innhold.Kinesiske ord deles inn i kinesiske tegn én etter énNår Kibana brukes til å tegne, grupperes etter term, og som et resultat deles et kinesisk tegn inn i en gruppe.
Heldigvis finnes det to kinesiske ordsegmenterings-plugins skrevet av medcl (en av de tidligste som studerte ES i Kina), ett er ik og ett er mmseg, og det følgende introduserer kun bruken av ik.
IK Analysis-pluginen integrerer Lucene IK-analysatoren i elasticsearch og støtter tilpassede ordbøker.
Elasticsearch-Analysis-IK prosjektadresse:https://github.com/medcl/elasticsearch-analysis-ik
Installer elasticsearch-analysis-ik
Først, stopp Elasticsearch kjørende, JPS finner prosess-ID-en, og drep den med kill -9 prosess-ID! (Jeg testet det uansett ikke, det er tryggere å stoppe og installere)
Installer med elasticsearch-plugin (støttet fra versjon 5.5.1):
Merk: Erstatt 6.3.0 med din egen versjon av elasticsearch
Jeg installerte det på serveren minElasticsearch er 6.5.2versjon, så kommandoen er som følger:
Installasjonsfeilen er som følger:
Unntak i tråd "main" java.nio.file.FileSystemUnntak: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Operasjon ikke tillatt
Elasticsearch-installasjonsplugin må kjøres som rootDerfor bruker vi su-root for å bytte til administratorstatus, utføre installasjonen på nytt, og det lykkes, som vist i figuren under:
Vi tester ved å sende inn en innleggsforespørsel til grensesnittet igjen, og innholdet i innlegget er som følger:
Jeg fant ut at jeg kunne forstå semantikken vår normalt, og delte «arkitekt», «vakker» og «arkitektur» i ett ord.
Hva er forskjellen mellom ik_max_word og ik_smart?
ik_max_word: Teksten vil bli delt opp i de fineste detaljer, slik som at «Folkerepublikken Kinas nasjonalsang» vil bli delt i «Folkerepublikken Kina, Kinesisk folk, Kina, Kina, Kina, Folkerepublikken, Folket, Folket, Folket, Republikken, Republikken, Hans, nasjonalsangen», og vil uttømme alle mulige kombinasjoner;
ik_smart: Den vil gjøre det groveste nivået av splittelse, som å splitte «Folkerepublikken Kinas nasjonalsang» til «Folkerepublikken Kinas nasjonalsang».
|