1. 程式人生 > >Nutch搜尋引擎(第2期)_ Solr簡介及安裝

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

1、Solr簡介

  Solr是一個高效能,採用Java5開發,基於Lucene的全文搜尋伺服器。同時對其進行了擴充套件,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件並對查詢效能進行了優化,並且提供了一個完善的功能管理介面,是一款非常優秀的全文搜尋引擎。

  Solr最初由CNET Networks開發,2006 年初,Apache Software Foundation 在Lucene頂級專案的支援下得到了Solr。Solr於2007年1月醞釀成熟,在整個專案孵化期間,Solr穩步地積累各種特性並吸引了一個穩定的使用者群體、貢獻者和提交人。Solr 現在是 Lucene(Apache 的基於Java的全文字搜尋引擎庫)的一個子專案。

1.1 Solr的特性

  Solr是一個擁有像WebService一樣介面的獨立執行的搜尋伺服器。你將能夠通過HTTP協議以XML格式將文件放入搜尋伺服器(這個過程叫做索引),你能夠通過HTTP協議的GET來查詢搜尋伺服器並且得到XML格式的結果。

Solr的特性包括:

  • 高階的全文搜尋功能
  • 專為高通量的網路流量進行的優化
  • 基於開放介面(XML和HTTP)的標準
  • 綜合的HTML管理介面
  • 可伸縮性-能夠有效地複製到另外一個Solr搜尋伺服器
  • 使用XML配置達到靈活性和適配性
  • 可擴充套件的外掛體系

1.2 Solr的目錄結構

Solr 程式包的目錄結構

  • 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並且擴充套件了它

  • 一個真正的擁有動態域(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方法細節,能夠解釋為何某個文件打分低,被排除在結果中等等

2、Solr安裝

2.1 環境介紹

  本次安裝Nutch的環境介紹:

  • 作業系統:CentOS6.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的上傳目錄。

    意外出現,錯誤資訊: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

    點"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伺服器,不然不會生效。

相關推薦

Nutch搜尋引擎2_ Solr簡介安裝

1、Solr簡介   Solr是一個高效能,採用Java5開發,基於Lucene的全文搜尋伺服器。同時對其進行了擴充套件,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件並對查詢效能進行了優化,並且提供了一個完善的功能管理介面,是一款非常優秀的全文搜尋引擎。   Solr最初由CNET

Nutch搜尋引擎4_ Eclipse開發配置

1、環境準備 1.1 本期引言     前三期分別介紹了Nutch與Solr在Linux上面的安裝,並做了簡單的應用,這一期從開發的角度進行,因為我們日常最熟悉的開發環境是Windows,所以本期詳細介紹Windows平臺的Nutch二次開發所需要進行的配置安裝。當我們開發好之後,最後在部署到Linux環

Nutch搜尋引擎3_ Nutch簡單應用

1、Nutch命令詳解 Nutch採用了一種命令的方式進行工作,其命令可以是對區域網方式的單一命令也可以是對整個Web進行爬取的分步命令。 要看Nutch的命令說明,可執行"Nutch"命令。     下面是單個命令的說明: crawl crawl是"org.apache

Nutch搜尋引擎1_ Nutch簡介安裝

1、Nutch簡介   Nutch是一個由Java實現的,開放原始碼(open-source)的web搜尋引擎。主要用於收集網頁資料,然後對其進行分析,建立索引,以提供相應的介面來對其網頁資料進行查詢的一套工具。其底層使用了Hadoop來做分散式計算與儲存,索引使用了Solr分散式索引框架來做,Solr是一

大數據筆記二十七——Spark Core簡介安裝配置

sin cli sca follow com clu 同時 graphx 信息 1、Spark Core: 類似MapReduce 核心:RDD 2、Spark SQL: 類似Hive,支持SQL 3、Spark Streaming:類似

具體數學_電腦科學基礎2pdf

下載地址:網盤下載 《電腦科學基礎:從資料操縱到計算理論(影印版)》向讀者介紹了電腦科學的諸多分支。主要內容包括:文字、音訊、影象與資料的數字化表示;計算機硬體與軟體,如作業系統和程式設計語言;資料組織問題,如SQL資料庫模型等。講解循序漸進,從位和位元組級別到較高的抽象級別,提供了使讀者進一步學習程式設計和

讀書筆記_資料結構-使用C++語言描述2

第一章    基礎知識 資料:計算機加工處理的物件,分為數值資料和非數值資料。 資料結構的設計過程分為抽象層(資料的邏輯結構及運算)、資料結構層、實現層。 資料的邏輯結構:集合結構、線性結構、樹形結構、圖狀結構。(線性和非線性) 儲存表示方法:順序和連結(以及索引和雜湊)

平安科技移動開發二隊技術周報

移動開發 程序猿 book watch 來看 home 錯誤 去那 this 平安科技移動開發二隊技術周報(第四期) 業界新聞 1)Java 9將於2016年正式公布 Oracle已經宣布了Java 9的時間表。其目標是在2016年9年正式公布

