【问题标题】:ElasticSearch taking word order into account in match queryElasticSearch 在匹配查询中考虑词序
【发布时间】:2015-03-13 06:31:08
【问题描述】:

假设我的索引有两个文档:

  1. “富吧”
  2. “酒吧富”

当我对“bar foo”进行常规匹配查询时,两个文档都正确匹配,但它们的相关性得分相同。但是,我希望在评分过程中单词的顺序很重要。换句话说,我希望“bar foo”有更高的分数。

所以我尝试将匹配查询放在 bool 查询的 must 子句中,并包含 match_phrase(具有相同的查询字符串)作为 should 子句。这似乎正确地得分,直到我用“bar test foo”进行搜索。在这种情况下,match_phrase 查询似乎不匹配,并且再次以相同的分数返回匹配项。

如何构建我的索引/查询,以便考虑词序但不要求所有搜索的词都存在于文档中?

【问题讨论】:

标签: elasticsearch lucene


【解决方案1】:

看看SpanNearQuery,它允许指定带或不带斜率的顺序(限制术语彼此之间的距离)。

Elasticsearch 文档是here

【讨论】:

    【解决方案2】:

    看看PhraseSearch。您应该将您当前的搜索与 PhraseSearch 结合起来(提升 PhraseSearch 比常规词匹配高一点)。

    文档:PhraseSearch

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 2020-04-21
      • 2021-07-13
      • 2019-09-20
      • 1970-01-01
      • 2017-09-09
      相关资源
      最近更新 更多