我试图了解我在几种情况下通过Elastic搜索获得的结果。我定义了以下同义词列表:
"product insert, product inserts, qc package, qc package inserts, qc package insert, package insert => package inserts"
我希望将箭头左侧的所有术语都视为右侧的术语。这是我的索引设置:
PUT /test_index
{
"settings": {
"index": {
"analysis": {
"filter": {
"my_syn_filt": {
"tokenizer": "keyword",
"type": "synonym",
"synonyms": [
"product insert, product inserts, package inserts, qc package, qc packages, qc insert, qc inserts, package insert, qc package insert, qc package inserts => package inserts"
]
}
},
"analyzer": {
"my_synonyms": {
"filter": [
"lowercase",
"my_syn_filt"
],
"tokenizer": "keyword"
}
}
}
}
}
}
我的问题是,当我搜索几个词-“产品插入”时,没有得到预期的结果。但是“产品插入”效果很好。我的配置有问题吗?我错过了一步吗?
我认为您缺少mapping部分,因此需要将其与您的字段进行映射,并可以通过如下所示的synonyms进行搜索,
{
"settings": {
"index" : {
"analysis" : {
"filter" : {
"synonym_filter" : {
"type" : "synonym",
"synonyms" : [
"product insert, product inserts, package inserts, qc package, qc packages, qc insert, qc inserts, package insert, qc package insert, qc package inserts => package inserts"
]
}
},
"analyzer" : {
"synonym_analyzer" : {
"tokenizer" : "standard",
"filter" : ["lowercase", "synonym_filter"]
}
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "synonym_analyzer"
}
}
}
}