【问题标题】:elasticsearch phrase_prefix searchelasticsearch 短语前缀搜索
【发布时间】:2018-05-16 08:55:24
【问题描述】:

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

这是我的问题:

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

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

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

【问题讨论】:

    标签: elasticsearch match-phrase


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,这绝对对我有帮助,我认为无需查询我也可以使用 function_score,但是如果我可以从结果中删除老师,那就太好了..谢谢
    • 一般来说,弄清楚老师的反应会更困难 - 因为你需要一些程序化的方法来首先检查是否完全匹配返回了一些东西,然后才发送更广泛的 prefix 查询跨度>
    • 嗯.. 完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多