drools - 通过检查levenshtein距离在流口水中进行类似的匹配而不是精确匹配
问题描述
我的用例是在流口水下面匹配时
Person(name=="A.P.J abdul kalam")
此匹配应适用于以下所有数据
1. A.P.J Abdul Kalam
2. A.P.J. Abdul Kalam
3. APJ Abdul Kalam
这样的事情可以用流口水完成吗?
解决方案
只要您可以将您的要求表达为正则表达式,就可以通过使用匹配运算符来完成。
该规则应类似于以下内容:
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
希望能帮助到你,
推荐阅读
- selenium-webdriver - 无法使用 Selenium Webdriver 向下滚动
- r - 编写 dplyr 函数以传递给 group_map
- rust - 在构建第三方 crate 时,我可以用包装器替换二进制文件使用的库吗?
- javascript - Node.js / MongoDB:无法从该回调之外的 Cursor.map 回调中捕获错误
- javascript - 如何制作多个文本叠加层
- java - 弹簧注释自动装配字段的空指针异常
- jquery - 我如何从选定的 li 中获取特定的 div 文本
- javascript - 将 ThreeCSG 与 BufferGeometry 一起使用给了我奇怪的结果 - 缺少面孔
- mysql - Mysql基于小时的累计求和
- spring-boot - 偏移量超出范围重置偏移量第二个消费者组