2011年12月7日水曜日

Google App Engine で動く全文検索ライブラリを作成

Google App Engine上で全文検索はいろんな人が試しているようだが、
汎用的なライブラリとかを作っているひとがいないので、
自分でライブラリを実装してみた。
目指したのは、シンプルなインターフェース、メンテナンスフリー、そして高速性。

主な特徴は以下のとおり。
  • 全コードフルスクラッチで作成(だいたい2週間くらい)
  • Luceneライクなクラス・インターフェース
    ※あくまでライクなだけ、クラス名とか概要を参考にしただけなので、実際別物
  • 基本機能部分は抽象化されているので、継承させることで簡単にカスタマイズ可能
  • 内部でSlim3を使用している。(使わなくても実装できたと思う)
  • 形態素解析器にGomokuを使用。
    N-Gramはアナライザ作ってないけど、作ればN-Gramでもインデックス作成が可能
  • コンポジットインデックスを使わない。(インデックス爆発しない)
    エンティティグループとシングルプロパティインデックスだけ使用
  • インデックスの作成・削除は任意のタイミングででき、最適化とかは不要
  • 動作は結構早いっぽい。まだ10KB程度しか試してないけど。大体20ミリ秒くらい。
  • GAEのキーを内部に持つので、インデックス自体が大きめ
  • インデックス作成時にDatastoreに書き込みまくりでコスト高め
  • 読み込みは然程でもない。(エンティティグループが効いてる?)
  • 検索には AND OR NOT と ( ) が使用可能。
    ぐちゃぐちゃな条件でもそれなりに解釈する
もうちょっとコードがまとまったらサンプルサイトをアップする予定。
…Luceneライクといってるけど、実はLucene使ったことがない……w

0 件のコメント:

コメントを投稿