Elasticsearch不会在多匹配查询上返回结果

时间:2018-02-02 13:19:23

标签: elasticsearch lucene

我想知道为什么Elasticsearch没有给我以下Multi Match Query的任何结果:

GET /stag/_search
{
  "query": {
    "multi_match": {
      "type":     "phrase_prefix",
      "query":    "ferran ma",
      "fields": [ "fullName", "fullName.folded" ]
    }
  }
}

但它给了我结果:

GET /stag/_search
{
  "query": {
    "multi_match": {
      "type":     "phrase_prefix",
      "query":    "ferran may",
      "fields": [ "fullName", "fullName.folded" ]
    }
  }
}

我认为每个单词可能有最小字符长度,但后来我看到了以下查询:

GET /stag/_search
{
  "query": {
    "multi_match": {
      "type":     "phrase_prefix",
      "query":    "ignasi t",
      "fields": [ "fullName", "fullName.folded" ]
    }
  }
}

给我结果。所以我不知道发生了什么。

1 个答案:

答案 0 :(得分:0)

似乎问题已解释here

  

match_phrase_prefix查询是一个穷人的自动完成。这个很   易于使用,可让您快速入门   像你一样搜索但其结果通常都足够好   有时候会让人感到困惑。

     

考虑查询字符串quick brown f。此查询通过创建来工作   快速和棕色的短语查询(即快速一词必须存在   并且必须遵循术语褐色)。然后它查看已排序的   术语字典,用于查找以f开头的前50个术语,并添加   这些术语用于短语查询。

     

问题在于前50个术语可能不包括狐狸这样的术语   短语快速棕色狐狸将无法找到。这通常不是   因为用户将继续输入更多字母直到该单词   他们正在寻找出现。