Solr 教學 (1) – 安裝篇

Solr 真是一個不錯的東西,想說架一個來玩,安裝時花了很多時間,網路上大部分查到的都是直接用 jetty 來執行,問了同事之後得知可以把 example 下的 solr.war 檔案直接拉到 tomcat 目錄下,但怎麼試就是沒辦法,這篇記錄 solr 與 tomcat 搭配的過程。

花了不少時間,怎麼 war 檔不是直接拉到 tomcat 目錄下就可以使用 … 這安裝也太麻煩了,先記錄下來,如果有什麼意外要再灌一次才知道怎麼弄。苦痛的記憶開始 … 小蛙的環境是:Ubuntu 13.04 64bit + Solr 4.5.0 + tomcat 7。

安裝 tomcat 7

apt-get install tomcat7

下載 solr 4.5,假設放在 /usr/src 下

cd /usr/src
wget http://apache.stu.edu.tw/lucene/solr/4.5.0/solr-4.5.0.zip

解壓縮 (如果沒有 unzip 就 # apt-get install unzip,不想安裝的話也可以到 這邊下載 tgz 版本)

unzip solr-4.5.0.zip

複製需要的 war 檔案到 tomcat 目錄下

cd solr-4.5.0
cp ./example/webapps/solr.war /var/lib/tomcat7/webapps/solr.war

建立 solr.xml 設定檔,底下的 /opt/solr 是 solr 的資料放置目錄

vim /var/lib/tomcat7/conf/Catalina/localhost/solr.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/solr" docBase="/var/lib/tomcat7/webapps/solr.war" crossContext="true" privileged="true" antiResourceLocking="false">  
  <Environment name="solr/home" type="java.lang.String" value="/opt/solr" override="true" />
</Context>

建立 solr 資料目錄,並新增 solr.xml 設定檔

mkdir -p /opt/solr
vim /opt/solr/solr.xml
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">    
  <cores adminPath="/admin/cores">        
  <core name="example" instanceDir="example" />        
  <!-- adding extra cores!
  <core name="another_example" instanceDir="another_example_directory" />-->
  </cores>
</solr>

更改擁有者及群組

chown -R tomcat7:tomcat7 /opt/solr/example

複製必須的設定檔

cp /usr/src/solr-4.5.0/example/solr/collection1/conf/*.txt /opt/solr/example/conf/
cp /usr/src/solr-4.5.0/example/multicore/core0/conf/*.xml /opt/solr/example/conf/

增加以下設定 (參考資料1,先照著做)

vim /opt/solr/example/conf/solrconfig.xml
<requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy"></requestHandler>
<requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" />
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
	<lst name="defaults">
		<str name="spellcheck.onlyMorePopular">false</str>
		<str name="spellcheck.extendedResults">false</str>
		<str name="spellcheck.count">1</str>
	</lst>
	<arr name="last-components">
		<str>spellcheck</str>
	</arr>
</requestHandler>
<searchComponent name="suggest" class="solr.SpellCheckComponent">
	<lst name="spellchecker">
		<str name="name">suggest</str>
		<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
		<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
		<str name="field">title</str>
		<str name="buildOnCommit">true</str>
	</lst>
</searchComponent>
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">
	<lst name="defaults">
		<str name="spellcheck">true</str>
		<str name="spellcheck.dictionary">suggest</str>
		<str name="spellcheck.count">10</str>
	</lst>
	<arr name="components">
		<str>suggest</str>
	</arr>
</requestHandler>

這應該是一種報應,小蛙設定 Eclipse RSE 時不小心做了刪除動作,結果就把整個 tomcat/webapps 全刪了 … 照著上面的步驟重做一次後發現漏掉這一步 = =,把執行 solr 需要的 JAR 加入到 lib 資料夾中

cp /usr/src/solr-4.5.0/example/lib/ext/* /var/lib/tomcat7/webapps/solr/WEB-INF/lib/

重新啟動 tomcat

service tomcat7 restart

到這邊大致上就完成囉!如果沒有改 tomcat port 的話,http://your_domain:8080/solr 就可以連到 solr 囉!裡面只有剛剛複製的 collection1,之後開始新增 / 修改 / 刪除 資料時,再把過程記錄下來!

Solr 系列文章:

參考資料:

  1. How to install SOLR 4.0 Cloud with Tomcat 7 on Ubuntu 12.04 LTS @ nodeX
    http://www.nodex.co.uk/article/10-12-12/how-to-install-solr-4-0-cloud-with-tomcat-7-on-ubuntu-12-04-lts

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料