RSS

whooshで日本語検索

Pythonの検索モジュールwhooshで日本語の検索

    付与されたタグ:
  • Python

whooshはPythonで書かれた検索モジュールである。普通に英文の検索をするのならドキュメントを見ながらやれば問題ない。日本語の検索で昔から問題になるのが分かち書き。ただwhooshはN-gramインデックスも使えるので分かち書きは問題ではない。ただドキュメントの記述が不十分なので自分でごちゃごちゃ書いてみた。一応動くようだ。

#!/usr/bin/python
# -*- coding: utf-8 -*-

from whoosh.index import create_in
from whoosh.fields import *
from whoosh.analysis import NgramTokenizer

schema = Schema(body=TEXT(stored=True, analyzer=NgramTokenizer(minsize=1,maxsize
=4)))

ix = create_in("/tmp/w", schema)
writer = ix.writer()
writer.add_document(body=unicode("本日は晴天なり",'utf-8'))
writer.add_document(body=unicode("我輩は猫である",'utf-8'))
writer.add_document(body=unicode("あいうえおかきくけこ",'utf-8'))
writer.commit()

from whoosh.qparser import QueryParser
with ix.searcher () as searcher:
        query = QueryParser("body", ix.schema).parse(unicode("あ", 'utf-8'))
        results = searcher.search(query)
        for r in results:
                print r