Docker中安装 Elasticsearch 的ik分词器并使用python调用

      smartcn分词器是目前ES官方推荐的中文分词插件,不过目前不支持自定义分词器词库,这里我们推荐使用 IK分词器,本分词器支持自定义分词器库。

一、安装自己 Elasticsearch 对应版本的ik分词器

1、查看适合 自己ES(Elasticsearch)版本的IK分词器插件

Releases · infinilabs/analysis-ik (github.com)

Index of: analysis-ik/stable/ (infinilabs.com)

2、安装ik分词器  共有两种方式 在线安装和离线安装

2.1、在线安装(在线安装对网络有一定要求,可能会安装失败)

在线安装,运行一个命令即可(ik的版本一定需要和es(Elasticsearch)的版本匹配 我所使用的是elasticsearch-analysis-ik-8.9.0.zip):

docker exec -it elasticsearch ./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.9.0/elasticsearch-analysis-ik-8.9.0.zip

# docker exec -it elasticsearch 中elasticsearch为我的容器名称,需要修改为自己的容器名称

2.2、离线安装(https://www.cnblogs.com/szwdun/p/10664348.html  参考)

2.2.1、下载elasticsearch-analysis-ik-8.9.0.zip包后将文件上传到服务器,并将压缩包拷贝到容器中(elasticsearch:/usr/share/elasticsearch/plugins文件夹中)

2.2.2、进入容器 ,并创建 ik文件夹,并进入创建的文件夹

2.2.3、将ik压缩包移动到创建的 ik文件夹,并进行解压

2.2.4、删除解压后的压缩包,并重启容器

3、输入以下命令查看是否安装成功

curl -X GET "localhost:9200/_cat/plugins?v&s=component&h=name,component,version"

出现以下内容即为安装成功

二、使用python调用 Elasticsearch的ik分词器

from elasticsearch import Elasticsearch

# Elasticsearch服务地址,这里假设它运行在本地的9200端口
es_host = "IP地址"  #自己Elasticsearch 的地址 比如 http://127.0.0.1:9200(根据实际地址进行修改)

# 初始化Elasticsearch客户端
es = Elasticsearch([es_host])

# 检查Elasticsearch是否响应
if es.ping():
    print("连接成功")

    index_name = "your_vector_index_ik"

    # 创建索引并设置映射
    if not es.indices.exists(index=index_name):  # 判断索引是否存在 不存在则新建
        print("正在创建索引")
        es.indices.create(index=index_name)
    else:
        print("索引已存在")

    test = "中华人民共和国"

    # 使用 ik_smart 或 ik_max_word 分词器进行分析   【ik_smart  粗分词】【ik_max_word 细分词】
    analyzer = "ik_max_word"  # 或者 "ik_max_word"

    response = es.indices.analyze(index=index_name, body={
    "analyzer": analyzer,
    "text": test
    })

    # 打印分词结果
    tokens = response['tokens']
    # print(tokens)
    for token in tokens:
        print(token)
else:
    print("连接失败")

效果展示(以下使用 ik_max_word参数 进行细分词    ):

三、自定义分词词典,实现分词效果

1、创建自己的分词词典

创建一个.dic文件,文件中写入我们自定义的分词

2、将创建好的ext.dic文件放入我们ik分词器在容器中的位置

可以输入以下命令进行查看

docker volume inspect es-plugins

3、进入红框中的路径即可(需要根据ik分词器实际安装在容器的路径进行配置)

4、进入config文件,并将创建的ext.dic文件放入config文件

5、打开IKAnalyzer.cfg.xml文件,并对文件进行配置

原始:

修改:

6、修改IKAnalyzer.cfg.xml文件后需要重启一下ES向量库

docker restart elasticsearch   #(elasticsearch 是我的容器名称 需要根据实际名称进行重启)

7、使用自定义分词效果(使用进行测试   "真嘟假嘟,海猫毛")

原始效果(未使用自定义分词)

使用自定义分词效果:

四、配置停用词词典

1、创建一个停用词词典

2、在IKAnalyzer.cfg.xml中配置 停用词文件,并将停用词文件放入config文件下

 3、修改IKAnalyzer.cfg.xml文件后需要重启一下ES向量库

docker restart elasticsearch   #(elasticsearch 是我的容器名称 需要根据实际名称进行重启)

4、使用停用词词典效果   (使用进行测试 "煞笔一个人" 就不会出现我们所设置的停用词“煞笔”)

未使用停用词词典 效果:

使用停用词词典 效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值