こんにちは、Curious Vehicle中鉢です。
前回はSolrCellを経由してHTMLの内容をインデキシングしてみました。
今回はその他いろいろなファイルをインデキシングしたり、
パラメータによってSolrへのインデキシングの内容を
制御したりしてみようと思います。
いろいろなファイルを読み込ませてみる
前回はHTMLファイルを読み込ませてみて
- title
- links
- content-type
- content
- _version_
- Officeドキュメント
- オーディオファイル(mp3)
- ビデオファイル(mpg)
- 画像ファイル(png)
- メールファイル(eml)
- content(ファイルの内容)
- content-type(ファイルのタイプ)
パラメータによるインデキシングの制御
前回は以下のような感じでhtmlをパースしました。
$ cd apache-solr-4.0.0 $ cd docs/solr-cell/ $ curl "http://localhost:8983/solr/update/extract?literal.id=doc1&commit=true" -F "myfile=@index.html"
この「/update/extract」のハンドラに対してどういったパラメータが渡せるのかを見ていきます。
fmap.<source_field>=<target_field> | デフォルトのフィールド以外のフィールドにデータをインデキシングしたい場合に指定する。source_fieldがデフォルトのフィールド名、target_fieldがこちら側で指定したいフィールド名になります。 |
boost.<fieldname>=<float> | フィールドのブースト値の指定。 |
literal.<fieldname>=<value> | valueで指定した値をfieldnameにインデキシングする。 |
uprefix=<prefix> | 既定のフィールド(content等)を作成する際にフィールド名に付与するプレフィクスを指定する。ダイナミックフィールドをあわせて設定しておくとすべての既定フィールドを登録できる。(※既定のフィールドを登録しようとしてSolr側にそのフィールドの定義がない場合には無視されます。) |
extractOnly=(true|false) | Solrに対してのインデキシングを行わず、テキストの抽出のみを行います。 |
resource.name=<filename> | ファイル名を指定。このパラメータを指定することにより、Tika側でMIMETYPEの判断をする際のヒントとして利用することが出来ます。また、resourcenameというフィールドを追加することができるようです。 |
lowernames=(true|false) | インデキシングする際のフィールド名を小文字に(ハイフンはアンダースコアに)正規化する。デフォルトはtrue |
literalsOverride=(true|false) | literal<.fieldname>で指定した値を上書きするか追加するかの選択。(Solr4.0から) |
resource.password=<password> | パスワードのかかったファイルをインデキシングするための設定。こちらはパスワードをURLパラメータで指定(Solr4.0から) |
passwordsFile=<file name> | パスワードのかかったファイルをインデキシングするための設定。こちらはファイルでパスワードを指定する。パスワードファイルはsolrのクラスパスもしくはconfディレクトリに置く必要があるようです。また、resource.nameに値を指定しないとファイルをpdfと判定してくれない場合があるため、このパラメータを利用する際はresource.nameを一緒に指定しておくとよさそうです。(Solr4.0から) |
extractFormat=xml|text | extractOnlyのパラメータを指定していた場合に展開したデータを返すフォーマットを指定。 |
ざっとこんなパラメータが利用可能になっています。
「テキストの内容はcontentフィールドではなく別途用意してある形態素フィールドに読み込ませたい」とか、「ドキュメントのIDをこちらで指定するものにしたい」という要望は必ずあると思うのでfmapやliteralあたりの使用例を下記に挙げておきます。
literalは前回のindex.htmlを利用した際に使っていましたね。
以下のように「literal.id=doc1」と指定することにより、idフィールドにdoc1が登録されるようになります。
$ curl "http://localhost:8983/solr/update/extract?literal.id=doc1&commit=true" -F "myfile=@index.html"
fmapは少しややこしく、fmap.<source_field>=<target_field>という形をとるのですがsource_fieldの部分に、先のファイル読み込み結果の画像に書かれているフィールド名を、target_fieldの部分にインデキシングしたいフィールド名を記載します。たとえば「content」の内容をsolr側の「japanese_text」というsolr側で用意している形態素フィールドへインデキシングしたい場合には
$ curl "http://localhost:8983/solr/update/extract?literal.id=doc1&fmap.content=japanese_text&commit=true" -F "myfile=@tutorial.html"
こんな感じでコマンドをたたきます。これで、japanese_textというフィールドにcontentの内容がインデキシングされるようになります。
この他にも4つほど利用可能なパラメータがあるのですが現段階でまだ動作が確認できてないため、動作が確認出来次第公開していきます。
さて、今回はファイルごとのフィールドデータとパラメータによるインデキシングの制御について見てきました。次回はSimple Post Toolによるインデキシングを見ていきたいと思います。
それではまた!
コメントを残す