- 浏览: 1012700 次
- 性别:
- 来自: 福州
最新评论
-
guanxin2012:
大神,您好。非常感谢您贡献了IKExpression。我们现在 ...
分享开源表达式解析器IK-Expression2.0 -
qqgigas:
LZ,public boolean createUser(LD ...
Sun Directory Server/LDAP学习笔记(二)——API说明及代码样例 -
gao_shengxian:
Hibernate: update T_GX_TEST set ...
优雅Java编程 之 使用Hibernate存储Oracle Spatial对象 -
a78113534:
感谢大神,在安卓里面调用成功了。
发布IK Expression开源表达式解析器 V2.1.0 -
majiedota:
加油
来自开源支持者的第一笔捐赠
Version2.1.0已发布: http://linliangyi2007.iteye.com/blog/462723
Version2.0.5的变更:
支持表达式的换行编辑,方便表达式编写和阅读,如:
$CALCDATE([2008-03-01], 0,0, -(10 + (23 - 3) * (4 / 5)) % 6, 0,0,0)
提供了更多的开放API,如:表达式验证API,这使得表达式在执行前可以检查其语法正确性。
修订了“?:”三元操作符的“:“号两端对不同类型的数值不兼容的BUG。如:原有版本中,表达 ”100 > 10 ? 100 : 10.5“ 将会抛出“参数类型不兼容“异常;在新版本中,则返回double型的100.0
变更原有配置文件functionConfig.xml的文件名为IKExpression.cfg.xml
发布了V2.0.5版本的JavaDoc
详细请参阅RAR包内的《IKExpressoin简易表达式引擎V2.0使用说明.doc》文档
google code 下载地址:http://code.google.com/p/ik-expression/downloads/list
- IKExpressionV2.0.5_All_In_One.rar (545.1 KB)
- 下载次数: 354
- IKExpressoin简易表达式引擎V2.0.5使用说明.pdf (616 KB)
- 下载次数: 418
评论
33 楼
linliangyi2007
2009-09-05
lovit 写道
谢谢您的回答,
我们是以下方法去调用的,会出错。。
以上如“sayHello(1.0)”是在流程中的表达式。您的意思是只能通过楼上的方式去调用吗?因为sayHello中的值,是根据数据库中的数据或上下文的中值取得,配置表达式的时候,根本不知道他是什么类型,只知道他是数字(可能是整形,也可能是浮点型)
我们是以下方法去调用的,会出错。。
public static void main(String[] args){ Object result = null; result = ExpressionEvaluator.evaluate("sayHello(1.0)"); System.out.println("Result = " + result); result = ExpressionEvaluator.evaluate("sayHello(1)"); System.out.println("Result = " + result); }
以上如“sayHello(1.0)”是在流程中的表达式。您的意思是只能通过楼上的方式去调用吗?因为sayHello中的值,是根据数据库中的数据或上下文的中值取得,配置表达式的时候,根本不知道他是什么类型,只知道他是数字(可能是整形,也可能是浮点型)
新版本已经发布:http://www.iteye.com/topic/462723
32 楼
linliangyi2007
2009-09-05
lovit 写道
谢谢您的回答,
我们是以下方法去调用的,会出错。。
以上如“sayHello(1.0)”是在流程中的表达式。您的意思是只能通过楼上的方式去调用吗?因为sayHello中的值,是根据数据库中的数据或上下文的中值取得,配置表达式的时候,根本不知道他是什么类型,只知道他是数字(可能是整形,也可能是浮点型)
我们是以下方法去调用的,会出错。。
public static void main(String[] args){ Object result = null; result = ExpressionEvaluator.evaluate("sayHello(1.0)"); System.out.println("Result = " + result); result = ExpressionEvaluator.evaluate("sayHello(1)"); System.out.println("Result = " + result); }
以上如“sayHello(1.0)”是在流程中的表达式。您的意思是只能通过楼上的方式去调用吗?因为sayHello中的值,是根据数据库中的数据或上下文的中值取得,配置表达式的时候,根本不知道他是什么类型,只知道他是数字(可能是整形,也可能是浮点型)
马上发布修定版本,谢谢你的建议。
31 楼
lovit
2009-09-05
谢谢您的回答,
我们是以下方法去调用的,会出错。。
以上如“sayHello(1.0)”是在流程中的表达式。您的意思是只能通过楼上的方式去调用吗?因为sayHello中的值,是根据数据库中的数据或上下文的中值取得,配置表达式的时候,根本不知道他是什么类型,只知道他是数字(可能是整形,也可能是浮点型)
我们是以下方法去调用的,会出错。。
public static void main(String[] args){ Object result = null; result = ExpressionEvaluator.evaluate("sayHello(1.0)"); System.out.println("Result = " + result); result = ExpressionEvaluator.evaluate("sayHello(1)"); System.out.println("Result = " + result); }
以上如“sayHello(1.0)”是在流程中的表达式。您的意思是只能通过楼上的方式去调用吗?因为sayHello中的值,是根据数据库中的数据或上下文的中值取得,配置表达式的时候,根本不知道他是什么类型,只知道他是数字(可能是整形,也可能是浮点型)
30 楼
linliangyi2007
2009-09-05
引用
我的意思是,在eclipse的JAVA环境下,语法检查和编译都可以通过。其实这个功能比较实用,因为在流程条件判断方面,很难确定这个值是整形或浮点形(因为每个单据的业务数据不同),而IK-Exp又不支持重载,如果当IK-Exp要调用的函数参数为Object类型能支持的话,那就太好了,不知道这个功能能不能实现,谢谢!
不是太明白你的意思,个人觉得你没有很细的看IK-Exp的API文档。不多说了,这个给一个Object为参数的例子吧:
1.定义自己的Java方法
/** * @author linly * */ public class TestFunctions { /** * 自己定义的以Object为参数的Java方法 * @param o * @return */ public String sayHello(Object o){ if(o instanceof Integer){ return "Integer"; }else if(o instanceof Double){ return "Double"; }else{ return "Float"; } } }
2.设置IKExpression.cfg.xml,将自定义的方法声明为IK-Exp的函数
<?xml version="1.0" encoding="UTF-8"?> <function-configuration> <!-- 这里省略IK-Exp的内置函数配置罗干。。。--> <!-- 用户函数配置 请在这里定制您自己的函数--> <bean class="org.wltea.expression.test.TestFunctions"> <function name="问好" method="sayHello"> <parameter-type>java.lang.Object</parameter-type> </function> </bean> </function-configuration>
3.在Java中调用的自己写的函数,实现Object的参数传入
public static void main(String[] args){ //定义表达式 String expression = "$问好(数字类型)"; //给表达式中的变量 [数字类型] 付上下文的值 List<Variable> variables = new ArrayList<Variable>(); variables.add(new Variable("数字类型" , DataType.DATATYPE_OBJECT , new Integer(100))); //执行表达式 Object result = ExpressionEvaluator.evaluate(expression, variables); System.out.println("Result = " + result); //变更 [数字类型] 的值 variables.add(new Variable("数字类型" , DataType.DATATYPE_OBJECT , new Double(100))); //再次执行表达式 result = ExpressionEvaluator.evaluate(expression, variables); System.out.println("Result = " + result); }
4.执行结果
Result = Integer
Result = Double
OK!!!
29 楼
lovit
2009-09-05
linliangyi2007 写道
lovit 写道
linliangyi2007 写道
lovit 写道
我现在就是将参数声明成Object,但传入double类型的时候(因为有时候是integer的),就出现上面的错误。。这种情况怎么处理?谢谢!!
你传入double的时候,变量申明为啥类型啊?
是double类型。也就是说,我有一个函数,定义成Object的参数,IK-Expression下调用时将double类型传入调用的时候,会执行不成功,正常的代码,这个语法应该是支持的。
function void dd(Object a,Object b){
}
double c=0.0;
double d=1.0;
dd(c,d)
是的,你必须把变量声明称Object跟你在函数声明的时候一致。我不知道你的“正常代码这个语法应该是支持”是啥意思,IK-Exp只是一个很轻量级的解析器,它有自己的语法,并不兼容某种语言的,如果你觉得要支持JS或者Java的全部语法,那就期望太高了。你可以看看IK-Exp的项目定位和说明吧。
我的意思是,在eclipse的JAVA环境下,语法检查和编译都可以通过。其实这个功能比较实用,因为在流程条件判断方面,很难确定这个值是整形或浮点形(因为每个单据的业务数据不同),而IK-Exp又不支持重载,如果当IK-Exp要调用的函数参数为Object类型能支持的话,那就太好了,不知道这个功能能不能实现,谢谢!
28 楼
linliangyi2007
2009-09-03
lovit 写道
linliangyi2007 写道
lovit 写道
我现在就是将参数声明成Object,但传入double类型的时候(因为有时候是integer的),就出现上面的错误。。这种情况怎么处理?谢谢!!
你传入double的时候,变量申明为啥类型啊?
是double类型。也就是说,我有一个函数,定义成Object的参数,IK-Expression下调用时将double类型传入调用的时候,会执行不成功,正常的代码,这个语法应该是支持的。
function void dd(Object a,Object b){
}
double c=0.0;
double d=1.0;
dd(c,d)
是的,你必须把变量声明称Object跟你在函数声明的时候一致。我不知道你的“正常代码这个语法应该是支持”是啥意思,IK-Exp只是一个很轻量级的解析器,它有自己的语法,并不兼容某种语言的,如果你觉得要支持JS或者Java的全部语法,那就期望太高了。你可以看看IK-Exp的项目定位和说明吧。
27 楼
lovit
2009-09-03
linliangyi2007 写道
lovit 写道
我现在就是将参数声明成Object,但传入double类型的时候(因为有时候是integer的),就出现上面的错误。。这种情况怎么处理?谢谢!!
你传入double的时候,变量申明为啥类型啊?
是double类型。也就是说,我有一个函数,定义成Object的参数,IK-Expression下调用时将double类型传入调用的时候,会执行不成功,正常的代码,这个语法应该是支持的。
function void dd(Object a,Object b){
}
double c=0.0;
double d=1.0;
dd(c,d)
26 楼
linliangyi2007
2009-08-25
lovit 写道
我现在就是将参数声明成Object,但传入double类型的时候(因为有时候是integer的),就出现上面的错误。。这种情况怎么处理?谢谢!!
你传入double的时候,变量申明为啥类型啊?
25 楼
lovit
2009-08-25
我现在就是将参数声明成Object,但传入double类型的时候(因为有时候是integer的),就出现上面的错误。。这种情况怎么处理?谢谢!!
24 楼
linliangyi2007
2009-08-25
lovit 写道
函数不能重载,所以将函数参数变成Object时,出现----参数类型不匹配,函数类型为:java.lang.Object 传入参数类型为:double
你把函数的参数声明成Object,那么参数就是用Object传入就好了。重载的时候,null型没法处理啊,不知道转成啥
23 楼
lovit
2009-08-25
函数不能重载,所以将函数参数变成Object时,出现----参数类型不匹配,函数类型为:java.lang.Object 传入参数类型为:double
22 楼
linliangyi2007
2009-07-14
conservatism 写道
自定义函数的名字不能重复,请问有别的方法可以让IKExpression.cfg.xml中配置的函数能实现重载吗?
比如我想用一个$ABS()来指向我定义的四个版本的abs(),分别是int,long,double和float。
另外在IKExpression.cfg.xml直接配置java.lang.Math中的函数是不可见的?必须要在别的地方声明一个public的函数去调用可以
比如我想用一个$ABS()来指向我定义的四个版本的abs(),分别是int,long,double和float。
另外在IKExpression.cfg.xml直接配置java.lang.Math中的函数是不可见的?必须要在别的地方声明一个public的函数去调用可以
暂时不能,你只能分别命名为$ABS1()、$ABS2()或者$ABSInt()、$ABSLong()了。
识别方法的重载相当复杂,就IK-EXP的定位而言,实在没有这个必要,呵呵
21 楼
conservatism
2009-07-14
自定义函数的名字不能重复,请问有别的方法可以让IKExpression.cfg.xml中配置的函数能实现重载吗?
比如我想用一个$ABS()来指向我定义的四个版本的abs(),分别是int,long,double和float。
另外在IKExpression.cfg.xml直接配置java.lang.Math中的函数是不可见的?必须要在别的地方声明一个public的函数去调用可以
比如我想用一个$ABS()来指向我定义的四个版本的abs(),分别是int,long,double和float。
另外在IKExpression.cfg.xml直接配置java.lang.Math中的函数是不可见的?必须要在别的地方声明一个public的函数去调用可以
20 楼
makemyownlife
2009-07-13
学习学习啦
19 楼
凯旋人生
2009-07-13
支持,好好学些下!!!
18 楼
dd2086
2009-07-12
是个不错的东东
17 楼
city_moon
2009-07-12
从上一个版本开始,我就一直在关注,希望功能越来越强......
16 楼
linliangyi2007
2009-07-12
stworthy 写道
请问处理速度有多快?
Good question!
老实说,没有做过专门的性能测试。
只是随我们公司的业务系统做了集成的压力测试,100并发的,没出问题。
IK-EXP的在设计的时候,考虑了多线程,但没有将他定位在高执行效率上。毕竟解析执行的东西,很难设想有非常好的性能表现。
目前,国外有大量优秀的动态语言解析程序,如BeanScript;java 6.0也有完整的js执行包了。IK的定位很简单,可以中文命名变量,中文函数名称,语法接近算术公式;适合于最终用户的使用(有点模仿Excel中的公式吧)。
大家这么热情,我很开心。
但本人还没能力靠个人之力,将其设计成如同Ruby那样强大的动态语言,哈哈,见笑了!
15 楼
YiSingQ
2009-07-11
谢谢LZ了,刚刚好学习下。。。
14 楼
stworthy
2009-07-11
请问处理速度有多快?
发表评论
-
来自开源支持者的第一笔捐赠
2013-01-09 21:15 57772013年1月9号,一个平凡而又不平常的日子! IK中文分词 ... -
发布 IK Analyzer 2012 FF 版本
2012-10-23 17:50 25074首先感谢大家对IK分词器的关注。 最近一段时间正式公司事务最 ... -
发布 IK Analyzer 2012 版本
2012-03-08 11:23 36163新版本改进: 支持分词歧义处理 支持数量词合并 词典支持中英 ... -
CSDN发生严重用户账号泄密事件
2011-12-21 19:21 2564之前有在CSDN注册过的兄弟们,注意了。。。 如果你的邮箱, ... -
一个隐形的java int溢出
2011-08-30 09:44 7555故事的背景: 笔者最近在做一个类SNS的项目,其中 ... -
雷军 :互联网创业的葵花宝典
2011-05-04 10:35 3593博主评: 这片博客很短 ... -
Luci-mint站内搜索实测
2011-04-02 16:18 4135关于Luci-mint 服务器硬 ... -
发布 IK Analyzer 3.2.8 for Lucene3.X
2011-03-04 17:49 14251IK Analyzer 3.2.8版本修订 ... -
TIPS - XML CDATA中的非法字符处理
2011-02-17 15:03 3301XML解析过程中,常遇见CDATA中存在非法字符,尤其在火星文 ... -
对Cassandra的初体验
2010-10-13 17:58 9132作为“云计算”时代的架构设计人员而言,不懂K-V库会被 ... -
Spring + iBatis 的多库横向切分简易解决思路
2010-10-11 13:43 93541.引言 笔者最近在做一个互联网的“类SNS”应用,应用 ... -
发布 IK Analyzer 3.2.5 稳定版 for Lucene3.0
2010-09-08 14:43 5822新版本IKAnnlyzer3.2.8已发布! 地址: http ... -
关于Lucene3.0.1 QueryParser的一个错误
2010-05-21 21:33 2128表达式1: 引用 id:"1231231" ... -
发布 IK Analyzer 3.2.3 稳定版 for Lucene3.0
2010-05-15 14:13 6715IK Analyzer 3.2.3版本修订 在3.2.0版 ... -
windows平台上的nginx使用
2010-01-28 17:13 3404转载自:http://nginx.org/en/docs/wi ... -
发布IKAnnlyzer3.2.0稳定版 for Lucene3.0
2009-12-07 09:27 9574最新3.2.5版本已经推出,http://linliangyi ... -
在Tomcat下以JNDI方式发布JbossCache
2009-12-04 10:57 3828前言: 看过JbossCache的开发手册,发现在Jb ... -
Spring AOP小例子
2009-11-16 10:35 3403PS: 要注明一下,这个是转载滴,之前漏了说鸟,汗死 这里给 ... -
ActiveMQ 5.X 与 Tomcat 集成一(JNDI部署)
2009-11-10 15:15 5648原文地址:http://activemq.apache.org ... -
发布IKAnalyzer中文分词器V3.1.6GA
2009-11-08 23:10 11854IKAnalyzer3.2.0稳定版已经发布,支持Lucene ...
相关推荐
IK Expression开源表达式解析器V2.1.2是一款用于处理和解析文本表达式的强大工具,广泛应用于各类软件开发和数据分析场景。它以其高效、灵活和可扩展性著称,为开发者提供了便捷的方式来处理和执行复杂的逻辑表达式...
ik-analyzer是一款在Java环境下广泛使用的开源中文分词器,专为满足Java开发者在信息检索、文本分析等领域的需求而设计。这个资源是ik-analyzer的8.5.0版本,包含了一个名为"ik-analyzer-8.5.0-jar"的JAR文件,它是...
IK Expression是一个开源的(OpenSource),可扩展的(Extensible),基于java语言开发的一个超轻量级(Super lightweight)的公式化语言解析执行工具包。 IK ExpressionV2.0不依赖于任何第三方的java库。它做为一...
最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip最新版elasticsearch-analysis-ik-8.8.2.zip
ik-analyzer是一款开源的Java语言中文分词器,它最初是基于Lucene项目发展起来的,致力于提高中文文本处理的效率和准确性。7.6.0版本是ik-analyzer的一个重要里程碑,它包含了多项优化和改进,提高了对现代汉语词汇...
《乐视路由-IK-AP-S3-1.4.7-qca953x 编程器固件详解》 本文将深入探讨“乐视路由-IK-AP-S3-1.4.7-qca953x 编程器固件”的核心知识点,包括其功能、结构以及如何进行固件升级,同时还会涉及与之相关的breed系统和MAC...
ik-analyzer源自于开源社区,自2006年发布以来,经过多次迭代和优化,已经发展成为一款广泛使用的中文分词组件。7.4.0版本是其发展历程中的一个重要里程碑,它不仅继承了前代版本的优点,还引入了更多特性以提升性能...
最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip
《ik-analyzer-5.3.1.RELEASE:中文分词器详解》 ik-analyzer是Java语言开发的一款高效、灵活的中文分词工具,专为处理中文文本而设计。这款开源项目在IT行业中广受好评,特别是在搜索引擎、信息检索、自然语言处理...
最新版 elasticsearch-analysis-ik-7.8.0最新版 elasticsearch-analysis-ik-7.8.0最新版 elasticsearch-analysis-ik-7.8.0
5. elasticsearch-analysis-ik-7.6.2.jar:IK分析器的核心库,包含了分词器的实现代码。 6. plugin-security.policy:Elasticsearch插件的安全策略文件,定义了插件的权限和访问控制。 7. plugin-descriptor....
最新版elasticsearch-analysis-ik-8.8.1.zip最新版elasticsearch-analysis-ik-8.8.1.zip最新版elasticsearch-analysis-ik-8.8.1.zip最新版elasticsearch-analysis-ik-8.8.1.zip
最新版elasticsearch-analysis-ik-7.17.6.zip的发布,为用户提供更强大的中文分析能力,优化了性能,提升了用户体验。 一、Elasticsearch-analysis-ik插件介绍 Elasticsearch-analysis-ik是专为Elasticsearch设计...
5. elasticsearch-analysis-ik-7.10.2.jar:这个是核心插件文件,包含了IK分析器的所有代码和资源,安装时需要将此文件放入Elasticsearch的plugins目录下。 6. plugin-security.policy:这是插件的安全策略文件,...
首先,"elasticsearch-analysis-ik-7.3.2"是IK分词器的最新版本,发布于2019年9月15日。此版本针对Elasticsearch 7.3.2进行了优化和适配,旨在提供更高效、更准确的中文分词服务。IK分词器以其灵活的配置和强大的...
标签中的"ik-ana"是Ik Analyzer的简称,"solr 中文分词"强调了这个分词器在Solr中的应用场景。文件列表中的"ik-analyzer-7.5.0.jar"即是我们需要集成到Solr中的核心组件。 总之,Ik Analyzer 7.5.0是Solr处理中文...
《Elasticsearch分词器:elasticsearch-analysis-ik-7.16.2深度解析》 在信息爆炸的时代,搜索引擎的效能成为了数据检索的关键。Elasticsearch作为一款强大的开源搜索引擎,其灵活性和可扩展性备受青睐。而在中文...
各位Java码农们苦苦找寻的IKAnalyzer-3.2.8.jar,直接使用maven命令行安装到本地仓库即可。也可以上传到nexus;...-DgroupId=org.wltea.ik-analyzer -DartifactId=ik-analyzer -Dversion=3.2.8 -Dpackaging=jar
ik-analyzer分词器,支持solr5-5.x
在描述中提到的"ik-analyzer-solr7.zip"是一个专门为Apache Solr 7.x版本定制的IKAnalyzer分词器插件。Solr是Apache软件基金会的一个项目,它是一款强大的全文搜索服务器,提供了诸如索引、搜索、高亮显示、拼写检查...