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