solr-rubyをMacOSXにインストール
- solr-rubyとは
- rubyで書かれたsolrクライアントライブラリ。solrに対するHTTPリクエストとレスポンスを処理する。http://wiki.apache.org/solr/solr-ruby
インストール手順
1. apache-solr-1.2.0のインストール
以下のURLからapache-solr-1.2.0.zipをダウンロードして解凍する。
http://www.apache.org/dyn/closer.cgi/lucene/solr/
2. SVNクライアントを使って以下のURLからチェックアウト。
$ svn co http://svn.apache.org/repos/asf/lucene/solr/trunk/client/ruby/solr-ruby
3. solr-rubyで使用するライブラリをインストール
$ sudo port install libxml2 $ sudo port install rb-libxml2 $ sudo gem install libxml-ruby $ sudo gem install hpricot
JRubyではネイティブメソッドを使用するlibxml-rubyをインストールできない。
4. スクリプトの修正
4.1 lib/solr/importer/xpath_mapper.rb
collectが追加されないので、field_dataを変更:
def field_data(doc, xpath) nodes = doc.find(xpath.to_s) result = [] nodes.each do |node| case node when XML::Attr result << node.value when XML::Node result << node.child.to_s end end nodes = nil result end
4.2 test/unit/changes_yaml_test.rb
以下のrequireを追加:
require 'yaml'
5. ユニットテスト
$ rake test_units
6. 結合テスト
apache-solrのexampleディレクトリに移動:
$ cd apache-solr-1.2.0/example
solrのポートを8888に変更:
$ vi etc/jetty.xml <Call name="addConnector"> <Arg> <New class="org.mortbay.jetty.bio.SocketConnector"> <Set name="port">8888</Set> <Set name="maxIdleTime">50000</Set> <Set name="lowResourceMaxIdleTime">1500</Set> </New> </Arg> </Call>
solr-1.2.0にはAdminHandlersがないので、
sorl-ruby/test/conf/solrconfig.xml
にある/admin/に対するrequestHandlerの指定を
<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
以下に変更する。
<requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" /> <requestHandler name="/admin/system" class="org.apache.solr.handler.admin.SystemInfoHandler" /> <requestHandler name="/admin/plugins" class="org.apache.solr.handler.admin.PluginInfoHandler" /> <requestHandler name="/admin/threads" class="org.apache.solr.handler.admin.ThreadDumpHandler" /> <requestHandler name="/admin/properties" class="org.apache.solr.handler.admin.PropertiesRequestHandler" />
solr.solr.homeをtestディレクトリに指定してsolrを起動:
$ java -Dsolr.solr.home=/Users/xxxx/solr-ruby/test -jar start.jar
テスト実行:
$ rake test_functinals