solr(一)---介紹與安裝

    最近公司招新人,有兩位應屆碩士生同學過來面試。一看簡歷上,都有solr的開發經驗。於是想,“這沒整過啊!我怎麼面呢?”於是,自己找資料,進行了一段時間的學習!總算是有個學習成果吧!現寫下這一系列文章進行記錄。也幫助剛學習solr的同學進行學習。

一、什麼是solr?

    Solr是一個基於Lucene的Java搜索引擎服務器。Solr 提供了層面搜索、命中醒目顯示並且支持多種輸出格式(包括 XML/XSLT 和 JSON 格式)。它易於安裝和配置,而且附帶了一個基於 HTTP 的管理界面。Solr已經在衆多大型的網站中使用,較爲成熟和穩定。Solr 包裝並擴展了 Lucene,所以Solr的基本上沿用了Lucene的相關術語。更重要的是,Solr 創建的索引與 Lucene 搜索引擎庫完全兼容。通過對Solr 進行適當的配置,某些情況下可能需要進行編碼,Solr 可以閱讀和使用構建到其他 Lucene 應用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 創建的索引。

    1.1、什麼是lucene?

    Lucene是一個基於Java的全文信息檢索工具包,它不是一個完整的搜索應用程序,而是爲你的應用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta(雅加達) 家族中的一個開源項目。也是目前最爲流行的基於Java開源全文檢索工具包。目前已經有很多應用程序的搜索功能是基於 Lucene ,比如Eclipse 幫助系統的搜索功能。Lucene能夠爲文本類型的數據建立索引,所以你只要把你要索引的數據格式轉化的文本格式,Lucene 就能對你的文檔進行索引和搜索。

    1.2、lucene和solr是什麼關係?

    Solr與Lucene 並不是競爭對立關係,恰恰相反Solr 依存於Lucene,因爲Solr底層的核心技術是使用Lucene 來實現的,Solr和Lucene的本質區別有以下三點:搜索服務器,企業級和管理。Lucene本質上是搜索庫,不是獨立的應用程序,而Solr是。Lucene專注於搜索底層的建設,而Solr專注於企業應用。Lucene不負責支撐搜索服務所必須的管理,而Solr負責。所以說,一句話概括 Solr: Solr是Lucene面向企業搜索應用的擴展。

    Solr使用Lucene並且擴展了它!

  •  

    • 一個真正的擁有動態字段(Dynamic Field)和唯一鍵(Unique Key)的數據模式(Data Schema)

    • 對Lucene查詢語言的強大擴展!

    • 支持對結果進行動態的分組和過濾

    • 高級的,可配置的文本分析

    • 高度可配置和可擴展的緩存機制

    • 性能優化

    • 支持通過XML進行外部配置

    • 擁有一個管理界面

    • 可監控的日誌

    • 支持高速增量式更新(Fast incremental Updates)和快照發布(Snapshot Distribution)

    因爲solr是基於Lucene的,他們底層的概念都是一樣的。讀者如果初學solr,對lucene不瞭解的話,可以先大概瞭解一下lucene。以下有兩篇很好的關於lucene的介紹文章:

    http://www.ibm.com/developerworks/cn/java/j-lo-lucene1/#ibm-pcon

    http://www.ibm.com/developerworks/cn/java/wa-lucene/

    爲了對文檔進行索引,Lucene 提供了五個基礎的類,他們分別是 Document, Field, IndexWriter, Analyzer, Directory。讀完以上兩篇文章,讀者應該瞭解這些基礎類有什麼作用。

二、solr的安裝:

2.1、下載工具

    Solr 必須運行在Java1.6 或更高版本的Java 虛擬機中,運行標準Solr 服務只需要安裝JRE 即可,但如果需要擴展功能或編譯源碼則需要下載JDK 來完成。筆者用的是JDK1.6

    solr需要運行在servlet服務器上,筆者用的是tomcat。版本的話,根據自己情況去選擇。筆者用的是6.0.37版本。

    如果讀者打算下載源碼進行自行編譯的話,同時還需要下載Ant。但是需要注意的是,筆者寫本文時,最新版本的solr是4.10.2。但是運行ant進行編譯時,會提示jdk支持的最低版本是1.7,可是筆者不願意換jdk於是一直降低版本到4.7.2才發現只是1.6的jdk。

    wKioL1RdvjnBMWoOAAGUFC-NEAQ851.jpg

    於是需要下載的工具如下:

