当前位置: 首页 > 知识库问答 >
问题:

匹配查询中考虑词序的ElasticSearch

公良向阳
2023-03-14

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

  1. “Foo Bar”
  2. “Bar Foo”

当我对“bar foo”进行常规匹配查询时,两个文档都正确匹配,但它们获得了相等的相关性分数。然而,我希望单词的顺序在评分时是有意义的。换句话说,我希望“Bar Foo”有更高的分数。

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

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

共有1个答案

傅泉
2023-03-14

查看SpannearQuery,它允许指定有或没有slop的顺序(限制术语之间的距离)。

Elasticsearch文档在这里。

 类似资料:
  • 问题内容: 我在SQL Server 2008中有一个全文索引表,我正在尝试使用FULLTEXT查询确切的短语匹配。我认为不适合使用CONTAINS或LIKE,因为在其他情况下查询可能不准确(用户不会在双引号中加上词组),并且总的来说,我希望自由文本的灵活性。 根据文档[MSDN]中的FREETEXT: 如果freetext_string用双引号引起来,则执行短语匹配;否则,执行短语匹配。不执行词

  • 问题内容: 我正在用查询查询我的elasticsearch索引。查询本身的结构与此类似 我希望能够确定所有这些查询中哪一个是与结果匹配的查询。是否有内置的elasticsearch方法允许这样做,还是我必须手动进行? 问题答案: 您可以使用命名查询,然后在结果中获得匹配的查询的名称。 然后,在结果中,您将获得一个数组,其中包含与文档匹配的查询的名称。

  • 问题内容: 我们可以像这样在特定document.field中搜索所有单词: 这将搜索词,并在该领域,从而只返回这些文档将在所有这些词场。 但是我想做的却有些不同。 我想进行查找,以便如果该文档字段的所有单词都出现在我的搜索查询中,则它将返回该文档。 例如 假设Elasticsearch数据库中有一个文档 现在,如果我搜索“ a”,它将返回该文档,因为document.title中的所有单词确实存

  • 问题内容: 我有未分析字符串字段的文档(由映射强制执行或全局设置)。我试图了解两者之间的实际区别是什么 和 我在术语查询的文档中看到,分析字符串时有区别(这不是我的情况)。 有理由使用vs 吗? 问题答案: 在查询中,不分析搜索到的术语(即),并且将其与倒排索引中存在的术语完全匹配。 在查询中,首先分析搜索到的术语(即),然后将其与倒排索引中存在的术语进行匹配。 在你的情况下,由于是在映射,你的第

  • 我是Spring MVC的新手,想知道实际的流是如何工作的。 我发现很少有Spring MVC的例子,通常每个例子都有额外的重定向ie在web.xml中,welcome-file标记会将控件发送到某个jsp文件,该文件基本上会重定向到与某个域映射的登录表单(例如)。 我遵循的是这个链接中的示例,http://www.dzone.com/tutorials/java/spring/spring-si

  • 问题内容: 我是Elasticsearch的新手,正在寻找模糊查询搜索。 我用这样的对象/记录值制作了新的索引产品 现在当我在elasticsearch中执行模糊查询搜索时 它会向我返回预期的正确记录(上述产品)。 而且我知道该术语匹配,因此记录已归还。 但是从技术上讲,我怎么知道它已经匹配了。elasticsearch仅返回完整记录,像这样 是否有elasticsearch任何方式,这样我可以知