如何使精确的单词匹配具有更高的分数

时间:2018-09-24 02:43:23

标签: elasticsearch elasticsearch-5

在弹性搜索中,我为“游泳”定义了两个同义词,例如“游戏”,“步行”。

假设弹性搜索中只有两个值分别为"I like to swim""I like to play"的值。

如果用户输入查询"I hope to play",则我希望它匹配得分高于I like to play"(精确单词匹配(在这种情况下为"I like to swim")的“ play”得分更高),有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

可以!

您可以使用boolean query

全局概念,您将定义需要匹配的must子句,以及可能匹配的should子句,从而增加文档分数。

因此,根据您的需要,文档需要与同义词进行匹配,而应该在没有文档的情况下进行匹配。

您只需要用两个属性为可搜索字段建立索引,一个具有同义词,另一个不具有同义词。

,例如

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "text.withSynonyms": "I hope to play"
          }
        }
      ],
      "should": [
        {
          "match": {
            "text.withoutSynonyms": "I hope to play"
          }
        }
      ]

    }
  }
}