O plugin oficial padrão de segmentação de palavras do elasticsearch não é ideal para segmentação de palavras em chinês. Por exemplo, agora vou usar um exemplo específico para mostrar por que o plugin de segmentação de palavras fornecido pelo site oficial do ES não é eficaz para segmentação de palavras em chinês. Documentação de Referência:
https://www.elastic.co/guide/en/ ... ting_analyzers.html
https://www.elastic.co/guide/en/ ... ndices-analyze.html
Submetemos um dado para a interface de análise, da seguinte forma:
http://ip:9200/_analyze POST请求
Se você usar o Elasticsearch diretamente, certamente encontrará problemas constrangedores ao lidar com buscas de conteúdo em chinês.As palavras chinesas são divididas em caracteres chineses uma a umaAo usar Kibana para desenhar, agrupe de acordo com o termo e, como resultado, um caractere chinês é dividido em um grupo.
Felizmente, existem dois plug-ins de segmentação de palavras chinesas escritos pela medcl (uma das primeiras pessoas a estudar ES na China), um é ik e outro é mmseg, e o seguinte apenas introduz o uso de ik.
O plugin IK Analysis integra o analisador Lucene IK ao elasticsearch e suporta dicionários personalizados.
Endereço do projeto elasticsearch-analysis-ik:https://github.com/medcl/elasticsearch-analysis-ik
Instalar elasticsearch-analysis-ik
Primeiro, pare o Elasticsearch de rodar, o JPS encontra o ID do processo e o elimine com o ID do processo kill -9! (De qualquer forma, eu não testei, é mais seguro parar e instalar)
Instale usando elasticsearch-plugin (suportado a partir da versão v5.5.1):
Nota: Substitua a 6.3.0 pela sua própria versão do elasticsearch
Eu instalei no meu servidorElasticsearch é a 6.5.2Portanto, o comando é o seguinte:
O erro de instalação é o seguinte:
Exceção no thread "main" java.nio.file.FileSystemException: /usr/local/elasticsearch-6.5.2/config/analysis-ik: Operação não permitida
O plugin de instalação Elasticsearch precisa ser executado como rootEntão, usamos o su root para mudar para o status de administrador, refazer a instalação e é bem-sucedida, como mostrado na figura abaixo:
Testamos enviando novamente uma solicitação de postagem para a interface, e o conteúdo da postagem é o seguinte:
Percebi que conseguia entender nossa semântica normalmente, e dividi "arquiteto", "belo" e "arquitetura" em uma única palavra.
Qual é a diferença entre ik_max_word e ik_smart?
ik_max_word: O texto será dividido em detalhes finos, como o "Hino Nacional da República Popular da China" será dividido em "República Popular da China, Povo Chinês, China, Chinês, República Popular, Povo, Povo, Povo, República, República, He, Hino Nacional", e esgotará todas as combinações possíveis;
ik_smart: Ele fará o nível mais grosseiro de divisão, como dividir o "Hino Nacional da República Popular da China" em "Hino Nacional da República Popular da China".
|