Oficjalna domyślna wtyczka segmentacji słów w elasticsearch nie jest idealna do segmentacji słów chińskich. Na przykład teraz podam konkretny przykład, aby pokazać, dlaczego wtyczka segmentacji słów udostępniana na oficjalnej stronie ES nie jest skuteczna dla segmentacji słów chińskich. Dokumentacja referencyjna:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
Przesyłamy fragment danych do interfejsu analitycznego, w następujący sposób:
http://ip:9200/_analyze POST请求
Jeśli korzystasz bezpośrednio z Elasticsearch, z pewnością napotkasz kłopotliwe problemy przy wyszukiwaniu chińskich treści.Chińskie słowa dzieli się na znaki chińskie jedno po drugimUżywając Kibana do rysowania, grupuj według terminu, a w rezultacie chiński znak dzieli się na grupę.
Na szczęście istnieją dwa chińskie wtyczki do segmentacji słów napisane przez medcl (jednego z pierwszych osób studiujących ES w Chinach), jedna to ik, druga to mmseg, a kolejna wprowadza jedynie użycie ik.
Wtyczka IK Analysis integruje analizator Lucene IK z elasticsearch i obsługuje niestandardowe słowniki.
Adres projektu elasticsearch-analysis-ik:https://github.com/medcl/elasticsearch-analysis-ik
Install elasticsearch-analysis-ik
Najpierw zatrzymaj działanie Elasticsearch, JPS znajduje ID procesu i zabija go za pomocą kill -9 ID procesu! (I tak tego nie testowałem, bezpieczniej jest zatrzymać i zamontować)
Instalacja za pomocą wtyczki elasticsearch (obsługiwanej od wersji 5.5.1):
Uwaga: Zastąp wersję 6.3.0 własną wersją elasticsearch
Zainstalowałem go na moim serwerzeElasticsearch to wersja 6.5.2więc polecenie jest następujące:
Błąd instalacji wygląda następująco:
Wyjątek w wątku "main" java.nio.file.FileSystemException: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Operacja niedozwolona
Wtyczka instalacyjna Elasticsearch musi być uruchamiana jako rootUżywamy więc root su, aby przejść do statusu administratora, ponownie wykonać instalację i wszystko się udaje, jak pokazano na poniższym rysunku:
Testujemy, ponownie wysyłając prośbę o post do interfejsu, a treść wpisu wygląda następująco:
Odkryłem, że potrafię normalnie rozumieć naszą semantykę i podzieliłem "architekt", "piękny" i "architektura" w jedno słowo.
Jaka jest różnica między ik_max_word a ik_smart?
ik_max_word: Tekst zostanie podzielony na najdrobczajszą szczegółowość, na przykład "Hymn narodowy Chińskiej Republiki Ludowej" zostanie podzielony na "Chińska Republika Ludowa, Lud Chińczycy, Chiny, Chińskie, Ludowe, Ludowe, Ludowe, Republika, Republika, He, Hymn Narodowy", i wyczerpie wszystkie możliwe kombinacje;
ik_smart: Będzie to najgłębsze dzielenie, na przykład dzieląc "Hymn Narodowy Chińskiej Republiki Ludowej" na "Hymn Narodowy Chińskiej Republiki Ludowej".
|