Amazon国別サイト横断検索のために - Apache Solr (その1)
前回で Amazon Product Advertising API については一通りさわったわけだけど、取得したデータのキャッシュと、キーワードの翻訳、類似商品のマージ等をやっていく必要があることもわかった。
この辺りをできるだけ楽に、ということで、キャッシュと商品検索補助のために Apache Solr を調査してみることにした。
セットアップ&動作確認
まずは、Apache Solrのインストールを実施する。
Downloadリンクから辿って、アーカイブファイルをダウンロード、展開すればOK。
2013-08-17時点での最新版は 4.4 だったので、それをそのまま利用する。
まずは、チュートリアル(docs/tutorial.html)に沿って、動作を確認する。
exampleを起動:
$ cd solr-4.4.0/example/ $ java -jar start.jar 0 [main] INFO org.eclipse.jetty.server.Server ? jetty-8.1.10.v20130312 ....
ブラウザからアクセスして起動を確認:
http://localhost:8983/solr/
一通りメニューから確認したところ、問題は無さそう。
サンプルデータの利用と確認
次に、サンプルデータを登録する。
$ cd exampledocs/ $ java -jar post.jar *.xml SimplePostTool version 1.5 Posting files to base url http://localhost:8983/solr/update using content-type application/xml.. POSTing file gb18030-example.xml POSTing file hd.xml POSTing file ipod_other.xml POSTing file ipod_video.xml POSTing file manufacturers.xml POSTing file mem.xml POSTing file money.xml POSTing file monitor.xml POSTing file monitor2.xml POSTing file mp500.xml POSTing file sd500.xml POSTing file solr.xml POSTing file utf8-example.xml POSTing file vidcard.xml 14 files indexed. COMMITting Solr index changes to http://localhost:8983/solr/update.. Time spent: 0:00:00.528
管理画面から、"collection1" を選択して出てくる "Query"タブを選択して、"q"テキストボックスに"solr"を入力して検索すると、結果が1件ヒットする。
"wt"で取得結果のフォーマットを選べて、json が見やすいが、xml の方が細かな情報を拾ってくれるので見比べると面白い。
動作確認は直接URLを指定した方が早い。チュートリアルを見ると、「コア名/select」に続けて "q"パラメータに検索式を、"wt"に結果のフォーマット(xml等)を指定する。
http://localhost:8983/solr/collection1/select?q=solr&wt=xml
検索式の基本ルール
検索式の指定方法の基本は以下の通り。
[対象フィールド名:]キーワード
フィールドが省略された場合は、検索可能なフィールド全てを対象に検索を行う模様。以前は、defaultSearchField で対象を指定していたが、今は廃止されたらしい。
キーワードには範囲指定が可能で、例えば「400まで」は "[* TO 400]" になる。
複数の検索式を指定する場合は、AND/OR/NOTで論理式を組み立てられる。指定しない場合は OR 指定と同義。また、"+"をキーワードの前に付ける事で必須であることを指定可能。例えば、Aは存在する事が必須(must)で、Bは存在しなくても良い(may)、という検索式は以下のようになる、
+A B
細かなところは、SolrQuerySyntaxを参照して辿っていけばよい。(Query Parser Syntaxが基本)
後は、"fl"パラメータにフィールド名を指定する事で、取得するフィールドを選択したり、"sort"パラメータで並べ替えを行ったり出来る。
他にも色々とあるが、まあ、こんなところで。