Nutch搜索引擎(第2期)_ Solr簡介及安裝

一、Solr簡介

  Solr是一個高性能,採用Java5開發,基於Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展並對查詢性能進行了優化,而且提供了一個完善的功能管理界面,是一款很是優秀的全文搜索引擎。html

  Solr最初由CNET Networks開發,2006 年初,Apache Software Foundation 在Lucene頂級項目的支持下獲得了Solr。Solr於2007年1月醞釀成熟,在整個項目孵化期間,Solr穩步地積累各類特性並吸引了一個穩定的用戶羣體、貢獻者和提交人。Solr 如今是 Lucene(Apache 的基於Java的全文本搜索引擎庫)的一個子項目。java

1.1 Solr的特性

  Solr是一個擁有像WebService同樣接口的獨立運行的搜索服務器。你將可以經過HTTP協議以XML格式將文檔放入搜索服務器(這個過程叫作索引),你可以經過HTTP協議的GET來查詢搜索服務器而且獲得XML格式的結果。linux

Solr的特性包括:web

  • 高級的全文搜索功能
  • 專爲高通量的網絡流量進行的優化
  • 基於開放接口(XML和HTTP)的標準
  • 綜合的HTML管理界面
  • 可伸縮性-可以有效地複製到另一個Solr搜索服務器
  • 使用XML配置達到靈活性和適配性
  • 可擴展的插件體系

1.2 Solr的目錄結構

Solr 程序包的目錄結構apache

  • client :包含了一些特定語言調用Solr 的API 客戶端程序,目前只有Ruby 可供選擇,Java 客戶端叫SolrJ 在src/solrj 中能夠找到。

  • contrib :在solr 構建過程當中放置已編譯文件的目錄。

  • dist :存放Solr 構建完成的JAR 文件、WAR 文件和Solr 依賴的JAR 文件。

  • example :是一個安裝好的Jetty 中間件,其中包括一些樣本數據和Solr 的配置信息。

  • example/etc :Jetty 的配置文件。
  • example/multicore :當安裝Slor multicore 時,用來放置多個Solr 主目錄。
  • example/lib:放置可選的JAR 文件好比對Slor 擴展的插件,這些JAR 文件將會在Solr 啓動時加載。
  • example/webapps :Solr 的WAR 文件部署在這裏。
  • example/solr:默認安裝時一個Solr 的主目錄。

  • example/solr/bin :建議將集羣複製腳本放在這個目錄下。
  • example/solr/conf :放置配置文件。
    • conf/schema.xml :創建索引的schema 包含了字段類型定義和其相關的分析器。
    • conf/solrconfig.xml :這個是Solr 主要的配置文件。
    • conf/xslt :包含了不少xslt 文件,這些文件能將Solr 的XML 的查詢結果轉換爲特定的格式,好比:Atom/RSS。

