SlideShare a Scribd company logo
1 of 43
Download to read offline
Droongaの はじめかた Powered by Rabbit 2.1.2
Droongaの
はじめかた
須藤功平 クリアコード
全文検索エンジンGroonga勉強会@札幌 2014/03/29
2014/03/29
Droongaの はじめかた Powered by Rabbit 2.1.2
この勉強会とこの話の関連
勉強会
Groongaの利用事例を募集
この話
Groongaを使ったプロダクト
Droongaの話
Droongaの はじめかた Powered by Rabbit 2.1.2
お知らせ1
4.0.1リリース!
Droongaの はじめかた Powered by Rabbit 2.1.2
4.0.1の新機能1
adjuster
スコアブースト機能
使用例: 運営のオススメを上に表示
重み付きベクター
レコード毎にn個の重みを設定
adjusterと連携するとよい
Droongaの はじめかた Powered by Rabbit 2.1.2
4.0.1の新機能2
データベース肥大化抑制
Milkodeユーザーにも効果大なはず
注意: データベースの再作成が必要
データベースの後方互換性あり
Droongaの はじめかた Powered by Rabbit 2.1.2
お知らせ2
1.0.1リリース!
Droongaの はじめかた Powered by Rabbit 2.1.2
1.0.1の新機能
adjuster対応
重み付きベクター対応
ユーザー視点の使い勝手向上
grn2drn-schema, droonga-
send, ...
今月は開発者としてよりもユーザーとして触っていたから
Droongaの はじめかた Powered by Rabbit 2.1.2
今日の目標
1人以上
Droongaデビュー
Droongaの はじめかた Powered by Rabbit 2.1.2
話すこと
Droonga
未経験者向け
ヒント
Droongaの はじめかた Powered by Rabbit 2.1.2
流れ
Droongaとはなにか
Groongaの使い方
↑とDroongaの使い方の違い
Droongaの考え方のイメージ
Droongaの はじめかた Powered by Rabbit 2.1.2
Droongaとはなにか
Distributed Groonga
Droongaの はじめかた Powered by Rabbit 2.1.2
Distributed?
スケールアウト
可能
Droongaの はじめかた Powered by Rabbit 2.1.2
Droonga
スケールアウト
可能な
Groonga
Droongaの はじめかた Powered by Rabbit 2.1.2
Groongaが透けて見える
スケールアウト
可能な
Groonga
Droongaの はじめかた Powered by Rabbit 2.1.2
GroongaとDroonga
一部はGroonga != Droonga
一部はGroonga == Droonga
Droongaの はじめかた Powered by Rabbit 2.1.2
Groonga != Droonga
APIは違う
DroongaにGroonga互換レイヤーあり
構成は違う
1台でDroongaを使っても嬉しくない
性能特性は違う
1台で捌ける量→Groongaの方が速い
Droongaの はじめかた Powered by Rabbit 2.1.2
Groonga == Droonga
クエリーの書き方は同じ
スキーマの考え方は同じ
検索機能はだいたい同じ
Droongaの はじめかた Powered by Rabbit 2.1.2
Droongaをはじめるために
教養として
Groongaを
押さえて
おくべき!
Droongaの はじめかた Powered by Rabbit 2.1.2
Groongaの使い方
Droongaとはなにか
Groongaの使い方
↑とDroongaの使い方の違い
Droongaの考え方のイメージ
Droongaの はじめかた Powered by Rabbit 2.1.2
なぜまずGroongaか
Groongaはお手軽
1台のマシンで動く
設定ファイルなしで動く
コマンドラインで動く
Droongaの はじめかた Powered by Rabbit 2.1.2
Groongaを使う流れ
初心者向けの簡易版
スキーマを作る1.
インデックスを作る2.
データを入れる3.
検索する4.
Droongaの はじめかた Powered by Rabbit 2.1.2
スキーマを作る
検索したいものを1つ決める
例: たいやき屋検索ならたいやき屋
検索したいものの集まりを
テーブルにする
例: TaiyakiShopsテーブル
付加情報をカラムにする
例: 店舗名、場所、メニューなど
Droongaの はじめかた Powered by Rabbit 2.1.2
スキーマ例
table_create TaiyakiShops 
TABLE_HASH_KEY ShortText
# 店舗名
column_create TaiyakiShops name 
COLUMN_SCALAR ShortText
# 場所
column_create TaiyakiShops location 
COLUMN_SCALAR WGS84GeoPoint
Droongaの はじめかた Powered by Rabbit 2.1.2
Groongaを使う流れ: 2
スキーマを作る1.
インデックスを作る2.
データを入れる3.
検索する4.
Droongaの はじめかた Powered by Rabbit 2.1.2
インデックスを作る
全文検索対象を決める
例: 店舗名
トークンの集合を格納する
テーブルを作る
トークン: 最小検索単位
↑にインデックスカラムを作る
Droongaの はじめかた Powered by Rabbit 2.1.2
インデックス例
# トークン用テーブル
# 初心者は常にこれでOK
table_create Tokens 
TABLE_PAT_KEY ShortText 
--default_tokenizer TokenBigram 
--normalizer NormalizerAuto
# インデックスカラム
column_create Tokens taiyaki_index 
COLUMN_INDEX|WITH_POSITION 
TaiyakiShops name
Droongaの はじめかた Powered by Rabbit 2.1.2
Groongaを使う流れ: 3
スキーマを作る1.
インデックスを作る2.
データを入れる3.
検索する4.
Droongaの はじめかた Powered by Rabbit 2.1.2
データを入れる
フォーマットはJSON
GroongaのJSONパーサーは緩い
多少壊れたJSONも受け付ける
Droongaの はじめかた Powered by Rabbit 2.1.2
データ例
load --table TaiyakiShops
[
{
"_key": "sapporo-yanagiya",
"name": "札幌の柳屋",
"location": "43.11629x141.34855"
}
]
Droongaの はじめかた Powered by Rabbit 2.1.2
Groongaを使う流れ: 4
スキーマを作る1.
インデックスを作る2.
データを入れる3.
検索する4.
Droongaの はじめかた Powered by Rabbit 2.1.2
検索する
全文検索対象を指定する
検索キーワードを指定する
Droongaの はじめかた Powered by Rabbit 2.1.2
検索例
select TaiyakiShops 
--match_columns name 
--query "札幌"
# [[...], ← レスポンスヘッダー
# [[[1], ← ヒット件数
# ↓ 出力内容のメタデータ
# [["_id","UInt32"],...],
# ↓ マッチしたレコード
# [1,"sapporo-yanagiya","...","札幌の柳屋"]]]]
Droongaの はじめかた Powered by Rabbit 2.1.2
Groongaを使う流れの再確認
スキーマを作る1.
インデックスを作る2.
データを入れる3.
検索する4.
Droongaの はじめかた Powered by Rabbit 2.1.2
流れ3
Droongaとはなにか
Groongaの使い方
↑とDroongaの使い方の違い
Droongaの考え方のイメージ
Droongaの はじめかた Powered by Rabbit 2.1.2
Droongaを使う流れ
クラスターを作る ← New1.
スキーマを作る2.
インデックスを作る3.
データを入れる4.
検索する5.
Droongaの はじめかた Powered by Rabbit 2.1.2
クラスターを作る
大事だけど時間がないので
省略!
Droongaの はじめかた Powered by Rabbit 2.1.2
流れ4
Droongaとはなにか
Groongaの使い方
↑とDroongaの使い方の違い
Droongaの考え方のイメージ
Droongaの はじめかた Powered by Rabbit 2.1.2
Droongaの構成
http://droonga.org/overview/
Droongaの はじめかた Powered by Rabbit 2.1.2
まとめ1
Droonga
スケールアウト可能なGroonga
Groongaと同じことがいろいろある
Groongaの理解が役立つ
Droongaの はじめかた Powered by Rabbit 2.1.2
まとめ2
Groongaの使い方
スキーマを作るa.
インデックスを作るb.
データを入れるc.
検索するd.
Droongaの はじめかた Powered by Rabbit 2.1.2
まとめ3
Droongaの使い方
クラスターを作るa.
以下、Groongaと同じb.
Droongaの はじめかた Powered by Rabbit 2.1.2
まとめ4
Droongaの構成
n個のGroongaで
大きなGroongaを構成
Droonga=大きなGroonga
Droongaの はじめかた Powered by Rabbit 2.1.2
今日の目標の確認
1人以上
Droongaデビューを見据えてGroongaデビュー

