1.Solr介紹
1.1. 什麼是solr
Solr 是Apache下的一個頂級開源項目,採用Java開發,它是基於Lucene的全文搜索服務器。Solr可以獨立運行在Jetty、Tomcat等這些Servlet容器中。
Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展,並對索引、搜索性能進行了優化。
通過http訪問solr服務器,達到使用solr服務器搜索和索引服務。 |
使用Solr 進行創建索引和搜索索引的實現方法很簡單,如下:
l創建索引:客戶端(可以是瀏覽器可以是Java程序)用 POST 方法向 Solr 服務器發送一個描述 Field 及其內容的 XML 文檔,Solr服務器根據xml文檔添加、刪除、更新索引 。
l搜索索引:客戶端(可以是瀏覽器可以是Java程序)用 GET方法向 Solr 服務器發送請求,然後對 Solr服務器返回Xml、json等格式的查詢結果進行解析,組織頁面佈局。Solr不提供構建頁面UI的功能。Solr提供了一個管理界面,通過管理界面可以查詢Solr的配置和運行情況。
Solr是一個可以獨立運行的搜索服務器,使用solr進行全文檢索服務的話,只需要通過http請求訪問該服務器即可。 |
1.2. Solr和Lucene的區別
Lucene是一個開放源代碼的全文檢索引擎工具包,它不是一個完整的全文檢索應用。Lucene僅提供了完整的查詢引擎和索引引擎,目的是為軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者以Lucene為基礎構建全文檢索應用。
Solr的目標是打造一款企業級的搜索引擎系統,它是基於Lucene一個搜索引擎服務,可以獨立運行,通過Solr可以非常快速的構建企業的搜索引擎,通過Solr也可以高效的完成站內搜索功能。
1.Solr安裝配置
1.1. 下載solr
Solr和lucene的版本是同步更新的,本課程使用的版本:4.10.3
下載地址:http://archive.apache.org/dist/lucene/solr/
Linux下需要solr-4.10.3.tgz,windows下需要solr-4.10.3.zip。
解壓solr-4.10.3.zip:
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
啟動後訪問地址: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目錄:
SolrCore目錄:
1.1.1. 創建SolrCore
創建SolrCore先要創建SolrHome。在solr解壓包下solr-4.10.3\example\solr文件夾就是一個標準的SolrHome,只需要將它複製到指定的目錄下即可。
拷貝solr解壓包下solr-4.10.3\example\solr文件夾。
複製該文件夾到本地的一個目錄,把文件名稱改為solrhome。
改名不是必須的,只是為了便於理解
打開solrhome目錄確認solrcore
1.1.1. 配置SolrCore
其實就是配置SolrCore目錄下的conf/solrconfig.xml。
這個文件是來配置SolrCore實例的相關信息。如果使用默認配置可以不用做任何修改。它裡面包含了不少標籤,但是我們經常使用的標籤為:lib標籤、datadir標籤、requestHandler標籤。
1.1.1.1. lib 標籤
lib標籤可以配置擴展功能的一些jar,用以增強solr本身沒有的功能。
比如solr自身沒有『數據導入索引庫』功能,如果需要使用,則首先要把這些jar複製到指定的目錄,然後通過該配置文件進行相關配置,後面會具體講解如何配置。
1.1.1.2. datadir標籤
dataDir數據目錄data。data目錄用來存放索引文件和tlog日誌文件。
solr.data.dir表示${SolrCore}/data的目錄位置
如果不想使用默認的目錄也可以通過solrconfig.xml更改索引目錄 ,
例如:
(建議不修改,否則配置多個SolrCore會報錯)
1.1.1.1. requestHandler標籤
requestHandler請求處理器,定義了索引和搜索的訪問方式。
通過/update維護索引,可以完成索引的添加、修改、刪除操作。
通過/select搜索索引。
設置搜索參數完成搜索,搜索參數也可以設置一些默認值,如下:
<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到這裡
刪除不用的應用(可以不刪)
修改server.xml配置文件裡面的端口號(否則後面eclipse使用Tomcat會衝突)
修改以下三個端口號
1.1.1. 部署solr.war到Tomcat中
1、從solr解壓包下的solr-4.10.3\example\webapps目錄中拷貝solr.war到tomcat的webapps目錄下。
複製solr.war
粘貼到Tomcat的webapps裡
在Tomcat的webapps裡,把war解壓到當前路徑,並刪除solr.war
1.1.1. 添加solr服務的擴展jar包(日誌包)
把solr解壓包下solr-4.10.3\example\lib\ext目錄下的所有jar包拷貝到Tomcat部署的solr的WEB-INF/lib文件夾
複製擴展jar包
粘貼到Tomcat的webapps的solr工程的WEB-INF\lib目錄
1.1.1. 添加log4j.properties
把solr解壓包下solr-4.10.3\example\resources\log4j.properties文件進行復制
粘貼到Tomcat的webapps的solr的WEB-INF\classes目錄下
這裡沒有classes文件夾創建一個即可
1.1.1. 配置solr應用的web.xml
需要修改web.xml,讓Tomcat使用JNDI的方式告訴solr服務器SolrHome在哪。
修改內容:
第42行的Solr/home名稱必須是固定的,修改第43行,如下圖:
注意:solrhome下面必須直接看到solrcore,也就是看到collection1目錄。
1.1.1. 啟動Tomcat進行訪問
訪問:http://localhost:8081/solr/
出現以下界面則說明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進行詳細操作,如下:
1.1.1.1. Analysis
通過此界面可以測試索引分析器和搜索分析器的執行情況
1.1.1.1. dataimport
可以定義數據導入處理器,從關係數據庫將數據導入到Solr索引庫中。
默認沒有配置,需要手工配置。
1.1.1.2. Document
通過/update表示更新索引,solr默認根據id(唯一約束)域來更新Document的內容,如果根據id值搜索不到id域則會執行添加操作,如果找到則更新。
通過此菜單可以創建索引、更新索引、刪除索引等操作,界面如下:
loverwrite="true" : solr在做索引的時候,如果文檔已經存在,就用xml中的文檔進行替換
lcommitWithin="1000" : solr 在做索引的時候,每隔1000(1秒)毫秒,做一次文檔提交。為了方便測試也可以在Document中立即提交,</doc>後添加“<commit/>”
1.1.1.1. Query
通過/select執行搜索索引,必須指定“q”查詢條件方可搜索。
持續更新中,敬請關注。