在Drools中,如何找到匹配数最少的关键字?

在Drools中,如何找到匹配数最少的关键字?,drools,rule-engine,Drools,Rule Engine,我有一些像这样的标记字符串 declare UserAddress tokens : List end rule "Count Frequency of RealTokens occurrence in RealAddresses" salience -10 when $token : RealToken(); $count : List() from collect(RealAddress(tokens contains $token.getToken()));

我有一些像这样的标记字符串

declare UserAddress
    tokens : List
end
rule "Count Frequency of RealTokens occurrence in RealAddresses"
salience -10
when
    $token : RealToken();
    $count : List() from collect(RealAddress(tokens contains $token.getToken()));   
then
    modify($token) { setCount($count) };
end
我有一个这样的识别标记列表

declare UserAddress
    tokens : List
end
rule "Count Frequency of RealTokens occurrence in RealAddresses"
salience -10
when
    $token : RealToken();
    $count : List() from collect(RealAddress(tokens contains $token.getToken()));   
then
    modify($token) { setCount($count) };
end
使用drools,我如何确定给定UserAddress中的哪些令牌与RealToken匹配,并且具有尽可能低的$count值

我已经试过了:

rule "Find the Most Statistically Significant Token for each User Address"
salience -20
    $ua : UserAddress();
    $ut : String( length() > 0) from $ua.getTokens().subList(1, $ua.getTokens().size());
    $rt : RealToken(token == $ut);
    not(RealToken(token == $ut && this.count < $rt.count));
then
    System.out.println("MSST: " + $ua.toString() + " = " + $rt.toString());
end 

错误信息非常清楚,当您费心查看第85行时,您会发现

rule "Find the Most Statistically Significant Token for each User Address"
salience -20
    $ua : UserAddress();  ############################### line 85
    $ut : String( length() > 0) from $ua.getTokens().subList(1, $ua.getTokens().size());
    $rt : RealToken(token == $ut);

在第一个模式之前没有关键字。

根据规则计数频率。。。RealToken中的字段计数是一个列表-无法使用“谢谢”进行比较。我盯着那条线看了几次,没发现有什么问题。