ElasticSearch学习日志ElasticSearch同义词

ElasticSearch同义词操作步骤

环境:
elasticsearch 6.4.3(已提前安装好)
kibana 6.4.3(已提前安装好)
ik分词器 6.4.3
注:三者版本要保持一致

1.安装插件ik中文分词器

原因:
   如果不安装ik中文分词器,那么在进行同义词匹配分词中,它不知道该怎么断词,会将一句话中的每个中文词单独的分出来,不会以我们常用的组词规则进行划分。
安装分词器后会根据中文习惯划分词组。

安装方法:
使用elasticsearch-plugin进行安装(从v5.5.1版本支持)

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.3/elasticsearch-analysis-ik-6.4.3.zip

注意:替换6.4.3为自己的elasticsearch版本

2.实验数据准备

在elasticsearch文件夹下的config中新建文件夹analysis,再在analysis文件夹下创建同义词替换数据文本文件synonyms.txt。
txt中的内容为(同义词内容根据自己的想法定义):

西红柿,番茄 =>西红柿,番茄
社保,公积金 =>社保,公积金

british, english
queen, monarch

具体同义词定义和格式见官方要求Elasticsearch同义词和分析链

3.创建分词索引

kibana中创建的方法:

PUT /syno
{
  "settings": {
    "analysis": {
      "filter": {
        "my_synonym_filter": {
          "type": "synonym", 
          "synonyms_path" : "analysis/synonyms.txt"
        }
      },
      "analyzer": {
        "my_synonyms": {
          "tokenizer": "ik_smart",
          "filter": [
            "lowercase",
            "my_synonym_filter" 
          ]
        }
      }
    }
  }
}

"synonyms_path"为自己在elasticsearch中的config文件下所建的相关同义词替换定义的文本文件路径。

4.实验结果测试

kibana中测试内容输入:

GET /syno/_analyze
{
  "text":"你的社保要给多少钱?",
  "analyzer": "my_synonyms"
}

实验结果显示:

{
  "tokens": [
    {
      "token": "你",
      "start_offset": 0,
      "end_offset": 1,
      "type": "CN_CHAR",
      "position": 0
    },
    {
      "token": "的",
      "start_offset": 1,
      "end_offset": 2,
      "type": "CN_CHAR",
      "position": 1
    },
    {
      "token": "社保",
      "start_offset": 2,
      "end_offset": 4,
      "type": "SYNONYM",
      "position": 2
    },
    {
      "token": "公积金",
      "start_offset": 2,
      "end_offset": 4,
      "type": "SYNONYM",
      "position": 2
    },
    {
      "token": "要给",
      "start_offset": 4,
      "end_offset": 6,
      "type": "CN_WORD",
      "position": 3
    },
    {
      "token": "多少钱",
      "start_offset": 6,
      "end_offset": 9,
      "type": "CN_WORD",
      "position": 4
    }
  ]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值