在弹性搜索中,我为“游泳”定义了两个同义词,例如“游戏”,“步行”。
假设弹性搜索中只有两个值分别为"I like to swim"
,"I like to play"
的值。
如果用户输入查询"I hope to play"
,则我希望它匹配得分高于I like to play"
(精确单词匹配(在这种情况下为"I like to swim"
)的“ play
”得分更高),有没有办法做到这一点?
答案 0 :(得分:0)
可以!
您可以使用boolean query
全局概念,您将定义需要匹配的must
子句,以及可能匹配的should
子句,从而增加文档分数。
因此,根据您的需要,文档需要与同义词进行匹配,而应该在没有文档的情况下进行匹配。
您只需要用两个属性为可搜索字段建立索引,一个具有同义词,另一个不具有同义词。
,例如
{
"query": {
"bool": {
"must": [
{
"match": {
"text.withSynonyms": "I hope to play"
}
}
],
"should": [
{
"match": {
"text.withoutSynonyms": "I hope to play"
}
}
]
}
}
}