ES-同词义配置

定义

  • 语主相近或相同
  • 品牌类目关联
  • 搜索它等于搜索它

配置方法

1. 进入ES第一个节点:cd node1/config/analysis-ik

添加近义词
echo '凯悦,锡伯,红桃' > vim synonyms.txt

2. 将配置得制到节点2与节点3

复制代码
cp synonyms.txt /opt/elasticsearch8.0.0/node2/config/analysis-ik/
cp synonyms.txt /opt/elasticsearch8.0.0/node3/config/analysis-ik/

3. 修改结构(定义支持同义词的门店索引结构)

要点:

增加analysis,处定义分词器
修改name的分词器

复制代码
DELETE /shop

PUT /shop
{
  "settings": {
    "number_of_shards": 1, 
    "number_of_replicas": 1,
    "analysis": {
      "filter": {
          "my_synonym_filter": {
              "type": "synonym",
              "synonyms_path": "analysis-ik/synonyms.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": {
    "properties": {
      "id":{"type":"integer"},
      "name":{"type":"text","analyzer": "ik_syno_word","search_analyzer": "ik_syno"},
      "tags":{"type":"text","analyzer": "whitespace","fielddata": true}, 
      "location":{"type":"geo_point"},
      "remark_score":{"type":"double"},
      "price_per_man": {"type":"integer"},
      "category_id":{"type":"integer"},
      "category_name":{"type": "keyword"},
      "seller_id":{"type":"integer"},
      "seller_remark_score":{"type":"double"},
      "seller_disabled_flag":{"type":"integer"}
    }
  }
}

4. 验证同义词是否载入

复制代码
GET /shop/_analyze
{
  "field":"name",
  "text":"凯悦"
}

如输出信息如下,则代表配置成功

复制代码
{
  "tokens" : [
    {
      "token" : "凯悦",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "锡伯",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "SYNONYM",
      "position" : 0
    },
    {
      "token" : "红桃",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "SYNONYM",
      "position" : 0
    }
  ]
}

5. 其他

1). 重建索引

如果结构之前就存在,要让同义词起作用,需要先删除原索引再重建结构(如上)
如果是新索引,则不需要行该步骤 .

2). 在Kibana上验证

以下会查询相同的内容

复制代码
GET /shop/_search
{
  "query": {
    "match": {
      "name": "锡伯"
    }
  }
}


GET /shop/_search
{
  "query": {
    "match": {
      "name": "凯悦"
    }
  }
}

GET /shop/_search
{
  "query": {
    "match": {
      "name": "红桃"
    }
  }
}
相关推荐
Elasticsearch17 小时前
为上下文工程构建高效的数据库检索工具
elasticsearch
程序设计实验室17 小时前
C# 扩展方法只会写 this 吗?C# 14 新语法直接把扩展方法玩出了花
c#
唐青枫20 小时前
C#.NET SignalR 深入解析:实时通信、Hub 与连接管理实战
c#·.net
唐宋元明清21881 天前
.NET Win32磁盘动态卷/跨区卷触发“函数不正确”问题排查
windows·c#·存储
hez20101 天前
Satori GC:同时做到高吞吐、低延时和低内存占用
c#·.net·.net core·gc·clr
warm3snow1 天前
AI 重塑产品管理工具:从 Jira 到智能体项目经理的终极演进
人工智能·ai·excel·项目管理·飞书·产品经理·jira·协同·tapd
唐青枫2 天前
C#.NET Channel 深入解析:高性能异步生产者消费者模型实战
c#·.net
小峥降临2 天前
Rokid UXR 的手势追踪虚拟中更真实的手实战开发【含 工程源码 和 最终完成APK】
c#
Elasticsearch4 天前
需要知道某个同义词是否实际匹配了你的 Elasticsearch 查询吗?
elasticsearch
晨星shine6 天前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#