More Related Content

What's hot

Distutil setuptools distribute
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distributeAtsushi Odagiri
 
Windows Server+Photon Server環境でも Fluentd+Elasticsearch+Kibanaを活用して 各種情報を可視化する...
Windows Server+Photon Server環境でもFluentd+Elasticsearch+Kibanaを活用して各種情報を可視化する...Windows Server+Photon Server環境でもFluentd+Elasticsearch+Kibanaを活用して各種情報を可視化する...
Windows Server+Photon Server環境でも Fluentd+Elasticsearch+Kibanaを活用して 各種情報を可視化する...GMO GlobalSign Holdings K.K.
 
Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29kenhys
 
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月VirtualTech Japan Inc.
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーKouhei Sutou
 
RancherでMesosクラスタをデプロイしてみる的ななにか
RancherでMesosクラスタをデプロイしてみる的ななにかRancherでMesosクラスタをデプロイしてみる的ななにか
RancherでMesosクラスタをデプロイしてみる的ななにかMasataka Tsukamoto
 
GMOアプリクラウドではじめる Photon Server v4 (2016/4/20 発表資料)
GMOアプリクラウドではじめる Photon Server v4 (2016/4/20 発表資料)GMOアプリクラウドではじめる Photon Server v4 (2016/4/20 発表資料)
GMOアプリクラウドではじめる Photon Server v4 (2016/4/20 発表資料)GMO GlobalSign Holdings K.K.
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版Kouhei Sutou
 
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~Masataka Tsukamoto
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう2bo 2bo
 
