我想知道以下Solr查询片段中的“~”字符是什么意思:
... q="field:'value'~30^10 ...
Run Code Online (Sandbox Code Playgroud)
~在这种情况下用于进行模糊搜索。模糊查询基于编辑距离算法。该算法识别将一个令牌转换为另一个令牌所需的最小编辑次数。
这是使用的语法:
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)
它正在成为邻近搜索,如果您在该领域有两个术语,这确实适用。因此,它不会做太多事情,而只是查找在“字段”中设置了“值”的文档。