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