7. Solr(全文搜索服務器)大神之路-第四篇

Solr Lucene 編程語言 XML 外瑞古德 外瑞古德 2017-09-01

1.Solr介紹

1.1. 什麼是solr

Solr 是Apache下的一個頂級開源項目,採用Java開發,它是基於Lucene的全文搜索服務器。Solr可以獨立運行在JettyTomcat等這些Servlet容器中。

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

通過http訪問solr服務器,達到使用solr服務器搜索和索引服務。

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

l創建索引:客戶端(可以是瀏覽器可以是Java程序)用 POST 方法向 Solr 服務器發送一個描述 Field 及其內容的 XML 文檔,Solr服務器根據xml文檔添加、刪除、更新索引 。

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

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

1.2. Solr和Lucene的區別

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

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

7.Solr(全文搜索服務器)大神之路-第四篇

1.Solr安裝配置

1.1. 下載solr

Solrlucene的版本是同步更新的,本課程使用的版本:4.10.3

下載地址:http://archive.apache.org/dist/lucene/solr/

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

7.Solr(全文搜索服務器)大神之路-第四篇

解壓solr-4.10.3.zip:

7.Solr(全文搜索服務器)大神之路-第四篇

bin:solr的運行腳本

contrib:solr的一些擴展jar包,用於增強solr的功能。

dist:該目錄包含build過程中產生的war和jar文件,以及相關的依賴文件。

docs:solr的API文檔

example:solr工程的例子目錄:

lexample/solr:

該目錄是一個標準的SolrHome,它包含一個默認的SolrCore

lexample/multicore:

該目錄包含了在Solr的multicore中設置的多個Core目錄。

lexample/webapps:

該目錄中包括一個solr.war,該war可作為solr的運行實例工程。

licenses:solr相關的一些許可信息

1.1. 運行環境

solr 需要運行在一Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默認提供Jetty(java寫的Servlet容器),

使用jetty啟動:

使用cmd命令行,進入example文件夾啟動

啟動命令java -jar start.jar

7.Solr(全文搜索服務器)大神之路-第四篇

啟動後訪問地址:http://127.0.0.1:8983/solr

但是企業中一般使用Tomcat作為服務器,本課程也是一樣,

相關環境如下:

lSolr:4.10.3

lJdk環境:1.7(solr4.10 不能使用jdk1.7以下)

l服務器:Tomcat 7

1.1. SolrCore配置

1.1.1. SolrHome和SolrCore

SolrHome是Solr服務運行的主目錄,該目錄中包括了多個SolrCore目錄。SolrCore目錄中包含了運行Solr實例所有的配置文件和數據文件,Solr實例就是SolrCore。

每個SolrCore提供單獨的搜索和索引服務。

1.1.1.1. 目錄結構

SolrHome目錄:

7.Solr(全文搜索服務器)大神之路-第四篇

SolrCore目錄:

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1. 創建SolrCore

創建SolrCore先要創建SolrHome。在solr解壓包下solr-4.10.3\example\solr文件夾就是一個標準的SolrHome,只需要將它複製到指定的目錄下即可。

拷貝solr解壓包下solr-4.10.3\example\solr文件夾。

7.Solr(全文搜索服務器)大神之路-第四篇

複製該文件夾到本地的一個目錄,把文件名稱改為solrhome。

改名不是必須的,只是為了便於理解

7.Solr(全文搜索服務器)大神之路-第四篇

打開solrhome目錄確認solrcore

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1. 配置SolrCore

其實就是配置SolrCore目錄下的conf/solrconfig.xml。

7.Solr(全文搜索服務器)大神之路-第四篇

這個文件是來配置SolrCore實例的相關信息。如果使用默認配置可以不用做任何修改。它裡面包含了不少標籤,但是我們經常使用的標籤為:lib標籤、datadir標籤、requestHandler標籤。

1.1.1.1. lib 標籤

lib標籤可以配置擴展功能的一些jar,用以增強solr本身沒有的功能。

比如solr自身沒有『數據導入索引庫』功能,如果需要使用,則首先要把這些jar複製到指定的目錄,然後通過該配置文件進行相關配置,後面會具體講解如何配置。

1.1.1.2. datadir標籤

dataDir數據目錄datadata目錄用來存放索引文件和tlog日誌文件。

solr.data.dir表示${SolrCore}/data的目錄位置

7.Solr(全文搜索服務器)大神之路-第四篇

如果不想使用默認的目錄也可以通過solrconfig.xml更改索引目錄 ,

例如:

7.Solr(全文搜索服務器)大神之路-第四篇

(建議不修改,否則配置多個SolrCore會報錯)

1.1.1.1. requestHandler標籤

requestHandler請求處理器,定義了索引和搜索的訪問方式。

通過/update維護索引,可以完成索引的添加、修改、刪除操作。

7.Solr(全文搜索服務器)大神之路-第四篇

通過/select搜索索引。

7.Solr(全文搜索服務器)大神之路-第四篇

設置搜索參數完成搜索,搜索參數也可以設置一些默認值,如下:

