Uradni privzeti vtičnik za segmentacijo besed v elasticsearch ni idealen za kitajsko segmentacijo besed. Na primer, zdaj bom vzel konkreten primer, da pokažem, zakaj vtičnik za segmentacijo besed, ki ga ponuja uradna spletna stran ES, ni učinkovit za kitajsko segmentacijo besed. Referenčna dokumentacija:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
V analitični vmesnik pošljemo podatek, kot sledi:
http://ip:9200/_analyze POST请求
Če uporabljate Elasticsearch neposredno, boste zagotovo naleteli na neprijetne težave pri iskanju kitajskih vsebin.Kitajske besede so razdeljene na kitajske znake eno za drugoPri risanju Kibana se razdeli po izrazu, zato se kitajski znak razdeli v skupino.
Na srečo obstajata dva kitajska vtičnika za segmentacijo besed, ki ju je napisal medcl (eden prvih ljudi, ki je na Kitajskem študiral ES), eden je ik, drugi mmseg, naslednji pa le uvaja uporabo ik.
Vtičnik IK Analysis integrira analizator Lucene IK v elasticsearch in podpira prilagojene slovarje.
Naslov projekta elasticsearch-analysis-ik:https://github.com/medcl/elasticsearch-analysis-ik
Install elasticsearch-analysis-ik
Najprej ustavite delovanje Elasticsearch, JPS najde ID procesa in ga uniči z ID procesa kill -9! (Tako ali tako ga nisem testiral, saj je varneje, da se ustavi in namesti)
Namestitev z uporabo elasticsearch-plugina (podprtega od različice v5.5.1):
Opomba: Zamenjajte različico 6.3.0 s svojo različico elasticsearch
Namestil sem ga na svoj strežnikElasticsearch je 6.5.2torej je ukaz naslednji:
Napaka pri namestitvi je naslednja:
Izjema v niti "main" java.nio.file.FileSystemException: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Operacija ni dovoljena
Vtičnik za namestitev Elasticsearch mora biti zagnan kot rootTorej uporabimo su root, da preklopimo v status administratorja, ponovno izvedemo namestitev in je uspešno, kot je prikazano na spodnji sliki:
Testiramo tako, da ponovno pošljemo zahtevo za objavo na vmesnik, vsebina objave pa je naslednja:
Ugotovil sem, da lahko normalno razumem našo semantiko in sem "arhitekt", "lep" in "arhitektura" razdelil v eno besedo.
Kakšna je razlika med ik_max_word in ik_smart?
ik_max_word: Besedilo bo razdeljeno na najnatančnejšo podrobnost, na primer "Državna himna Ljudske republike Kitajske" bo razdeljena na "Ljudska republika Kitajska, Kitajska ljudstva, Kitajska, Kitajska, Ljudska republika, Ljudstvo, Ljudstvo, Ljudstvo, Republika, Republika, He, Državna himna" in bo izčrpalo vse možne kombinacije;
ik_smart: Naredila bo najgrobejšo razcepitev, na primer razdelitev "Državne himne Ljudske republike Kitajske" na "Državno himno Ljudske republike Kitajske".
|