1、安裝虛擬機html
Solr 必須運行在Java1.6 或更高版本的Java 虛擬機中,運行標準Solr 服務只須要安裝JRE 便可,但若是須要擴展功能或編譯源碼則須要下載JDK 來完成。能夠經過下面的地址下載所需JDK 或JRE :
OpenJDK ( http://java.sun.com/j2se/downloads.html )
Sun (http://java.sun.com/j2se/downloads.html )
IBM (http://www.ibm.com/developerworks/java/jdk/ )
Oracle (http://www.oracle.com/technology/products/jrockit/index.html )
JDK的安裝步驟請參考相應的幫助文檔。 前端
2、下載Solr java
在下載solr以前,須要先肯定solr的版本, 目前最新版本是 4.10.1,可是在 4.8 之後須要編譯在1.7的版本。因此若是是JDK1.6環境,建議使用4.8以前的版本(例如4.7.2)。mysql
官網地址是:http://lucene.apache.org/solr/ linux
歸檔目錄是:http://archive.apache.org/dist/lucene/solr/web
若是咱們要下載最新的solr版本,那麼操做以下: sql
1.打開apache官網http://www.apache.org/; 數據庫
2.在首頁左下側Projects區域找到並進入Lucene項目; (地址是:http://lucene.apache.org/) apache
3.點擊右上側黃色大按鈕,下載solr:windows
4.打開的頁面提供一些下載源,咱們使用官方推薦的地址下載:
5.下載solr包;
若是是windows環境能夠直接下載zip格式包;若是是在linux環境,下載tgz格式包。
複製地址下載:
[root@note~]# wget http://apache.fayea.com/apache-mirror/lucene/java/4.10.1/lucene-4.10.1.tgz
解壓:
[root@note~]# tar -xvzf lucene-4.10.1.tgz
若是咱們須要下載歷史版本(例以下載4.7版本),那麼須要到歸檔目錄下載。
1.打開solr歸檔目錄地址http://archive.apache.org/dist/lucene/solr/
2.找到4.7.2版本的連接,點擊進入。
3.下載須要的solr包:
3、Solr下載包重要目錄及文件說明
(Solr下載包重要目錄及文件說明,來源於README.txt文件)
contrib:solr功能模塊須要的庫,根據須要引用
dist:發佈目錄
dist/solr-4.5.0.war:Solr web服務器,部署到tomcat或其餘servlet容器中。
dist/solr--XX.jar:solr結合其餘組件的中間包,至少須要包含核心包solr-core-XX.jar
(http://wiki.apache.org/solr/SolrPlugins)
docs:Solr 文檔及教程目錄
(入口訪問docs/index.html)
example:官方提供的Solr使用例子。
example-DIH(Data Import Handler),演示瞭如何從hsql數據庫導入數據到solr中;
example-schemaless,演示了無schema實例;
multicore,演示瞭如何使用多個core,能夠理解每一個core對應一個數據庫實體表,如檢索公司信息和產品信息,公司core和產品core分別使用本身的配置。固然也能夠是不一樣數據庫中的表,供不一樣的項目使用。
solr,演示了單core(這裏指collection1)的使用,咱們通常使用時會在這個基礎上定製;
solr/collection1/conf目錄下主要是兩個配置文件:
schema.xml 用於定義索引庫的字段、字段類型及分詞器等(核心文件)
solrconfig.xml 定義了這個core的配置信息,如使用lucene的版本,log輸出,緩存策略等。
3、經過start.jar啓動solr
主要用於在本機或測試服務器上搭建一個用於測試的solr。
安裝:直接將下載的solr解壓到任意目錄,例如: D:\solr-4.7.2
啓動:若是是window環境,雙擊D:\solr-4.7.2\example下的start.jar能夠啓動。可是這種方式solr是在後臺執行的 (不會彈出界面,只是在任務管理器能夠看到多了一個進程) ,這種方式並不方便調試,沒法判斷啓動中是否有錯誤。 推薦在命令行中啓動,輸出的LOG對查錯頗有幫助。
D:\solr-4.7.2\example>java -jar start.jar
啓動後 D:\solr-4.7.2\example\webapps下的solr.war 會解到D:\solr-4.7.2\example\solr-webapp\webapp中。
start.jar 使用的內置的Jetty服務器,他的入口是StartSolrJetty文件。 啓動以後默認端口是8983,若是想使用其餘端口能夠再啓動時候增長參數。
D:solr-4.7.2\example>java -Djetty.port=8080 -jar start.jar
或直接修改jetty的配置文件,D:\solr-4.5.1\example\etc\jetty.xml,將其中8983改爲但願的端口。
若是啓動時報異常:
FAILED SocketConnector@0.0.0.0:8983: java.net.BindException: Address already in use: JVM_Bind 就說明當前端口占用中。須要換一個端口。
org.apache.solr.common.SolrException: Index locked for write for core collection1 或 org.apache.lucene.store.LockObtainFailedException: Index locked for write for core collection1 有多是索引庫已經被一個solr佔用了,不能兩個端口同時啓動同一個core。
若是沒有報錯啓動成功後就能夠在瀏覽器中輸入地址: http://localhost:8983/solr/ 就能夠看到solr的服務主頁了。
3、Tomcat上安裝Solr
假設是Linux服務器。
1.打開tomcat目錄下的conf/server.xml,設置tomcat編碼,防止從solr中查詢時,參數爲中文因亂碼而查不出結果;
[root@note ~]# vi /opt/tomcat/conf/server.xml
在8080端口對應的Connector中加入URIEncoding="UTF-8",以下圖(必定注意大小寫):
2.在tomcat中部署solr服務器
這和在Tomcat中部署其餘項目同樣。 最簡單的方法是直接將solr.war考到tomcat下,同時改名爲solr.war
[root@note ~]# cp solr-4.7.2/dist/solr.war /opt/tomcat/webapps/solr.war
若是對Tomcat比較熟悉,也能夠將solr.war解壓到任意目錄,而後經過Tomcat Context配置的方式進行部署。
簡單介紹一下,經過Context配置有兩種經常使用方式。 一種是在tomcat/conf/server.xml,在<host></host>之間加入代碼:
<Context path="solr" docBase="tomcatApp/MySolrApp" debug="0" reloadable="true" crossContext="true"/>
(path是應用的上下文跟,docBase是應用所在目錄)
另外一種是在tomcat/conf/Catalina/localhost目錄增長一個XML文件,好比是MyProject,內容爲:
<?xml version='1.0' encoding='utf-8'?> <Context crossContext="true" docBase="tomcatApp/MyProject" path="" reloadable="true"> </Context>
(XML的文件名就是應用的上下文跟)
3.整合索引庫
solr應用有兩個solr文件,一個是example/webapps/solr.war,這個文件是Solr的應用服務。(能夠理解成就是一個JAVA-WEB應用),另一個是solr-4.7.2/example/solr,這個是solr-core 目錄(索引庫目錄),這個目錄用來放置索引庫。
每一個索引庫都包含一個config目錄,這個目錄是索庫的配置。
Solr服務默認會到JAVA運行上下文目錄(tomcat/bin)中查找這個索引倉庫目錄。
咱們能夠將solr-4.7.2\example下的solr拷貝至tomcat的bin目錄下(tomcat/bin/solr)。這樣當Solr服務啓動的時候就會自動加載相關的配置。 可是這種方法並不推薦,由於solr創建的索引文件也會放到索引庫中(索引庫data目錄)索引庫中會包含了索引文件,索引文件佔用的空間會愈來愈多,因此建議將solr索引庫單獨存放。
這個目錄能夠經過該Solr服務的web.xml進行配置,打開web.xml
[root@note ~]# vi /opt/tomcat/webapps/solr/WEB-INF/web.xml
能夠看到其中有這樣一段配置
<!-- <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/put/your/solr/home/here</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> -->
將env-entry節點的註釋去掉,修改env-entry-value值
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/opt/my_solr_core</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
/opt/my_solr_core是solr-core的目錄 (記得將solr-core文件家的內容拷貝到my_solr_core)
4.爲Solr服務添加必要的jar包
solr的war包中不包含任何日誌的jar包,因此須要本身手動添加; 打開solr.war\WEB-INF\lib目錄,添加如下jar包
jcl-over-slf4j-1.6.6.jar
jul-to-slf4j-1.6.6.jar
log4j-1.2.16.jar
slf4j-api-1.6.6.jar
lf4j-log4j12-1.6.6.jar
(這些是日誌包,在solr-4.10.1\example\lib\ext目錄下)
[root@note ~]# cp solr-4.7.2/example/lib/ext/* /opt/tomcat/webapps/solr/WEB-INF/lib/
log4j須要一個log4j.properties配置文件,在solr-4.7.2/example/resources/目錄有一個演示用的log4j.properties配置文件中。
咱們能夠將這個配置文件拷貝到應用中,後續再根據須要修改;
[root@note ~]# mkdir /opt/tomcat/webapps/solr/WEB-INF/classes/ [root@note ~]# cp solr-4.7.2/example/resources/log4j.properties /opt/tomcat/webapps/solr/WEB-INF/classes/
須要注意的是log4j.properties配置文件有一段配置:
log4j.appender.file.File=${solr.log}/solr.log
solr.log爲tomcat啓動時指定的變量,若是沒指定,日誌文件可能會寫到其餘目錄下。建議改爲絕對路徑,這樣更方便一些。
若是不想輸出文件日誌,那麼能夠將 log4j.rootLogger=INFO, file, CONSOLE 改成 log4j.rootLogger=INFO, CONSOLE
(對於log4j相關的配置,能夠查閱log4j相關文檔,這裏不作具體的介紹)
若是須要DIH服務,還須要添加DIH相關的包和jdbc相關包。
solr-dataimporthandler-4.10.1.jar
solr-dataimporthandler-extras-4.10.1.jar
(這兩個包在 solr-4.10.1\dist目錄)
mysql-connector-java-5.1.22.jar
(mysql數據庫的驅動包,若是是其餘數據庫,須要添加對應的jdbc 包)
重啓tomcat,訪問地址http://你的服務器ip或域名/solr/ 若是能夠看到以下界面,證實配置成功了!
注:部署以後須要確認索引庫中的路徑路徑配置屬否正確。 solr-4.7.2/example/solr/collection1/conf/solrconfig.xml
這些路徑須要修改,不然可能報找不到某些類的異常,如: Can’t find (or read) directory to add to classloader 或者 java.lang.ClassNotFoundException: solr.clustering.ClusteringComponent
這個路徑若是是相對路徑,那麼是相對於索引庫的路徑 (collection1的路徑)
4、Solr web服務器管理界面說明
Solr web應用自帶了管理界面,能夠方便的查看系統狀態,solr設置,分詞檢驗,索引查詢,增減核心(core)。
這裏列舉一些經常使用的比較重要的內容。
Dashboard(儀表盤) 訪問主頁,http://你的域名或ip/solr/,默認顯示此頁內容,包含solr版本,包含系統內存和jvm內存的使用狀況,jvm參數等
Logging(日誌) 能夠用來查看solr運行是否有警告或者異常,以便及時處理
Core Admin(索引庫管理) 這個界面很重要,這使多核的配置,索引庫的優化等,變得很是簡單; 主要功能包括:Add Core(添加核心,即索引庫),Unload(卸載核心),Rename(重命名核心),Optimize(優化索引庫)。
Java Properties(java屬性) java及tomcat的一些屬性
Core Selector(核心選擇器,這裏以collection1爲例)
1.Overview(概覽):包含基本統計如當前文檔數;和實例信息如當前核心的配置目錄;
2. Analysis(分析):檢驗分詞效果,如圖,分詞後「開發」將被高亮(注意FieldType須要選定爲與被分析內容類型一致,如這裏的title配置了中文分詞)
3.Config(配置):當前核心的配置,即solrconfig.xml的內容
4.Query(查詢):這是一個查詢界面,用的比較多,用來查詢索引的文檔,包含是否存在,排序是否正確等。 5.Schema(當前索引庫定義),即即schema.xml的內容
5、安全問題
Solr管理後臺功能十分強大,可是並無集成安全認證機制,若是在生產環境,管理後臺地址能夠公開訪問的話,不但core的結構會暴漏出來,索引庫甚至能夠被修改或刪除。 由於此界面涉及到位solr增減核心等管理操做,在實際產品上運行時,儘可能設置禁用在公網上(經過ip或者域名)的訪問,須要使用時再臨時打開。