es like模糊匹配_ElasticSearch fuzziness 模糊查询

[[模糊]] === 模糊

模糊匹配 视两个单词 ``模糊'' 相似,正好像它们是同一个词. ((("typoes and misspellings", "fuzziness, defining"))) 首先, 我们需要通过fuzziness 来定义什么是((("fuzziness"))).

用来度量把一个单词转换为另一个单词需要的单字符编辑次数 ((("Levenshtein distance"))). 他提出了3种单字符编辑:

替换 一个字符到另一个字符: _f_ox -> _b_ox

插入 一个新字符: sic -> sick

删除 一个字符:: b_l_ack -> back

稍后扩展了这些操作并包含了1个新的 ((("Damerau, Frederick J."))):

换位 调整字符: _st_ar -> _ts_ar

例如,把 bieber 转换为 beaver 需要以下几步:

用 v 替换掉 b: bie_b_er -> bie_v_er

用 a 替换掉 i: b_i_ever -> b_a_ever

换位 a 和 e : b_ae_ver -> b_ea_ver

以上的3步代表了3个 http://bit.ly/1ymgZPB[Damerau-Levenshtein edit distance(Damerau-Levenshtein编辑距离)].

显然, bieber 距 beaver—很远;远得无法被认为是一个简单的拼写错误. Damerau发现 80% 的人类拼写错误的编辑距离都是1. 换句话说, 80% 的拼写错误都可以通过 单次编辑 修改为原始的字符串.

通过指定 fuzziness 参数为 2,Elasticsearch 支持最大的编辑距离.

当然, 一个字符串的单次编辑次数依赖于它的长度. 对 hat 进行两次编辑可以得到 mad, 所以允许对长度为3的字符串进行两次修改就太过了. fuzziness 参数可以被设置成 AUTO, 结果会在下面的最大编辑距离中:

0 、1或2个字符的字符串

1 、3、4或5个字符的字符串

2 、多于5个字符的字符串

当然, 你可能发现编辑距离为2 仍然是太过了, 返回的结果好像并没有什么关联. 把 fuzziness 设置为 1 ,你可能会获得更好的结果和性能.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值