java - Lucene 中的多术语短语

标签 java jakarta-ee lucene information-retrieval

我正在阅读《Lucene in Action》一书,但我不明白多术语短语部分。

以下文本已编入索引:

the quick brown fox jumped over the lazy dog

然后将以下术语添加到 PhraseQuery 中:快速跳跃懒惰,斜率等于 4。这将导致匹配,但我不明白这是怎么发生的。当有多个项时,如何计算移动次数?我不明白他们是怎么做到的。

与术语惰性跳跃快相同,斜率等于 8。

最佳答案

斜坡实际上是 edit distance 。在它们之间插入额外的术语会增加 1 的距离,转置术语会增加 2(第一个编辑将两个术语移到彼此之上)。

您可以一次浏览一项编辑来进行说明:

  • 快速跳跃懒惰 距离:0
  • 快_跳懒 距离:1
  • 快_ _跳懒 距离:2
  • 快_ _跳_懒 距离:3
  • 快_ _跳_ _懒 距离:4

对于第二种情况:

  • 懒惰跳得快 距离:0
  • 懒惰/跳跃快 距离:1
  • lazy/jumped/quick distance:2(所有三个术语叠加在同一位置)
  • 快速懒惰/跳跃 距离:3
  • 快速跳跃懒惰 距离:4
  • 快_跳懒 距离:5
  • 快_ _跳懒 距离:6
  • 快_ _跳_懒 距离:7
  • 快_ _跳_ _懒 距离:8

关于java - Lucene 中的多术语短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233104/

相关文章:

java - Oracle ADF : How to enable a user to Stay Logged In

c# - 如何将 Lucene.NET RangeQuery 转换为 NumericRangeQuery 以进行日期范围搜索?

java - 如何处理短语查询和术语分组

java - 在哪里更改 Eclipse 用户界面中的列表项背景颜色?

用于多个应用程序服务器的 Maven EAR 项目

java - 如何从 Java 中的枚举中删除数组列表

web-services - Java EE 和 Grails : Communication with WebServices? 哪个框架?

java - 如何在 Lucene (5.2.1) 中组合分析器实例以进行停用词删除和词干提取?

java - 如何按照添加顺序打印 ArrayList

java - 我在哪里可以找到由 Eclipse 中的 servlet 创建的文本文件