Lucene的手册已经解释了接近搜索具有两个单词的短语的含义,例如"jakarta apache"~10
示例
http://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Proximity Searches
但是,我想知道像"jakarta apache lucene"~10
这样的搜索究竟做了什么?它是否允许相邻单词最多相隔10个单词,或者所有单词对是否相同?
谢谢!
答案 0 :(得分:9)
slop(proximity)就像编辑距离(参见PhraseQuery.setSlop
)。因此,这些条款可以重新排序或添加额外的条款。这意味着接近度将是添加到整个查询中的最大术语数。那就是:
"jakarta apache lucene"~3
将匹配:
但不是:
有些人对此感到困惑:
“lucene jakarta apache”(距离:4)
简单的解释是,交换术语需要两次编辑,所以:
更长但更准确的解释是,每次编辑都允许将一个术语移动一个位置。交换的第一步将两个术语相互转换。记住这一点可以解释为什么任何一组三个术语都可以重新排列成距离不大于4的任何顺序。