Elasticsearch 近义词词库配置
8.10 版本之前
1.设置同义词文件 config/analysis/synonyms.txt
a,b => c
a,b,c
第一种在分词的时候,a,b都会解析成为c,然后把c存入索引中
第二种在分词的时候,有a的地方,都会解析成a,b,c,把a,b,c存入索引中
第一种方法相比之下有个主词,比较省索引。
2.定义mapping的时候添加到分词器上
{
"settings": {
"analysis": {
"filter": {
"my_synonym_filter": { // 自定义过滤器
"type": "synonym",
"updateable": true, // 能否动态更新(非热更新,可通过_reload_search_analyzers接口进行更新无需重建索引)
"synonyms_path": "analysis/synonyms.txt" // 近义词文件地址
}
},
"analyzer": {
"my_synonyms_analyzer": {
"tokenizer": "ik_smart",
"filter": [
"my_synonym_filter"
]
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "my_synonyms_analyzer"
},
...
}
}
}
3.测试近义词库是否配置成功
GET /your_index/_analyze
{
"analyzer": "my_synonyms_analyzer",
"text": "xxx"
}
- 注意:如果文件进行修改需要执行下面命令进行生效,多个index则需要每个都执行生效
POST /your_index_name/_reload_search_analyzers
8.10 版本之后
1.创建同义词集
PUT _synonyms/my-synonyms
{
"synonyms_set": [
{
"id": "a",
"synonyms": "a,b => c"
},
{
"id": "a,b",
"synonyms": "a,b,c"
}
]
}
更新同义词集
PUT _synonyms/my-synonyms-set/a
{
"synonyms": "a,b => d"
}
2.配置同义词集
{
"settings": {
"analysis": {
"filter": {
"my_synonym_filter": { // 自定义过滤器
"type": "synonym",
"updateable": true, // 能否动态更新
"synonyms_set": "my-synonyms", // 同义词集
}
},
"analyzer": {
"my_synonyms_analyzer": {
"tokenizer": "ik_smart",
"filter": [
"my_synonym_filter"
]
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "my_synonyms_analyzer"
},
...
}
}
}