Я пытаюсь применить AfterMatchSkipStrategy 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))
Выше моя последовательность паттернов.В этом случае вывод, который мне требуется, это последовательность (Miss Basket + Miss) баскетболиста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]
, и не все другие шаблоны, как в NoSkip, дали бы мне.
Заранее спасибо за любые ответы.Это было бы огромной помощью.