Apache SolrでPDFをアップロードしてインデックスする

2013-03-16T00:00:00+00:00 その他

普通にドキュメントに書いてるのでそれを参考にしつつやってみた

http://wiki.apache.org/solr/SolrTomcat を参考にして環境構築

とりあえずTomcatにデプロイしてやるのでTomcatを用意。んでSolrをダウンロードしてきてdistディレクトリに入ってるwarファイルをTomcatにデプロイ(/path/to/tomcat/webapps/solr.warな感じで)

で動かしても動かない。設定ファイル等がもろもろ無いので、solrのパッケージにあるexample/solrっていうディレクトリをデプロイ先にコピーする。でその前にsolr/homeっていうのの設定が必要な模様なので/path/to/tomcat/conf/Catalina/localhost/solr.xmlを作成

<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/opt/tomcat/webapps/solr/solr.war" debug="0" crossContext="true">
  <Environment name="solr/home" type="java.lang.String" value="/opt/tomcat/webapps/solr/solr" override="true"/>
</Context>

んまぁドキュメントに書いてますんでそれをそのまま参考にして作成ってな感じ。でまだ動かない。正確には動くんだけどPDFとかを処理してくれるRequestHandlerなやつが動かない。なのでsolrconfig.xmlを修正。場所は/path/to/tomcat/webapps/solr/solr/collections/conf/solrconfig.xmlにあるはず、上記の設定だと

<lib dir="/opt/tomcat/webapps/solr/contrib/extraction/lib" regex=".*.jar" />
<lib dir="/opt/tomcat/webapps/solr/dist/" regex="solr-cell-d.*.jar" />

この2つに直せば良いかと。でこのcontribとdistはsolrパッケージ内にある同名のディレクトリを上記の設定通りにコピーする

多分これでオッケー。サーバーを起動してstartupエラーが出てない事を確認。あとはインデックスに載せたいPDFファイルをcurlでぶん投げるだけ。ぶん投げ先は http://localhost:8080/solr/update/extract

そのドキュメントは http://wiki.apache.org/solr/ExtractingRequestHandler にある

curl "http://localhost:8080/solr/update/extract?literal.id=test1&captureAttr=true" --data-binary @test.pdf -H "Content-Type:application/pdf

な感じで。で http://localhost:8080/solr なDashboardを見てみると

な感じで(他にもやっちゃったんで2つインデックスがありますけど)

んじゃ検索を実行してみるのでインデックスに入れたPDFがFuelPHP関係のやつだったので http://localhost:8080/solr/query?q=fuelphp な感じでアクセスすると

な感じでPDFの内容が解析されてインデックスに載せれたり出来る模様(解析される方式はApache Tikaを使ってる模様)

まぁそんな感じでPDFだとかWord等のデータをインデックスに載せちゃう事もできちゃうっていうオチで

mocha-phantomjs+jscoverageでコードカバレッジ出力 crxmakeを使ってChrome Extensionをビルド