码迷,mamicode.com
首页 > 其他好文 > 详细

solr全量索引

时间:2017-04-23 21:11:01      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:man   handler   datetime   size   toc   操作   arc   offset   limit   

Solr DIH(Data Import Handler)组件的实现类为org.apache.solr.handler.dataimport.DataImportHandler,在Solr的solrconfig.xml中配置两个handler,配置分别说明如下:

solrconfig.xml配置如下:

 

[java] view plain copy
 
 技术分享技术分享
  1. <requestHandler name="/dataimport"  
  2.      class="org.apache.solr.handler.dataimport.DataImportHandler">  
  3.      <lst name="defaults">  
  4.           <str name="config">data-config.xml</str>  
  5.      </lst>  
  6. </requestHandler>  

 

 

data-config.xml

 

[java] view plain copy
 
  1.  <dataConfig>  
  2.     <dataSource name="jdbc" driver="com.mysql.jdbc.Driver"  
  3.         url="jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull"  
  4.         user="root" password="shyh"/>  
  5.     <document name="st_data">  
  6.         <entity name="solrtext" pk="id"  
  7.                 query="select * from solrtext limit ${dataimporter.request.length} offset ${dataimporter.request.offset}"  
  8.                 transformer="RegexTransformer">  
  9.             <field column="id" name="id" />  
  10.             <field column="url" name="url" />  
  11.             <field column="title" name="title" />  
  12.             <field column="author" name="author" />  
  13.         <field column="addon" name="addon" />  
  14.         <field column="path" name="path" />  
  15.         </entity>  
  16.     </document>  
  17. </dataConfig>  

 

说明:column为数据库字段名,name为schema.xml中对应的字段名

 

schmea.xml增加域

 

[java] view plain copy
 
  1. <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />   
  2. <field name="url" type="text_general" indexed="true" stored="true" />  
  3. <field name="title" type="text_general" indexed="true" stored="true"/>  
  4. <field name="author" type="text_general" indexed="true" stored="true"/>  
  5. <field name="addon" type="string" indexed="true" stored="true"/>  
  6.  <field name="path" type="string" indexed="false" stored="true"/>  

 

 

 

上面主要是通过内置变量 “${dataimporter.request.length}”和 “${dataimporter.request.offset}”来设置一个批次索引的数据表记录数,请求的URL示例如下:

http://localhost:8080/solr/dataimport?command=full-import&commit=true&clean=false&offset=1000000&length=100000

也可以直接进入solr的Dataimport页面导入:技术分享

上面表示,对数据表中id范围为[10000000, 1100000]的记录进行索引,因为数据表可能达到千万记录数,而且线上有业务在操作数据库,所以要选择分批进行索引。

如果数据量小可以直接全量导入不需分批:

 

[java] view plain copy
 
 技术分享技术分享
  1. <pre name="code" class="java"> <dataConfig>  
  2.     <dataSource name="jdbc" driver="com.mysql.jdbc.Driver"  
  3.         url="jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull"  
  4.         user="root" password="shyh"/>  
  5.     <document name="st_data">  
  6.         <entity name="solrtext" pk="id"  
  7.                 query="select * from solrtext"  
  8.                 transformer="RegexTransformer">  
  9.             <field column="id" name="id" />  
  10.             <field column="url" name="url" />  
  11.             <field column="title" name="title" />  
  12.             <field column="author" name="author" />  
  13.         <field column="addon" name="addon" />  
  14.         <field column="path" name="path" />  
  15.         </entity>  
  16.     </document>  
  17. </dataConfig>  





注:执行导入操作时需要在webapps的solr项目的lib目录中加入数据库的驱动包以及solr-dataimporthandler-4.5.1.jar和solr-dataimporthandler-extras-4.5.1.jar这两个jar包(后两个jar包位于solr的解压包的dist目录)

solr全量索引

标签:man   handler   datetime   size   toc   操作   arc   offset   limit   

原文地址:http://www.cnblogs.com/hzzhero/p/6753948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!