首页 > 解决方案 > 通过检查levenshtein距离在流口水中进行类似的匹配而不是精确匹配

问题描述

我的用例是在流口水下面匹配时

Person(name=="A.P.J abdul kalam")

此匹配应适用于以下所有数据

 1. A.P.J Abdul Kalam
 2. A.P.J. Abdul Kalam
 3. APJ Abdul Kalam

这样的事情可以用流口水完成吗?

标签: drools

解决方案


只要您可以将您的要求表达为正则表达式,就可以通过使用匹配运算符来完成。

该规则应类似于以下内容:

rule 'Match APJ Abdul Kalam' 
  Person(name matches "A(\\.)?P(\\.)?J(\\.)? Abdul Kalam")
then
  //...
end

如果您的问题无法使用正则表达式解决,那么您可以做的是在实用程序类中使用 Levenshtein 距离算法的实现,然后执行以下操作:

rule 'Match name' 
  Person(Utils.levenshtein(name, "APJ Abdul Kalam"))
then
  //...
end

希望能帮助到你,


推荐阅读