Solr CJKAnalyzerで日本語文章の検索をする その4 CSVファイルで楽々インデキシング

ついにCJKAnalyzerを使って
Solrに日本語ドキュメントをインデキシングするときが来ました。
ココまでくるとデータをPOSTするだけなのですが
ただPOSTするだけだとつまらないのでCSVファイルをPOSTする方法を紹介します。


Solrにインデキシングするには
XML形式のファイルを作ってPOSTするのが標準です。
こんな感じ。



http:/ameblo.jp/kamijiyusuke/
上地雄輔
オフィシャルブログ「神児遊助」


http:/blog.excite.co.jp/shokotan/
中川翔子
中川翔子オフィシャルブログ しょこたん☆ぶろぐ



でも、既にデータが表形式である場合はいちいちXML形式にするのが
面倒だったりします。


そんなときはCSVファイルでPOSTしちゃいましょう。
1行目にフィールドのタイトルを追記します。schema.xmlで定義したものにあわせます。
(フィールド名をPOSTするときの引数で指定する方法もあるようです)

URL,bloger,title
http://ameblo.jp/kamijiyusuke/,上地雄輔,オフィシャルブログ「神児遊助http://ameblo.jp/momokaeri/,桃華絵里,桃華絵里オフィシャルブログ
http://ameblo.jp/daigoblog/,DAIGO,DAIGO OFFICIAL BLOG
http://ameblo.jp/hoshino--aki/,ほしのあき,ほしのあき オフィシャルブログ by アメーバブログ
http://blog.excite.co.jp/shokotan/,中川翔子,中川翔子オフィシャルブログ しょこたん☆ぶろぐ
http://yamamoto-mona.cocolog-nifty.com/,山本モナ,山本モナオフィシャルブログ 山本モナのもなろ〜ぐ
http://manabekawori.cocolog-nifty.com/,眞鍋かおり,眞鍋かおりのココだけの話


POSTの方法です。CSVファイルのあるディレクトリで実行する例です。
CSVファイルの名前はblog.csvです。

# POSTします
% curl http:/localhost:080/solr/update/csv --data-binary @blog.csv -H 'Content-type:text/plain; charset=utf-8'

# コミットします
% curl $URL --data-binary '' -H 'Content-type:text/xml; 
charset=utf-8'


POSTした後にコミットするの忘れないでください。
コミットしないと反映されません。


データが入ったら検索窓から"しょこたん"とか"モナ"とか検索してみて下さい。
検索できると思います。


CJKAnalyzerは以前の記事で書いたように2文字単位でトークナイズするので
検索ワードが2文字以上である必要があります。
1文字の場合は何もヒットしません。
"しょ"でしょこたんのブログはヒットしますが"し"では何もヒットしません。


アプリケーションを作る場合には
検索ワードが1文字の場合は後ろに*をコッソリつけるなどのテクニックで
対応することもできます。"し*"にするってことです。


「CJKAnalyzerで日本語文章の検索をする」シリーズは
この記事で最後です。


次は形態素解析方式かなー。
Solrで形態素解析というとsenを組み込むというのが普通のやり方だと思うんですが
この方法だと後々の拡張性がないので正直あんまりオススメじゃないんですよね。


例えばステミング。
食べる、食べれ、食べよ、食べりゃ、食べん
といった食べるの活用を基本形の"食べる"に変換して
インデキシングする方法をいうのですが
Solrの中で形態素解析するとこういうことがやりにくくなるんですよね。

ちょっと迷ってるので書くまで間が空くかもです。


ではでは