FabricでJobSchedulerを全自動インストール
FabricでJobSchedulerを全自動インストールFabricでJobSchedulerを全自動インストール
FabricでJobSchedulerを全自動インストールOSSラボ株式会社
 
JAZUG #26 AKS backup with Velero
JAZUG #26 AKS backup with VeleroJAZUG #26 AKS backup with Velero
JAZUG #26 AKS backup with VeleroTetsuya Sodo
 
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LTYoshinari Kadokawa
 
ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~Akihiro Kuwano
 
Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化shirou wakayama
 
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするChef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするHidetoshi Ochiai
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムKouhei Sutou
 

What's hot (20)

Distutil setuptools distribute
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distribute
 
Windows Server+Photon Server環境でも Fluentd+Elasticsearch+Kibanaを活用して 各種情報を可視化する...
Windows Server+Photon Server環境でもFluentd+Elasticsearch+Kibanaを活用して各種情報を可視化する...Windows Server+Photon Server環境でもFluentd+Elasticsearch+Kibanaを活用して各種情報を可視化する...
Windows Server+Photon Server環境でも Fluentd+Elasticsearch+Kibanaを活用して 各種情報を可視化する...
 
Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29Mroonga Meetup 2014/06/29
Mroonga Meetup 2014/06/29
 
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月OpenStackを一発でデプロイ – Juju/MAAS  - OpenStack最新情報セミナー 2015年2月
OpenStackを一発でデプロイ – Juju/MAAS - OpenStack最新情報セミナー 2015年2月
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
 
RancherでMesosクラスタをデプロイしてみる的ななにか
RancherでMesosクラスタをデプロイしてみる的ななにかRancherでMesosクラスタをデプロイしてみる的ななにか
RancherでMesosクラスタをデプロイしてみる的ななにか
 
GMOアプリクラウドではじめる Photon Server v4 (2016/4/20 発表資料)
GMOアプリクラウドではじめる Photon Server v4 (2016/4/20 発表資料)GMOアプリクラウドではじめる Photon Server v4 (2016/4/20 発表資料)
GMOアプリクラウドではじめる Photon Server v4 (2016/4/20 発表資料)
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版
 
Maatkitの紹介
Maatkitの紹介Maatkitの紹介
Maatkitの紹介
 
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
Rancherで作る お手軽コンテナ運用環境!! ~ Kubenetes & Mesos 牧場でコンテナ牛を飼おう!~
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 
FabricでJobSchedulerを全自動インストール
FabricでJobSchedulerを全自動インストールFabricでJobSchedulerを全自動インストール
FabricでJobSchedulerを全自動インストール
 
JAZUG #26 AKS backup with Velero
JAZUG #26 AKS backup with VeleroJAZUG #26 AKS backup with Velero
JAZUG #26 AKS backup with Velero
 
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
 
Photon Webhooks & IPv6対応の最新情報
Photon Webhooks & IPv6対応の最新情報Photon Webhooks & IPv6対応の最新情報
Photon Webhooks & IPv6対応の最新情報
 
ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~
 
Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化Open Stack Day - Ansibleによる環境構築の自動化
Open Stack Day - Ansibleによる環境構築の自動化
 
