Det officielle standard ordsegmenteringsplugin i elasticsearch er ikke ideelt til kinesisk ordsegmentering. For eksempel vil jeg nu tage et konkret eksempel for at vise, hvorfor ordsegmenteringsplugin'et fra ES' officielle hjemmeside ikke er effektivt til kinesisk ordsegmentering. Referencedokumentation:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
Vi indsender et stykke data til analysegrænsefladen som følger:
http://ip:9200/_analyze POST请求
Hvis du bruger Elasticsearch direkte, vil du helt sikkert støde på pinlige problemer med kinesiske indholdssøgninger.Kinesiske ord er delt op i kinesiske tegn én ad gangenNår man bruger Kibana til at tegne, grupperes efter term, og som resultat opdeles et kinesisk tegn i en gruppe.
Heldigvis findes der to kinesiske ordsegmenterings-plug-ins skrevet af medcl (en af de tidligste personer til at studere ES i Kina), det ene er ik og det andet er mmseg, og det følgende introducerer kun brugen af ik.
IK Analysis-plugin'et integrerer Lucene IK-analysatoren i elasticsearch og understøtter brugerdefinerede ordbøger.
Elasticsearch-Analysis-IK projektadresse:https://github.com/medcl/elasticsearch-analysis-ik
Installer elasticsearch-analysis-ik
Først, stop Elasticsearch kørende, JPS finder proces-ID'et, og dræb det med kill -9 proces-ID! (Jeg testede det alligevel ikke, det er sikrere at stoppe og installere)
Installer med elasticsearch-plugin (understøttet fra version 5.5.1):
Bemærk: Erstat 6.3.0 med din egen version af elasticsearch
Jeg installerede det på min serverElasticsearch er 6.5.2version, så kommandoen er som følger:
Installationsfejlen er som følger:
Undtagelse i tråd "main" java.nio.file.FileSystemUndtagelse: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Operation ikke tilladt
Elasticsearch-installationspluginet skal køre som rootSå vi bruger su root til at skifte til administratorstatus, genudføre installationen, og det lykkes, som vist i figuren nedenfor:
Vi tester ved at indsende en postanmodning til interfacet igen, og indholdet af indlægget er som følger:
Jeg fandt ud af, at jeg normalt kunne forstå vores semantik, og delte "arkitekt", "smuk" og "arkitektur" op i ét ord.
Hvad er forskellen på ik_max_word og ik_smart?
ik_max_word: Teksten vil blive opdelt i de fineste detaljer, såsom "Nationalsangen for Folkerepublikken Kina" vil blive opdelt i "Folkerepublikken Kina, Kinesisk Folk, Kina, Kina, Kinesisk, Folkerepublik, Folk, Folk, Folk, Republik, Republik, Han, Nationalsang", og alle mulige kombinationer vil blive udtømt;
ik_smart: Den vil gøre det groveste niveau af opdeling, såsom at splitte "Folkerepublikken Kinas nationalsang" i "Folkerepublikken Kinas nationalsang".
|