2010年11月06日

Sphinx 1.1preの検索機能の修正

Magnified (8/365)

Sphinxの検索インデックス作成処理をハックして、日本語を通すようにしよう!というのを以前からちょこちょこっとやっているのですが、いろいろ忙しくしている間に、いろいろ不具合とか見つけてくれたりしてくれる人がいたり(http://d.hatena.ne.jp/hokorobi/20101030/1288419035)、ありがたい流れになってきています。というか放置状態ですみません。今、Sphinx翻訳ハッカソン中なので、時間をとっていろいろコード修正とかをしました。また、言語を追加できるAPIとして整備して、本家に提案してみたところです。ほんとはドイツ語のステマーでも実装してサンプルにしてみると意義がわかりやすくはなるんでしょうけど、ドイツ語(一応大学でちょっとやったが)のステマーを実装するのは大変なので・・・誰かやってくれると助かる感じ。というかPython実装とかどっかにありそうなんだけどね。

APIの使い方のイメージはこんな感じになっています。例えば、フランス語(コードfr)の場合です。

from sphinx.search_languages import SearchLanguage

class SearchFrench(SearchLanguage):
    lang = 'fr'

    def init(self):
        self.stopwords = set([ストップワードこれはJavaScript側にもコピーされます])
        self.js_stemmer_stemmer = """JavaScript側で動く、ステマーのプログラム"""

    def split(self, sentence):
        """ここで、スプリッターを実装します。デフォルトはスペース区切り。"""

    def stem(self, word):
        """ここでPythonのステミング処理を実装します。"""

    def word_filter(self, stemmedword):
        """ここでインデックスに登録するかどうかの判定をします。"""

def setup(app):
    app.add_search_language(SearchFrench)

ちなみに、リポジトリはここ(https://bitbucket.org/shibu/sphinx/overviewです。

hokorobiさん、いろいろ指摘していただいてありがとうございます。

posted by @shibukawa at 15:50 | Comment(168) | TrackBack(0) | Python はてなブックマーク - Sphinx 1.1preの検索機能の修正
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/41616999
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索ボックス

Twitter

www.flickr.com
This is a Flickr badge showing public photos and videos from shibukawa.yoshiki. Make your own badge here.
<< 2017年11月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
最近の記事
カテゴリ
過去ログ
Powered by さくらのブログ