Эспер - обнаружение паттернов

У меня есть вопрос к сообществу относительно обнаружения шаблонов с помощью Esper.

Предположим, вы хотите обнаружить следующий шаблон среди набора данных: A B C

Однако возможно, что в фактических данных у вас могут быть: A, B, D, E, C. Моя цель — разработать правило, которое все еще могло бы обнаруживать A B C, сохраняя A B в памяти, и запускать предупреждение, как только оно видит C.

Можно ли сделать это? При стандартном выборе * из шаблона (a = событие -> b = событие -> c = событие) он выводит только тогда, когда три последовательно находятся в данных, но не когда между ними есть другие бесполезные данные


person benjamin steiner    schedule 26.01.2015    source источник
comment
И почему Drools среди тегов?   -  person laune    schedule 26.01.2015
comment
Извините, это была ошибка.   -  person benjamin steiner    schedule 26.01.2015


Ответы (1)


Со стандартным «выбрать * из шаблона [a = A -> b = B]» могут быть любые события между A и B. Следовательно, ваше утверждение неверно. Я думаю, вы запутались в том, как удалить бесполезные данные. Используйте фильтр, такой как "a=event(...не бесполезно...) -> b=event(...не бесполезно...)". В скобках поместите выражения фильтра, которые различают бесполезные и не бесполезные события, т.е. «a=event(amount>10)» или что-то подобное.

person user3613754    schedule 26.01.2015
comment
Я попробовал пример: esper-epl-tryout.appspot.com/epltryout/ mainform.html Вот четыре события, которые вы можете скопировать в поле Advance Time and Send Events: StockTick={symbol='GE', price=20.5} StockTick={symbol='YHOO', price=65} StockTick={символ='альфа', цена=10,5} StockTick={символ='бета', цена=12,5} - person benjamin steiner; 26.01.2015
comment
А вот запрос, который вы можете написать в текстовом поле модуля EPL: создать схему StockTick (строка символов, двойная цена); выберите * из шаблона [a = StockTick -> b = StockTick], где a.price = 20,5 и b.price = 10,5 - person benjamin steiner; 26.01.2015
comment
К сожалению, этот запрос ничего не выводит, даже если есть два события, соответствующие правилу EPL :( @user3613754 - person benjamin steiner; 26.01.2015
comment
Выражения фильтра не входят в предложение where. Каждое выражение фильтра является правой частью шаблона. Вот так: выберите * из шаблона [a = StockTick (цена = 20,5) -> b = StockTick (цена = 10,5)] - person user3613754; 26.01.2015