2.2、配置Ant

    Solr是使用Ant進行管理的源碼, Ant是一種基於Java的build工具。理論上來說,它有些類似於Maven 或者是 C中的make。下載後解壓出來後,進行環境變量設置。

    ANT_HOME:C:\apache-ant-1.9.4-bin (這裏爲你自己解壓縮的目錄)

    PATH:%ANT_HOME%\bin (這個設置是爲了方便在dos環境下操作)

    查看是否安裝成功,在命令行窗口中輸入命令ant,若出現結果:



    說明ant安裝成功!因爲ant默認運行build.xml文件,這個文件需要我們建立。現在就可以進行build Solr源碼了。在命令行窗口中進入到你的Solr源碼目錄,輸入ant會出現當前build.xml使用提示信息。

    wKioL1RdwJ7xhW9rAAIbRH-cMm4443.jpg

    當然,如果讀者自己的IDE已經有了Ant的話,可以在IDE裏自己build。

2.3、配置solr

    2.3.1、目錄結構介紹

    下載solr後,解壓壓縮包。解壓到F:\solr\solr-4.7.2。解壓之後的目錄結構如下:

wKiom1RdwqOjOt8TAAE9Ir34N50145.jpg

    contrib目錄裏都是相關擴展所需要的jar包;

    dist也是相關jar包,但是最主要的文件是:solr的war包(solr-4.7.2.war);

    docs是solr的相關介紹文檔(index.html包含了所有該版本已包含功能的介紹,而tutorial.html對solr的運行過程進行了介紹);

    example是非常重要的一個目錄,它包含了相關示例程序:

        \example-DIH    ---數據庫做索引數據源的示例;

        \exampledocs    ---所有示例用的xml文件,作爲索引數據源;

        \multicore          ---實現多core的示例;

        \solr                  ---一個非常完整的基礎示例;

    licenses目錄裏保存了相關證書文件。

    2.3.2、Tomcat下Solr安裝配置
    A、Tomcat 配置文件conf\server.xml

    添加編碼的配置 URIEncoding="UTF-8" (如不添加,中文檢索時因爲亂碼搜索不到)。
    添加後爲:
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
           redirectPort="8443" URIEncoding="UTF-8" />

    B、複製solr.war文件

    複製F:\solr\solr-4.7.2\dist\solr-4.7.2.war到tomcat的webapps目錄下(筆者的目錄爲E:\apache-tomcat-6.0.37\webapps),並改名爲solr.war。解壓。

    C、建立主目錄

    根據自己情況,在磁盤上創建一個solr的主目錄。筆者創建在E:\solr-tomcat\solr,把F:\solr\solr-4.7.2\example\solr複製到該主目錄下。

    Solr的安裝配置最爲麻煩的是對solr.solr.home(主目錄)的理解和配置,主要有3種:

    基於環境變量solr.solr.home
    在當前用戶的環境變量中添加如下環境變量
        Dsolr.solr.home=E:\solr-tomcat\solr
    基於JNDI配置
    在tomcat的E:\apache-tomcat-6.0.37\conf\Catalina\localhost目錄下創建solr.xml ,內容如下:

<Context docBase="E:\apache-tomcat-6.0.37\webapps\solr.war" debug="0" crossContext="true" >
   <Environment name="solr/home" type="java.lang.String" value="E:\solr-tomcat\solroverride="true" />
</Context>

    修改solr工程的web.xml文件

    修改E:\apache-tomcat-6.0.37\webapps\solr\WEB-INF\web.xml文件:

<env-entry>

       <env-entry-name>solr/home</env-entry-name>

       <env-entry-value>E:\solr-tomcat\solr</env-entry-value>

       <env-entry-type>java.lang.String</env-entry-type>

    </env-entry>

     這樣,solr的基本配置都OK了。運行tomcat,在瀏覽器輸入http://localhost:8080/solr即可訪問solr的管理頁面。

wKiom1Rdy4eSotMOAATQUYYvKso603.jpg

 

    下一篇博文,筆者將介紹solr的基本使用以及solr多core的配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章