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を評価がてら使ってみることにする。
> pyluceneはJavaで作られた全文検索エンジンのluceneのpythonバインディング版。
返信削除lucene バインドじゃなくて pure python では?
>Kosei Kitaharaさん
返信削除pyluceneはluceneをJCC経由で呼んでいるとという認識で内部的にはJava(Lucene)を呼んでいるイメージでした。(合ってますか?)
間違ってたらすいません。
もう少し調べます。
ごめんなさい。Whoosh と勘違いしてました。。。
返信削除>Kosei Kitaharaさん
返信削除了解です。少し安心しました。
後あんまり関係ないですが、
このBlog初コメントがKoseiKitaharaさんでした。
ありがとうございます。
有名なPythonistaにBlog見てもらえて光栄です。
これからもツッコミよろしくお願いします。