1. 程式人生 > >Solr學習筆記(1) —— Solr概述&Solr的安裝

Solr學習筆記(1) —— Solr概述&Solr的安裝

一、概述

  使用Solr實現電商網站中商品資訊搜尋功能,可以根據關鍵字、分類、價格搜尋商品資訊,也可以根據價格進行排序。

  

1.1 實現方法

  在一些大型入口網站、電子商務網站等都需要站內搜尋功能,使用傳統的資料庫查詢方式實現搜尋無法滿足一些高階的搜尋需求,比如:搜尋速度要快、搜尋結果按相關度排序、搜尋內容格式不固定等,這裡就需要使用全文檢索技術實現搜尋功能。

  • 使用Lucene實現:單獨使用Lucene實現站內搜尋需要開發的工作量較大,主要表現在:索引維護、索引效能優化、搜尋效能優化等,因此不建議採用。

  • 使用solr實現:基於Solr實現站內搜尋擴充套件性較好並且可以減少程式設計師的工作量,因為Solr提供了較為完備的搜尋引擎解決方案,因此在門戶、論壇等系統中常用此方案。

1.2 什麼是solr

  Solr 是Apache下的一個頂級開源專案,採用Java開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件,並對索引、搜尋效能進行了優化。

  Solr可以獨立執行,執行在Jetty、Tomcat等這些Servlet容器中,Solr 索引的實現方法很簡單,用 POST 方法向 Solr 伺服器傳送一個描述 Field 及其內容的 XML 文件,Solr根據xml文件新增、刪除、更新索引 。Solr 搜尋只需要傳送 HTTP GET 請求,然後對 Solr 返回Xml、json等格式的查詢結果進行解析,組織頁面佈局。Solr不提供構建UI的功能,Solr提供了一個管理介面,通過管理介面可以查詢Solr的配置和執行情況。

1.3 Solr與Lucene的區別

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

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

二、Solr安裝及配置

2.1 Solr的下載

  Solr官方網站:http://lucene.apache.org/solr/

2.2 Solr的資料夾結構

  將solr-4.10.3.zip解壓:

  

  • bin:solr的執行指令碼

  • contrib:solr的一些貢獻軟體/外掛,用於增強solr的功能。

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

  • docs:solr的API文件

  • example:solr工程的例子目錄:

    • example/solr:該目錄是一個包含了預設配置資訊的Solr的Core目錄。
    • example/multicore:該目錄包含了在Solr的multicore中設定的多個Core目錄。

    • example/webapps:該目錄中包括一個solr.war,該war可作為solr的執行例項工程。

  • licenses:solr相關的一些許可資訊

2.3 執行環境

  solr 需要執行在一個Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr預設提供Jetty(java寫的Servlet容器),本教程使用Tocmat作為Servlet容器。

2.4 Solr整合tomcat

2.4.1 Solr Home與SolrCore

  建立一個SolrHome目錄,SolrHome是Solr執行的主目錄,目錄中包括了執行Solr例項所有的配置檔案和資料檔案,Solr例項就是SolrCore,一個SolrHome可以包括多個SolrCore(Solr例項),每個SolrCore提供單獨的搜尋和索引服務。

 example\solr是一個solr home目錄結構,如下:

  

  上圖中“collection1”是一個SolrCore(Solr例項)目錄 ,目錄內容如下所示:

     

  說明:

    • collection1:叫做一個Solr執行例項SolrCore,SolrCore名稱不固定,一個solr執行例項對外單獨提供索引和搜尋介面。
    • solrHome中可以建立多個solr執行例項SolrCore。
    • 一個solr的執行例項對應一個索引目錄。
    • conf是SolrCore的配置檔案目錄 。
    • data目錄存放索引檔案需要建立

2.4.2 整合步驟

  第一步:把\solr-4.10.3\dist\solr-4.10.3.war複製到tomcat 的webapp目錄下,改名為solr.war。

  第二步:solr.war解壓。使用壓縮工具解壓或者啟動tomcat自動解壓。解壓之後刪除solr.war

  第三步:把\solr-4.10.3\example\lib\ext目錄下的所有的jar包新增到solr工程中

  第四步:配置solrHome和solrCore

    1)建立一個solrhome(存放solr所有配置檔案的一個資料夾)。\solr-4.10.3\example\solr目錄就是一個標準的solrhome。

    2)把\solr-4.10.3\example\solr資料夾複製到D:\temp路徑下,改名為solrhome,改名不是必須的,是為了便於理解。

    3)在solrhome下有一個資料夾叫做collection1這就是一個solrcore。就是一個solr的例項。一個solrcore相當於mysql中一個數據庫。Solrcore之間是相互隔離

      • 在solrcore中有一個資料夾叫做conf,包含了索引solr例項的配置資訊。
      • 在conf資料夾下有一個solrconfig.xml。配置例項的相關資訊。如果使用預設配置可以不用做任何修改
          <!-- solr服務依賴的擴充套件包,預設的路徑是collection1\lib資料夾,如果沒有就建立一個 -->
          <lib dir="${solr.install.dir:../../..}/contrib/extraction/lib" regex=".*\.jar" />
          <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-cell-\d.*\.jar" />
        
          <lib dir="${solr.install.dir:../../..}/contrib/clustering/lib/" regex=".*\.jar" />
          <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
        
          <lib dir="${solr.install.dir:../../..}/contrib/langid/lib/" regex=".*\.jar" />
          <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-langid-\d.*\.jar" />
          
          <!-- 配置了索引庫的存放路徑。預設路徑是collection1\data資料夾,如果沒有data資料夾,會自動建立。-->
          <dataDir>${solr.data.dir:}</dataDir>
            <!-- name="/select":查詢時使用的URL -->
            <requestHandler name="/select" class="solr.SearchHandler">
             <lst name="defaults">
               <str name="echoParams">explicit</str>
               <int name="rows">10</int>
               <str name="df">text</str>
             </lst>
            </requestHandler>
            
            <!-- name="/update":維護索引時使用的URL -->
            <requestHandler name="/update" class="solr.UpdateRequestHandler">
            <!-- See below for information on defining
                 updateRequestProcessorChains that can be used by name
                 on each Update Request
              -->
            <!--
               <lst name="defaults">
                 <str name="update.chain">dedupe</str>
               </lst>
               -->
          </requestHandler>

         

  第五步:告訴solr伺服器配置檔案也就是solrHome的位置。修改solr專案的web.xml。

    

  第六步:啟動tomcat

  第七步:訪問http://localhost:8080/solr/,進入solr後臺管理

2.5 配置中文分析器

2.5.1 Schema.xml

  schema.xml,在SolrCore的conf目錄下,它是Solr資料表配置檔案,它定義了加入索引的資料的資料型別的。主要包括FieldTypes、Fields和其他的一些預設設定。