我在尝试运用赛后技巧策略 skipPastLastEvent()
进入我的模式。但问题是,当我不应用 skipstrategy (NoSkip)
.
丢弃在匹配开始之后但在其结束之前开始的每个部分匹配是跳过策略的描述 SKIP_PAST_LAST_EVENT
. 据我所知,一旦模式匹配,所有的部分匹配都会被丢弃。
AfterMatchSkipStrategy skipStrategy = AfterMatchSkipStrategy.skipPastLastEvent();
Pattern<GraphMap, ? > pattern2 = Pattern.<GraphMap>begin("start", skipStrategy).where(new IterativeCondition<GraphMap>() {
@Override
public boolean filter(GraphMap graphMap, Context<GraphMap> context) throws Exception {
if (graphMap.getSubjectValue().equals("basketballplayer1"))
return graphMap.getObjectValueString().equals("Miss");
return false;
}
}).followedBy("middle").where(new IterativeCondition<GraphMap>() {
@Override
public boolean filter(GraphMap graphMap, Context<GraphMap> context) throws Exception {
for( GraphMap previousGraphMap : context.getEventsForPattern("start")){
if (graphMap.getSubjectValue().equals(previousGraphMap.getSubjectValue())){
return graphMap.getObjectValueString().equals("Basket");
}
}
return false;
}
}).oneOrMore().followedBy("end").where(new IterativeCondition<GraphMap>() {
@Override
public boolean filter(GraphMap graphMap, Context<GraphMap> context) throws Exception {
for ( GraphMap previousGraphMap : context.getEventsForPattern("middle")){
if( graphMap.getSubjectValue().equals(previousGraphMap.getSubjectValue())){
return graphMap.getObjectValueString().equals("Miss");
}
}
return false;
}
}).within(Time.seconds(10))
以上是我的模式序列。在这种情况下,我需要的输出是篮球运动员的(投篮失误+投篮失误)顺序1。但当我有了这样的投入
Miss, Miss, Basket, Basket, Miss
我得到了所有的匹配像:
[Miss, Basket, Basket, Miss] ,
[Miss, Basket, Miss]
[Miss, Basket, Miss] {of the second miss in the sequence} etc.
我做错什么了吗?我想要的结果只是 [Miss, Basket, Basket, Miss]
而不是像诺斯基普那样的所有其他模式都能给我。
提前感谢您的回复。这将是一个巨大的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!