Solr4.4的安裝與配置

來源:互聯網
上載者:User

標籤:Lucene   style   blog   http   io   os   使用   ar   java   

最近準備用Solr搭建項目,所以對其作了一些瞭解,我採用的是Solr4.4版本;這個版本的Solr相對於以前的版本改變很大,這裡記一下自己安裝與配置的過程。

網上很多關於Solr的教程都很老了,很多教程居然還是基於Solr1.3或者1.4版本在講解,有些資料的內容看了再對比目前的版本會不知所云。

盡量多看官方提供的wiki文檔:http://wiki.apache.org/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 建立的索引。

下載解壓

官方網址:http://lucene.apache.org/solr/

下載列表:http://www.apache.org/dyn/closer.cgi/lucene/solr/4.4.0

將下載得到的solr-4.4.0.zip壓縮包解壓,會看到如下目錄結構:

其中對我們有用的是example和dist目錄中的內容。

安裝與配置

首先將exmaple/webapps中的solr.war包解壓開複製到Tomcat的webapps中,或者直接將solr.war包直接複製到Tomcat的webapps中,然後啟動Tomcat使其解壓開再將war包刪除。這時如果啟動Tomcat是會報錯的,因為我們沒有設定solr_home(也就是索引和設定檔所在的目錄)。

下面配置一下:

solr_home的設定有好幾種方式,百度一下就可以了,這裡我採用的是在solr應用的web.xml檔案中配置的方式。開啟solr/WEB-INF/web.xml檔案,找到如下內容:

[html] view plaincopy

  1. <env-entry>
  2. <env-entry-name>solr/home</env-entry-name>
  3. <env-entry-value>../webapps/solr/solr_home</env-entry-value>
  4. <env-entry-type>java.lang.String</env-entry-type>
  5. </env-entry>

這段內容初始時是被注釋了的,解開注釋後將<env-entry-value>節點內容改為自己磁碟上某個位置即可,這裡我採用的是相對位置,絕對位置當然也是可以的。

配置完了還需要在配置的路徑處放置一個檔案夾作為SOLR_HOME(solr的example中已經提供),我們將example/solr目錄拷貝到solr項目目錄下(這裡是%TOMCAT_HOME%/webapps/solr/),並重新命名為solr_home(根據自己的配置決定)。

配置日誌輸出

這時如果啟動Tomcat(通過調用startup.sh指令碼),仍然無法正常啟動,而且錯誤只有幾行,如下所示:

[java] view plaincopy

  1. 2013-8-9 15:49:05 org.apache.catalina.core.StandardContext start 
  2. 嚴重: Error filterStart 
  3. 2013-8-9 15:49:05 org.apache.catalina.core.StandardContext start 
  4. 嚴重: Context [/solr] startup failed due to previous errors 

給出的錯誤資訊不明不白,這時如果我們換一種方式來啟動Tomcat就會發現錯誤輸出了,在命令列將目前的目錄切換到%TOMCAT_HOME%/bin,執行如下的命令:

[java] view plaincopy

  1. java -jar bootstrap.jar 

這樣可以看到命令列輸出如下的異常資訊(省略部分內容):

很顯然,提示我們找不到日誌相關的jar包,還提示我們去看solr的相關wiki連結:http://wiki.apache.org/solr/SolrLogging

到該Wiki頁面中我們會找到如下幾段文字說明:

上面解釋了在新版本的solr中日誌輸出方面做了什麼變動,以及如何解決。

首先複製example/lib/ext目錄中的jar包到項目的classpath下,這裡的example就是前面解壓solr壓縮包得到的,solr應用war包也是從該目錄下得到的;我們可以將這些jar包放到%TOMCAT_HOME%/lib下,也可以將它們放到項目的lib下(在我的電腦上是/opt/tomcat-6.0.37/webapps/solr/WEB-INF/lib);

然後將example/resources/log4j.properties也拷到classpath(我在/opt/tomcat-6.0.37/webapps/solr/目錄下建立了一個classes目錄,放log4j.properties放了進去);

然後再啟動Tomcat,這時就沒有異常拋出了,solr成功啟動,我們通過瀏覽器進行訪問,你將會看到如下畫面:

在Solr中使用中文分詞

使用全文檢索索引,中文分詞是離不開的,這裡我採用的是mmseg4j分詞器。mmseg4j分詞器內建了對solr的支援,最新版本可支援4.X版本的sorl,使用起來很是方便。

GoogleCode地址:http://code.google.com/p/mmseg4j/

使用mmseg4j中文分詞器,首先需要在schema.xml檔案中配置一個fieldType節點(其它的中文分詞器也類似),如下所示:

[html] view plaincopy

  1. <!-- 中文分詞 -->
  2. <fieldType name="text_zh" class="solr.TextField" positionIncrementGap="100">
  3. <analyzer>
  4. <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" />
  5. </analyzer>
  6. </fieldType>

然後就可以在field節點中引用該filedType了,定義樣本filed節點如下:

[html] view plaincopy

  1. <field name="title" type="text_zh" indexed="true" stored="true" multiValued="true"/>
  2. <field name="content" type="text_zh" indexed="true" stored="false" multiValued="true"/>

然後在瀏覽器裡試一下效果:

總結

下面總結一下Solr4.4.0的安裝與配置步驟:

  1. 準備Java和Tomcat;
  2. 下載並解壓solr-4.4.4.zip得到solr-4.4.0目錄;
  3. 拷貝solr-4.4.0/example/webapps/solr.war包到%Tomcat_Home%/webapps目錄,啟動Tomcat使其解壓,刪除solr.war包;
  4. 開啟%Tomcat_Home%/webapps/solr/WEB-INF/web.xml檔案,配置SOLR_HOME,按照SOLR_HOME的配置拷貝solr-4.4.0/example/solr目錄(該目錄即作為solr_home);
  5. 拷貝solr-4.4.0/example/lib/ext下所有的jar包到項目的classpath下,同時拷貝log4j.properties設定檔到classpath;
  6. 配置中文分詞器。

Solr4.4的安裝與配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.