elasticsearch phrase_prefix搜索

时间:2018-05-16 08:55:24

标签: elasticsearch match-phrase

我使用query_string进行全文搜索,并使用type来定义如何使用full_text搜索进行操作,我必须使用的类型之一是phrase_prefix,返回具有确切术语的文档......

这是我的问题:

当我想搜索一个单词时,例如tea,返回的大部分文档都是teacher,我知道要解决此问题,我必须使用phrase键入...但是当我将这种类型用于一个单词术语时,我会遇到另一个问题,例如ui .. 因为大多数文档都包含UI/UX个字词,在phrase类型搜索中这些文档不会返回..

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

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

1 个答案:

答案 0 :(得分:0)

解决此问题的一种简单方法是使用在布尔查询中将 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