我正在阅读《 Lucene在行动》一书,但我不理解多词组部分。

索引了以下文本:


  敏捷的棕色狐狸跳过了那只懒狗


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

术语懒惰与坡度等于8时一样快速跳跃。

最佳答案

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

您可以一次进行一次编辑以说明:


quick jumped lazy距离:0
quick _ jumped lazy距离:1
quick _ _ jumped lazy距离:2
quick _ _ jumped _ lazy距离:3
quick _ _ jumped _ _ lazy距离:4


对于第二种情况:


lazy jumped quick距离:0
lazy/jumped quick距离:1
lazy/jumped/quick距离:2(所有三个术语叠加在一起,在同一位置)
quick lazy/jumped距离:3
quick jumped lazy距离:4
quick _ jumped lazy距离:5
quick _ _ jumped lazy距离:6
quick _ _ jumped _ lazy距离:7
quick _ _ jumped _ _ lazy距离:8

08-04 22:53