使用solr的完整流程


本文摘要

一、下載與安裝

二、運行solr     

三、創建core實例

四、配置schema

五、DIH導入數據

六、solrJ(java客戶端)

 

本文所用到的工具

Postman :簡單說就是一個可以發送post請求的http客戶端 這是官網地址https://www.getpostman.com/

IKAnalyzer中文分詞器 :一個第三方分詞器,下載地址https://download.csdn.net/download/u010510107/10558538

 

一、下載與安裝:

1.      下載:https://lucene.apache.org/solr/到官網點擊Download下載。

2.      下載完成后會得到一個壓縮包,解壓后會獲得一個solr_7.4.0文件夾,此文件夾目錄結構如下圖

          

 

 

二、運行solr

Solr的運行分為單機運行和集群運行,這里以單機為例:

1.      在bin目錄下執行bin/solr start 此命令會啟動solr應用服務器默認端口為8983,如果想指定端口號啟動可以加參數–p例 如:solr start –p 8888.

 

如圖這句提示出現后證明服務啟動成功(啟動過程中如果打印java異常堆棧log4j2.xml 文件名、目錄名或卷標語法不正確。沒有關系不妨礙我們正常使用solr可以忽略此問題),接下來在瀏覽器輸入http://localhost:8888/solr可以進入Admin UI界面驗證是否啟動成功如下圖

此界面是用來管理solr的,此時solr服務器已經可以啟動成功啦下面介紹一下其他比較常用的solr命令。

2. solr常用命令:

solr start –p 端口號 單機版啟動solr服務

solr restart –p 端口號 重啟solr服務

solr stop –p 端口號關閉solr服務

solr create –c name 創建一個core實例(core概念后面介紹)

此外有關於solr集群版啟動方式和其他更多的命令可以參看官方文檔https://lucene.apache.org/solr/guide/7_4/solr-control-script-reference.html

 

三、創建core實例:

1.      core簡介:簡單說core就是solr的一個實例,一個solr服務下可以有多個core,每個core下都有自己的索引庫和與之相應的配置文件,所以在操作solr創建索引之前要創建一個core,因為索引都存在core下面。

2.      core創建:core的創建方式有很多種一下列出兩種比較方便的。

(1)      在bin目錄下執行solr create –c name,創建一個core,默認創建出來的位置如下圖

(2)      第二種方式是直接使用AdminUI頁面創建一個core,如下圖

 

四、  配置schema

1.      schema簡介:

       schema是用來告訴solr如何建立索引的,他的配置圍繞着一個schema配置文件,這個配置文件決定着solr如何建立索引,每個字段的數據類型,分詞方式等,老版本的schema配置文件的名字叫做schema.xml他的配置方式就是手工編輯,但是現在新版本的schema配置文件的名字叫做managed-schema,他的配置方式不再是用手工編輯而是使用schemaAPI來配置,官方給出的解釋是使用schemaAPI修改managed-schema內容后不需要重新加載core或者重啟solr更適合在生產環境下維護,如果使用手工編輯的方式更改配置不進行重加載core有可能會造成配置丟失,配置文件所在的路徑如下圖:

2.      schema主要成員:

(1)      fieldType:為field定義類型,最主要作用是定義分詞器,分詞器決定着如何從文檔中檢索關鍵字。

(2)      analyzer:他是fieldType下的子元素,這就是傳說中的分詞器,他由一組tokenizer和filter組成,如下圖所示

 

 (3)      field:他是創建索引用的字段,如果想要這個字段生成索引需要配置他的indexed屬性為true,stored屬性為true表示存儲該索引。如下圖所示每個field都要引用一種fieldType由type屬性定義

 

這里描述的只是最常用的三個元素,關於更多schema的介紹請參考http://lucene.apache.org/solr/guide/7_4/documents-fields-and-schema-design.html

 

3.      Schema API:

Schema API其實就是用post請求向solr服務器發送攜帶json參數的請求,所有操作內容都封裝在json中,如果是linux系統直接使用curl工具,如果是windows系統推薦使用Postman

這里以添加一個field為例,下面列出其他API:

add-field: add a new field with parameters youprovide.

delete-field: delete a field.

replace-field: replace an existing field withone that is differently configured.

觀看更多API內容請參考http://lucene.apache.org/solr/guide/7_4/schema-api.html

