Esper js 表达式声明
Esper js expression declaration
我正在按照 Esper documentation 中的示例创建一个遵循 js 方言的表达式
这是我的 EPL 声明
expression float js:IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2) [
IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2);
function IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2) {
//get the bottom left and top right points of the intersection triangle
var xIntersection1 = Math.max(xBottom1,xBottom2);
var yIntersection1 = Math.max(yBottom1,yBottom2);
var xIntersection2 = Math.min(xTop1,xTop2);
var yIntersection2 = Math.min(yTop1,yTop2);
var interArea = (Math.max(0, xIntersection2 - xIntersection1 +1) * Math.max(0, yIntersection2 - yIntersection1 +1));
var box1Area = (Math.max(0, xTop1 - xBottom1 +1) * Math.max(0, yTop1 - yBottom1 +1));
var box2Area = (Math.max(0, xTop2 - xBottom2 +1) * Math.max(0, yTop2 - yBottom2 +1));
var iou = interArea / parseFloat(box1Area+box2Area-interArea);
return iou;
}
]
但是,我得到一个编译错误 Incorrect syntax near 'IOU' at line 2 column 4 [expression float js:IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2)...
我不确定缺少什么以及 Esper Github 中是否有使用表达式的示例?我需要以某种方式配置编译器吗?这在文档的第 19 章的相应章节中没有提到。
澄清一下,我什至尝试使用单行JS脚本并验证了上述JS功能。所以,我认为这与如何在 EPL 中定义脚本有关,而不是在各自的方言中定义语法本身。
独立表达式语法是“创建表达式”。因为我没有看到任何其他东西,所以我认为你想做一个独立的表达式,所以它缺少“创建”。
当它不是一个独立的表达式时,语法是“expression ... select ...”。
我正在按照 Esper documentation 中的示例创建一个遵循 js 方言的表达式
这是我的 EPL 声明
expression float js:IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2) [
IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2);
function IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2) {
//get the bottom left and top right points of the intersection triangle
var xIntersection1 = Math.max(xBottom1,xBottom2);
var yIntersection1 = Math.max(yBottom1,yBottom2);
var xIntersection2 = Math.min(xTop1,xTop2);
var yIntersection2 = Math.min(yTop1,yTop2);
var interArea = (Math.max(0, xIntersection2 - xIntersection1 +1) * Math.max(0, yIntersection2 - yIntersection1 +1));
var box1Area = (Math.max(0, xTop1 - xBottom1 +1) * Math.max(0, yTop1 - yBottom1 +1));
var box2Area = (Math.max(0, xTop2 - xBottom2 +1) * Math.max(0, yTop2 - yBottom2 +1));
var iou = interArea / parseFloat(box1Area+box2Area-interArea);
return iou;
}
]
但是,我得到一个编译错误 Incorrect syntax near 'IOU' at line 2 column 4 [expression float js:IOU(xBottom1,yBottom1, xTop1, yTop1, xBottom2, yBottom2, xTop2, yTop2)...
我不确定缺少什么以及 Esper Github 中是否有使用表达式的示例?我需要以某种方式配置编译器吗?这在文档的第 19 章的相应章节中没有提到。
澄清一下,我什至尝试使用单行JS脚本并验证了上述JS功能。所以,我认为这与如何在 EPL 中定义脚本有关,而不是在各自的方言中定义语法本身。
独立表达式语法是“创建表达式”。因为我没有看到任何其他东西,所以我认为你想做一个独立的表达式,所以它缺少“创建”。 当它不是一个独立的表达式时,语法是“expression ... select ...”。