当前位置: 首页 > 知识库问答 >
问题:

使用带有大型(100万或更多)规则的Drools

杜良骏
2023-03-14

我们正在评估一个与医疗相关的软件应用程序的Drools。我们最初的规则集大约是25k,但随着时间的推移,这个规则集将增长到100多万。这就是典型规则的结构:

when item contains the codes "1234" AND "5678" 
  AND does not include "ABC123" 
then [show some message]

正在评估的项目将包含一系列代码作为事实。我们试图做的是创建一个推荐引擎,引导用户对项目进行更改以符合法规。我担心的是,我们不能有选择地过滤应该触发哪些规则,而不通过计算所有“when”语句来找到匹配的规则。如果我们有数百万条规则(我们的一些竞争对手评估的规则远远超过300万条),这是Drools可以处理的,还是我们应该去别处看看?

事务负载并不重,这意味着一个事务可能只有几十到几百个项目需要经历这个过程。这里的大多数帖子都指的是相反的问题,为数百万条记录评估几百条规则。

非常感谢您的指导!

共有1个答案

秦景福
2023-03-14

这很古老,但我还是想回答。考虑到Drools有一个RETE实现,它旨在优化和排除不相关的规则。然而,要想实现这一点,您的数据模型必须兼容,并在特定条件下使用更简单的属性。

即代替

 类似资料:
  • 和BOSSLiu下完棋,绝影虽然赢了,但心情反而很郁闷。这世界上最郁闷的事情就是明明有好事,你非得把它憋在心中,真比憋尿还痛苦。下赢了棋,本来应该是件值得高兴的事,平时任凭你把自己吹得再悬乎,可别人毕竟是外行阿,你说什么西班牙布局西西里防御双马防御,任你说得热火朝天,别人听都听不懂,最后还是只得问:“赢过多少人?” 这时候,绝影只有极不情愿地说:“其实还没赢过,主要没人跟我下……” 虽然你强调的是

  • 问题内容: 我有一个CSS课 我想使用Jquery在事件上执行类似的操作: 这行不通。这是错误的方法吗?我应该使用addClass()和removeClass()吗? 编辑:我想出了我的问题。实际上,此命令是有效的。在我的特定应用程序中,在使用命令之前,我没有使用类创建元素,因此在创建元素时,没有任何改变。 基本上,此命令不会更改CSS样式规则,只会更改使用该类的元素。 问题答案: 将在页面上找到

  • 是否有一种方法可以看到这些错误发生的地点/时间?我应该创建一个Lambda函数来处理这个吗?有这方面的例子吗?谢了。

  • 问题内容: 我有一个laravel 模型,该模型在和上具有唯一的验证规则。在我的存储库中,当我更新模型时,我将重新验证字段,以使所需的规则验证没有问题: 测试失败 有没有办法优雅地解决这个问题? 问题答案: 将当前正在更新的实例的追加到验证器。 传递实例的来忽略唯一的验证器。 在验证器中,使用参数来检测您是否正在 更新 或 创建 资源。 如果进行更新,则强制唯一规则忽略给定的id: 如果创建,请照

  • 我是规则引擎新手,我的应用程序需要从文件系统动态加载xml文件中的规则,因为管理员可以在运行时创建规则。(Java) 我的问题是:有没有可能流口水?如果是,那么请分享知识,如果不是,那么还有其他选择吗?

  • 我是流口水的新手,熟悉使用扩展关键字来继承规则。问题是有没有办法继承多个规则?这类似于在java类上使用多个接口。这是一个我希望它如何工作的示例,但我在规则3上遇到错误: