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. 1.6.4 Uploading Structured Data Store Data with the Data Import Handler

    1.使用DIH上传结构化数据 许多搜索应用索引结构化数据,如关系型数据库.DIH提供了一个这样的存储并索引结构化数据的机制.除了关系型数据库,solr可以索引来自HTTP的内容,基于数据源如RSS和A ...

  2. DIH处理包含回车符换行符html标签内容的文本

    数据样例:2010-03-19 10:18:06130010543234203guqun09-12月-12liuyin18-6月 -14<P style="MARGIN-TOP: 0p ...

  3. 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[3]

    转载:http://quweiprotoss.wap.blog.163.com/ Solr Cell是一个针对Tika的简单适配器,它由一个SAX ContentHandler组成,ContentHa ...

  4. 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[2]--DIH

    转载:http://quweiprotoss.wap.blog.163.com/w2/ DIH需要在solrconfig.xml中注册,如下: <requestHandler name=&quo ...

  5. 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)

    虽然本书中假设你要建索引的内容都是有着良好结构的,比如数据库表,XML文件,CSV,但在现实中我们要保存很混乱的数据,或是二进制文件,如PDF,Microsoft Office,甚至是图片和音乐文件. ...

随机推荐

  1. Java日期格式化

    翻译人员: 铁锚 翻译时间: 2013年11月17日 原文链接:   Simple example to show how to use Date Formatting in Java 代码示例如下, ...

  2. 配置Redis主从复制

    [构建高性能数据库缓存之redis主从复制][http://database.51cto.com/art/201407/444555.htm] 一.什么是redis主从复制? 主从复制,当用户往Mas ...

  3. ActiveMQ讯息传送机制以及ACK机制详解

    [http://www.ylzx8.cn/ruanjiangongcheng/software-architecture-design/11922.html] AcitveMQ:消息存储和分发组件,涉 ...

  4. C# 递归算法与冒泡

    C# 递归算法求 1,1,2,3,5,8,13···static void Main(string[] args){ int[] cSum = new int[10];for (int i = 0; ...

  5. erlang启动参数

    出自: http://blog.sina.com.cn/s/blog_96b8a154010123cc.html

  6. CodeForces 173A Rock-Paper-Scissors 数学

    Rock-Paper-Scissors 题目连接: http://codeforces.com/problemset/problem/173/A Description Nikephoros and ...

  7. Codeforces Gym 100803D Space Golf 物理题

    Space Golf 题目连接: http://codeforces.com/gym/100803/attachments Description You surely have never hear ...

  8. HDU 4287 Intelligent IME hash

    Intelligent IME Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  9. Codeforces Round #311 (Div. 2) E. Ann and Half-Palindrome 字典树/半回文串

    E. Ann and Half-Palindrome Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...

  10. 【JavaScript】你知道吗?Web的26项基本概念和技术

    Web开发是比较费神的,需要掌握很多很多的东西,特别是从事前端开发的朋友,需要通十行才行.今天,本文向初学者介绍一些Web开发中的基本概念和用到的技术,从A到Z总共26项,每项对应一个概念或者技术. ...