1.3 Solr與Lucene關係

  Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是爲軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此爲基礎創建起完整的全文檢索引擎瀏覽器

  Solr是一個基於Lucene java庫的企業級搜索服務器,包含XML/HTTP,JSON API,高亮查詢結果,faceted search,緩存,複製還有一個WEB管理界面。Solr運行在Servlet容器中。因此Solr和Lucene的本質區別有如下三點:搜索服務器,企業級和管理。Lucene本質上是搜索庫,不是獨立的應用程序,而Solr是。Lucene專一於搜索底層的建設,而Solr專一於企業應用。Lucene不負責支撐搜索服務所必須的管理,而Solr負責。因此說,一句話歸納Solr:SolrLucene面向企業搜索應用擴展緩存

 

  1)Solr使用Lucene而且擴展了它 tomcat

  • 一個真正的擁有動態域(Dynamic Field)和惟一鍵(Unique Key)的數據模式(Data Schema)
  • 對Lucene查詢語言的強大擴展!
  • 支持對結果進行動態的分組和過濾
  • 高級的,可配置的文本分析
  • 高度可配置和可擴展的緩存機制
  • 性能優化
  • 支持經過XML進行外部配置
  • 擁有一個管理界面
  • 可監控的日誌
  • 支持高速增量式更新(Fast incremental Updates)和快照發布(Snapshot Distribution)

 

  2)Schema(模式) 性能優化

  • 定義域類型和文檔的域
  • 可以驅動智能處理
  • 聲明式的Lucene分析器規範
  • 動態域可以隨時增長域
  • 拷貝域功能容許對一個域進行多種方式的索引,或者將多個域聯合成一個可搜索域
  • 顯式類型可以減小對域類型的猜想
  • 可以使用外部的基於文件的終止詞列表,同義詞列表和保護詞列表的配置

 

  3)查詢 服務器

  • 擁有可配置響應格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
  • 高亮的上下文搜索結果
  • 基於域值和顯式查詢的片斷式搜索(Faceted Search)
  • 對查詢語言增長了排序規範
  • 常量的打分範圍(Constant scoring range)和前綴式查詢-沒有idf,coord,或者lengthNorm因子,對查詢匹配的詞沒有數量限制
  • 函數查詢(Function Query)-經過關於一個域的數值或順序的函數對打分進行影響
  • 性能優化

 

  4)核心

  • 可插拔的查詢句柄(Query Handler)和可擴展的XML數據格式
  • 使用惟一鍵的域可以加強文檔惟一性
  • 可以高效地進行批量更新和刪除
  • 用戶可配置的文檔索引變化觸發器(命令)
  • 併發控制的搜索器
  • 可以正確處理數字類型,從而可以進行排序和範圍搜索
  • 可以控制缺失排序域的文檔
  • 支持搜索結果的動態分組

 

  5)緩存

  • 可配置的查詢結果,過濾器,和文檔緩存實例
  • 可插拔的緩存實現
  • 後臺緩存熱啓:當一個新的搜索器被打開時,可配置的搜索將它熱啓,避免第一個結果慢下來,當熱啓時,當前搜索器處理目前的請求。
  • 後臺自動熱啓:當前搜索器緩存中最常訪問的項目在新的搜索器中再次生成,可以在索引器和搜索器變化的時候高速緩存常查詢的結果
  • 快速和小的過濾器實現
  • 支持自動熱啓的用戶級別的緩存

 

  6)複製

  • 可以將使用rsync傳輸時改變的索引部分有效的發佈
  • 使用拉策略(Pull Strategy)來簡化增長搜索器
  • 可配置的發佈間隔可以容許對時間線和緩存使用進行權衡選擇

 

  7)管理接口

  • 可以對緩存使用,更新和查詢進行綜合統計
  • 文本分析調試器,可以顯示每一個分析器每一個階段的結果
  • 基於WEB的查詢和調試輸出:解析查詢輸出,Lucene的explain方法細節,可以解釋爲什麼某個文檔打分低,被排除在結果中等等

二、Solr安裝

2.1 環境介紹

  本次安裝Nutch的環境介紹:

  • 操做系統:CentOS 6.0(機器名:TSlave.Hadoop)
  • JDK版本:jdk- 6u31-linux-i586.bin
  • Solr版本:apache-solr- 3.5.0.zip
  • Tomcat版本:apache-tomcat- 7.0.27.tar.gz

  下面是軟件的下載地址:

 

  備註:在"Nutch搜索引擎_第1期_Nutch簡介及安裝",咱們已經安裝了JDK和Tomcat,這裏咱們只須要安裝Solr,並與以前安裝的Nutch相結合。

2.2 安裝Solr

    第一步:把咱們下載的Solr安裝上傳到"TSlave.Hadoop"機器上。

 

 

    第二步:用下面命令進行解壓,並從新命名爲"solr"。

 

unzip apache-solr-3.5.0.zip

mv apache-solr-3.5.0 solr

 

    知識點

  • linux zip 命令詳解

功能說明:壓縮文件。

語 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工做目錄>][-ll][-n <字尾字符串>][-t <日期時間>][-<壓縮效率>][壓縮文件][文件...][-i <範本樣式>][-x <範本樣式>]

補充說明:zip是個使用普遍的壓縮程序,文件經它壓縮後會另外產生具備".zip"擴展名的壓縮文件。

 

  • linux unzip 命令詳解

功能說明:解壓縮zip文件

語 法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密碼>][.zip文件][文件][-d <目錄>][-x <文件>] 或 unzip [-Z]

補充說明:unzip爲.zip壓縮文件的解壓縮程序。

 

  • 範例:

zip命令能夠用來將文件壓縮成爲經常使用的zip格式。unzip命令則用來解壓縮zip文件。

