ES-同义词配置

同义词搜索的配置
PUT test_index
{
“settings”: {
“number_of_shards”: 1,
“analysis”: {
“filter”: {
“my_synonym_filter”:{
“type”:“synonym”,
“synonyms_path”:“analysis /synonym.txt”
}
},
“analyzer”: {
“ik_syno”:{
“type”:“custom”,
“tokenizer”:“ik_smart”,
“filter”:[“my_synonym_filter”]
},
“ik_syno_max”:{
“type”:“custom”,
“tokenizer”:“ik_max_word”,
“filter”:[“my_synonym_filter”]
}
}
}
},
“mappings”: {
“doc”:{
“properties”: {
“item_name”:{
“type”: “text”,
“analyzer”: " ik_max_word ",
“search_analyzer”: “ik_syno”
}
}
}
}
}

加数据

  1. POST test_index/doc
  2. {
  3. “item_name”:“对违反出租车运营规定的处罚”
  4. }
  5. POST test_index/doc
  6. {
  7. “item_name”:“出租汽车经营者不按照规定配置出租汽车相关设备”
  8. }

测试

  1. GET test_index/doc/_search
  2. {
  3. “query”: {
  4.  "match": {
    
  5.    "item_name": "出租汽车"
    
  6.  }
    
  7. }
  8. }
  9. GET test_index/doc/_search
  10. {
  11. “query”: {
  12. "match": {
    
  13.   "item_name": "出租车"
    
  14. }
    
  15. }

同义词和扩展词库配置的注意要点:
1、 mapping中analyzer要设置默认的ik_max_word,用来分词建立索引,
不要用ik_syno_max,搜索时会命中奇怪的词,应该是建立索引时有问题。
2、 在搜索时要用ik_syno或者ik_syno_max 他会使用同义词字典来去检索
前提条件是同义词字典中的每一个词都必须要在IK的分词字典中存在(默认和扩展)才能命中。

配置步骤为:
1、 确认同义词字典中的词在IK分词字典中全部存在
2、 建立索引时以ik_max_word 来分词
3、 搜索时以ik_syno或者ik_syno_max 来检索

setting可配置到模板
添加模板:
PUT /_template/template_1
{
“index_patterns” : [“test*”],
“order” : 0,
“settings”: {
“number_of_shards”: 1,
“analysis”: {
“filter”: {
“my_synonym_filter”:{
“type”:“synonym”,
“synonyms_path”:“analysis/synonym.txt”
}
},
“analyzer”: {
“ik_syno”:{
“type”:“custom”,
“tokenizer”:“ik_smart”,
“filter”:[“my_synonym_filter”]
},
“ik_syno_max”:{
“type”:“custom”,
“tokenizer”:“ik_max_word”,
“filter”:[“my_synonym_filter”]
}
}
}
}
}

synonym.txt 在config/analysis目录下
utf-8 内容格式如下:
花费,耗费,消费
中国,中华人民共和国

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值