第0回Solr実習ワークショップ @ 米国インディアナポリス #c4l11jp #solr

まさかのフライトキャンセルでインディアナポリスに足止めされた1日をつかって、Solrワークショップを緊急開催。
2
Masao Takaku @tmasao

つうわけでフライトキャンセルにつき空港で仕事でもするか。。。いっそ、ここでSolrワークショップでも開催するか?> @yegusa

2011-02-12 00:04:10
Kosuke Tanabe @nabeta

というわけで、足止めを食ったぼくたちは、空き時間を使ってSolrの使い方を勉強することにしました #c4l11jp

2011-02-12 04:15:03
Masao Takaku @tmasao

Solr実習はまずはチュートリアルを読むところから... http://lucene.apache.org/solr/tutorial.html #c4l11jp

2011-02-12 04:45:26
Yuka Egusa @yegusa

まずは、Solrの入手から。最新バージョンは1.4.1 #c4l11jp

2011-02-12 05:04:18
Masao Takaku @tmasao

とりあえずはネットワークが遅いようなのでローカルのWindows上でテストする。ダウンロードしてきたSolrを展開し、Java 1.6以上のバージョンが入っていることを確認した。 #c4l11jp

2011-02-12 05:11:54
Yuka Egusa @yegusa

解凍に結構時間かかるのね。まだ、解凍してる。。。 #c4l11jp

2011-02-12 05:13:37
Masao Takaku @tmasao

exampleフォルダに移動して java -jar start.jar を起動。Windowsファイアウォールのアクセスを許可にOkして、Solrサーバの起動が完了。 http://localhost:8983/solr/ にて管理画面が開くことを確認。 #c4l11jp

2011-02-12 05:17:24
Yuka Egusa @yegusa

おかしい、最初っからこける。なんでログフォルダの書き込みができない?なぜ、読み込み専用になってるのこのフォルダ。。。 #c4l11jp

2011-02-12 05:22:37
Yuka Egusa @yegusa

そもそも、解凍するところからつまずく。ありがちな展開。。。しょうがないので、7-zipのインストールから。でもそういえば、cygwinにtarで解凍できるんじゃんということに気づく。。。 #c4l11jp

2011-02-12 05:32:16
Yuka Egusa @yegusa

あとは、チュートリアル通りにすすむ。 cd example, java -jar start.jar, http://localhost:8983/をみる #c4l11jp

2011-02-12 05:33:19
Masao Takaku @tmasao

example/exampledocsディレクトリ下で、java -jar post.jar *.xml などとしてXMLファイルをインデックスするテスト。 #c4l11jp

2011-02-12 05:35:03
Masao Takaku @tmasao

管理画面のインタフェースから検索ができる。 http://bit.ly/hVgRnA 検索結果はXMLでかえってくるのでそのまま適当なクライアントプログラムから扱える。 #c4l11jp

2011-02-12 05:36:48
Yuka Egusa @yegusa

ここからは、メモるの大変だな。。。データの登録をやってみている。cd exampledocs; java -jar post.jar monitor.xml ってかんじで登録する #c4l11jp

2011-02-12 05:39:25
Masao Takaku @tmasao

登録された文書のXMLデータ(*.xml)の中身をみると、追加・コミットなどのSolrへの投入指定用の要素と、各文書ごとにフィールド定義+テキスト情報がはいっていることがわかる。 #c4l11jp

2011-02-12 05:40:11
Yuka Egusa @yegusa

example/solr/conf/schema.xml でスキーマを設定する。データ型とかテキスト型とかブーリアン型とかを設定できる。 #c4l11jp

2011-02-12 05:48:51
Masao Takaku @tmasao

入力データの処理の概要を知るために、Solrインデックスのスキーマ定義:example/solr/conf/schema.xmlを見てみる。数値・日付等に加えて、テキスト型の索引処理方式(analyzer:分かち書き、filter:ストップワード)も指定可能。 #c4l11jp

2011-02-12 05:55:19
Masao Takaku @tmasao

schema.xml にはデータ型を指定する types 要素に加えて、入力データのフィールドごとのデータ型や索引方式を指定する fields 要素がある。 #c4l11jp

2011-02-12 05:59:20
Masao Takaku @tmasao

schema.xml中にて、field要素の indexed 属性にて索引付けするかどうか、stored 属性でその項目の値そのものをインデックスに保持するかどうかを指定可能。 #c4l11jp

2011-02-12 06:06:28
Yuka Egusa @yegusa

ただいま、Query構文についてやっています。後方一致を実現するのはちょいと面倒らしい #c4l11jp

2011-02-12 06:31:17
Masao Takaku @tmasao

http://bit.ly/fuhc86 http://bit.ly/e4rvHH クエリ書式はLuceneのものを基本として、Solr独自の拡張が追加されている。 #c4l11jp

2011-02-12 06:33:14
Masao Takaku @tmasao

注意が必要なのは、Date型はDateTimeまで完全形式で指定する必要があるため、単純な日付形式(2011-02-07 等)での検索はできない。アプリケーション側で工夫する必要がある。 #c4l11jp

2011-02-12 06:35:57
Masao Takaku @tmasao

Lucene以来、後方一致検索は標準では対応していないので、デフォルトの schema.xml の text_rev フィールド定義にあるような指定したフィールドとして指定しておく必要がある。 #c4l11jp

2011-02-12 06:37:29
Masao Takaku @tmasao

日本語データの検索には標準装備のCJKAnalyzer(bigram)設定を追加。textフィールド型に<analyzer type="index" class="org.apache.lucene.analysis.cjk.CJKAnalyzer">とする。 #c4l11jp

2011-02-12 06:55:55
Masao Takaku @tmasao

Solrサーバを再起動したうえで、管理画面のAnalyseから分かち書きされることを確認する。日本語データをためしに作ってみて、post.jarでインデックスし直すして、管理画面から検索ヒットするのを確認! #c4l11jp

2011-02-12 06:58:03