弹性搜索 phrase_prefix 搜索

elasticsearch phrase_prefix search

我正在使用 query_string 进行全文搜索,并使用 type 来定义如何使用 full_text 搜索,我必须使用的一种类型是 phrase_prefix, return 个具有确切术语的文档...

这是我的问题:

当我想搜索一个词项时.. 例如 tea 大多数文档 return 是因为 teacher,我知道要解决这个问题我有使用 phrase 类型...但是当我将这种类型用于单词项时,我会遇到另一个问题,例如 ui.. 因为大多数文档都是UI/UX个词,在phrase类型搜索这些文档不会return..

所以我有一个查询,它的行为必须像 phrase_prefix 但不是所有时候...问题是我不知道确切的时间!

如果有人对我的问题有任何解决方案..我将非常感谢与我分享。

解决此问题的一个简单方法是使用两个查询将它们与布尔 should 查询中的 OR 连接在一起。在这种情况下,您将在这两种情况下检索结果。这意味着,当您搜索 tea 时,您仍然会同时获得 teachertea,但是由于 tea 两个子句都匹配 - 您应该得到tea 得分更高。同样适用于 UI

查询示例如下:

{
  "query": {
    "bool" : {
      "should" : [
        {
          ##query1
        },
        { 
          ##query2
        }
      ]
    }
  }
}

这当然不理想,但至少会让你坚持下去。

有关 should 子句的更多信息 - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html