如何在Elasticsearch中优先考虑第一个单词匹配而不是第一个字符?

时间:2019-08-23 07:20:31

标签: elasticsearch

TLDR::如果我搜索Game of thrones,我想在Gamer之前先Game

好吧,下面是我的ES查询,用于查询包含电影标题的索引。我想在字符串的开头优先考虑匹配,这是我认为完成的。

例如:如果我的搜索字词为Gamer,则End Game的得分要高于game

但是我真的希望它优先考虑确切的第一个 单词匹配项,而不是第一个字符...如果这是描述此问题的正确方法,请优先考虑。我希望这种情况发生: Game of thrones之前Gamer,最后End Game之后。

有人知道怎么做吗?

这是我当前的查询:

"query": {
    "bool": {
      "should": [
        {
          "multi_match": {
            "query": "game",
            "type": "phrase_prefix",
            "max_expansions": 20,
            "fields": [
              "titleName.title^10",
              "titleDescription.displayed",
              "titleDescription.short"
            ],
            "boost": 1.5
          }
        },
        {
          "multi_match": {
            "fuzziness": "AUTO",
            "query": "game",
            "fields": [
              "titleName.title^10",
              "titleDescription.displayed",
              "titleDescription.short"
            ]
          }
        }
      ]
    }
  }

0 个答案:

没有答案