0

query_string用于全文搜索并type用于定义全文搜索的行为方式,我必须使用的类型之一是phrase_prefix返回具有确切术语的文档...

这是我的问题:

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

所以我有一个查询必须表现得像一个短语前缀,但不是所有的时间......问题是我不知道确切的时间!

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

4

1 回答 1

0

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

查询示例如下:

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

这当然不是理想的,但至少它会让你去。

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

于 2018-05-16T14:27:23.177 回答