ScriptTransformer
ScriptTransformer可能由java支持的JavaScript语言或者其他脚本语言写成的转换器.只支持Java 6以上版本.
例1:
<dataConfig>
<script><![CDATA[
function f1(row) {
row.put('message', 'Hello World!');
return row;
}
]]></script>
<document>
<entity name="e" pk="id" transformer="script:f1" query="select * from X">
....
</entity>
</document>
</dataConfig>
例2:
<dataConfig>
<script><![CDATA[
function CategoryPieces(row) {
var pieces = row.get('category').split('/');
var arr = new java.util.ArrayList();
for (var i=0; i<pieces.length; i++) {
arr.add(pieces[i]);
}
row.put('categorypieces', arr);
row.remove('category');
return row;
}
]]></script>
<document>
<entity name="e" pk="id" transformer="script:CategoryPieces" query="select * from X">
....
</entity>
</document>
</dataConfig>
例3:
<script><![CDATA[
id = 1;
function GenerateId(row) {
row.put('id', (id ++).toFixed());
return row;
}
function WipOffHtml(row) {
var file = row.get('file');
row.put('file',file.substr(0,file.indexOf('.')));
return row;
}
]]>
</script>
- 脚本标签放置在dataConfig节点里边, 默认情况下,该语言被认为是使用Javascript.如果想要使用其他语言,在script标签中指定属性language="MyLanguage".必须支持jdk1.6以上
- 可以写你想要使用的尽可能多的transformer 函数.每个函数都必须接收row变量,对应于Map<String, Object> .并且返回row结果集.
- 使用row.remove(keyname)删除条目.
- 使用var arr = new java.util.ArrayList()为单个字段添加多个条目,不能使用JavaScript数组.
- 文档为Java Map对象
- 文档为Java ArrayList对象
- 通过在实体中指定transformer="script:<function-name>",来使用函数生成条目.
- 在上面的data-config中,实体e返回的每一个row都会执行一个f1函数.
- 执行语法和java变压器一样,在抽象类Transformer中,transformRow(Map<String,Object> , Context context)中有两个参数,因为它是JavaScript的第二个参数,可以omittted,它仍然有效。
不当之处,敬请指正 ! 谢谢!
ScriptTransformer的更多相关文章
- 1.6.4 Uploading Structured Data Store Data with the Data Import Handler
1.使用DIH上传结构化数据 许多搜索应用索引结构化数据,如关系型数据库.DIH提供了一个这样的存储并索引结构化数据的机制.除了关系型数据库,solr可以索引来自HTTP的内容,基于数据源如RSS和A ...
- DIH处理包含回车符换行符html标签内容的文本
数据样例:2010-03-19 10:18:06130010543234203guqun09-12月-12liuyin18-6月 -14<P style="MARGIN-TOP: 0p ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[3]
转载:http://quweiprotoss.wap.blog.163.com/ Solr Cell是一个针对Tika的简单适配器,它由一个SAX ContentHandler组成,ContentHa ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[2]--DIH
转载:http://quweiprotoss.wap.blog.163.com/w2/ DIH需要在solrconfig.xml中注册,如下: <requestHandler name=&quo ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)
虽然本书中假设你要建索引的内容都是有着良好结构的,比如数据库表,XML文件,CSV,但在现实中我们要保存很混乱的数据,或是二进制文件,如PDF,Microsoft Office,甚至是图片和音乐文件. ...
随机推荐
- c++面试题总结(1)
1.int a=5,则 ++(a++)的值是() A.5 B. 6 C.7 D.逻辑错误 a++返回的是一个临时变量,这里是右值,不能再前面++了 2.下面 ...
- HDU 2034 人见人爱A-B 分类: ACM 2015-06-23 23:42 9人阅读 评论(0) 收藏
人见人爱A-B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- C++11初始化列表
[C++11之初始化列表] 在C++03中,在严格遵守POD的定义和限制条件的结构及类型上可以使用初始化列表(initializer list),构想是结构或是数组能够依据成员在该结构内定义的顺序通过 ...
- mysql创建用户两次授权
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' -> IDENTIFIED BY 'some_pass' ...
- 编译安装glibc
转帖地址下载glibcwget http://ftp.gnu.org/gnu/glibc/glibc-2.3.2.tar.gz 下载glibc-linuxthreadswget http://ftp. ...
- LightOJ 1112 Curious Robin Hood (单点更新+区间求和)
http://lightoj.com/volume_showproblem.php?problem=1112 题目大意: 1 i 将第i个数值输出,并将第i个值清0 2 i v ...
- find 命令概览
Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时 ...
- How Tomcat Works(十四)
我们已经知道,在tomcat中有四种类型的servlet容器,分别为Engine.Host.Context 和Wrapper,本文接下来对tomcat中Wrapper接口的标准实现进行说明. 对于每个 ...
- NSDate和NSString
+(NSDate*) convertDateFromString:(NSString*)uiDate { NSDateFormatter *formatter = [[NSDateFormatter ...
- SQL Server sql 操作
1.重命名表将表OLD重命名为NEW: EXEC sp_rename 'OLD','NEW' 2.重命名列将表table1中的列old重命名为new: EXEC sp_rename 'table1.o ...