De officiële standaard woordsegmentatie-plugin van elasticsearch is niet ideaal voor Chinese woordsegmentatie. Ik neem bijvoorbeeld nu een specifiek voorbeeld om te laten zien waarom de woordsegmentatie-plugin van de officiële ES-website niet effectief is voor Chinese woordsegmentatie. Referentiedocumentatie:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
We sturen een stuk data naar de analyse-interface, als volgt:
http://ip:9200/_analyze POST请求
Als je Elasticsearch direct gebruikt, zul je zeker gênante problemen tegenkomen bij het zoeken naar Chinese content.Chinese woorden worden één voor één in Chinese karakters verdeeldBij het gebruik van Kibana om te tekenen, groepeer je op basis van term, en als gevolg daarvan wordt een Chinees karakter verdeeld in een groep.
Gelukkig zijn er twee Chinese woordsegmentatie-plug-ins geschreven door medcl (een van de eerste mensen die ES in China bestudeerde), één is ik en één is mmseg, en de volgende introduceert alleen het gebruik van ik.
De IK Analysis-plugin integreert de Lucene IK-analyzer in elasticsearch en ondersteunt aangepaste woordenboeken.
Adres: ElasticSearch-Analysis-IK projectadres:https://github.com/medcl/elasticsearch-analysis-ik
Installeer elasticsearch-analysis-ik
Eerst stop je Elasticsearch draaien, JPS vindt de proces-ID en doe het met kill -9 proces-ID! (Ik heb het toch niet getest, het is veiliger om te stoppen en te installeren)
Installeer met elasticsearch-plugin (ondersteund vanaf versie 5.5.1):
Opmerking: Vervang 6.3.0 door je eigen versie van elasticsearch
Ik heb het op mijn server geïnstalleerdElasticsearch is 6.5.2versie, dus het commando is als volgt:
De installatiefout is als volgt:
Uitzondering in thread "main" java.nio.file.FileSystemUitzondering: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Operatie niet toegestaan
De Elasticsearch-installatieplugin moet als root worden uitgevoerdWe gebruiken dus su-root om over te schakelen naar beheerdersstatus, voeren de installatie opnieuw uit en het is succesvol, zoals weergegeven in de onderstaande figuur:
We testen door opnieuw een postverzoek in te dienen op de interface, en de inhoud van het bericht is als volgt:
Ik merkte dat ik onze semantiek normaal kon begrijpen, en verdeelde "architect", "mooi" en "architectuur" in één woord.
Wat is het verschil tussen ik_max_word en ik_smart?
ik_max_word: De tekst zal worden opgesplitst in de fijnste details, zoals het "Nationaal Volkslied van de Volksrepubliek China" zal worden opgesplitst in "Volksrepubliek China, Chinees Volk, China, Chinees, Volksrepubliek, Volk, Volk, Volks, Republiek, Republiek, He, Nationaal Volkslied", en alle mogelijke combinaties zullen worden uitgeput;
ik_smart: Het zal het grovste niveau van splitsing uitvoeren, zoals het splitsen van het "Nationaal Volkslied van de Volksrepubliek China" in het "Volkslied van de Volksrepubliek China".
|