2011-11-30
全文検索エンジンgroongaを囲む夕べ2 参加のまとめ
gronnga勉強会「全文検索エンジンgroongaを囲む夕べ2」に行ってきましたのでまとめ。ツッコミ上等歓迎。
概要
2011-11-29(火) 19:00- VOYAGE GROUPさん (渋谷ファーストプレイス8F)
ハッシュタグ : #groonga
正直迷いましたので、10分遅刻(;;;
懇親会、、、出たかったけど、終電があるので出られませんでした(T_T
私の参加目的
社内で使ってるCRMシステム*1"B-Dash"の検索エンジンにgroongaを使ってるんですけど、こいつを良くしたいのでなんかいい話が無いかなー?という。
感想、得たこと
groonga自体はかなり安定している感じ。開発もすでに基礎から応用系になっている。
ってか、最近は位置情報検索、はやってるなー。PgSQLも、MongoDBもあるし。
全然別の視点ですけど、XYZ軸にアイテムをプロットして、位置情報検索を利用すれば、なんとなく一緒なモノを引っ張ってくる、とかそういう事ができるのではないだろうか。
まとめ
須藤氏@クリアコード セッション / groonga村
遅刻したので途中参加(すみません
知っての通り、Sennaの後継。
勉強会を聞くに当たっての基礎知識的なセッション。
groonga(CLI)、rroonga(Rubyバインド)、mroonga(MySQL storage Engine)、nroonga(node.jsブリッジ(?))などの紹介。
<スライドURL待ち>
森氏@未来検索ブラジル セッション / 新年と収穫の祭り
索引の動的構築→登録即検索って、昔は異端だったらしい。
完全転置インデックスを動的にメンテナンスしていくのか、というのが実装ポイント。
とっても有用なドキュメントの紹介(書籍化の話も) → 検索エンジンはいかにして動くのか http://gihyo.jp/dev/serial/01/search-engine
●Roadmap
- カラムストア性能強化
- ファセット検索(分類検索。メタデータ)
- ドリルダウン
- 参照頻度をベースにしたインデックス圧縮
- 類似文字列検索(編集距離、コサイン類似度)
- 頻出パターン抽出
- ストリーム処理機能(カラムストアの結果をダラダラと出すとか
- スキーマレス(カーディナリティから適切な型を類推、、、とか)
<スライドURL待ち>
●質問タイムで出た質問:nroongaの存在意義って?
→ groongaって結構コネクション指向なんだけど(=対話的にいろいろ指示や結果をもらって更に指示を出せるって意味だと思う。)そういうのってHTTP的にはこれからの技術ならWebSocketとかになるじゃん。ゼロからやるより、node.jsとかでやれた方がいろいろ夢が広がるかなー。
Kentaro SHIBA セッション / mroonga
祝:mroonga 1.10リリース
featureはこれみて -> http://mroonga.github.com/ja/blog/2011/11/29/release.html
●mroonga動作モード
ストレージモード と ラッパーモード -> http://mroonga.github.com/ja/docs/userguide.html#usage-of-each-mode
●マルチカラムインデックス
できるけど、groongaコマンドなど、mroonga以外から更新をかけるとインデックス不整合になるんで、、、どうしろとw
●トークナイザーの指定
- CREATE TABLE ... COMMENT='parser "TokenMecab"'
- groonga_default_parser システム変数
どっちでもできるよ。
●rename tabel, alter tableに対応
groonga 1.2.8で積まれた機能を利用。
●Spider/VPストレージエンジン連携
スケール環境でも全文検索が可能(ただし、後述の「できないこと」にありますが、パラレル検索が未実装)
個人的感想ですが、MariaDBはどうなのか。
<スライドURL待ち>
塩畑氏@ぐるなび セッション / 位置情報検索
未来検索ブラジルと2008年(Sennaの頃)から一緒に作り上げている
<後日update予定&スライドURL待ち>
●質問タイムで出た質問:インデックス壊れる事ってあります?
20qps/server * 3serversって環境でやってますが、トラブったことは無い。
ちなみに、3serversでのサービス方法は、3serversそれぞれに同じデータを配信(取り込み?)する、自社開発バックグラウンドプロセスがある。
奧野氏@フォルシア セッション / groonga with PostgreSQL
PgSQL 9.1からSQL/MED という仕組みでテーブルの拡張が可能となった。
MED -> Management of External DATA
●PGXN
$ pgxn install tinyint $ psql psql> create extension tinyint;
-> coming soon!
●FDW
Foreign Data Wrapper -> ストレージエンジンに似てるもの
●PgSQLからgroongaを使うアプローチ
- textsearch_groonga -> INDEX
- groonga_fdw -> FDW
FDWは9.1から利用可能。SELECTのみだけどね。Oracleもサポートしているようだ。
須藤氏@クリアコード セッション / mroongaベンチマーク
ベンチマークと言っても、他のプロダクトとの比較では無く、InnoDBがーとかそういう話。
- 検索速度:mroonga < mroonga+InnoDB < MyISAM |高い壁| < InnoDB
- 更新スループット:mroonga |高い壁| < MyISAM < Sphinx < mroonga+InnoDB
- 更新しながらでも検索スループット:落ちない
Kentaro SHIBA セッション / mroonga未サポート機能
- 文字コードUTF-8以外
- collation (照合順序)
- condition pushdown (Oracleだとhint句みたいなもの?)
- トランザクション (今はrollbackするとインデックスにデータが残る)
- repair table (今はnewテーブル作ってcopy&renameとか)
- 点以外の空間情報
- 0跨ぎの緯度経度
- MySQL5.6の位置比較関数
- ストレージモードでのNULL扱い
要望の多いモノから順次というノリ。
矢田氏@未来検索ブラジル セッション / groonga開発予報
grn_dat (データ構造) の話。
grn_dat = 前方一致ができ、かつ参照時間に優れる
本来ダブル配列は参照ロックフリーでは無いが、それをなんとかしたところがすごい。
(ごめんなさい、ついていけませんでした)
あとがき
スタッフの方々、お疲れ様でしたー。
わかる範囲で書いてみましたが。。。よくわかっていないってことが、わかりました orz
*1:と呼ぶにはおこがましい
- 142 http://search.yahoo.co.jp/search?p=ソフトバンクPINロック&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 122 http://www.google.co.jp/url?sa=t&rct=j&q=ライブマイグレーション&source=web&cd=4&ved=0CFMQFjAD&url=http://d.hatena.ne.jp/fujisan3776/20090427/1240850724&ei=Cn_VTueSO8z
- 75 http://www.google.co.jp/url?sa=t&rct=j&q=ソフトバンク puk&source=web&cd=6&ved=0CF0QFjAF&url=http://d.hatena.ne.jp/fujisan3776/20090312/1236838874&ei=jTnWToLrDs3TmAWl3aVt&usg=AFQjCNGcosZBW9i9AXL
- 58 http://www.google.co.jp/url?sa=t&rct=j&q=コンソールサーバ&source=web&cd=3&ved=0CEwQFjAC&url=http://d.hatena.ne.jp/fujisan3776/20090510/1241908758&ei=kebWToGgGcLJmQXJ6cXhCw&usg=AFQjCNFF1Fk
- 51 http://www.google.co.jp/url?sa=t&rct=j&q=acts_as_paranoid&source=web&cd=2&ved=0CCsQFjAB&url=http://d.hatena.ne.jp/fujisan3776/20080912/1221234453&ei=QLnVTvXSDbDLmAX6o-Bc&usg=AFQjCNFOvg4eKF5RGvnLP7u9Vlkfk2X8Qw&sig2=jYOLQhSGIdOaFUh2N0lv5w
- 46 http://search.yahoo.co.jp/search?p=PUK認証&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 33 http://www.google.co.jp/url?sa=t&rct=j&q=debian xen&source=web&cd=1&ved=0CCIQFjAA&url=http://d.hatena.ne.jp/fujisan3776/20090309/1236576002&ei=TuTaToXXCen9mAWF-6TqCw&usg=AFQjCNHW5G8YW2Mga2FKqPjyJqy0TOILrw
- 33 http://www.google.co.jp/url?sa=t&rct=j&q=pin認証&source=web&cd=2&ved=0CC8QFjAB&url=http://d.hatena.ne.jp/fujisan3776/20090312/1236838874&ei=NfXWTsT5KqudmQWn8eT9Cw&usg=AFQjCNGcosZBW9i9AXL_Ei1uHbYXnwG0Hg&sig2=ovjY6yHb1laNLLJoA_n7JQ
- 29 http://www.google.co.jp/url?sa=t&rct=j&q=ダウンロードダイアログ 日本語&source=web&cd=7&ved=0CEUQFjAG&url=http://d.hatena.ne.jp/fujisan3776/
- 29 http://www.google.co.jp/url?sa=t&rct=j&q=puk認証&source=web&cd=2&ved=0CC8QFjAB&url=http://d.hatena.ne.jp/fujisan3776/20090312/1236838874&ei=i8nYTufVNamImQWOi727AQ&usg=AFQjCNGcosZBW9i9AXL_Ei1uHbYXnwG0Hg&sig2=m6exq2mRtQtvQc9gF0oS-A
