2011年3月4日金曜日

Whooshで始める全文検索的なもの(1)

pure-Pythonな全文検索ライブラリであるWhooshを使って簡単な全文検索アプリを作ってみるメモ。

とりあえず、クローラーとかは作るのが面倒なので、ローカルファイルを対象とします。
ちょうど良いので、bloggerからエクスポートしたブログの記事を検索してみます(後でGAEに乗せる予定)

エクスポートするとAtom形式ですが、このパースはlxmlでxpathつかってやりました。もっと良い方法があるかも知れないけど。

インデックス作成
def get_index(path, tokenizer):
    schema = Schema(title=TEXT(stored=True, analyzer=tokenizer),
                    url=ID(unique=True, stored=True),
                    content=TEXT(analyzer=tokenizer))
    if exists_in(path):
        return open_dir(path)
    if not os.path.exists(path):
        os.mkdir(path)
    return create_in(path, schema)

tk = IgoTokenizer(dataDir='ipadic', gae=False) | FeatureFilter([u'^助詞,係助詞.*$']) | LowercaseFilter()
ix = get_index(sys.argv[1], tk)
w = ix.writer()
for url, title, content in  atom_read.read(sys.argv[2]):
    print 'add:', url, title
    w.add_document(title=unicode(title), url=unicode(url), content=content)
w.commit()
ix.close()

importは省きましたが、簡単な事が分かると思います。

全体のコードはリポジトリを参照してください。

0 件のコメント:

コメントを投稿