首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Solr 4.10.4 環境搭建與 MySQL 全量數據導入完整教程

     編輯:Java 綜合教學

版本選型說明

  • Solr:4.10.4(避開 5.x 大版本變動及中文分詞器兼容性問題)
  • JDK:1.7+(4.10 需 1.7 以上,1.6 會報錯)
  • Tomcat:7.0.63(6/7/8 均可)
  • MySQL:5.5+

部署步驟

  1. 下載 solr-4.10.4.tgz 解壓
  2. 複製 example/webapps/solr.war 到 Tomcat webapps 目錄
  3. 啟動 Tomcat 讓其自動解壓 WAR,隨後停止 Tomcat 並刪除 solr.war(防止重複解壓)
  4. 創建 Solr Home 目錄(如 D:/data/solr),複製 example/solr 所有內容至此
  5. 修改 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>
  6. 複製 example/lib/ext 下所有 JAR 到 webapps/solr/WEB-INF/lib
  7. 在 webapps/solr/WEB-INF 下創建 classes 目錄,複製 example/resources/log4j.properties 至此
  8. 啟動 Tomcat,訪問 https://localhost:8080/solr 驗證

全量數據導入配置

1. 修改 solrconfig.xml

在 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>

2. 創建 data-config.xml

<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:全量導入 SQL
  • deltaQuery:增量導入標識查詢(獲取變更 ID)
  • deltaImportQuery:增量導入詳情查詢
  • pk:主鍵字段,必須與 schema.xml uniqueKey 一致

3. 配置 schema.xml

<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 節省空間。

4. 修改 elevate.xml

註釋掉示例 <doc> 節點,避免類型不匹配報錯(主鍵為 int 但示例為 string)。

5. 添加必要 JAR 包

複製至 webapps/solr/WEB-INF/lib:

  • MySQL 驅動:mysql-connector-java-5.1.21.jar
  • Solr DIH 核心:solr-dataimporthandler-4.10.4.jar
  • Solr DIH 擴展:solr-dataimporthandler-extras-4.10.4.jar

執行全量導入

  1. 訪問 Solr Admin UI:https://localhost:8080/solr/#/collection1/dataimport
  2. 點擊 Execute,選擇 Full Import,提交
  3. 點擊 Refresh Status 監控進度,直到 Status: Idle 且 Total Requests: 1, Total Rows: N
  4. 切換到 Query 頁面,點擊 Execute Query 驗證數據(numFound 應等於數據庫行數)

常見問題排查

  • ClassNotFoundException:檢查 JAR 包是否正確放入 lib 目錄
  • JDBC 連接失敗:驗證 data-config.xml 數據庫配置、防火牆、MySQL 遠程訪問權限
  • Schema 類型不匹配:確保 uniqueKey、pk、field type 與數據庫字段類型對應
  • 中文亂碼:JDBC URL 添加 useUnicode=true&characterEncoding=UTF-8,Solr schema 使用 string 或 text_general 類型

下一步規劃

後續將介紹:增量導入配置、定時任務調度(Quartz/Spring Task)、中文分詞器(IK Analyzer)整合、SolrCloud 集群部署。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved