2009年7月22日星期三

Solr 一日使用經驗速記

1. Solr 中 example 的範例用的是 Jetty 做 servlet container 而不是用 tomcat。

2. Solr example 中建立 xml 檔案的 index 那支程式 (post.jar) 預設只接受 port 8983 (the default port for Jetty)。若要改成 tomcat 預設的 8080 可以用 Durl 指定 host name 及 port,如:
java -Durl=http://localhost:8080/solr/update -jar post.jar filename.xml
或者直接改這支程式:
/src/java/org/apache/solr/util/SimplePostTool.java
把 port 改成 8080,再 build 成 jar file。

3. 建 index 的過程發現一件神奇的事。同樣用 example 裡的 post.jar 這支程式,在 Jetty + Solr 下對 xml 建 index 比 tomcat + Solr 要快很多很多倍。我實驗用的 xml file 包括 37,989 個要建 index 的 document,使用前者 5秒內可以建完 index, 用後者建了 20 min 以上還沒建完 (最後手動放棄所以不曉得實際上多久才建得完)。經驗:用 Jetty + Solr 建 index,建完再把結果複製到 tomcat 的 index 裡會省掉非常非常多的時間。

4. 若在 xml 建 index 的過程中發生 error,output 的錯誤訊息極為有限,很難由錯誤訊息猜出哪裡出了問題。本日經驗:極有可能是因為 schema.xml 跟要建 index 的 xml 檔 field name 不符。修改 schema.xml 後得重開 Servlet 才能使變更生效 (但若只是要新建/刪除/變更 index 則不用重啟 Servlet)。

5. 要建立 index 的 xml 檔若含有特殊字元 (如:中日韓文),記得在第一行要加註 encoding 為 utf8,如:

否則 post.jar 會停不下來可是又不 output 錯誤訊息,很容易誤以為是還沒建完 index 而枯等。

useful links:
● Install tomcat on Ubuntu: http://www.howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu/
● Install Solr with Apache: http://wiki.apache.org/solr/SolrTomcat#head-7036378fa48b79c0797cc8230a8aa0965412fb2e
● Add plugin in Solr: http://www.lietu.com/doc/solrRESTful.htm

0 意見: