gpt4 book ai didi

java - 在 Esper 中查找字符串列表中的字符串是否在另一个字符串列表中

转载 作者:行者123 更新时间:2023-12-01 14:12:03 25 4
gpt4 key购买 nike

我正在使用 Esper + Mule 并尝试定义一个 POJO 和一个事件,但在阅读了 Espero 的文档后我还没有找到我真正需要的东西。

我的事件(由 POJO 表示)具有如下属性:

List<String> Words;

我想做的是使用关键字 IN 将其与另一个单词列表进行比较,因此模式如下所示:

... Words in ('word1', 'word2', 'word3) ...

但我收到此错误:

Collection or array comparison is not allowed for the IN, ANY, SOME or ALL keywords

有什么办法可以实现这一点吗?

非常感谢

最佳答案

一种方法是创建一个方法来执行您想要的操作,向 esper 注册该方法,然后从 EPL 语句中引用该方法:

创建辅助类(在本例中,我使用 EsperUtils.java):

package my.package;

class EsperUtils {
public static boolean contains(List<String> list1, List<String> list2) {

// Check for list1 and list2 to contain same word
for (String s1 : list1) {
for (String s2 : list2) {
if (s1.equals(s2)) return true;
}
}
return false;
}
}

在 aem.esper.config.xml 中向 esper 注册方法:

<plugin-singlerow-function name="contains" function-class="my.package.EsperUtils" function-method="contains" />

在 EPL 中使用辅助方法:

select * from myEvent where contains(Words,AnotherListOfWords)

您还可以将辅助方法添加到事件 POJO,而不是辅助类。

关于java - 在 Esper 中查找字符串列表中的字符串是否在另一个字符串列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com