SolandraでWordやPDFなどのドキュメントをCellで取りこんで全文検索できるようにしてみる。

ちなみにSolandraにはCellが入っていないのでsolr本家に含まれるCellを
Solandraでも使えるようsolrconfig.xmlで指定してあげる。
とりあえずsolr本家ダウンロード
wget http://ftp.kddilabs.jp/infosystems/apache/lucene/solr/3.6.1/apache-solr-3.6.1.tgz
tar xvf apache-solr-3.6.1.tgz
Solandraのsolrconfig.xmlに追記
vi solrconfig.xml
<lib dir="/usr/local/apache-solr-3.6.1/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="/usr/local/apache-solr-3.6.1/dist" regex="apache-solr-cell-\d.*\.jar" />
サンプルにIPAのサイトからyouryou.docをダウンロードする。
wget www.ipa.go.jp/software/2007/document/youryou.doc
取りこむ
curl -H "Content-type:text/xml; charset=utf-8" 'http://localhost:8983/solandra/skype/update/extract?extractOnly=true' --data-binary @youryou.doc > youryou.xml
上手く取り込めれば以下のようにXMLで出力される。


0138<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
name="Revision-Number" content="1"/>
<meta name="Comments"
content=""/>
<meta name="Last-Author" content="k-kumaga"/>
<meta
name="Template" content="Normal.dot"/>
<meta name="Page-Count"
content="1"/>
<meta name="subject" content=""/>
<meta
name="Application-Name" content="Microsoft Office Word"/>
<meta
name="Author" content="IPA"/>
<meta name="Word-Count"
content="710"/>
<meta name="xmpTPg:NPages" content="1"/>
<meta
name="Edit-Time" content="600000000"/>
<meta name="Creation-Date"
            content="2007-02-01T05:56:00Z"/>
<meta
…
このままSolrに取り込もうとすると上記XMLのnameフィールドのRevision-NumberやCommentsを格納するためにSolrに色々なフィールドを用意しなければいけないがそれは面倒なのでdynamicFieldとリクエスト時のパラメータにuprefixを追加して全てのフィールドをとりあえずs_*というフィールドで取り込めるようにする。
schema.xmlにdynamicFieldを設定する。
vi schema.xml

また取り込む時のパラメータにuprefixでs_を指定しs_*のdynamicFieldに全て追加出来るようにする。
あとSolandraはunique_idが必須なのでユニークIDを指定出来るような仕組みを用意しておく必要がありそう。
curl -H "Content-type:text/xml; charset=utf-8" 'http://localhost:8983/solandra/skype/update/extract?literal.id=ユニークなID&uprefix=s_&commit=true' --data-binary @youryou.doc
上記のliteral.フィールド名=値に当たるところはそのままSolrに取り込まれる。
以上でWordなどのdocファイルが格納できる。

参考:
Apache Solr入門 ―オープンソース全文検索エンジン
Apache Solr入門 ―オープンソース全文検索エンジン
クチコミを見る