当前位置: 首页 > 面试题库 >

Lucene SpanNearQuery中“ Slop”的确切含义(或ElasticSearch span_near中的slop)

骆英纵
2023-03-14
问题内容

问题1:
在LuceneSpanNearQuery(或span_nearElasticSearch)中,的确切含义是slop什么?是将两个匹配的单词分隔开的单词数,还是将分隔的单词数加1?

例如,假设您的索引文本为: foo bar biz

哪些查询会匹配这样的文字:"foo biz"~0"foo biz"~1"foo biz"~2

我希望第一个不匹配,最后一个不匹配。但是中间呢?

问题2: 现在是第二个更复杂的必然问题:slop如果存在两个以上的搜索子句,该如何处理?它适用于 对子句还是 任何 对子句。

例如,假设您构建一个SpanNearQuery有三个条款:foobarbiz。要匹配上面相同的索引文本,需要多少斜率?我希望2一定会有所收获,但是0还是1呢?

同样,对于相同的三子句查询,需要什么斜率来匹配文本: foo bar ble biz


问题答案:

问题1: Slop是分隔span子句的单词数。因此,坡度0表示它们相邻。在我给出的示例中,斜率1将匹配。

问题2:
当有多个跨度近子句时,每个子句必须与至少一个其他子句连接,且不得超过斜线分隔它们,并且所有子句必须通过一条链相互连接。但是,每个子句不必与其他子句用斜线分隔。

对于第一个问题2的示例:斜率0、1和2都将匹配。即使有零匹配foobiz也被多个分隔,因为所有子句之间都有一条链。

对于第二个问题2的示例:斜率0将不匹配,因为biz它与所有其他子句之间的斜率大于0。斜率1将匹配,因为foobar被0斜率分隔,另外barbiz被1斜率分隔。即使匹配,foo并且biz也被多个分隔,因为所有子句之间都有一条链。2的斜率显然会匹配。



 类似资料:
  • (...)当您在非托管环境中使用JmsTemplate时,您可以通过使用属性SessionTransact和SessionAccountingEmode来指定这些值(事务和确认模式)。 当您将PlatformTransactionManager与JmsTemplate一起使用时,模板总是被赋予一个事务性JMS会话。(..) (顺便说一句,这是真的--会话是事务性的) 我调试了它不正确的原因,发现:

  • 问题内容: 我是JAVA的新手,因此遇到了这个词。“在方法内部创建的类,在Java中称为本地内部类。如果要调用本地内部类的方法,则必须在方法内部 实例化 该类”。粗体字。任何人都可以帮我解决这个问题。我知道这很尴尬,我应该做更多的研究,但我只是不明白。谢谢。 问题答案: 首先 声明的意思是 : 实例化的 简单含义 是从class创建一个对象 。 什么是物体? 类的实例。从一个类中,我们可以创建许多

  • 问题内容: 我想在同一类对象的各种实例之间共享一个对象。 从概念上讲,在我的程序运行时,类A的所有对象都访问类B的相同对象。 我已经看到这是系统范围的,不鼓励使用它。这是否意味着如果我在实例化类A的对象的同一JVM上运行另一个程序,则这些对象可能会访问与先前程序中访问的对象相同的B对象? 使用静态字段的一般缺陷是什么? 是否有其他选择(不需要大量的实施工作)? 问题答案: 静态不是完全意味着“由所

  • 问题来源于BufferedInputStream为什么要将字段复制到局部变量,而不是直接使用该字段。 其中一个ansers提到了“volatile”关键字: “此外,它被声明为volatile,这意味着如果任何线程更改变量的值,此更改将立即反映在所有其他线程中。” 这似乎表明,如果一个变量没有被声明为volatile,那么“更改将立即反映在所有其他线程中”或“变量的更改将只在以后反映”的情况就不会

  • 这两天我一直在和Git Bash合作。我现在知道了诸如、、、和等基本操作。但我还是不知道Git Bash本身到底是什么! 我已经搜索了很多关于Git Bash的内容,但是我看到的所有站点都集中在它的命令的功能上。我仍然没有为我的问题找到一个好的答案。现在,我想,我在正确的地方得到这个答案!

  • 这听起来可能是一个太基本的问题,但我已经寻找了答案,现在我比以前更困惑了。 在git中将我的分支合并到另一个分支时,“我们的”和“他们的”是什么意思?这两个分支都是“我们的”。 在合并冲突中,“我们的”总是显示的两个版本的上部吗? “我们的”是否总是指合并开始时HEAD指向的分支?如果是这样的话,为什么不使用像“current branch's”这样清晰的所有格指称,而不是使用像“ours”这样在