1. 程式人生 > >Solr----1、solr7.2.0+jdk1.8+tomcat8部署解析

Solr----1、solr7.2.0+jdk1.8+tomcat8部署解析

近期在專案中要做一個站類搜尋,我自然而然就想到了solr,solr的版本在不斷的更新,功能也越全,所以我決定使用最新版的7.2.0,那麼為什麼非得用solr裡?

1. 什麼是solr

Solr 是Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋服務。Solr可以獨立執行在Jetty、Tomcat等這些Servlet容器中。

Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件,並對索引、搜尋效能進行了優化。

使用Solr 進行建立索引和搜尋索引的實現方法很簡單,如下:

 建立索引:客戶端(可以是瀏覽器可以是Java程式)用POST 方法向 Solr 伺服器傳送一個描述Field 及其內容的 XML 文件,Solr伺服器根據xml文件新增、刪除、更新索引。

 搜尋索引:客戶端(可以是瀏覽器可以是Java程式)用GET方法向 Solr 伺服器傳送請求,然後對Solr伺服器返回Xml、json等格式的查詢結果進行解析,組織頁面佈局。Solr不提供構建頁面UI的功能。Solr提供了一個管理介面,通過管理介面可以查詢Solr的配置和執行情況。

Solr是一個可以獨立執行的搜尋伺服器,使用solr進行全文檢索服務的話,只需要通過http請求訪問該伺服器即可。

2. Solr和Lucene的區別

是一個開放原始碼的全文檢索引擎工具包,它不是一個完整的全文檢索應用。Lucene僅提供了完整的查詢引擎和索引引擎,目的是為軟體開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者以Lucene為基礎構建全文檢索應用。

 Solr的目標是打造一款企業級的搜尋引擎系統,它是基於Lucene一個搜尋引擎服務,可以獨立執行,通過Solr可以非常快速的構建企業的搜尋引擎,通過Solr也可以高效的完成站內搜尋功能。



3. Solr安裝配置

Solr和lucene的版本是同步更新的:solr-7.2.0.zip

Linux下需要solr-7.2.0.tgz,windows下需要solr-7.2.0.zip。

環境要求:

Solr:7.2.0

jdk環境:1.8(不能使用jdk1.8以下)

伺服器:Tomcat 8

解壓solr-7.2.0.zip,目錄如下:


在Tomcat8檔案加下新建solr_h


在solr_h資料夾下新建solrhome


將solr-7.2.0\server\solr下檔案全部複製到solrhome資料夾中 在solrhome資料夾中新建一個solr_core資料夾,將Tomcat8\solr_h\solrhome\configsets\_default\中conf檔案複製到solr_core資料夾下。

SolrHome和SolrCore

Solrhome是solr服務執行的主目錄,一個solrhome目錄裡面包含多個solrcore目錄,一個solrcore目錄裡面了一個solr例項執行時所需要的配置檔案和資料檔案。每一個solrcore都可以單獨對外提供搜尋和索引服務。多個solrcore之間沒有關係。

Tomcat8\webapps下新建solr資料夾,將solr-7.2.0\server\solr-webapp\webapp下檔案全部複製Tomcat8\webapps\solr到資料夾中

solr-7.2.0的server/solr-webapp/lib/ext下的所有jar包複製到上一步solr/WEB-INF/lib下;

solr-7.2.0的server/solr-webapp/lib下的metrics-*和gmetric4j-1.0.7.jar複製到上一步的lib目錄下;

solr-7.2.0的server/resources目錄下的log4j.properties檔案複製到WEB-INF/classes目錄下,預設沒有classes目錄,自己建立;

(可選)在tomcat配置solr日誌存放目錄,在tomcat安裝目錄下,開啟tomcat8\bin目錄,找到catalina.bat檔案,用文字編輯器開啟該檔案,找到:gotJsseOpts這句所在的位置,在set"JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"這句後面加上以下兩句:

rem add solr log path

set "JAVA_OPTS=%JAVA_OPTS%-Dsolr.log.dir=../logs/"(注:等號後面的路徑可根據實際情況自己配置)。


需要修改的地方:Tomcat8\webapps\solr\WEB-INF\web.xml,在這個xml中放開此註釋,修改env-entry-value的路徑為solrhome所在的路徑


並在這個web.xml的最後註釋此程式碼

<!--  <security-constraint>
 <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>
  </security-constraint> -->

注意:如果你的tomcat中還要執行別的服務,還要修改tomcat8\conf\server.xml,如果就只有一個solr,直接啟動就可以訪問


<Context path="/solr/" docBase="E:\Tomcat8\webapps\solr" reloadable="false" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="E:\Tomcat8\solr_h\solrhome" override="true"/>
  </Context>

docBase:表示tomcat8\webapps\中的solr 

value:表示E:\Tomcat8\solr_h\中的solrhome

最後通過http://localhost:8888/solr/index.html#/訪問就可以了