我正在使用Solr进行模糊查询,该查询遍历可能包含拼写错误的单词或缩写词的数据存储库.例如,存储库可以具有单词"Hlth"的名称(单词"Health"的缩写形式).
Name:'Health'~0.35  我会得到"健康"一词的结果,但不是"健康".  Name:'Hlth'~0.35我会得到名为'Health'和'Hlth'的记录.我想先得到第一个查询.在我的商务用例中,我将不得不使用干净的数据来查询所有拼写错误或缩写的单词.
有人可以帮忙,并说明为什么#1模糊搜索不起作用,以及是否有任何其他方法来实现相同.
您以错误的方式使用模糊查询.
根据Mike McCandless的说法(http://blog.mikemccandless.com/2011/03/lucenes-fuzzyquery-is-100-times-faster.html):
FuzzyQuery匹配术语"关闭"到指定的基本术语:您指定允许的最大编辑距离,并且该编辑距离与基本术语(以及包含这些术语的文档)之间的任何术语都是匹配的.
QueryParser语法是term~或term~N,其中N是允许的最大编辑数(对于旧版本,N是0.0到1.0之间的混淆浮点数,这通过棘手的公式转换为等效的最大编辑距离).
FuzzyQuery非常适合匹配专有名称:我可以搜索mcandless~1,它将匹配mccandless(插入c),mcandles(删除s),mkandless(用k替换c)和许多其他"关闭"术语.使用最大编辑距离2,您最多可以进行2次插入,删除或替换.每场比赛的得分基于该术语的编辑距离; 所以精确匹配得分最高; 编辑距离1,降低; 等等
所以你需要写这样的查询 - Health~2