Senna 2.0がやってくる!

Senna 2.0についての情報が公開されました! Sennaはこれまで「組み込み」に特化した全文検索エンジンという位置付けだったと思いますが、Senna 2.0では大幅な機能拡張が行われて、ストレージ機能や独自の問い合わせ言語が実装されるなど、単体でも機能するようになります。またその先には分散クラスタリング機能(非OSS)も想定されているようです。(MySQL等への組み込みは今後も継続されます。)

参照:Senna 組み込み型全文検索エンジン - Senna2.0がやってくる!

以下、上記ページからの一部コピペです。読んでいるだけでワクワクしてきます。


新しいSennaの特徴

柔軟さと処理速度の両立を目指す

Sennaは高精度でありながら、検索/更新速度性能に優れ、DBMS等への組込み易さを考慮した検索エンジンです。新しいSennaはこうした従来からの特徴を継承しつつ、より複雑な検索処理を柔軟に表現できることを目指しています。

なぜ柔軟さなのか?

検索エンジンの対象とする文書量が増えるにつれて、利用者が満足できる検索精度を維持することが次第に困難になって来ます。また、利用者が増えてくれば、検索エンジンの表示順位を操作する意図を持って作られる文書への対処も考慮しなければなりません。こうした用途では、対象文書と検索キーワードから算出される適合度以外に、web特有のデータ構造や、ユーザから得られるフィードバック情報等の様々な要因を加味して、利用者の検索意図により促した順序で検索結果を表示することが求められます。

このような検索アプリケーションをより容易に実現するために、新しいSennaはデータ構造と検索条件の記述に関して十分な柔軟さを備えることを目標に設計しています。具体的には、複合データ型を備えたストレージ機能と、LISPの方言を用いた問合せ言語を追加しています。

ストレージ機能

新しいSennaでは、従来のライブラリインタフェースを維持しつつ、Senna単独で検索元の文書を蓄積したり取り出したりする機能(ストレージ機能)を追加しました。

ストレージ機能を持つということは、構造化されたデータを管理できるということであり、構造に即した、より高度な検索処理が実行可能になるということでもあります。

Sennaストレージのデータ構造の基本となるのは二次元の表構造で、 RDBの表と同様に、複数の行と列(カラム)を定義することができます。

各カラムの値は特定の型に属します。型には,等の基本型が用意されていますが、これに加えてユーザが定義したテーブルもカラムの型として指定することができます。これを複合データ型と呼んでいます。

複合データ型を使うことによって、(RDBでいう) 正規形を維持しつつJOIN操作のコストを抑えた検索処理が実行可能になります。

問合せ言語

高度な検索条件をより柔軟に表現するために、多くのエンジンは問合せ言語を備えています。

新しいSennaでは、問合せ言語を通して全てのデータ定義とデータ操作を実行できる新たなレイヤのAPI群を設けました。

問合せ言語にはSchemeライクなLISPの方言を使っています。(SennaQLと呼んでいます)

SennaQLからは、テーブル、カラム、レコード、レコードの集合、インデックス内の単語等を第一級オブジェクトとして操作できます。

これらのオブジェクトを操作することで、検索や更新に関わる処理を柔軟に表現し、また関数として抽象化することができます。

関数を含むSennaQLのコードはサーバ側で実行されるので、ストアドプロシージャと同様にクライアント/サーバ間の通信遅延を削減する効果があります。



コピペここまで。