如何在 drools 规则语言中加入两个查询

How to join two query in drools rule language

我有两个用于查找特定项目的查询,它们如下:

query "score" (double s)
    Item( score > s )
end

query "price" (double p)
    Item( price < p )
end

以下查询用于查找项目 score > s or price < p:

query "price or score" (double p, double s)
    price(p;) or score(s;)
end

我的问题是如何找到所有项目 score > s and price < p

以下查询无效。它执行交叉连接,而不是内部连接。

query "price and score" (double p, double s)
    price(p;) and score(s;)
end

谢谢

此查询提供价格 < p 和分数 > s 的项目事实:

query "price and score" (double p, double s)
    item: Item(price < p, score > s)
end

要将一个查询组合成两个查询,您必须提供一个变量来绑定对事实的引用:

query "score" (double s, Item item)
    Item( this == item, score > s )
end

query "price" (double p, Item item)
    Item( this == item, price < p )
end

query "price and score" (double p, double s )
    price(p, item; ) and score(s, item; )
end