Open VZ
Open VZOpen VZ
Open VZ
 
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をするChef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
Chef Casual Talk Vol.1 最近、日本でPuppetの影が薄くなって悲しいので、 ここであえてPuppetの話をする
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
 

Viewers also liked

リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要Kouhei Sutou
 
Groongaドキュメント読書会1の進め方
Groongaドキュメント読書会1の進め方Groongaドキュメント読書会1の進め方
Groongaドキュメント読書会1の進め方Kouhei Sutou
 
SEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジSEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジKouhei Sutou
 
Groongaドキュメント読書会5の進め方
Groongaドキュメント読書会5の進め方Groongaドキュメント読書会5の進め方
Groongaドキュメント読書会5の進め方Kouhei Sutou
 
Groongaドキュメント読書会2の進め方
Groongaドキュメント読書会2の進め方Groongaドキュメント読書会2の進め方
Groongaドキュメント読書会2の進め方Kouhei Sutou
 
Droonga移行後の世界
Droonga移行後の世界Droonga移行後の世界
Droonga移行後の世界Kouhei Sutou
 
SEゼミ2014 - 練習
SEゼミ2014 - 練習SEゼミ2014 - 練習
SEゼミ2014 - 練習Kouhei Sutou
 
実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえりKouhei Sutou
 
実践リーダブルコードの概要
実践リーダブルコードの概要実践リーダブルコードの概要
実践リーダブルコードの概要Kouhei Sutou
 
Groongaドキュメント読書会4の進め方
Groongaドキュメント読書会4の進め方Groongaドキュメント読書会4の進め方
Groongaドキュメント読書会4の進め方Kouhei Sutou
 
SEゼミ2015 - OSS Hack Weekend - 2日目の概要
SEゼミ2015 - OSS Hack Weekend - 2日目の概要SEゼミ2015 - OSS Hack Weekend - 2日目の概要
SEゼミ2015 - OSS Hack Weekend - 2日目の概要Kouhei Sutou
 
SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方Kouhei Sutou
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Kouhei Sutou
 
Groongaドキュメント読書会3の進め方
Groongaドキュメント読書会3の進め方Groongaドキュメント読書会3の進め方
Groongaドキュメント読書会3の進め方Kouhei Sutou
 
アプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込みアプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込みKouhei Sutou
 
Rabbit - 時間内に終われるプレゼンツール
Rabbit - 時間内に終われるプレゼンツールRabbit - 時間内に終われるプレゼンツール
Rabbit - 時間内に終われるプレゼンツールKouhei Sutou
 

Viewers also liked (18)

リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要
 
Groongaドキュメント読書会1の進め方
Groongaドキュメント読書会1の進め方Groongaドキュメント読書会1の進め方
Groongaドキュメント読書会1の進め方
 
SEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジSEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジ
 
Groongaドキュメント読書会5の進め方
Groongaドキュメント読書会5の進め方Groongaドキュメント読書会5の進め方
Groongaドキュメント読書会5の進め方
 
Groongaドキュメント読書会2の進め方
Groongaドキュメント読書会2の進め方Groongaドキュメント読書会2の進め方
Groongaドキュメント読書会2の進め方
 
Droonga移行後の世界
Droonga移行後の世界Droonga移行後の世界
Droonga移行後の世界
 
SEゼミ2014 - 練習
SEゼミ2014 - 練習SEゼミ2014 - 練習
SEゼミ2014 - 練習
 
実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり
 
実践リーダブルコードの概要
実践リーダブルコードの概要実践リーダブルコードの概要
実践リーダブルコードの概要
 
Groongaドキュメント読書会4の進め方
Groongaドキュメント読書会4の進め方Groongaドキュメント読書会4の進め方
Groongaドキュメント読書会4の進め方
 
SEゼミ2015 - OSS Hack Weekend - 2日目の概要
SEゼミ2015 - OSS Hack Weekend - 2日目の概要SEゼミ2015 - OSS Hack Weekend - 2日目の概要
SEゼミ2015 - OSS Hack Weekend - 2日目の概要
 
SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方
 
Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版Hatoholのログ蓄積・検索機能 2014/12版
Hatoholのログ蓄積・検索機能 2014/12版
 
Groongaドキュメント読書会3の進め方
Groongaドキュメント読書会3の進め方Groongaドキュメント読書会3の進め方
Groongaドキュメント読書会3の進め方
 
Groonga族2014
Groonga族2014Groonga族2014
Groonga族2014
 
アプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込みアプリケーションへのRubyインタープリターの組み込み
アプリケーションへのRubyインタープリターの組み込み
 
Groonga族2013
Groonga族2013Groonga族2013
Groonga族2013
 
Rabbit - 時間内に終われるプレゼンツール
Rabbit - 時間内に終われるプレゼンツールRabbit - 時間内に終われるプレゼンツール
Rabbit - 時間内に終われるプレゼンツール
 

Similar to Droongaのはじめかた

Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29kenhys
 
はじめてのDroonga
はじめてのDroongaはじめてのDroonga
はじめてのDroongaHiroshi Yuki
 
Groonga改良型Ngramトークナイザー
Groonga改良型NgramトークナイザーGroonga改良型Ngramトークナイザー
Groonga改良型NgramトークナイザーNaoya Murakami
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアKouhei Sutou
 
Droonga as-groonga-with-replication-droonga-as-groonga-with-replication
Droonga as-groonga-with-replication-droonga-as-groonga-with-replicationDroonga as-groonga-with-replication-droonga-as-groonga-with-replication
Droonga as-groonga-with-replication-droonga-as-groonga-with-replicationHiroshi Yuki
 
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込みKouhei Sutou
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
プログラマー
プログラマープログラマー
プログラマーKouhei Sutou
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会Takahiro Iwase
 
「入門Kubernetes」輪読会資料 6章
「入門Kubernetes」輪読会資料 6章「入門Kubernetes」輪読会資料 6章
「入門Kubernetes」輪読会資料 6章Ken SASAKI
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Kouhei Sutou
 
Groongaを支える取り組み
Groongaを支える取り組みGroongaを支える取り組み
Groongaを支える取り組みkenhys
 
20090704rubyist九州
20090704rubyist九州20090704rubyist九州
20090704rubyist九州koki_h
 
並列化による高速化
並列化による高速化 並列化による高速化
並列化による高速化 sakura-mike
 

Similar to Droongaのはじめかた (20)

Groonga族2015
Groonga族2015Groonga族2015
Groonga族2015
 
Groonga族2016
Groonga族2016Groonga族2016
Groonga族2016
 
Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29
 
はじめてのDroonga
はじめてのDroongaはじめてのDroonga
はじめてのDroonga
 
PGroongaの実装
PGroongaの実装PGroongaの実装
PGroongaの実装
 
Groongaの特徴
Groongaの特徴Groongaの特徴
Groongaの特徴
 
HerokuでGroonga
HerokuでGroongaHerokuでGroonga
HerokuでGroonga
 
Groonga改良型Ngramトークナイザー
Groonga改良型NgramトークナイザーGroonga改良型Ngramトークナイザー
Groonga改良型Ngramトークナイザー
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
 
Droonga as-groonga-with-replication-droonga-as-groonga-with-replication
Droonga as-groonga-with-replication-droonga-as-groonga-with-replicationDroonga as-groonga-with-replication-droonga-as-groonga-with-replication
Droonga as-groonga-with-replication-droonga-as-groonga-with-replication
 
Haikara
HaikaraHaikara
Haikara
 
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
プログラマー
プログラマープログラマー
プログラマー
 
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会
 
「入門Kubernetes」輪読会資料 6章
「入門Kubernetes」輪読会資料 6章「入門Kubernetes」輪読会資料 6章
「入門Kubernetes」輪読会資料 6章
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!
 
Groongaを支える取り組み
Groongaを支える取り組みGroongaを支える取り組み
Groongaを支える取り組み
 
20090704rubyist九州
20090704rubyist九州20090704rubyist九州
20090704rubyist九州
 
並列化による高速化
並列化による高速化 並列化による高速化
並列化による高速化
 

More from Kouhei Sutou

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowKouhei Sutou
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowKouhei Sutou
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataKouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroongaKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!Kouhei Sutou
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionKouhei Sutou
 

More from Kouhei Sutou (20)

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 
Improve extension API: C++ as better language for extension
Improve extension API: C++ as better language for extensionImprove extension API: C++ as better language for extension
Improve extension API: C++ as better language for extension
 

