2011年2月12日土曜日

Python上での全文検索

Pythonで全文検索したくて少し調べた。

pyluceneとWhooshというのがあるらしい。

pyluceneはJavaで作られた全文検索エンジンのluceneの
pythonバインディング版。
jccというpythonからJavaを呼び出すためのライブラリを利用している。
(jccはpyluceneのために作られた模様)
なので実処理はJavaで行われている。

Whooshは後発でpurepythonで書かれている。
LuceneのAPIに似せたAPIでLuceneを知っている人であれば割ととっつきやすいのかも。


どっちも少し触ってみた感想は、


pylucene
長所
・Luceneを知っていればAPI同じで学習のオーバーヘッドが少ない。
・Luceneからも読める。つまりJavaとインデックスを共有できる。(試してないけど当然Solrからも使えるはず)
短所
・インストール面倒。(特にJCC)
・起動処理が遅い。(JCCのinitVMでJavaVMの起動に時間がかかっている印象)


Whoosh
長所
・インストール簡単・
・使い方も結構分かりやすい。
短所
・日本語の機能的にLuceneより劣る(日本語用のAnalyzerが不足している)
不明
・速度的にLuceneより遅い?(検索/インデックス作成が静的型付け言語で行われるか、スクリプト言語で行われるかの差)


Lucene経験者としてはpyluceneがいい感じだが、
Whooshもかなりいい感じなので期待したいところ。

しばらくはWhooshを評価がてら使ってみることにする。

4 件のコメント:

  1. > pyluceneはJavaで作られた全文検索エンジンのluceneのpythonバインディング版。

    lucene バインドじゃなくて pure python では?

    返信削除
  2. >Kosei Kitaharaさん
    pyluceneはluceneをJCC経由で呼んでいるとという認識で内部的にはJava(Lucene)を呼んでいるイメージでした。(合ってますか?)

    間違ってたらすいません。
    もう少し調べます。

    返信削除
  3. ごめんなさい。Whoosh と勘違いしてました。。。

    返信削除
  4. >Kosei Kitaharaさん
    了解です。少し安心しました。

    後あんまり関係ないですが、
    このBlog初コメントがKoseiKitaharaさんでした。
    ありがとうございます。

    有名なPythonistaにBlog見てもらえて光栄です。
    これからもツッコミよろしくお願いします。

    返信削除