解決問題 Solr (1)

教學目標

主要解決安裝 Solr 全文搜索伺服器的問題。

重點概念

首先 Solr 主要是基於 Lucene 高效能的全文搜索伺服器,它提供了比 Lucene 更豐富的查詢語言,可以設定文件檔案集合,架構可以進行擴展,針對查詢進行效能優化,並且提供了一個完善的功能管理介面,總之就是一款非常實用的全文搜索引擎,目前最新為 7.0 版本。

增強功能

接著 Solr 命名來自於 Search On Lucene w/ Replication ,所以繼承 Lucene 很多功能,包括文件檔案的概念、相關性的模型、各種模式的查詢、…等,然而 Solr 還有許多增強的功能,分別為:

  1. 透過 XML 設定檔方便配置搜尋引擎。
  2. 提供 RESTFUL API 進行整合應用。
  3. 搭配資料導入模組匯入多種來源資料。

所謂 XML 設定檔方便配置搜尋引擎主要是指 Solr 支援在同一個 Solr 服務實體上執行多個索引建立和查詢操作,Solr 透過不同文件檔案集合進行實作,設定中稱之為核心,一個核心代表一個獨立文件檔案集合,每個文件檔案集合皆有獨立的 schema.xml 和 solrconfig.xml 設定檔,而在 Solr 中主要有三個主要的設定檔,分別為:

  1. schema.xml:主要定義文件檔案類型的所有欄位類型、索引和儲存,同時支援動態欄位和複製欄位。
  2. solrconfig.xml:主要定義索引和查詢中常用的參數,以及各種自定義的 RESTFUL API。
  3. solr.xml:主要定義管理、日誌和分散式架構。

所謂 RESTFUL API 主要是一種軟體架構的風格,其提供了一組設計原則和限制條件,應用於客戶端和伺服器進行溝通,RESTFUL API 將提供更簡潔、更有層次、更容易實作緩存、…等機制。

所謂搭配資料導入模組匯入多種來源資料主要是在 Solr 中可以將外部不同資料來源的資料導入之後進行索引,其提供了 JDBC 的資料庫連線方式,同時也支援 SQL 查詢語句,以利 Solr 透過資料導入模組自動以 SQL 查詢資料庫,然後將結果集合轉換為 Solr 中的文件檔案進行索引。

啟動伺服器

再來我們從 Solr 官方網站下載 Solr 壓縮檔,進行解壓縮,然而在使用 solr 7.0.0 之前概據官方網站的系統需求文件,提到請先安裝 JAVA 8 以上版本的 Java VM,並且設定 JAVA_HOME 的環境變數,接著開啟命令提示字元切換至 \solr-7.0.0\bin 資料夾中執行下述指令,除了開啟 Solr 伺服器之外,更會建立「gettingstarted」查詢集合。

1
> solr start -e cloud -noprompt

當 Solr 伺服器啟動完成之後會顯示「SolrCloud example running, please visit: http://localhost:8983/solr」訊息,此時我們只需開啟網頁瀏覽器輸入「http://localhost:8983/solr/」網址就能夠開始操作 Solr 伺服器,所謂 SolrcCloud 主要是分散式架構透過 ZooKeeper 管理不同 Solr 主機的節點,ZooKeeper 會替集合群組找出一位領導者角色進行更新請求的分配,當領導者角色主機故障時,ZooKeeper 則會再次自動選出的領導者以利避免單點故障導致的問題發生。

查詢操作

最後我們可以透過「http://localhost:8983/solr/#/gettingstarted/query」網址進行查詢集合的操作,當我們按下畫面中「Execute Query」鈕時將能夠查詢「gettingstarted」集合的內容,並且在右上方會顯示 RESTFUL 介面網址「http://localhost:8983/solr/gettingstarted/select?q=*.:*」,點選會下載 JSON 檔案的查詢結果,由此可知我們透過 RESTFUL 介面網址就能夠透過 Solr 伺服器查詢特定集合的結果,然後以 JSON 檔案格式進行結果的回傳。

總結本篇僅先解決安裝 Solr 全文搜索伺服器的問題,以利我們在 Solr 中可以透過 XML 設定檔方便配置搜尋引擎,接著透過 RESTFUL API 進行整合應用,以及搭配資料導入模組匯入多種來源資料持續更新索引,以利企業進行全文搜索之應用。

相關資源