我们在 Liferay DXP 和 Elasticsearch 2.2.0 中有一个自定义搜索 portlet。我们在 elasticsearch 设置中为同义词搜索添加了以下设置。
{
"index" : {
"analysis" : {
"analyzer" : {
"synonym" : {
"tokenizer" : "whitespace",
"filter" : ["synonym"]
}
},
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms_path" : "analysis/synonym.txt"
}
}
}
}}
我们还使用以下代码验证了是否将同义词分析器添加到索引中。
curl -XPOST 'localhost:9200/liferay-20116/_analyze?pretty' -H 'Content-Type: application/json' -d'
{
"analyzer": "synonym",
"text": "acl"
}
'
这给出了 synonyms.txt 文件中所有“acl”同义词的结果。但是 Liferay 搜索并没有给出带有同义词的搜索结果。例如:search("acl") => 在 synonyms.txt 文件中没有给出同义词的结果。