配置同义词
更新时间:2024-06-13
百度智能云Elasticsearch支持上传自定义的同义词文件。此外,百度智能云Elasticsearch也支持动态同义词文件更新,见动态同义词。
上传方式
- 登录百度智能云Elasticsearch控制台,并点击集群名称,进入集群详情界面。
- 在左侧导航栏,单击配置修改。
- 点击“选择文件”,在弹出的页面选择需要上传的同义词文件,并“确认上传”。
- 在词典列表里可以看见相应文件,即完成同义词词典上传。
注意事项
- 同义词文件需要为
utf-8
编码,扩展名为txt
。 -
要求每行一个同义词表达式(表达式支持 Solr 规则 和 WordNet 规则),例如:
肯德基,KFC => 肯德基 elasticsearch,ES
- 新上传/新变更的同义词文件对旧索引不生效,只对新建索引生效。
- 若旧索引需要使用新上传的同义词文件,需要重建索引(reindex);已经被使用的同义词文件如果发生变更,需reopen索引(先将索引close,随后open索引),重新载入新的同义词配置。(但旧数据依旧没有使用新的同义词配置,需要reindex)
- 同义词文件单个文件最大为10M,上传文件总数最多为10个。
使用方式
上传同义词文件后,用户可以创建索引,验证同义词配置,并可以写入测试数据进行搜索测试。创建索引时需要配置settings和mapping,并且需要在settings中配置"synonyms_path": "analysis/{your_dict_name}.txt"
。
具体使用方式如下:
上传文件
在百度智能云Elasticsearch控制台,上传文件test_synonym.txt
,文件内容为:
肯德基,KFC => 肯德基
创建索引
PUT /test
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "ik_smart",
"filter": ["my_synonym"]
}
},
"filter": {
"my_synonym": {
"type": "synonym",
"synonyms_path": "analysis/test_synonym.txt"
}
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "my_analyzer",
"search_analyzer": "my_analyzer"
}
}
}
}
验证同义词配置
GET test/_analyze
{
"analyzer": "my_analyzer",
"text": "KFC"
}
结果为:
{
"tokens": [
{
"token": "肯德基",
"start_offset": 0,
"end_offset": 3,
"type": "SYNONYM",
"position": 0
}
]
}
写入数据测试
写入数据如下:
POST test/_doc/1
{
"title":"我喜欢吃肯德基"
}
查询语句如下:
GET /test/_doc/_search
{
"query":{
"match": {
"title": "KFC"
}
}
}
查询结果为:
{
"took": 20,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.2876821,
"hits": [
{
"_index": "test",
"_type": "_doc",
"_id": "1",
"_score": 0.2876821,
"_source": {
"title": "我喜欢吃肯德基"
}
}
]
}
}
详细信息见Elasticsearch官方配置同义词文档。