例如,我有两个名为Project
和Technology
的实体。 Project
的每个实例都与实体Technology
具有ManyToOne关系。现在有些项目有JavaScript
,有些项目有javascript
,有些项目有JS
。我正在使用弹性搜索搜索项目。
什么是可行的方式,以便当用户搜索来自javascript
,JavaScript
和JS
的任何人时,用户获得相同的搜索结果。
答案 0 :(得分:0)
这是同义词的任务,您需要应用synonyms filter。
可以通过以下方式完成:
PUT /test_index
{
"settings": {
"index" : {
"analysis" : {
"analyzer" : {
"synonym" : {
"tokenizer" : "whitespace",
"filter" : ["synonym"]
}
},
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms_path" : "analysis/synonym.txt"
}
}
}
}
}
}
synonym.txt
应该包含数据,在您的情况下:
javascript, JavaScript, JS
这意味着,这些字词是同义词,当用户在字段中搜索时,如果您使用匹配查询,则会扩展查询。
完成这些更改后,我建议您重新索引数据。