Apache Solr 是基於 Lucene 的企業級搜尋伺服器,提供全文檢索、面向搜尋、高亮顯示、多種輸出格式(XML/JSON)。本文記錄在 Windows 7 64 位元環境部署 Solr 4.9.0 + Tomcat 8.0.9 + JDK 1.8 的完整流程,核心難點在於 solr.home 目錄配置與 collection1 實例部署。
| 元件 | 版本/路徑 |
|---|---|
| 作業系統 | Windows 7 64-bit |
| JDK | 1.8.0_05 64-bit(JAVA_HOME 已設定) |
| Tomcat | apache-tomcat-8.0.9-windows-x64(解壓至 D:\Tomcat) |
| Solr | solr-4.9.0(解壓至 D:\Solr\solr-4.9.0) |
注意:Solr 4.9 需 JDK 1.7+,本教學使用 JDK 1.8 滿足需求。
D:\Solr\solr-4.9.0\dist\solr-4.9.0.war 複製至 D:\Tomcat\webapps\,重命名為 solr.war。startup.bat),Tomcat 會自動解壓 WAR 產生 webapps\solr\ 目錄。啟動過程會報錯(預期),僅為觸發解壓。shutdown.bat)。Solr 需指向包含 conf/solrconfig.xml 與 conf/schema.xml 的目錄。官方文件說明:solr.solr.home 應指向包含 collection1(或其他 core)的父目錄。
兩種配置方式(擇一):
D:\Tomcat\webapps\solr\WEB-INF\web.xml。<env-entry-name>solr/home</env-entry-name>,將 <env-entry-value> 設為 D:/Solr/solr-4.9.0/example(使用正斜線)。D:\Tomcat\conf\Catalina\localhost\ 建立 solr.xml:<Context docBase="D:/Tomcat/webapps/solr" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="D:/Solr/solr-4.9.0/example" override="false"/>
</Context>
override="false" 確保 Tomcat 重啟不重新解壓 WAR 覆蓋配置。
D:\Solr\solr-4.9.0\example\solr\collection1 整個資料夾複製至 D:\Solr\solr-4.9.0\example\(即 solr.home 指向的目錄)下。D:\Solr\solr-4.9.0\example\collection1\conf\solrconfig.xml 與 schema.xml 存在。D:\Solr\solr-4.9.0\example\lib\ext\ 下所有 JAR 複製至 D:\Tomcat\lib\(全域類別路徑)或 D:\Tomcat\webapps\solr\WEB-INF\lib\(Webapp 專用)。ClassNotFoundException,從 D:\Solr\solr-4.9.0\dist\ 尋找對應 JAR 補齊。D:\Tomcat\conf\server.xml。<Connector port="8080" ... 行,加入 URIEncoding="UTF-8":<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
startup.bat)。https://localhost:8080/solr/admin/,出現 Solr 管理介面即成功。
collection1 的父目錄,而非 collection1 本身或 conf 目錄。/,Windows 反斜線會導致解析失敗。LinkageError,建議統一放入 Tomcat lib。server.xml Connector port。步驟大同小異,主要差別:
/opt 或 /usr/local。systemd 或 init.d 管理。JAVA_OPTS 設定 solr.solr.home(官方推薦方式)。solr.home。