4.中文分詞器:

solr自帶了一些中文分詞器,比較好用的是SmartChineseAnalyzer,但是擴展性比較差不能自定義擴展中文詞庫,所以這里選擇使用IKAnalyzer,這是第三方的一個分詞器可以很好的擴展中文詞庫,IKAnalyzer下載后解壓會有如下文件

把核心jar文件復制到solr WEB應用的lib文件夾下,如下圖

把配置文件和詞庫等文件復制到WEB應用的classes文件夾下,如果子WEB-INF下沒有這個文件夾自己創建即可,如下圖:

 

如果想要擴展詞庫可以在ext.dic文件中配置自定義的中文詞組,例如:誅仙這個詞組,這個分詞器的算法是算不出來的但是通過我們自定義詞庫,分詞器也可以把誅仙列出關鍵詞。

上圖是ext.dic文件中的內容,注意編輯此文件時字符編碼最好是UTF-8無BOM模式,這個可以通過EditPlus等文本編輯工具設置。下面開始在Schema中應用分詞器如下圖:

 

 

定義了一個text_ik這個字段類型並采用Ik分詞器,接下來在field元素定義式指定type=text_ik就可以把這個分詞器應用在這個field中。

接下來我們來驗證下ik分詞器,如下圖:

五、DIH導入索引數據

1.      DIH簡介:

DIH全稱是Data Import Handler 數據導入處理器,顧名思義這是向solr中導入數據的,我們的solr目的就是為了能讓我們的應用程序更快的查詢出用戶想要的數據,而數據存儲在應用中的各種地方入xml、pdf、關系數據庫中,那么solr首先就要能夠獲取這些數據並在這些數據中建立索引來達成快速搜索的目的,這里就列舉我們最常用的從關系型數據庫中向solr導入索引數據。

2.      在我們自己建立的core的目錄下有conf目錄,這里面有着幾個很重要的配置文件,之前我們用到的managed-schema(老版本是schema.xml)也在其中,另外還有一個solrconfig.xml文件,這是我們DIH配置的第一步,需要在此文件中配置數據導入文件的映射位置如下圖:

第二步配置數據導入文件,這個文件可以在solr根目錄下的示例文件中copy一份到core/conf目錄下,也就是跟solrconfig.xml在一個目錄下,因為solrconfig.xml中配置的相對路徑就是這里,當然也可以寫絕對路徑。如下圖:

Copy過去之后這個文件名可以自定義,我就改成了MyDataConfig.xml,下面開始配置如下圖:

 

(1)首先配置數據源關系型數據庫基本四項,驅動類,url,用戶名,密碼。

(2)配置document,可以把它當作與mysql中數據庫一個層級的對象。

(3)配置entity,可以把它當作與數據庫中一個表對應,在query中書寫查詢sql。

(4)配置field與表中的字段與之對應。

        注意這里容易與schema中的配置混淆,我的理解是schema中配置的是創建索引的配置,而索引的創建需要有數據基礎,而現在講的數據導入文件就是建立索引的數據基礎,他是創建索引的元數據。現在配置文件完成后可以用DIH命令執行了。

3.      DIH 命令

DIH命令就是用來執行數據導入的,命令種類繁多這里只列出簡單常用。DIH命令采用的方式是URL的方式。

full-import:全部數據導入例如:

接下來驗證下數據是否真的導入成功了,如下圖

fq:過濾的字段,df:默認查詢字段,start,rows:分頁配置,sort:排序,更多關於查詢語句的介紹請參考http://lucene.apache.org/solr/guide/7_4/searching.html

六、solrJ(java客戶端)

簡介:solrJ是java訪問solr的客戶端工具包,solr也提供了其他語言訪問的客戶端,可以到官方文檔查看,現在solr的索引和數據導入都已經有,但是作為項目中應用的一個組件,少不了java與solr的溝通。

1.      導入solrJ依賴

如果你是用的是依賴管理工具如maven那么很簡單直接添加依賴。

<dependency>

 <groupId>org.apache.solr</groupId>

 <artifactId>solr-solrj</artifactId>

 <version>7.4.0</version>

</dependency>

2.從solr中查詢索引

 

 

3. 向solr添加更改索引

 

(1)java實體對象與solr索引映射

(2)向solr添加或更新索引,如果此實體在solr索引庫中已有則作為更新操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM