Groonga族2014

: author

須藤功平

: institution

クリアコード

: content-source

全文検索エンジンGroongaを囲む夕べ5

: date

2014/11/29

: allotted-time

20m

: theme

groonga

この時間の目的(1)

Groongaのn 特徴を紹介n ((‘note:(まだGroongaを使っていない人向け)’))

この時間の目的(2)

2014年のn Groonga関連のn 最新情報をn ざっくり紹介

# = リーダブルコードの解説者

# # image # # src = ../readable-code.jpeg # # relative_height = 95 # # reflect_ratio = 0.1

Groonga族と私

* 開発・リリース・サポート
  * Groonga、Mroonga、Rroonga、Droonga、他各種ツール
* イベント運営
  * Groongaを囲む夕べ、\n
    ドキュメント読書会の解説者枠

内容

* Groonga族の概要
* Groonga族の最新情報
* Groonga関連情報の見つけ方

Groonga族の概要

* Groongaの特徴
* Groonga族とは

Groongaの特徴(1)

即時更新

即時更新

* データ更新時:索引も更新
  * 1つの索引を随時更新
  * ×サブ索引を作成→マージ
  * →すぐに検索できる
* 新鮮な情報をすぐに検索可能に
  * 大事にしていること

Groongaの特徴(2)

安定したn 高い検索性能

安定した高い検索性能

* 索引更新中も検索可能
  * 更新処理が検索処理を阻害しない
  * 更新中も参照可能にすることで実現
* 定期的な重い処理がない
  * ×フルGCによるstop the world
  * ×索引のマージ

Groongaの特徴(3)

日本語特化のn 検索機能

日本語特化の検索機能(1)

* ローマ字前方一致検索
  * 「to」→「トウキョウ」
  * 「tyo」→「チョウフ」
  * 「cho」→「チョウフ」\n
    (ヘボン式もいける)
  * 「と」→「トウキョウ」\n
    (ひらがなもいける)

日本語特化の検索機能(2)

* ハイブリッドBigram\n
  (('note:(↓は正確じゃないけどだいたいあっている説明)'))
  * 日本語はBigram
  * 英語は空白区切り
  * "日本" "本語" "語は" "Bigram"
* 日英混じりでもBigramを使える
  * 英語Bigramの検索性能の悪さを解消\n
    (('note:(英単語のステミングやストップワードもできる)'))

Groongaの特徴(4)

他システムとn 連携

他システムと連携

* 連携
  * Cライブラリーとして利用可
  * 既存システムに全文検索機能を追加
* メリット
  * Groonga:全文検索以外はお任せ
  * 既存システム:全文検索機能追加
  * 使う側:追加で覚えることが少ない

連携例

* MySQL(Mroonga(むるんが))
* Groonga
  * 通信・レプリケーションなどお任せ
* 既存システム(MySQL)
  * 日本語全文検索対応
* 使う側
  * SQLを使って日本語全文検索できる

Groongaの特徴(5)

定期リリース

定期リリース

* 毎月肉の日にリリース\n
  (('note:(肉の日 == 29日)'))
* メリット
  * 問題を報告してから修正版が\n
    手に入るまでの時間が短い
  * 最新ディストリビューションへの\n
    対応が速い

リリース!

((‘tag:groonga:G’))roonga 4.0.8n リリース!

リリース!!

((‘tag:mroonga:M’))roonga 4.08n リリース!

リリース!!!

((‘tag:droonga:D’))roonga 1.0.8n リリース!

Groongaの特徴

* 即時更新
* 安定した高い検索性能
* 日本語特化の検索機能
* 他システムと連携
* 定期リリース

Groonga族の概要

* (('del:Groongaの特徴'))
* Groonga族とは

Groonga族

* Groongaと\n
  関連プロダクトの総称
* 関連プロダクト
  * Xroonga(○るんが)\n
    という名前が多い

関連プロダクトの分類

((‘tag:center’))((‘note:詳細:groonga.org/ja/related-projects.html’))

* データベース
* 言語バインディング
* クライアントライブラリー
* ユーティリティー

データベース

* 既存データベースに\n
  全文検索機能を追加
  * 例:MySQL→Mroonga(むるんが)
* 既存データベースの\n
  インターフェイスで使える
  * 例:SQL

言語バインディング

* 好きな言語で全文検索機能付き\n
  アプリケーションを書ける
  * 例:Ruby→Rroonga(るるんが)
* アプリケーションがDBを開く
  * SQLite3やDBMを使う感じ
  * 1マシンで扱える量向き

クライアントライブラリー

* Groongaサーバーへの\n
  アクセスを支援
  * 例:Go→goroo(ごろう)
* クライアント・サーバーモデル
  * MySQLやMongoDBを使う感じ
  * アプリとDBでマシンを分ける構成用

ユーティリティー

* 便利ツールがいろいろある
  * Madhand:Groongaレプリケーション\n
    (('note:https://github.com/yappo/ruby-madhand'))
  * groonga-query-log:\n
    スロークエリー調査とか
  * zshの補完関数
  * grnline:\n
    groongaコマンドを便利にする

関連プロダクトの分類

((‘tag:center’))((‘note:詳細:groonga.org/ja/related-projects.html’))

* データベース
* 言語バインディング
* クライアントライブラリー
* ユーティリティー

Groonga族の最新情報

* (('del:Groonga族の概要'))
* Groonga族の最新情報
* Groonga関連情報の見つけ方

2013/12

* Groonga Advent Calendar 2013
  * (('note:http://qiita.com/advent-calendar/2013/groonga'))
  * 今年もやるので参加してね!\n
    (('note:http://qiita.com/advent-calendar/2014/groonga'))