<requestHandler name="/select" class="solr.SearchHandler">

<!-- 設置默認的參數值,可以在請求地址中修改這些參數-->

<lst name="defaults">

<str name="echoParams">explicit</str>

<int name="rows">10</int><!--顯示數量-->

<str name="wt">json</str><!--顯示格式-->

<str name="df">text</str><!--默認搜索字段-->

</lst>

</requestHandler>

1.1. Solr工程部署

由於在項目中用到的web服務器大多數是用的Tomcat,所以就進行solr和Tomcat的整合。

1.1.1. 安裝Tomcat

複製自己的Tomcat7到這裡

7.Solr(全文搜索服務器)大神之路-第四篇

刪除不用的應用(可以不刪)

7.Solr(全文搜索服務器)大神之路-第四篇

修改server.xml配置文件裡面的端口號(否則後面eclipse使用Tomcat會衝突)

7.Solr(全文搜索服務器)大神之路-第四篇

修改以下三個端口號

7.Solr(全文搜索服務器)大神之路-第四篇

7.Solr(全文搜索服務器)大神之路-第四篇

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1. 部署solr.war到Tomcat中

1、從solr解壓包下的solr-4.10.3\example\webapps目錄中拷貝solr.war到tomcat的webapps目錄下。

複製solr.war

7.Solr(全文搜索服務器)大神之路-第四篇

粘貼到Tomcat的webapps裡

7.Solr(全文搜索服務器)大神之路-第四篇

在Tomcat的webapps裡,把war解壓到當前路徑,並刪除solr.war

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1. 添加solr服務的擴展jar包(日誌包)

把solr解壓包下solr-4.10.3\example\lib\ext目錄下的所有jar包拷貝到Tomcat部署的solr的WEB-INF/lib文件夾

複製擴展jar包

7.Solr(全文搜索服務器)大神之路-第四篇

粘貼到Tomcat的webapps的solr工程的WEB-INF\lib目錄

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1. 添加log4j.properties

把solr解壓包下solr-4.10.3\example\resources\log4j.properties文件進行復制

7.Solr(全文搜索服務器)大神之路-第四篇

粘貼到Tomcat的webapps的solr的WEB-INF\classes目錄下

這裡沒有classes文件夾創建一個即可

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1. 配置solr應用的web.xml

需要修改web.xml,讓Tomcat使用JNDI的方式告訴solr服務器SolrHome在哪。

7.Solr(全文搜索服務器)大神之路-第四篇

修改內容:

第42行的Solr/home名稱必須是固定的,修改第43行,如下圖:

注意:solrhome下面必須直接看到solrcore,也就是看到collection1目錄。

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1. 啟動Tomcat進行訪問

訪問:http://localhost:8081/solr/

出現以下界面則說明solr安裝成功!!!

7.Solr(全文搜索服務器)大神之路-第四篇

1.1. 管理界面功能介紹

1.1.1. Dashboard

儀表盤,顯示了該Solr實例開始啟動運行的時間、版本、系統資源、jvm等信息。

1.1.2. Logging

Solr運行日誌信息

1.1.3. Cloud

Cloud即SolrCloud,即Solr雲(集群),當使用Solr Cloud模式運行時會顯示此菜單,該部分功能在第二個項目,即電商項目會演示。

1.1.4. Core Admin

Solr Core的管理界面。在這裡可以添加SolrCore實例(有bug,不推薦使用瀏覽器界面添加SolrCore)。

1.1.5. java properties

Solr在JVM 運行環境中的屬性信息,包括類路徑、文件編碼、jvm內存設置等信息。

1.1.6. Tread Dump

顯示Solr Server中當前活躍線程信息,同時也可以跟蹤線程運行棧信息。

1.1.7. Core selector

選擇一個SolrCore進行詳細操作,如下:

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1.1. Analysis

通過此界面可以測試索引分析器和搜索分析器的執行情況

7.Solr(全文搜索服務器)大神之路-第四篇

1.1.1.1. dataimport

可以定義數據導入處理器,從關係數據庫將數據導入到Solr索引庫中。

默認沒有配置,需要手工配置。

1.1.1.2. Document

通過/update表示更新索引,solr默認根據id(唯一約束)域來更新Document的內容,如果根據id值搜索不到id域則會執行添加操作,如果找到則更新。

通過此菜單可以創建索引、更新索引、刪除索引等操作,界面如下:

7.Solr(全文搜索服務器)大神之路-第四篇

loverwrite="true" : solr在做索引的時候,如果文檔已經存在,就用xml中的文檔進行替換

lcommitWithin="1000" : solr 在做索引的時候,每隔1000(1秒)毫秒,做一次文檔提交。為了方便測試也可以在Document中立即提交,</doc>後添加“<commit/>”

1.1.1.1. Query

通過/select執行搜索索引,必須指定“q”查詢條件方可搜索。

7.Solr(全文搜索服務器)大神之路-第四篇

持續更新中,敬請關注。

相關推薦

推薦中...