solr-4.10.4.tgz 解壓example/webapps/solr.war 到 Tomcat webapps 目錄solr.war(防止重複解壓)D:/data/solr),複製 example/solr 所有內容至此webapps/solr/WEB-INF/web.xml,取消註釋並設置 solr/home 環境變量:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:/data/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
example/lib/ext 下所有 JAR 到 webapps/solr/WEB-INF/libwebapps/solr/WEB-INF 下創建 classes 目錄,複製 example/resources/log4j.properties 至此https://localhost:8080/solr 驗證在 collection1/conf/solrconfig.xml 中添加 DataImportHandler 配置:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=UTF-8"
user="root" password="root"/>
<document>
<entity name="tuser" pk="id"
query="select id, username, email, reg_time from tuser"
deltaQuery="select id from tuser where reg_time > '${dataimporter.last_index_time}'"
deltaImportQuery="select id, username, email, reg_time from tuser where id='${dataimporter.delta.id}'"
>
<field column="id" name="id"/>
<field column="username" name="username"/>
<field column="email" name="email"/>
<field column="reg_time" name="reg_time"/>
</entity>
</document>
</dataConfig>
關鍵屬性:
query:全量導入 SQLdeltaQuery:增量導入標識查詢(獲取變更 ID)deltaImportQuery:增量導入詳情查詢pk:主鍵字段,必須與 schema.xml uniqueKey 一致<fields>
<field name="id" type="int" indexed="true" stored="true" required="true"/>
<field name="username" type="string" indexed="true" stored="true"/>
<field name="email" type="string" indexed="true" stored="true"/>
<field name="reg_time" type="tdate" indexed="true" stored="true"/>
</fields>
<uniqueKey>id</uniqueKey>
說明:indexed=true 建索引,stored=true 存儲原值供返回。大文本字段可設 stored=false 節省空間。
註釋掉示例 <doc> 節點,避免類型不匹配報錯(主鍵為 int 但示例為 string)。
複製至 webapps/solr/WEB-INF/lib:
mysql-connector-java-5.1.21.jarsolr-dataimporthandler-4.10.4.jarsolr-dataimporthandler-extras-4.10.4.jarhttps://localhost:8080/solr/#/collection1/dataimportStatus: Idle 且 Total Requests: 1, Total Rows: NnumFound 應等於數據庫行數)useUnicode=true&characterEncoding=UTF-8,Solr schema 使用 string 或 text_general 類型後續將介紹:增量導入配置、定時任務調度(Quartz/Spring Task)、中文分詞器(IK Analyzer)整合、SolrCloud 集群部署。