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 系列文章:
- Solr 教學 (1) – 安裝篇
- Solr 教學 (2) – tomcat 7 以帳號密碼限制存取頁面
- Solr 教學 (3) – 以 Remote Address Filter 限制存取
- Solr 教學 (4) – 使用 DataImport 匯入資料庫資料
- Solr 教學 (5) – 建立新的 Core
參考資料:
- 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