我们正在为一个医疗相关的软件应用程序评估Drools。我们最初的规则集大约是25k,但随着时间的推移,这个规则集将增长到超过一百万。下面是典型规则的结构:
when item contains the codes "1234" AND "5678"
AND does not include "ABC123"
then [show some message]被评估的项目将包含一个代码数组作为它的事实。我们正在尝试做的是创建一个推荐引擎来指导用户对项目进行合规性更改。我担心的是,如果Drools不评估所有"when“语句来查找匹配的规则,我们就不能有选择地过滤应该触发的规则。如果我们有数百万条规则(我们的一些竞争对手估计有300多万条),这是Drools可以处理的吗,还是我们应该寻找其他地方?
事务负载并不重,这意味着一个事务可能只有几十到几百个项目需要通过该过程。这里的大多数帖子都提到了相反的问题,评估了数百万条记录的数百条规则。
任何指导都是非常感谢的!
发布于 2018-08-13 17:44:17
这是陈旧的,但我还是想回答。考虑到Drools有一个RETE实现,它的目标是优化和排除不相关的规则。但是,要实现这一点,您的数据模型必须是兼容的,并且在条件中使用更简单的属性。
也就是说,你应该先做一个分类,然后定义像<object>.<property>这样的事实,然后在它上面执行规则,而不是<array> [NOT] contains <x>。
https://stackoverflow.com/questions/48812474
复制相似问题