Nutch搜索引擎(第2期)_ Solr簡介及安裝
1、Solr簡介
Solr
是一個高性能,采用
Java5
開發(fā),基于Lucene的
全文搜索服務(wù)器
。同時對其進行了擴展,提供了比Lucene更為豐富的查詢語言,同時實現(xiàn)了可配置、可擴展并對查詢性能進行了優(yōu)化,并且提供了一個完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎。
Solr最初由CNET Networks開發(fā),2006 年初,Apache Software Foundation 在Lucene頂級項目的支持下得到了Solr。Solr于2007年1月醞釀成熟,在整個項目孵化期間,Solr穩(wěn)步地積累各種特性并吸引了一個穩(wěn)定的用戶群體、貢獻者和提交人。Solr 現(xiàn)在是 Lucene(Apache 的基于Java的全文本搜索引擎庫)的一個子項目。
1.1 Solr的特性
Solr 是一個擁有像WebService一樣接口的獨立運行的搜索服務(wù)器。你將能夠通過HTTP協(xié)議以 XML格式 將文檔放入搜索服務(wù)器(這個過程叫做索引),你能夠通過HTTP協(xié)議的GET來查詢搜索服務(wù)器并且得到XML格式的結(jié)果。
Solr的 特性 包括:
-
高級的全文搜索功能
-
專為高通量的網(wǎng)絡(luò)流量進行的優(yōu)化
-
基于開放接口(XML和HTTP)的標(biāo)準(zhǔn)
-
綜合的HTML管理界面
-
可伸縮性-能夠有效地復(fù)制到另外一個Solr搜索服務(wù)器
-
使用XML配置達到靈活性和適配性
-
可擴展的插件體系
1.2 Solr的目錄結(jié)構(gòu)
Solr ?程序包的 目錄結(jié)構(gòu) :
-
client ?:包含了一些特定語言調(diào)用Solr 的API 客戶端程序,目前只有Ruby 可供選擇,Java 客戶端叫SolrJ 在src/solrj 中可以找到。
-
contrib ?:在solr 構(gòu)建過程中放置已編譯文件的目錄。
-
dist ?:存放Solr 構(gòu)建完成的JAR 文件、WAR 文件和Solr 依賴的JAR 文件。
-
example ?:是一個安裝好的Jetty 中間件,其中包括一些樣本數(shù)據(jù)和Solr 的配置信息。
-
example/etc ?:Jetty 的配置文件。
-
example/multicore? :當(dāng)安裝Slor multicore 時,用來放置多個Solr 主目錄。
-
example/lib :放置可選的JAR 文件比如對Slor 擴展的插件,這些JAR 文件將會在Solr 啟動時加載。
-
example/webapps ?:Solr 的WAR 文件部署在這里。
-
example/solr :默認安裝時一個Solr 的主目錄。
-
example/solr/bin? :建議將集群復(fù)制腳本放在這個目錄下。
-
example/solr/conf? :放置配置文件。
-
conf/schema.xml :建立索引的schema 包含了字段類型定義和其相關(guān)的分析器。
-
conf/solrconfig.xml :這個是Solr 主要的配置文件。
-
conf/xslt :包含了很多xslt 文件,這些文件能將Solr 的XML 的查詢結(jié)果轉(zhuǎn)換為特定的格式,比如:Atom/RSS。
-
1.3 Solr與Lucene關(guān)系
Lucene 是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構(gòu),提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎
Solr 是一個基于Lucene java庫的企業(yè)級搜索服務(wù)器,包含XML/HTTP,JSON API,高亮查詢結(jié)果,faceted search,緩存,復(fù)制還有一個WEB管理界面。Solr運行在Servlet容器中。所以Solr和Lucene的本質(zhì)區(qū)別有以下三點:搜索服務(wù)器,企業(yè)級和管理。Lucene本質(zhì)上是搜索庫,不是獨立的應(yīng)用程序,而Solr是。Lucene專注于搜索底層的建設(shè),而Solr專注于企業(yè)應(yīng)用。Lucene不負責(zé)支撐搜索服務(wù)所必須的管理,而Solr負責(zé)。所以說,一句話概括Solr: Solr 是 Lucene 面向 企業(yè)搜索應(yīng)用 的 擴展 。
?
1)Solr使用Lucene并且擴展了它
-
一個真正的擁有動態(tài)域(Dynamic Field)和唯一鍵(Unique Key)的數(shù)據(jù)模式(Data Schema)
-
對Lucene查詢語言的強大擴展!
-
支持對結(jié)果進行動態(tài)的分組和過濾
-
高級的,可配置的文本分析
-
高度可配置和可擴展的緩存機制
-
性能優(yōu)化
-
支持通過XML進行外部配置
-
擁有一個管理界面
-
可監(jiān)控的日志
-
支持高速增量式更新(Fast incremental Updates)和快照發(fā)布(Snapshot Distribution)
?
2)Schema(模式)
-
定義域類型和文檔的域
-
能夠驅(qū)動智能處理
-
聲明式的Lucene分析器規(guī)范
-
動態(tài)域能夠隨時增加域
-
拷貝域功能允許對一個域進行多種方式的索引,或者將多個域聯(lián)合成一個可搜索域
-
顯式類型能夠減少對域類型的猜測
-
能夠使用外部的基于文件的終止詞列表,同義詞列表和保護詞列表的配置
?
3)查詢
-
擁有可配置響應(yīng)格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
-
高亮的上下文搜索結(jié)果
-
基于域值和顯式查詢的片段式搜索(Faceted Search)
-
對查詢語言增加了排序規(guī)范
-
常量的打分范圍(Constant scoring range)和前綴式查詢-沒有idf,coord,或者lengthNorm因子,對查詢匹配的詞沒有數(shù)量限制
-
函數(shù)查詢(Function Query)-通過關(guān)于一個域的數(shù)值或順序的函數(shù)對打分進行影響
-
性能優(yōu)化
?
4)核心
-
可插拔的查詢句柄(Query Handler)和可擴展的XML數(shù)據(jù)格式
-
使用唯一鍵的域能夠增強文檔唯一性
-
能夠高效地進行批量更新和刪除
-
用戶可配置的文檔索引變化觸發(fā)器(命令)
-
并發(fā)控制的搜索器
-
能夠正確處理數(shù)字類型,從而能夠進行排序和范圍搜索
-
能夠控制缺失排序域的文檔
-
支持搜索結(jié)果的動態(tài)分組
?
5)緩存
-
可配置的查詢結(jié)果,過濾器,和文檔緩存實例
-
可插拔的緩存實現(xiàn)
-
后臺緩存熱啟:當(dāng)一個新的搜索器被打開時,可配置的搜索將它熱啟,避免第一個結(jié)果慢下來,當(dāng)熱啟時,當(dāng)前搜索器處理目前的請求。
-
后臺自動熱啟:當(dāng)前搜索器緩存中最常訪問的項目在新的搜索器中再次生成,能夠在索引器和搜索器變化的時候高速緩存常查詢的結(jié)果
-
快速和小的過濾器實現(xiàn)
-
支持自動熱啟的用戶級別的緩存
?
6)復(fù)制
-
能夠?qū)⑹褂胷sync傳輸時改變的索引部分有效的發(fā)布
-
使用拉策略(Pull Strategy)來簡化增加搜索器
-
可配置的發(fā)布間隔能夠允許對時間線和緩存使用進行權(quán)衡選擇
?
7)管理接口
-
能夠?qū)彺媸褂茫潞筒樵冞M行綜合統(tǒng)計
-
文本分析調(diào)試器,能夠顯示每個分析器每個階段的結(jié)果
-
基于WEB的查詢和調(diào)試輸出:解析查詢輸出,Lucene的explain方法細節(jié),能夠解釋為何某個文檔打分低,被排除在結(jié)果中等等
2、Solr安裝
2.1 環(huán)境介紹
本次安裝Nutch的環(huán)境介紹:
-
操作系統(tǒng):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
下面是軟件的下載地址:
-
Solr官網(wǎng): http://lucene.apache.org/solr/
-
Tomcat官網(wǎng): http://tomcat.apache.org/
?
備注 :在" Nutch搜索引擎_第 1 期_Nutch簡介及安裝 ",我們已經(jīng)安裝了 JDK和Tomcat,這里我們只需要安裝Solr,并與之前安裝的Nutch相結(jié)合。
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是個使用廣泛的壓縮程序,文件經(jīng)它壓縮后會另外產(chǎn)生具有".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.我當(dāng)前目錄下有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選項發(fā)現(xiàn)music.zip壓縮文件里面有很多目錄和子目錄,并且子目錄中其實都是歌曲mp3文件,我想把這些文件都下載到第一級目錄,而不是一層一層建目錄:
# unzip -j music.zip
?
???? 第三步 :把Solr安裝目錄中dist子目錄下"apache-solr-nightly.war"重名為"solr.war",然后再復(fù)制到到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 "目錄中。用下面命令進行復(fù)制。
?
cp? -r? solr /usr/tomcat
?
?
???? 第六步 :在" /usr/tomcat/conf/Catalina/localhost/ "下創(chuàng)建一個 solr.xml 文件,內(nèi)容如下所示:
?
<?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/ "。
????意外出現(xiàn),錯誤信息: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 。
?
????當(dāng)修改完畢之后,重新啟動Tomcat,然后再次輸入" http://192.168.1.11:8080/solr/ "地址,即出現(xiàn)下面界面。
?
?
????點"Solr Admin"又會進入下面所示的界面。
?
2.3 結(jié)合Nutch
???? 1)方案一
第一步 :啟動Solr,啟動目錄:${SOLR_HOME}/example
?
java -jar start.jar
?
?
???? 第二步 :驗證Solr,在瀏覽器輸入下面內(nèi)容:
?
http://localhost: 8983 /solr/admin/
http://localhost: 8983 /solr/admin/stats.jsp
?
???? 備注 :因為我們是遠程訪問,所以需要把"localhost"改為相應(yīng)機器的IP"192.168.1.11"。
?
?
?
第三步 :nutch與solr集成
需要將 Nutch 目錄" runtime/local/conf " 下的" schema.xml "文件復(fù)制到 Solr 的" /example/solr/conf ?"下 覆蓋 原文件。schema.xml設(shè)置了索引的字段,把 content 項后面的stored=" false " 改為 stored=" true " 后在搜索返回值中就會包含含有關(guān)鍵字的具體內(nèi)容。
?
?
???? 2)方案二
????直接利用我們上面配置在Tomcat中Solr網(wǎng)頁,只需要將 Nutch 目錄" runtime/local/conf " 下的" schema.xml "文件復(fù)制到 Tomcat 的" solr/conf "下 覆蓋 原文件。schema.xml設(shè)置了索引的字段,把 content 項后面的stored=" false " 改為 stored=" true " 后在搜索返回值中就會包含含有關(guān)鍵字的具體內(nèi)容。然后重啟Tomcat服務(wù)器,不然不會生效。
如果,您認為閱讀這篇博客讓您有些收獲,不妨點擊一下右下角的【
推薦
】。
如果,您希望更容易地發(fā)現(xiàn)我的新博客,不妨點擊一下左下角的【
關(guān)注我
】。
如果,您對我的博客所講述的內(nèi)容有興趣,請繼續(xù)關(guān)注我的后續(xù)博客,我是【
蝦皮★csAxp
】。
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
