Lucene中模糊参数的意义

Lucene中模糊参数的意义,lucene,Lucene,如中所述,有一个参数可用于指定匹配所需的相似性。的值介于0和1之间,如果值接近1,则仅匹配相似度较高的术语。例如:漫游~0.8 知道我想知道这个参数是否是相对意义上的,也就是说,对于更长的字符串,字符串编辑距离可能更大,并且仍然存在匹配。或者,这意味着一个绝对值,即最多只允许x个替换/删除/插入来进行匹配?搜索术语~sim将找到编辑距离小于长度(术语)*(1-sim)的所有术语。因此roam~0.8将查找编辑距离小于4*(1-.8)=.8 roam的所有术语 编辑: 期限必须大于1/(1-sim

如中所述,有一个参数可用于指定匹配所需的相似性。的值介于0和1之间,如果值接近1,则仅匹配相似度较高的术语。例如:漫游~0.8


知道我想知道这个参数是否是相对意义上的,也就是说,对于更长的字符串,字符串编辑距离可能更大,并且仍然存在匹配。或者,这意味着一个绝对值,即最多只允许x个替换/删除/插入来进行匹配?

搜索
术语~sim
将找到编辑距离小于
长度(术语)*(1-sim)
的所有术语。因此
roam~0.8
将查找编辑距离小于4*(1-.8)=.8 roam的所有术语

编辑:


期限必须大于1/(1-sim)。因此,搜索
roam~.8
不会产生任何模糊的效果,因为相似性为.8的事物的长度必须至少为5。

谢谢。你知道替换/删除/插入的成本是多少吗?它们是与Levenshtein建议的相同还是略有不同?@bertolami:是的,这是一个精确的Levenshtein实现。您可以在代码的
fuzzyternum
类中看到方法
Similarity