數據庫系統工程師教程2目錄

體系結構 多媒體 觸發 評估 實現 決策 可靠性 邏輯結構設計 視頻 北漂不易,為了所謂的“綠卡”,也為了以後能夠讓為孩子創造更好的條件;同時也為了充實下自己,終於下定決心,努力吧。 先從軟考開始《數據庫系統工程師教程》中級,以下純手碼,共勉 第

精通CSS:高級Web標準解決方式2

avi css dsm table 段落 空元素 支持 :after med 精通CSS:高級Web標準解決方式(第2版) 跳轉至: 導航、 搜索 層疊重要度:(也就是說。用戶!important能夠覆蓋inline style)

PostgreSQL即學即用2pdf

pla 通過 3.3 back 系統文件 pga 靈活 多條 ext 下載地址: 網盤下載 內容簡介 · · · · · ·本書將幫助你理解和使用PostgreSQL 這一開源數據庫系統。你不僅會學到版本9.2、9.3 和9.4中的企業級特性,還會發現PostgreSQ

習題3.8 符號配對20 分 浙大版《數據結構2》題目集

檢查 size pro 是否 ring 所有 編寫 bre ace 請編寫程序檢查C語言源程序中下列符號是否配對:/*與*/、(與)、[與]、{與}。 輸入格式: 輸入為一個C語言源程序。當讀到某一行中只有一個句點.和一個回車的時候,標誌著輸入結束。程序中需要檢

習題3.10 漢諾塔的非遞歸實現25 分浙大版《數據結構2》題目集

-i pro 數據結構 但是 int 遞歸實現 記錄 表達 names 借助堆棧以非遞歸(循環)方式求解漢諾塔的問題(n, a, b, c),即將N個盤子從起始柱(標記為“a”)通過借助柱(標記為“b”)移動到目標柱(

習題3.4 最長連續遞增子序列20 分浙大版《數據結構2》題目集

space align font list 格式 ott mar 不能 第一次 給定一個順序存儲的線性表,請設計一個算法查找該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入

習題3.11 表達式轉換25 分浙大版《數據結構2》題目集

lang == lan 包括 設計程序 不用 運算 出現 加減 算術表達式有前綴表示法、中綴表示法和後綴表示法等形式。日常使用的算術表達式是采用中綴表示法,即二元運算符位於兩個運算數中間。請設計程序將中綴表達式轉換為後綴表達式。 輸入格式: 輸入在一行中給出不含

習題3.9 堆棧操作合法性20 分浙大版《數據結構2》題目集

ram xxxxx text -html base logs main 格式 using 假設以S和X分別表示入棧和出棧操作。如果根據一個僅由S和X構成的序列,對一個空堆棧進行操作,相應操作均可行(如沒有出現刪除時棧空)且最後狀態也是棧空,則稱該序列是合法的堆棧操作

習題2.5 兩個有序鏈表序列的合並15 分浙大版《數據結構2》題目集

merge 其中 接口 cnblogs oid color 給定 style bsp 本題要求實現一個函數,將兩個鏈表表示的遞增整數序列合並為一個非遞減的整數序列。 函數接口定義: List Merge( List L1, List L2 ); 其中Lis

習題2.2 數組循環左移20 分浙大版《數據結構2》題目集

problem [] 要求 top out 數據結構 允許 cal right 本題要求實現一個對數組進行循環左移的簡單函數:一個數組a中存有n(>0)個整數,在不允許使用另外數組的前提下,將每個整數循環向左移m(≥0)個位置,即將a中的數據由(a?0?

習題2.8 輸出全排列20 分浙大版《數據結構2》題目集

text ble 存在 base scripts html 數據 ext 運行時 請編寫程序輸出前n個正整數的全排列(n<10),並通過9個測試用例(即n從1到9)觀察n逐步增大時程序的運行時間。 輸入格式: 輸入給出正整數n(<10)。 輸出格

習題2.7 彈球距離15 分浙大版《數據結構2》題目集

double logs lang log scanf col while printf otto 設有一個球從高度為h米的地方落下,碰到地面後又彈到高度為原來p倍的位置,然後又落下,再彈起,再落下…。請編寫函數求初始高度為h的球下落後到基本停下來(高度