Solr 增强和 '~' 字符

pha*_*nce 1 solr

我想知道以下Solr查询片段中的“~”字符是什么意思:

... q="field:'value'~30^10 ...
Run Code Online (Sandbox Code Playgroud)

man*_*nuj 5

~在这种情况下用于进行模糊搜索。模糊查询基于编辑距离算法。该算法识别将一个令牌转换为另一个令牌所需的最小编辑次数。

这是使用的语法:

q=字段:项~N

其中 N 是编辑距离。N 的值在 0 到 2 之间变化。

如果您没有为 N 指定任何内容,则使用值 2 作为默认值。

N=2 -> 这匹配最大的编辑次数。

N=0 -> 这意味着不进行编辑,并且与术语查询具有相同的效果。

您可以给出 0 到 1 之间的小数值,但任何大于 1 的小数值都会引发以下错误。

org.apache.solr.search.SyntaxError: Fractional edit distances are not allowed!
Run Code Online (Sandbox Code Playgroud)

注意:然而,给出小于 1 的分数值也默认为 2。

所以 q=field:term~0.2会产生相同的效果q=field:term~2

此外,任何大于 2 的距离也将默认为 2。因此在以下情况下

q="字段:值~30"

与(您可以通过查看调试查询来验证这一点)相同。

q="字段:值~2"

这将匹配最高的编号。的编辑。

注意:模糊查询中的波形符与邻近查询中的波形符不同。在邻近查询中,波形符应用在引号后面。例如下面的查询

q=字段:"foo bar"~30

因此,在您的情况下,当您在字段周围添加引号时

q="field:'value'~30"  
Run Code Online (Sandbox Code Playgroud)

它正在成为邻近搜索,如果您在该领域有两个术语,这确实适用。因此,它不会做太多事情,而只是查找在“字段”中设置了“值”的文档。