solr学习之(五)_solr4.2.0中从数据库中导入数据到索引

2019-03-27 00:22|来源: 网路

        公司绝大部分的数据是存储在数据库中。假如有一天数据库已经很大了,公司决定将数据导入到索引中,以改善数据检索的效果,该怎么办呢?

      Solr已经为我们准备好了这样的工具,那就是Data Import Handler。学习了这几天的solr,感觉solr的核心就是它的两个配置文件:schema.xmlsolrconfig.xml

   还是需要提前说明一下,本文的操作都是:win7+tomcat6.0+solr 4.2.0 +mysql5.5

   第一步:建立数据库表,并插入测试数据。

     test数据库中建立一张users表,表的结构如下:

 

往数据库表中插入一些数据:

 

 

第二步:准备相关的jar包。

       由于在2013-4-18_solr学习之(三)_访问solr4.2browse页面中我已经把相关的jar包导入了,这里只需要把mysql-connector-java- 5.1.13 -bin.jar包复制到

D:\xh_solr\tomcat-solr\solr\bin\contrib\dataimporthandler\lib文件夹下面。然后在solrconfig.xml中指明该jar包的位置即可。在solrconfig.xml中的相关配置如下:

       <lib dir="D:/xh_solr/tomcat-solr/solr/bin/dist/" regex="solr-dataimporthandler-\d.*\.jar" /> 

       <lib dir="D:/xh_solr/tomcat-solr/solr/bin/contrib/dataimporthandler/lib/" regex=".*\.jar" />

第三步:配置相应的requestHandler

       依然是在solrconfig.xml中加入如下的配置:

         
         
 
   
  1.        <!-- the dataimport requestHandler --> 
  2.        <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport. 
  3. DataImportHandler"> 
  4.                <lst name="defaults"> 
  5.               <str name="config">db-data-config.xml</str> 
  6.              </lst> 
  7.        </requestHandler> 

第四步:配置数据库映射文件,也就是第三步中的:db-data-config.xml文件。

       在与solrconfig.xml相同的位置,也就是D:\xh_solr\tomcat-solr\solr\collection1\conf目录下,创建db-data-config.xml文件,然后加入如下的配置:

         
         
 
   
  1. <dataConfig> 
  2.  <dataSource driver="com.mysql.jdbc.Driver"  
  3.  url="jdbc:mysql://localhost:3306/test" user="root" password="admin"/> 
  4.  <document> 
  5.   <entity name="user" query="SELECT user_id, user_name from  
  6.   users"> 
  7.           <field column="user_id" name="id" /> 
  8.           <field column="user_name" name="name" /> 
  9.   </entity> 
  10.  </document> 
  11. </dataConfig> 

第五步:导入数据:启动tomcat,打开浏览器,并输入:

http://localhost:8983/solr/dataimport?command=full-import

如果没有问题的话,返回内容如下:

         
         
 
   
  1. <response> 
  2. <lst name="responseHeader"> 
  3. <int name="status">0</int> 
  4. <int name="QTime">53</int> 
  5. </lst> 
  6. <lst name="initArgs"> 
  7. <lst name="defaults"> 
  8. <str name="config">db-data-config.xml</str> 
  9. </lst> 
  10. </lst> 
  11. <str name="command">full-import</str> 
  12. <str name="status">idle</str> 
  13. <str name="importResponse"/> 
  14. <lst name="statusMessages"> 
  15. <str name="Total Requests made to DataSource">1</str> 
  16. <str name="Total Rows Fetched">5</str> 
  17. <str name="Total Documents Skipped">0</str> 
  18. <str name="Full Dump Started">2013-04-21 19:42:44</str> 
  19. <str name=""> 
  20. Indexing completed. Added/Updated: 5 documents. Deleted 0 documents. 
  21. </str> 
  22. <str name="Committed">2013-04-21 19:42:45</str> 
  23. <str name="Total Documents Processed">5</str> 
  24. <str name="Time taken">0:0:1.420</str> 
  25. </lst> 
  26. <str name="WARNING"> 
  27. This response format is experimental. It is likely to change in the future. 
  28. </str> 
  29. </response> 

第六步:验证我们的索引,打开浏览器,输入:http://localhost:8983/solr/#/collection1/query或者是http://localhost:8983/solr/select/?q=text:jim

如果没有错误的话,输入http://localhost:8983/solr/select/?q=text:jim返回的内容如下:

         
         
 
   
  1. <response> 
  2. <lst name="responseHeader"> 
  3. <int name="status">0</int> 
  4. <int name="QTime">1</int> 
  5. <lst name="params"> 
  6. <str name="q">text:jim</str> 
  7. </lst> 
  8. </lst> 
  9. <result name="response" numFound="1" start="0"> 
  10. <doc> 
  11. <str name="name">Jim</str> 
  12. <str name="id">5</str> 
  13. <long name="_version_">1432925833619570689</long> 
  14. </doc> 
  15. </result> 
  16. </response> 

如果我们比对数据库,发现在数据库中确定有这样一条数据:

 

本文出自 “每天进步一点点” 博客,请务必保留此出处http://sbp810050504.blog.51cto.com/2799422/1182942


转自:http://sbp810050504.blog.51cto.com/2799422/1182942

相关问答

更多