日期:2014-05-16 浏览次数:20531 次
http://blog.csdn.net/xzknet/article/details/6710753
?
以下资料整理自网络,觉的有必要合并在一起,这样方便查看。主要分为两部分,第一部分是对《db-data-config.xml》的配置内容的讲 解(属于高级内容),第二部分是DataImportHandler(属于基础),第三部分是对db-data-config.xml的进阶(这个国内可 能还没有人写过啊,我在google、baidu上都没有搜索到,最后可是拔代码,看solr的英文文档找的)
query是获取全部数据的SQL
deltaImportQuery是获取增量数据时使用的SQL
deltaQuery是获取pk的SQL
parentDeltaQuery是获取父Entity的pk的SQL
Full Import工作原理
:
执行本Entity的Query,获取所有数据;
针对每个行数据Row,获取pk,组装子Entity的Query;
执行子Entity的Query,获取子Entity的数据。
Delta Import工作原理
:
查找子Entity,直到没有为止;
执行Entity的deltaQuery,获取变化数据的pk;
合并子Entity parentDeltaQuery得到的pk;
针对每一个pk Row,组装父Entity的parentDeltaQuery;
执行parentDeltaQuery,获取父Entity的pk;
执行deltaImportQuery,获取自身的数据;
如果没有deltaImportQuery,就组装Query
限制
:
子Entity的query必须引用父Entity的pk
子Entity的parentDeltaQuery必须引用自己的pk
子Entity的parentDeltaQuery必须返回父Entity的pk
deltaImportQuery引用的必须是自己的pk
关于DataImportHandler的具体使用方法,详见下文,如果你英文超级好,那看这个链接吧:http://wiki.apache.org/solr/DataImportHandler
??大多数的应用程序将数据存储在关系数据库、xml文件中。对这样的数据进行搜索是很常见的应用。所谓的DataImportHandler提供一种可配置的方式向solr导入数据,可以一次全部导入,也可以增量导入。
????? 概览
???????? 目 标
????????? 设计思路
????????? ? 这个Handler首先要在solrconfig.xml文件中配置下,如下所示。
??????????????????<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
??? <lst name="defaults">
????? <str name="config">/home/username/data-config.xml</str>?????
??? </lst>
? </requestHandler>
从它的名字上,我们或许也可以猜到, DataImportHandler正是requestHandler的实现。我们一共需要在两个地方配置文件中进行一些配置。
??????跟关系数据库一起使用
????????????? 下面几个步骤是必要的.
?????????? 配置数据源