solr4.9--》dataimport导入数据类型转换问题

本说明以solr4.9为例进行:

在用dataimport进行数据库(oracle)索引导入的时候发现数据库的date类型和clob类型始终无法生成索引,反复测试得出如下解决办法。

1:date类型索引解决办法

将data类型用to_char进行转换,然后索引用type类型用string类型接收即可。后台查询索引的时候,直接再把string类型的date转换为date即可。

例如:select id,name,sex,blog as blog_article,type,to_char(create_time,'yyyy-mm-dd hh24:mi:ss') create_time,solr_time,recycle_flag,'demo_flag' as searchFlag from demo

这里的create_time即为oracle表的date类型。

schema.xml中直接用string类型接收。如下:

<field name="create_time" type="string" indexed="true" stored="true"/>


2:clob类型索引解决办法

在entity上添加transformer="ClobTransformer"  然后在field上添加 clob="true" 具体如下:

<entity name="demo" transformer="ClobTransformer" pk="ID" dataSource="projectV2" 
query="select id,name,sex,blog as blog_article,type,to_char(create_time,'yyyy-mm-dd hh24:mi:ss') create_time,solr_time,recycle_flag,'demo_flag' as searchFlag from demo"
deletedPkQuery="select id from demo where recycle_flag=1"
deltaQuery="select id from demo where to_char(solr_time,'yyyy-mm-dd hh24\:mi\:ss') > '${dataimporter.last_index_time}'"
deltaImportQuery="select id,name,sex,blog as blog_article,type,to_char(create_time,'yyyy-mm-dd hh24:mi:ss') create_time,solr_time,recycle_flag,'demo_flag' as searchFlag from demo where id='${dataimporter.delta.ID}'">
 <field column="id" name="id"/> 
 <field column="name" name="name" />
 <field column="sex" name="sex" />
 <field column="BLOG_ARTICLE" name="blog_article"  clob="true" />
 <field column="type" name="type" />
 <field column="create_time" name="create_time"/>
 <field column="solr_time" name="solr_time"/>
 <field column="recycle_flag" name="recycle_flag" />
  </entity>

clob类型索引的时候特别需要提醒注意的是如下内容,这里以我测试的blog_article为例说明:

BLOG_ARTICLE的数据库字段为BLOG,但是如果你用BLOG去进行索引clob字段的时候发现无法索引,会变成oracle.sql.CLOB@1042c25。所以得出如下结论:

数据库中Clob字段名不能与schema.xml中对应的字段同名。否则,Colb字段导入的结果为<str name="abc">oracle.sql.CLOB@1042c25</str>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值