1. 程式人生 > >solr資料定時更新

solr資料定時更新

solr定時增量更新需要再新增一個jar包。solr4、solr5、solr6由於solr-core-x.jar的原始碼的調整,不能使用同一個jar包。solr4由於版本過老就暫時不做介紹,solr5所需jar包下載原始碼下載solr6所需jar包下載原始碼下載。solr5與6設定定時增量更新步驟相同,只是所需的該jar包不同。

1、將 apache-solr-dataimportscheduler-1.0.jar 和solr自帶的 apache-solr-dataimporthandler-.jar, apache-solr-dataimporthandler-extras-.jar 放到solr的lib目錄下面 
2、修改solr中WEB-INF/web.xml, 在servlet節點前面增加: 

  1. <listener>
  2. <listener-class>
  3. org.apache.solr.handler.dataimport.scheduler.ApplicationListener
  4. </listener-class>
  5. </listener>

3、將apache-solr-dataimportscheduler-.jar 中 dataimport.properties 取出

      將dataimport.properties下載並該檔案並根據實際情況修改,然後放到 solr.home/conf (不是solr.home/core/conf) 目錄下面,該目錄是沒有的,需要新建 

4、重啟tomcat,向資料庫新增一條記錄。

注意:由於在conf下data-config.xml檔案中內容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <dataConfig>
  3. <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/zhsoftbank" user="root" password="root" batchSize="-1" />
  4. <span
    style="white-space:pre">
    </span><document>
  5. <span style="white-space:pre"> </span><entity name="news" pk="id" dataSource="source1"
  6. query="select * from news"
  7. deltaImportQuery="select * from news where id='${dih.delta.id}'"
  8. deltaQuery="select id from news where updateTime> '${dataimporter.last_index_time}'">
  9. <field column="id" name="id"/>
  10. <field column="title" name="title"/>
  11. <field column="synopsis" name="synopsis"/>
  12. <field column="updateTime" name="updateTime"/>
  13. </entity>
  14. </document>
  15. </dataConfig>
可以看出是根據updateTime時間來增量更新索引的,所以新資料的updateTime要大於apache-tomcat-8.0.9\webapps\solr\solrhome\myindex\conf目錄下dataimport.properties檔案中的last_index_time的時間值。