« Sennaのインストールレス化 | メイン | SQLite 本が届いたので読んだ »
2006年02月20日
Web関連の開発日誌:: Senna の SQLite 組込み方法案
Tweet @jin1016をフォローSQLite へ Senna を組込むべく SQLite のソースを追っていたが、初期の案で組み込むのは少し難しそうなので、再考した。
次のような形になると思う。
table_name が重複するのはかっこ悪いけど諦めてもらおう。
このような形にすると、SQLiteの関数のラッパーとトリガー、ユーザー定義関数のみで実装できそうだ。
SQLite 本体に手を加えなくてもいいので、patch を作ったりしなくても良くてお手軽。
ただし、複数の検索条件を指定したりすることは出来ない。
match_score の引数を増やせば検索条件が識別できるけど、それだと煩雑になる。
複数の検索条件で検索を行うなら、クエリー結果からテンポラリテーブルを作ってそれを使うような形になる。
とすれば、スコアとIDが得られるようになるはず。
そうすれば、それと他のテーブルの内部結合でいろいろ出来るだろう。
後、このような形にしたのは構文拡張が大変そうだったから。
SQLite は、yacc ( or bison ) ではなく、Lemon という独自のパーサージェネレーターを使っているようだ。
これもいじるとなると大変なので、構文拡張ではなく関数のラッパーとトリガー、ユーザー定義関数を使うことにした。
でも、全文検索用の構文があったほうが使いやすいと言えば使いやすいので、将来気力がわいたら拡張するかも。( 過去の傾向からすると、こう言うのはなんだかんだで対応してしまっている気がしないでもない )
関係ないけど、Senna の読みはセナだと今日知った。
センナ だと思ってた。(笑
で、センナってなんだろうなぁ と一人考えてたり。
何となく辞書見たらあった。
綴り一緒だ。
でも、アイルトン・セナもこの Senna みたい。
投稿者 Takenori : 2006年02月20日 22:24
comments powered by Disqus