问题标签 [mvel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
817 浏览

php - 使用 mvel 基于正则表达式的弹性评分

我是弹性搜索的新手,这是我要解决的方案。我有一个支持自动建议逻辑的搜索输入框。结果是从使用 ngram 过滤器的弹性索引中获取的。我要改进的是引入评分功能,以便将结果从最重要的结果排序到次要的结果(取决于分数)。分数必须基于以下情况:

  • 如果存在以给定字符串开头的匹配项,则设置分数 100
  • 如果有一个匹配包含给定的字符串并且不以它开头,则将 score 设置为 10

为此,使用 mvel 语句实现了一个 elastica 脚本,以支持正则表达式匹配。换句话说,它检查左边的值是否与右边的正则表达式匹配(只有这样一个变量才会相应地递增)。但不幸的是,尽管左侧的值也是指定语言的,但当搜索字符串是特定于语言的时,它会出错。另一个要处理的问题是我上面提到的第二种情况(无法使其工作)。

以给定单词 ('one') 开头的值 ('one example' (属于 name 字段)) 的脚本工作得很好。

当值('一个示例'(属于名称字段))包含给定单词('示例')时的脚本不起作用,因此总分保持 1 并且不会按应有的方式增加到 11。

最后,使用相同的逻辑,当我尝试将希腊词与名称字段的值(包含希腊字母)进行匹配时,总分的增量也会被忽略。

所有的工作都是使用elastica完成的,更不用说php了。你能帮忙解决我的问题吗?如果有其他方法/解决方案,请随时与我分享。

先感谢您

0 投票
2 回答
643 浏览

java - MVEL 表达式编译需要很长时间

我们目前正在构建自己的产品和框架。我们有一个规则引擎,它在内部使用 MVEL API 来评估表达式。

最近我们遇到一个问题

假设我有一个“规则”,有很多嵌套的条件。

( A && ( B && ( C && ( D && ( E && F ) ) ) )

假设我有更多像上面那样的表达。而不是 A、B、C 等,我有 ognl 之类的 (A -> contextObjectLoanApplication.Customer.personinfo.age)

如果我编译这个表达式,编译一个表达式大约需要 3-4 小时。有没有办法让我可以在解析器或上下文中设置任何内容,而 MVEL 以更优化的方式处理它。

我们几乎被困在这里,要么我们可能需要更改生成这个表达式的整个 API,然后编译。

所以只是好奇 MVEL 是否可以处理这个问题。

谢谢

0 投票
0 回答
600 浏览

jboss - Drools 模板头参数

我正在做一个项目,使用模板来生成我的所有规则。不过我有一个问题,我想将模板的参数解析为 ArrayList,然后执行以下操作:

但是,这是不可能的。此外,我想扩展性能是一个问题,并且我希望生成的文件仅包含列表中的值,并且在运行我的规则时不在数组中进行任何查找

0 投票
1 回答
1190 浏览

java - 如果值为空,则 Mvel 表达式评估问题

假设我有一个需要使用 MVEL 评估的以下表达式。

( ( ( A * B ) + C ) / D )

假设 B 的值为 NULL,则 MVEL 将“A * B”评估为 FALSE。"(A * B) + C" 变为 FalseC 然后 FalseC/D 抛出异常

如何防止这种情况...??

0 投票
1 回答
219 浏览

java - 解析表达式期间的钩子

我需要解析和评估用户定义的表达式。

表达式的形式为“foo > 50 && bar < 60 && !(moo > 50))”

在解析过程中,需要监控 foo > 50、bar < 60 和 !(moo > 50) 的值,并在满足条件时生成事件。事件评估器将调用表达式评估。

我查看了 MVEL 和 JEXL,但无法确定如何在解析阶段获取挂钩。

除了使用 javacc 或 lex/yacc 引导语法之外,还有其他选择吗?

我是编译器/解析器世界的新手(除了 20 年前研究生院的课程),如果我在这里完全偏离轨道,请告知。

谢谢,-kvh

0 投票
0 回答
400 浏览

java - 流口水:无法让番石榴 getOnlyElement 工作

以下规则无法编译:

我已经发现导致错误的是 getOnlyElement() 。我正在使用流口水 5.1 版

为什么它不起作用?我该如何解决?欢迎任何帮助。提前致谢。

错误 :

0 投票
0 回答
1411 浏览

elasticsearch - 如何在 Elasticsearch 脚本过滤器中与 MVEL 进行按位比较

我正在使用按位存储的信息。

要在 elasticsearchs 脚本过滤器中处理它,我必须使用 MVEL。

MVEL Docs 说按位计算运算符是很常见的,所以:

& -> 按位与

| -> 按位或

^ -> 按位异或

如果我尝试使用此运算符在弹性搜索中按位计算弹性搜索失败并出现

SearchPhaseExecutionException[执行阶段[查询]失败,所有分片失败;分片失败

过滤器如下所示:

字段“选项”映射为整数。像加号而不是管道这样的常用操作将正确运行并计算正确。

我的错误在哪里?

0 投票
1 回答
977 浏览

elasticsearch - Calculating Distance on a MultiValueField Location

In my ElasticSearch index, location is a MultiValueField. When I write a custom scoring formula for my documents involving location, I want the script to pick up on whichever location is the closest to the point in my query.

So, I have this part of my scoring formula:

It's not the most elegant (I'm new to mvel and ES), but conceptually I'm first checking to see if doc['location'] indeed has more than one location in it, and if so, go through each of the locations to calculate distance, and keep track of the minimum distance found so far.

When I do this, ElasticSearch is returning an error:

which I think means that it doesn't want to do .distance() on a GeoPoint, which for some reason is different than a field that I might get by doing doc['location'].

Am I interpreting this situation correctly, and does anybody know of a workaround? Is there a way to just calculate distance (ideally without actually putting all the arithmetic for the distance between two coordinates) using ElasticSearch?

0 投票
1 回答
343 浏览

mvel - 在 MVEL 中除以 null 返回 false。这背后的逻辑是什么?

除以 null 在 MVEL 中返回 false。但为什么?mvel2-2.1.3.Final

0 投票
1 回答
86 浏览

jsf-2 - JSF el - 与 mvel 集成

是否可以将 MVEL ( http://mvel.codehaus.org/Home ) 与 JSF 一起使用?我在代码中找不到“ExpressionFactory”类?MVEL 似乎使用静态 MVEL 类,所以我不知道在我的 web.xml 中为“org.apache.myfaces.EXPRESSION_FACTORY”上下文参数写什么。