在elasticsearch中获得同义词的相同搜索结果

时间:2018-05-17 08:38:51

标签: elasticsearch synonym

例如,我有两个名为ProjectTechnology的实体。 Project的每个实例都与实体Technology具有ManyToOne关系。现在有些项目有JavaScript,有些项目有javascript,有些项目有JS。我正在使用弹性搜索搜索项目。

什么是可行的方式,以便当用户搜索来自javascriptJavaScriptJS的任何人时,用户获得相同的搜索结果。

1 个答案:

答案 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

这意味着,这些字词是同义词,当用户在字段中搜索时,如果您使用匹配查询,则会扩展查询。

完成这些更改后,我建议您重新索引数据。