Droongaのはじめかた

  • 1. Droongaの はじめかた Powered by Rabbit 2.1.2 Droongaの はじめかた 須藤功平 クリアコード 全文検索エンジンGroonga勉強会@札幌 2014/03/29 2014/03/29
  • 2. Droongaの はじめかた Powered by Rabbit 2.1.2 この勉強会とこの話の関連 勉強会 Groongaの利用事例を募集 この話 Groongaを使ったプロダクト Droongaの話
  • 3. Droongaの はじめかた Powered by Rabbit 2.1.2 お知らせ1 4.0.1リリース!
  • 4. Droongaの はじめかた Powered by Rabbit 2.1.2 4.0.1の新機能1 adjuster スコアブースト機能 使用例: 運営のオススメを上に表示 重み付きベクター レコード毎にn個の重みを設定 adjusterと連携するとよい
  • 5. Droongaの はじめかた Powered by Rabbit 2.1.2 4.0.1の新機能2 データベース肥大化抑制 Milkodeユーザーにも効果大なはず 注意: データベースの再作成が必要 データベースの後方互換性あり
  • 6. Droongaの はじめかた Powered by Rabbit 2.1.2 お知らせ2 1.0.1リリース!
  • 7. Droongaの はじめかた Powered by Rabbit 2.1.2 1.0.1の新機能 adjuster対応 重み付きベクター対応 ユーザー視点の使い勝手向上 grn2drn-schema, droonga- send, ... 今月は開発者としてよりもユーザーとして触っていたから
  • 8. Droongaの はじめかた Powered by Rabbit 2.1.2 今日の目標 1人以上 Droongaデビュー
  • 9. Droongaの はじめかた Powered by Rabbit 2.1.2 話すこと Droonga 未経験者向け ヒント
  • 10. Droongaの はじめかた Powered by Rabbit 2.1.2 流れ Droongaとはなにか Groongaの使い方 ↑とDroongaの使い方の違い Droongaの考え方のイメージ
  • 11. Droongaの はじめかた Powered by Rabbit 2.1.2 Droongaとはなにか Distributed Groonga
  • 12. Droongaの はじめかた Powered by Rabbit 2.1.2 Distributed? スケールアウト 可能
  • 13. Droongaの はじめかた Powered by Rabbit 2.1.2 Droonga スケールアウト 可能な Groonga
  • 14. Droongaの はじめかた Powered by Rabbit 2.1.2 Groongaが透けて見える スケールアウト 可能な Groonga
  • 15. Droongaの はじめかた Powered by Rabbit 2.1.2 GroongaとDroonga 一部はGroonga != Droonga 一部はGroonga == Droonga
  • 16. Droongaの はじめかた Powered by Rabbit 2.1.2 Groonga != Droonga APIは違う DroongaにGroonga互換レイヤーあり 構成は違う 1台でDroongaを使っても嬉しくない 性能特性は違う 1台で捌ける量→Groongaの方が速い
  • 17. Droongaの はじめかた Powered by Rabbit 2.1.2 Groonga == Droonga クエリーの書き方は同じ スキーマの考え方は同じ 検索機能はだいたい同じ
  • 18. Droongaの はじめかた Powered by Rabbit 2.1.2 Droongaをはじめるために 教養として Groongaを 押さえて おくべき!
  • 19. Droongaの はじめかた Powered by Rabbit 2.1.2 Groongaの使い方 Droongaとはなにか Groongaの使い方 ↑とDroongaの使い方の違い Droongaの考え方のイメージ
  • 20. Droongaの はじめかた Powered by Rabbit 2.1.2 なぜまずGroongaか Groongaはお手軽 1台のマシンで動く 設定ファイルなしで動く コマンドラインで動く
  • 21. Droongaの はじめかた Powered by Rabbit 2.1.2 Groongaを使う流れ 初心者向けの簡易版 スキーマを作る1. インデックスを作る2. データを入れる3. 検索する4.
  • 22. Droongaの はじめかた Powered by Rabbit 2.1.2 スキーマを作る 検索したいものを1つ決める 例: たいやき屋検索ならたいやき屋 検索したいものの集まりを テーブルにする 例: TaiyakiShopsテーブル 付加情報をカラムにする 例: 店舗名、場所、メニューなど
  • 23. Droongaの はじめかた Powered by Rabbit 2.1.2 スキーマ例 table_create TaiyakiShops TABLE_HASH_KEY ShortText # 店舗名 column_create TaiyakiShops name COLUMN_SCALAR ShortText # 場所 column_create TaiyakiShops location COLUMN_SCALAR WGS84GeoPoint
  • 24. Droongaの はじめかた Powered by Rabbit 2.1.2 Groongaを使う流れ: 2 スキーマを作る1. インデックスを作る2. データを入れる3. 検索する4.
  • 25. Droongaの はじめかた Powered by Rabbit 2.1.2 インデックスを作る 全文検索対象を決める 例: 店舗名 トークンの集合を格納する テーブルを作る トークン: 最小検索単位 ↑にインデックスカラムを作る
  • 26. Droongaの はじめかた Powered by Rabbit 2.1.2 インデックス例 # トークン用テーブル # 初心者は常にこれでOK table_create Tokens TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --normalizer NormalizerAuto # インデックスカラム column_create Tokens taiyaki_index COLUMN_INDEX|WITH_POSITION TaiyakiShops name
  • 27. Droongaの はじめかた Powered by Rabbit 2.1.2 Groongaを使う流れ: 3 スキーマを作る1. インデックスを作る2. データを入れる3. 検索する4.
  • 28. Droongaの はじめかた Powered by Rabbit 2.1.2 データを入れる フォーマットはJSON GroongaのJSONパーサーは緩い 多少壊れたJSONも受け付ける
  • 29. Droongaの はじめかた Powered by Rabbit 2.1.2 データ例 load --table TaiyakiShops [ { "_key": "sapporo-yanagiya", "name": "札幌の柳屋", "location": "43.11629x141.34855" } ]
  • 30. Droongaの はじめかた Powered by Rabbit 2.1.2 Groongaを使う流れ: 4 スキーマを作る1. インデックスを作る2. データを入れる3. 検索する4.
  • 31. Droongaの はじめかた Powered by Rabbit 2.1.2 検索する 全文検索対象を指定する 検索キーワードを指定する
  • 32. Droongaの はじめかた Powered by Rabbit 2.1.2 検索例 select TaiyakiShops --match_columns name --query "札幌" # [[...], ← レスポンスヘッダー # [[[1], ← ヒット件数 # ↓ 出力内容のメタデータ # [["_id","UInt32"],...], # ↓ マッチしたレコード # [1,"sapporo-yanagiya","...","札幌の柳屋"]]]]
  • 33. Droongaの はじめかた Powered by Rabbit 2.1.2 Groongaを使う流れの再確認 スキーマを作る1. インデックスを作る2. データを入れる3. 検索する4.
  • 34. Droongaの はじめかた Powered by Rabbit 2.1.2 流れ3 Droongaとはなにか Groongaの使い方 ↑とDroongaの使い方の違い Droongaの考え方のイメージ
  • 35. Droongaの はじめかた Powered by Rabbit 2.1.2 Droongaを使う流れ クラスターを作る ← New1. スキーマを作る2. インデックスを作る3. データを入れる4. 検索する5.
  • 36. Droongaの はじめかた Powered by Rabbit 2.1.2 クラスターを作る 大事だけど時間がないので 省略!
  • 37. Droongaの はじめかた Powered by Rabbit 2.1.2 流れ4 Droongaとはなにか Groongaの使い方 ↑とDroongaの使い方の違い Droongaの考え方のイメージ
  • 38. Droongaの はじめかた Powered by Rabbit 2.1.2 Droongaの構成 http://droonga.org/overview/
  • 39. Droongaの はじめかた Powered by Rabbit 2.1.2 まとめ1 Droonga スケールアウト可能なGroonga Groongaと同じことがいろいろある Groongaの理解が役立つ
  • 40. Droongaの はじめかた Powered by Rabbit 2.1.2 まとめ2 Groongaの使い方 スキーマを作るa. インデックスを作るb. データを入れるc. 検索するd.
  • 41. Droongaの はじめかた Powered by Rabbit 2.1.2 まとめ3 Droongaの使い方 クラスターを作るa. 以下、Groongaと同じb.
  • 42. Droongaの はじめかた Powered by Rabbit 2.1.2 まとめ4 Droongaの構成 n個のGroongaで 大きなGroongaを構成 Droonga=大きなGroonga
  • 43. Droongaの はじめかた Powered by Rabbit 2.1.2 今日の目標の確認 1人以上 Droongaデビューを見据えてGroongaデビュー