elasticsearch 7.6 在 IK分词 中使用 同义词

眉间皱痕 提交于 2020-08-09 19:56:52

关于es7.6同义词的内容真的好难找…………

现在简单记录一下实现过程

es同义词官方文档传送

1、安装同义词插件

插件下载传送,其他的同义词插件未测试

2、插件使用mvn打包(最新版master没有打包), 使用maven编译插件

 打包提示   需要修改 elasticsearch-analysis-dynamic-synonym-master 文件下的 pom.xml文件,

把版本改为自己es对应的版本号,然后进行打包操作

打包操作参考传送

3、按照打包处理,然后把 elasticsearch-analysis-dynamic-synonym-master\target\releases 的文件 解压 添加到  elasticsearch/plugins/synonym   文件夹synonym 自己新建

4、添加同义词词库

    在 es 的 config 新建 analysis 文件夹,新建 synonyms.txt 文件(文件名自己定只要统一就可以), 一定要是UTF-8格式。 有几种格式自己选择

       synonyms.txt文件测试词

西红柿,番茄=>圣女果
哪儿,在哪,何处,什么地方=>哪里
状况,情况=>状态
注解,注释=>备注
universe,cosmos

5、启动es(如果已经启动,需要重启,否则不能加载同义词词典)

6、重新设置分词器

    1)关闭所有索引    通过 (postman、curl)post 请求  localhost:9200/_all/_close

     2)设置索引 通过 (postman、curl)使用put请求

        接口地址:

             http://localhost:9200/_all/_settings?preserve_existing=true

        参数:

{
  "index.analysis.analyzer.ik_syno_max_word.filter" : [
    "my_synonym_filter"
  ],
  "index.analysis.analyzer.ik_syno_max_word.tokenizer" : "ik_max_word",
  "index.analysis.analyzer.ik_syno_max_word.type" : "custom",
  "index.analysis.analyzer.ik_syno_smart.filter" : [
    "my_synonym_filter"
  ],
  "index.analysis.analyzer.ik_syno_smart.tokenizer" : "ik_smart",
  "index.analysis.analyzer.ik_syno_smart.type" : "custom",
  "index.analysis.filter.my_synonym_filter.synonyms_path" : "analysis/synonyms.txt",
  "index.analysis.filter.my_synonym_filter.type" : "synonym"
}

    返回值

{
    "acknowledged": true
}

            curl示例

            

curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
  "index.analysis.analyzer.ik_syno_max_word.filter" : [
    "my_synonym_filter"
  ],
  "index.analysis.analyzer.ik_syno_max_word.tokenizer" : "ik_max_word",
  "index.analysis.analyzer.ik_syno_max_word.type" : "custom",
  "index.analysis.analyzer.ik_syno_smart.filter" : [
    "my_synonym_filter"
  ],
  "index.analysis.analyzer.ik_syno_smart.tokenizer" : "ik_smart",
  "index.analysis.analyzer.ik_syno_smart.type" : "custom",
  "index.analysis.filter.my_synonym_filter.synonyms_path" : "analysis/synonym.txt",
  "index.analysis.filter.my_synonym_filter.type" : "synonym"
}'

    3)重新打开所有索引, 通过 (postman、curl)使用 post请求

             localhost:9200/_all/_open

            返回值:

{
    "acknowledged": true,
    "shards_acknowledged": true
}

7、测试同义词

    接口地址:

    http://localhost:9200/_index/_analyze     _index 为自己使用了同义词的 mapping

参数:

{
  "analyzer": "ik_syno_smart",
  "text": "cosmos"
}

 

返回值:

{
    "tokens": [
        {
            "token": "cosmos",
            "start_offset": 0,
            "end_offset": 6,
            "type": "ENGLISH",
            "position": 0
        },
        {
            "token": "universe",
            "start_offset": 0,
            "end_offset": 6,
            "type": "SYNONYM",
            "position": 0
        }
    ]
}

以上,完结。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!