LuceneはJavaで書かれた検索エンジンです。インデックスを作成するインデクサと、検索を行うエンジンの二つでなっています。「辞書」と呼ばれるファイルを用いて、あらかじめ検索対象からインデックスを作成しておき、検索時にはインデックスを検索するという仕組みです。アプリで検索機能を利用したくて使ってみました。
Luceneを使うにはあらかじめインデックスを作成しておきますが、そのための辞書も 自分で作成しておく必要があります。そのためのライブラリが、Senと呼ばれるモノです。SenはJavaで実装された形態素解析器です。Sen ProjectのWEBSiteはこちら。
このサイト より
をダウンロードします。適当なところに上のアーカイブは解凍しておきましょう。
辞書を作成するために ipadic-2.6.0.tar.gz というファイルが必要なのですが、インターネットにアクセスできる環境では自動的にダウンロードされてきます。イントラの人は
http://chasen.naist.jp/stable/ipadic/
よりipadic-2.6.0.tar.gz をダウンロードし、senのdicディレクトリにipadic-2.6.0.tar.gzのままおいておきましょう。
辞書を作成するには以下のコマンドを実行します。
>cd c:/javatools/sen/ <-senを解凍したディレクトリ >cd dic >ant -Dperl.bin=c:/cygwin/bin/perl.exe
以上で辞書が作成されます。
ここから先はコマンドプロンプトでインデックス作成、検索を行うインタフェースと、JavaのAPI経由でインデックス作成、検索を行うインターフェースの2通りが存在します。
ためしにEclipseのworkspaceのインデックスを作成します。コマンドプロンプトで
> set SEN_HOME=c:\javatools\sen > set LUCENE_HOME=c:\javatools\lucene-ja > set PATH=%PATH%;%LUCENE_HOME%\bin > mktextindex.bat -create -index hoge C:\workspace
でインデックスが作成されます。
オプションの意味は
最後の引数C:\workspaceはドキュメントが格納されたディレクトリです。
Luceneのサイトを色々見ましたが、どのサイトを拝見してもディレクトリ階層上の「ファイル」を一単位として検索していましたが、Luceneはその形式に依存していないんですね。つまり、Documentクラスのインスタンスが何と一対一対応するかは、インデックスを作成するやり方で決まるわけです。Documentクラスをファイル単位で作成すると、上のようなファイルを対象にした全文検索となります。DocumentクラスをDBのRow単位とすると、レコードを対象とした検索になります。
この記事は
現在のアクセス:14260