solr中的dih tips

        最近在用dih的时候遇到一个莫名其妙的问题。首先前提是这样的,为了方便,我把数据库里的属性全都以相同的名字在solr的schema中定义了相应的fieldname,然后因为有的数据字段后面会有来源信息,然后我就需要使用一个叫做TemplateTransformer的transformer来进行存储格式的变化,增加source字段在该值的后面。在数据库的构建过程中,数据库的构建人员构建了一个基于basic表的雪花状的数据库格式,然后多个表之间按道理来说不应该存在相同名字的属性,然而这样的事情就出现了,而且存的内容也相似。于是我就用其中一张表中的该属性的值来构建索引,忽略另一张表中的该属性的值。

        问题就出现在虽然我只用了该属性的一个值来构建索引,但是最终建成的索引还是对于同一个basic_id还是包含了两个同样属性名的值,这就很让人不解,我原以为dih中会仅仅根据<entity>下的<field>来构建索引,没想到这个想法是不对的,因为dih为了方便,如果你的数据库里的属性名和schema中定义的fieldname相同的话,他就会自动帮你把这个数据库中属性名对应的值建立成索引,fieldname就是这个属性名。所以以上才会出现两次同样的属性这样一种问题。

        下面是DataImportHandler的官方给出的例子:


        这边例子中可以看见name为item的entity里的field的name和column是一样的,只有最后一个field的field和column是不一样的,所以这里可以简写成如下形式:


        至此在被这个奇怪的现象影响了一个下午之后总算是知道这个现象产生的原因了,主要问题还是在于自己没有认真去阅读DataImportHandler中的文档,仅仅按照样例就这样跑了起来。DataImportHandler的官方url    https://wiki.apache.org/solr/DataImportHandler#Configuring_JdbcDataSource

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值