Det officiella standardpluginet för ordsegmentering i elasticsearch är inte idealiskt för kinesisk ordsegmentering. Till exempel kommer jag nu att ta ett specifikt exempel för att visa varför ordsegmenteringspluginet som tillhandahålls av ES:s officiella webbplats inte är effektivt för kinesisk ordsegmentering. Referensdokumentation:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
Vi skickar in en databit till analysgränssnittet, enligt följande:
http://ip:9200/_analyze POST请求
Om du använder Elasticsearch direkt kommer du definitivt att stöta på pinsamma problem när du hanterar sökningar på kinesiskt innehåll.Kinesiska ord delas in i kinesiska tecken ett efter ettNär Kibana används för att rita, grupperas enligt term, och som resultat delas ett kinesiskt tecken in i en grupp.
Lyckligtvis finns det två kinesiska ordsegmenteringstillägg skrivna av medcl (en av de tidigaste som studerade ES i Kina), ett är ik och ett är mmseg, och det följande introducerar endast användningen av ik.
IK Analysis-pluginet integrerar Lucene IK-analysatorn i elasticsearch och stödjer anpassade ordböcker.
Elasticsearch-Analysis-IK projektadress:https://github.com/medcl/elasticsearch-analysis-ik
Installera elasticsearch-analysis-ik
Först, sluta köra Elasticsearch, JPS hittar process-ID:t och döda det med kill -9 process-ID! (Jag testade det ändå inte, det är säkrare att stanna och installera)
Installera med elasticsearch-plugin (stöds från version 5.5.1):
Obs: Ersätt 6.3.0 med din egen version av elasticsearch
Jag installerade det på min serverElasticsearch är 6.5.2version, så kommandot är följande:
Installationsfelet är följande:
Undantag i tråd "main" java.nio.file.FileSystemUndantag: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Operation ej tillåten
Elasticsearch-installationspluginet måste köras som rootSå vi använder su root för att byta till administratörsstatus, utföra installationen igen, och det lyckas, som visas i figuren nedan:
Vi testar genom att skicka in en inläggsförfrågan till gränssnittet igen, och innehållet i inlägget är följande:
Jag upptäckte att jag kunde förstå vår semantik normalt, och delade upp "arkitekt", "vacker" och "arkitektur" i ett ord.
Vad är skillnaden mellan ik_max_word och ik_smart?
ik_max_word: Texten kommer att delas upp i de finaste detaljerna, såsom "Nationalsången för Folkrepubliken Kina" kommer att delas upp i "Folkrepubliken Kina, Kinesiska folket, Kina, Kina, Kina, Folkrepubliken, Folket, Folket, Folket, Republik, Republik, He, Nationalsången", och alla möjliga kombinationer kommer att uttömmas;
ik_smart: Den kommer att göra den grovaste nivån av delning, som att dela upp "Folkrepubliken Kinas nationalsång" till "Folkrepubliken Kinas nationalsång".
|