【问题标题】:phrase_prefix query returns empty result if I search for 3 characters but returns non-empty result if I search for 4 and more characters如果我搜索 3 个字符,phrase_prefix 查询返回空结果,但如果我搜索 4 个或更多字符,则返回非空结果
【发布时间】:2016-03-11 10:54:26
【问题描述】:

我有这个问题:

"match": {   
    "_all": {
    "query": "ana",
    "type": "phrase_prefix"
   }
 }

此查询不返回任何带有 3 个字符长度的短语“ana”的内容,但如果我搜索 4 个字符的短语“anat”,它会返回结果:

match": {
  "_all": {
  "query": "anat",
  "type": "phrase_prefix"
  }
}

这可能是什么问题?我不知道为什么会这样以及如何解决这个问题。

谢谢!!!

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    这可能是由于 max_expansions 参数被设置为其默认值 10。

    试试这个

    {
      "query": {
        "match": {
          "_all": {
            "query": "ana",
            "type": "phrase_prefix",
            "max_expansions": 100
          }
        }
      }
    }
    

    尝试不同的“max_expansions”值,不要太大,否则查询返回需要时间

    这有帮助吗?

    【讨论】:

    • 嗨,谢谢。这适用于“max_expansions”:200。对此有什么解释吗?我不是用 blur 做这个查询,我只是想通过前缀得到完全匹配。谢谢!!!!
    • This,会帮助你,max_expansions 的工作方式是,它尝试按字母顺序查找具有给定前缀的值,所以 anaaanab
    • 谢谢,这真的很有帮助。你觉得 max_expansion 设置为 150 甚至 200 是不是太大了?
    • 很高兴它对你有用,如果你有巨大的索引,那么它可能需要几毫秒,我不认为它太大而不会导致任何性能问题,我已经将它设置为 100 在我的自己的应用程序,它运行顺利。如果你做一些测试,你会得到更好的想法。
    • also 奇怪的是它没有给你任何 "ana" 的结果,你认为你有多少以 "ana" ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2022-07-21
    • 2021-09-19
    • 1970-01-01
    相关资源
    最近更新 更多