1. 我想把一個文件abc.txt和一個目錄dir1壓縮成爲yasuo.zip:

# zip -r yasuo.zip abc.txt dir1

2.我下載了一個yasuo.zip文件,想解壓縮:

# unzip yasuo.zip

3.我當前目錄下有abc1.zip,abc2.zip和abc3.zip,我想一塊兒解壓縮它們:

# unzip abc\?.zip

註釋:?表示一個字符,若是用*表示任意多個字符。

4.我有一個很大的壓縮文件large.zip,我不想解壓縮,只想看看它裏面有什麼:

# unzip -v large.zip

5.我下載了一個壓縮文件large.zip,想驗證一下這個壓縮文件是否下載徹底了

# unzip -t large.zip

6.我用-v選項發現music.zip壓縮文件裏面有不少目錄和子目錄,而且子目錄中其實都是歌曲mp3文件,我想把這些文件都下載到第一級目錄,而不是一層一層建目錄:

# unzip -j music.zip

 

    第三步:把Solr安裝目錄中dist子目錄下"apache-solr-nightly.war"重名爲"solr.war",而後再複製到到Tomcat安裝目錄中的webapps 子目錄下。

 

mv apache-solr-3.5.0.war solr.war

cp solr.war /usr/tomcat/webapps

 

 

    再到"/usr/tomcat/webpapps"目錄中看看。

 

 

    第四步:修改Tomcat配置文件server.xml,添加中文字符編碼。

 

    修改前:

 

    修改後:

 

    第五步:把"/home/hadoop/solr/example/"下的solr目錄拷貝到"/usr/tomcat"目錄中。用下面命令進行復制。

 

cp -r solr /usr/tomcat

 

 

    第六步:在"/usr/tomcat/conf/Catalina/localhost/"下建立一個solr.xml文件,內容以下所示:

 

<?xml version="1.0" encoding="UTF-8"?>

<Context docBase="/usr/tomcat/webapps/solr.war" debug="0" crossContext="true" >

    <Environment name="solr/home" type="java.lang.String" value="/usr/tomcat/solr" override="true" />

</Context>

 

    備註:docBase爲solr的上傳目錄。

 

 

 

    第七步:從新啓動Tomcat,在瀏覽器輸入"http://192.168.1.11:8080/solr/"。

    意外出現,錯誤信息:Error loading class "solr.VelocityResponseWriter"

 

 

    解決方案:在"/usr/tomcat/solr/conf"目錄中,找到"solrconfig.xml"文件,找到下面這句話。

 

<queryResponseWriter

name="velocity"

class="solr.VelocityResponseWriter" enable="${solr.velocity.enabled:true}"/>

 

    把 enable="${solr.velocity.enabled:true}中的true修改成false

 

    當修改完畢以後,從新啓動Tomcat,而後再次輸入"http://192.168.1.11:8080/solr/"地址,即出現下面界面。

 

 

    點"Solr Admin"又會進入下面所示的界面。

 

2.3 結合Nutch

    1)方案一

第一步:啓動Solr,啓動目錄:${SOLR_HOME}/example

 

java -jar start.jar

 

 

    第二步:驗證Solr,在瀏覽器輸入下面內容:

 

http://localhost:8983/solr/admin/

http://localhost:8983/solr/admin/stats.jsp

 

    備註:由於咱們是遠程訪問,因此須要把"localhost"改成相應機器的IP"192.168.1.11"。

 

 

 

第三步:nutch與solr集成

須要將Nutch目錄"runtime/local/conf" 下的"schema.xml"文件複製到Solr的"/example/solr/conf "下覆蓋原文件。schema.xml設置了索引的字段,把content項後面的stored="false" 改成 stored="true" 後在搜索返回值中就會包含含有關鍵字的具體內容。

 

 

    2)方案二

    直接利用咱們上面配置在Tomcat中Solr網頁,只須要將Nutch目錄"runtime/local/conf" 下的"schema.xml"文件複製到Tomcat的"solr/conf "下覆蓋原文件。schema.xml設置了索引的字段,把content項後面的stored="false" 改成 stored="true" 後在搜索返回值中就會包含含有關鍵字的具體內容。而後重啓Tomcat服務器,否則不會生效。

相關文章
相關標籤/搜索