ElasticSearch在匹配查询中考虑单词顺序

Can*_*Can 5 lucene elasticsearch

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

  1. “ foo bar”
  2. “巴富”

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

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

如何构造索引/查询,使其考虑单词顺序但不要求所有搜索到的单词都存在于文档中?

min*_*das 2

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

Elasticsearch 文档在这里