Apache Solr簡介、配置(tomcat測試)

導言

說起Apache Lucene,可以說無人不知,無人不曉,但是說道Apache Solr,恐怕知道的不多。看看Apache Solr的說明:

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

在本篇文章中,我們先看看Solr向我們承諾了什麼,或者說Solr宣稱的特性們。


無廢話Solr

Solr是一個擁有象WebService一樣接口的獨立運行的搜索服務器。你將能夠通過HTTP協議以XML格式將文檔放入搜索服務器(這個過程叫做索引),你能夠通過HTTP協議的GET來查詢搜索服務器並且得到XML格式的結果。Solr的特性包括:
  • 高級的全文搜索功能
  • 專爲高通量的網絡流量進行的優化
  • 基於開放接口(XML和HTTP)的標準
  • 綜合的HTML管理界面
  • 可伸縮性-能夠有效地複製到另外一個Solr搜索服務器
  • 使用XML配置達到靈活性和適配性
  • 可擴展的插件體系 

Solr使用Lucene並且擴展了它!

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

Schema(模式)

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

查詢

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

核心

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

緩存

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

複製

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

管理接口

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

-------------------------------------------------------------------------------------------配置------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



下載solr(1.4.1)以及tomcat(6.0.35)

解壓solr將目錄下apache-solr-1.4.1\dist\的apache-solr-1.4.1.war文件複製到apache-tomcat-6.0.35\webapps\下,並改名爲:solr.war

在tomcat目錄下:

apache-tomcat-6.0.35\conf\Catalina\localhost\

新增solr.xml

內容爲:

<Context docBase="/apache-solr-1.4.1.war" debug="0" crossContext="true" > 
<Environment name="solr/home" type="java.lang.String" value="E:/source/apache-solr-1.4.1/example/solr" override="true" /> 
</Context>


【.注意】

Context docBase=“solr.war的目錄,如果放在了/tomcat安裝目錄/webapps下,則是這麼/solr.war

Environment name="solr/home"必須這麼寫,可能solr默認爲solr的home目錄(記住必須這麼寫)。

Environment  value="E:\source\apache-solr-1.4.1\example\solr" 值,是solr目錄,就是包括bin,conf等目錄,一定要有.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

啓動tomcat.輸入 http://localhost:8080/solr/admin/出現管理頁面。





若出現錯誤

報錯: java.lang.RuntimeException: Can't find resource 'solrconfig.xml' in classpath or 'solr\.\conf/', 

現將解決辦法記錄下來:

1、將solr目錄下,dist目錄中的apache-solr-3.4.0.war 改名爲solr.war文件部署到tomcat的webapps目錄中

2、將solr目錄中example/solr子目錄中的data和conf兩個目錄拷貝到第一步中webapps下的solr目錄中(需要啓動一次tomcat,會自動                 將war解壓,這樣就會生成solr目錄)

3、修改tomcat的catalina.bat文件,在開始的地方添加JAVA_OPTS如下:

set JAVA_OPTS=%JAVA_OPTS% -Dsolr.solr.home=D:\works\jee\apache-tomcat-6.0.20\webapps\solr

注意,將solr.solr.home變量添加到系統環境變量中也不行,需要將其作爲java的啓動選項。

 

最後,重啓tomcat,可以看到沒有報錯信息,接下來可以測試了。


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