* (({geo_in_rectangle}))が北半球\n
  だけでなく全世界をサポート
  * 去年のこのイベントでバグレポート

2013/12

* (({between()}))関数を追加
  * 1 <= X && X <= 10\n
    のような範囲クエリーを高速実行
  * SQLでいう"(({X BETWEEN 1 AND 10}))"

2014/1

* DBサイズ増加を抑制
  * レコードの更新をくりかえすと\n
    DBサイズが増えることがある
  * 増加しにくくなった
* Groonga Meetup開催
  * 1/29
  * ハンズオン

2014/2

* 2/9に4.0.0リリース!
  * 年に1度の肉の日

2014/3

* レコード毎の重み付けに対応
  * スコアー調整に便利
  * 例:Groongaタグがついていたら\n
    スコアーを10倍
  * 参照
    * selectのadjusterオプション
    * 重み付きベクターカラム

2014/3

* 全文検索エンジンGroonga\n
  勉強会@札幌開催
  * 3/29

2014/4

* Groonga Meetup開催
  * 4/29
  * ハンズオン

2014/5

* Ubuntuパッケージ配布URL変更
  * LaunchpadのPPAを利用
* HerokuでGroongaを利用可能に
  * Rroongaも使える\n
    (('note:http://www.clear-code.com/blog/2014/5/28.html'))

2014/5

* Groongaドキュメント読書会1
  * 5/15
  * Groongaの理解を深める会
  * 集まってドキュメントを読む
  * 参加者が気になったところは\n
    随時Groonga開発者(私)が図解

2014/6

* HTTPサーバーがPOST対応
* GQTPサーバーのデフォルト\n
  ポート番号を変更
  * 10041→10043
* プラグイン用APIを強化

2014/6

* Try Groonga公開
  * Webブラウザー上で\n
    Groongaを試せる
  * インストールいらず
  * Heroku上で動作

((‘tag:center’))((‘note:try-groonga.herokuapp.com/’))

2014/6

* Groongaドキュメント読書会2
  * 6/3
  * Groongaの理解を深める会
  * 集まってドキュメントを読む
  * 参加者が気になったところは\n
    随時Groonga開発者(私)が図解

2014/7

* Groongaドキュメント読書会3
  * 7/23
  * Groongaの理解を深める会
  * 集まってドキュメントを読む
  * 参加者が気になったところは\n
    随時Groonga開発者(私)が図解

2014/8

* キーワードハイライト関数追加
  * highlight_fullとhighlight_html
* 近傍検索記法を追加
  * 「*N"A Z"」→Aの近くにZがある
  * 「近く」の閾値はパラメーター

2014/8

* Groongaドキュメント読書会3
  * 8/25
  * Groongaの理解を深める会
  * 集まってドキュメントを読む
  * 参加者が気になったところは\n
    随時Groonga開発者(私)が図解

2014/9

* mruby実装のクエリーオプティマイザーが動くようになった
  * (('note:RubyKaigi 2014があった'))
* ConoHa presents -\n
  Groonga "How-To" Talks開催
  * (('note:http://groonga.org/ja/blog/2014/09/03/conoha-presents-groonga-how-to-talks.html'))

2014/9

* packages.groonga.orgで\n
  「ConoHa支援プログラム」を\n
  利用開始
  * https://www.conoha.jp/community
  * ソース・パッケージ配布サイト

2014/10

* Windowsでもmruby組込サポート
* トークンフィルター機能追加
  * プラグイン対応
  * TokenFilterStopWord:\n
    ストップワード
  * TokenFilterStem:\n
    ステミング

2014/10

* カラム圧縮サポート
  * zlib/LZ4
* (({in_values}))関数を追加
  * SQLでいう"(({カラム IN(A, B, ...)}))"
  * だいぶ速くなる

2014/10

* Groongaドキュメント読書会5
  * 10/27
  * Groongaの理解を深める会
  * 集まってドキュメントを読む
  * 参加者が気になったところは\n
    随時Groonga開発者(私)が図解

2014/11

* n個のキーを使った\n
  ドリルダウンをサポート
  * 例:ユーザーとタグでドリルダウン
* (({range_filter}))コマンドを追加
  * ヒット件数は返せない代わりに高速
  * SQLでいう(({ORDER BY LIMIT}))で\n
    速くなるパターン用のコマンド

2014/11

* 管理画面をリニューアル
  * 今のところ検索画面だけ
  * 使いやすさ重視
  * (('note:https://github.com/groonga/groonga-admin/'))

Rroonga

* リリースチームを結成
* 最新Groongaをサポート
* メモリー使用量削減

ユーティリティー

* fluent-plugin-groonga
  * ログをGroongaに投入可能
  * スキーマは自動定義
  * →Groongaサーバーを立てたら\n
    すぐに使える
  * (('note:Fluentdで集めたデータをGroongaに格納する方法'))\n
    (('note:http://qiita.com/groonga/items/5c674be9daf25054c14c'))

Groonga関連情報の見つけ方

* (('del:Groonga族の概要'))
* (('del:Groonga族の最新情報'))
* Groonga関連情報の見つけ方

オンライン(1)

* http://groonga.org/
* メーリングリスト
  * groonga-dev
* Twitter
  * @groongaをフォロー
  * 拾ってもらう

オンライン(2)

* Qiita
  * 「groonga」タグをフォロー
  * Groonga Advent Calendar
  * (('note:http://qiita.com/advent-calendar/2013/groonga'))
  * (('note:http://qiita.com/advent-calendar/2014/groonga'))

オフライン

* Groongaを囲む夕べ
  * 11/29(いい肉の日)
* ドキュメント読書会
  * 1,2ヶ月に1回開催
  * 次回は12/11(木)