SlideShare a Scribd company logo
1 of 99
Download to read offline
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
PGroonga 2PostgreSQLでの全文検索の決定版
須藤功平 クリアコード
PostgreSQL Conference Japan 2017
2017-11-03
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
対象者
PostgreSQLで全文検索したい
全文検索はよく知らない
PGroongaは使ったことがない
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
全文検索システム:対象
大量のテキスト
例:Wikiのデータ
例:オフィス文書のテキスト
例:商品説明・口コミ
例:チャットログ
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
全文検索システム:目的
必要な情報を
必要なときに
活用
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
必要な情報を活用
×
探している情報が見つからない
○
探している情報が見つかる
◎
意識していなかったけど
実は欲しかった情報も見つかる!
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
必要なときに活用
×
なかなか見つからない
○
すぐに見つかる
◎
すでに見つかっていた
例:レコメンデーション
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
実装方法
選択肢
全文検索サーバーを使う
PostgreSQLを使う
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
全文検索サーバー案
メリット
必要な機能が揃っている
+αの機能もある
速い
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
全文検索サーバー案
デメリット
実装コスト大
それぞれ独自の使い方だから
マスターデータの同期はどうする?
メンテナンスコスト大
それぞれ独自の仕組みだから
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
PostgreSQL案
メリット
実装コスト小
新しく覚えることが少ない
データの一元管理
メンテナンスコスト小
既存の運用ノウハウを使える
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
PostgreSQL案
デメリット
組込機能では機能不足
SQLの表現力不足
1クエリーで実現できない機能アリ
↑は性能を出しにくい
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
実現方法
第3の選択肢
PostgreSQL経由(SQL)で
全文検索エンジンを使う
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
メリット
高速で豊富な機能
実装コスト小
メンテナンスコスト小
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
デメリット
PostgreSQLに拡張機能が必要
DBaaSで使えない
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オススメの選択肢
全文検索の知識ナシ
まだ単純な機能で十分
データ少:PostgreSQLでLIKE
(数十万件とか)
いまどきの全文検索機能が必要
PostgreSQL経由で全文検索エンジン
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オススメの選択肢
全文検索の知識アリ
カリカリにチューニングしたい
PostgreSQL+全文検索サーバー
それ以外
PostgreSQL経由で全文検索エンジン
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
説明する選択肢
PostgreSQL経由
で
全文検索
エンジン
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
全文検索エンジン
Groonga(ぐるんが)
組込可能な全文検索エンジン
PostgreSQLに組込→PGoonga
全文検索サーバーとして
単独でも使用可能
PostgreSQL+全文検索サーバー構成
もできる
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
Groongaの得意なこと
データの追加・更新
新鮮な情報がすぐ検索可能!
バッチで更新しなくてもよい
チャットくらいの頻度でもOK
例:ZulipはPGroongaを採用
更新中も検索性能が落ちない!
利用ユーザーが多い時でも更新可能
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
Groongaの得意なこと
日本語まわり
開発者が日本人
便利機能が組み込み
もちろん、日本語以外もOK!
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
PGroonga
(ぴーじーるんが)
PostgreSQLのインデックス
B-tree・GINなどと同じレイヤー
使用方法
CREATE INDEX ...
USING PGroonga ...
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
PostgreSQLと全文検索
LIKE:組込機能
textsearch:組込機能
pg_trgm:標準添付
アーカイブには含まれている
別途インストールすれば使える
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
LIKEと速度
少ないデータ
十分実用的
400文字×20万件くらいなら1秒とか
少なくないデータ
性能問題アリ
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
LIKEと全文検索システム
速度が実用的なことも多い
少ないデータなら
それっぽい順のソート不可
全文検索ではソート順が重要
ユーザーは先頭n件しか見ない
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
textsearch
インデックスを作るので速い
言語毎にモジュールが必要
英語やフランス語などは組込
日本語は別途必要
日本語用モジュールはあるが…
公式にはメンテナンスされていない
forkして動くようにしている人はいる
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
pg_trgm
インデックスを作るので速い
注:ヒット件数が増えると遅い
注:テキスト量が多いと遅い
注:1,2文字の検索は遅い(米・日本)
日本語を使うにはひと工夫必要
C.UTF-8を使う
ソースを変更してビルド
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
プラグイン
pg_bigm
pg_trgmの日本語対応強化版
それっぽい順のソート不可
PGroonga
本気の全文検索エンジンを利用
速いし日本語もバッチリ!
それっぽい順のソート可
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ベンチマーク:pg_bigm
0
0.5
1
1.5
2
2.5
3
311 14706 20389
Data: Japanese Wikipedia
(Many records and large documents)
N records: About 0.9millions
Average text size: 6.7KiB
Slow
Slow
Elapsedtime(sec)
(Lowerisbetter)
N hits
pg_bigm
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ベンチマーク:PGroonga
0
0.5
1
1.5
2
2.5
3
311 14706 20389
Data: Japanese Wikipedia
(Many records and large documents)
N records: About 0.9millions
Average text size: 6.7KiB
Fast Fast
Elapsedtime(sec)
(Lowerisbetter)
N hits
PGroonga pg_bigm
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
PostgreSQLで全文検索システム
PostgreSQLで全文検索
PGroongaがベスト!
PGroonga
高速
日本語対応
それっぽい順でソート可
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
基本機能
高速全文検索+ソート
検索キーワードハイライト
キーワード周辺テキスト表示
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
高度な機能
オートコンプリート
ローマ字対応(zen→全文検索)
類似文書検索
同義語展開
「牛乳」→
「牛乳 OR ミルク」
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
高速全文検索+ソート
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
テーブル定義
CREATE TABLE entries (
-- 主キーを用意する
-- それっぽい順でソートするために必要
id integer PRIMARY KEY,
title text,
content text
);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
インデックス定義
-- 全文検索用インデックス
-- よくわからないなら
-- デフォルトのまま使うこと!
CREATE INDEX entries_full_text_search
ON entries
--「USING PGroonga」=「PGroongaを使う」
-- 主キーはそれっぽい順ソートのため!
USING PGroonga (id, title, content);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
データ挿入
-- 普通に挿入するだけでよい
INSERT INTO entries
VALUES (1,
'Groongaで高速全文検索!',
'高速に全文検索したいですね!');
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
全文検索
SELECT title FROM entries
WHERE
-- &@~で全文検索
-- 「検索」と「高速」をAND検索
title &@~ '検索 高速' OR
content &@~ '検索 高速';
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
全文検索:LIKE
SELECT title FROM entries
WHERE
-- LIKEでもインデックスが効く
--=アプリを書き換えずに高速化可能
-- ただし&@~より性能が落ちる
title LIKE '%検索%' OR
content LIKE '%検索%';
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
それっぽい順のソート
SELECT
title,
-- pgroonga_score(テーブル名)で
-- それっぽさを数値で取得
pgroonga_score(entries) AS score
FROM entries
WHERE -- ...
-- それっぽさでソート
ORDER BY score DESC LIMIT 10;
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
キーワードハイライト
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
HTML用にハイライト
SELECT
pgroonga_highlight_html(
title,
-- クエリーから対象キーワードを抽出
pgroonga_query_extract_keywords('検索 高速'))
FROM entries
WHERE title &@~ '検索 高速' OR
content &@~ '検索 高速';
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
HTML用ハイライト結果例
<Groonga>で高速全文検索!
↓
&lt;Groonga&gt;で ← タグをエスケープ
<span class="keyword">高速</span>
全文 ↑↓キーワードはclass付け
<span class="keyword">検索</span>!
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
周辺テキスト
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
HTML用に周辺テキスト取得
SELECT
pgroonga_snippet_html(
content,
-- クエリーから対象キーワードを抽出
pgroonga_query_extract_keywords('検索 高速'))
FROM entries
WHERE title &@~ '検索 高速' OR
content &@~ '検索 高速';
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
HTML用周辺テキスト結果例
...<Groonga>で高速全文検索!...
↓
ARRAY[
↓ 1つ目
'ga&gt;で ←タグをエスケープ
<span class="keyword">高速</span>
全文 ↑↓キーワードはclass付け
<span class="keyword">検索/span>!',
'...' ← 2つ目
]
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート:必要なもの
マスターテーブル
候補(例:牛乳)
候補のヨミ(カタカナ・複数可)
例1:ギュウニュウ
例2:ミルク
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート:実装方法
以下の検索のOR
ヨミでの前方一致検索
候補を緩い全文検索
候補でソートして提示
https://pgroonga.github.io/ja/how-to/auto-complete.html
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
テーブル定義
CREATE TABLE terms (
-- 補完候補
term text,
-- この候補のヨミ(N個可)
readings text[],
);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート:データ例
INSERT INTO terms VALUES (
'牛乳', -- 補完候補
ARRAY[
-- ヨミはカタカナで指定
'ギュウニュウ',
-- 「ミルク」でも補完可
'ミルク'
]
);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
データ管理のポイント
普通のテーブルなので管理が楽
追加・削除・更新が楽
ダンプ・リストアもいつも通り
レプリケーションもいつも通り
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
前方一致用インデックス
CREATE INDEX prefix_search ON terms
USING PGroonga
-- ...text_array_term_search...
(readings pgroonga_text_array_term_search_ops_v2);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
緩い全文検索用
CREATE INDEX loose_search ON terms
USING PGroonga (term)
-- 緩い全文検索用トークナイザー
WITH (tokenizer='TokenBigramSplitSymbolAlphaDigit');
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
検索方法
SELECT term FROM terms
-- ヨミで前方一致検索
WHERE readings &^~ '${入力}' OR
-- 緩い全文検索
term &@ '${入力}'
ORDER BY term LIMIT 10; -- ソート
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
検索例:漢字1
-- ユーザーが「牛」を入力した場合
SELECT term FROM terms
-- ヨミで前方一致検索
WHERE readings &^~ '牛' OR
-- 緩い全文検索(ヒット)
term &@ '牛'
ORDER BY term LIMIT 10; -- ソート
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
検索例:漢字2
-- ユーザーが「乳」を入力した場合
SELECT term FROM terms
-- ヨミで前方一致検索
WHERE readings &^~ '乳' OR
-- 緩い全文検索(ヒット)
term &@ '乳'
ORDER BY term LIMIT 10; -- ソート
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
検索例:カタカナ
-- ユーザーが「ギュウ」を入力した場合
SELECT term FROM terms
-- ヨミで前方一致検索(ヒット)
WHERE readings &^~ 'ギュウ' OR
-- 緩い全文検索
term &@ 'ギュウ'
ORDER BY term LIMIT 10; -- ソート
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
検索例:ひらがな
-- ユーザーが「ぎゅう」を入力した場合
SELECT term FROM terms
-- ヨミで前方一致検索(ヒット)
WHERE readings &^~ 'ぎゅう' OR
-- 緩い全文検索
term &@ 'ぎゅう'
ORDER BY term LIMIT 10; -- ソート
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
オートコンプリート
検索例:ローマ字
-- ユーザーが「gyu」を入力した場合
SELECT term FROM terms
-- ヨミで前方一致検索(ヒット)
WHERE readings &^~ 'gyu' OR
-- 緩い全文検索
term &@ 'gyu'
ORDER BY term LIMIT 10; -- ソート
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
同義語展開
同義語
同じ意味だが表記が異なる語
例:「牛乳」と「ミルク」
どの表記でもヒットして欲しい
同義語展開→同義語すべてでOR検索
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
同義語展開
実装方法
同義語管理テーブルを作成
クエリー内の同義語を展開
展開後のクエリーで検索
https://pgroonga.github.io/ja/reference/functions/
pgroonga-query-expand.html
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
同義語展開:テーブル定義
CREATE TABLE synonyms (
-- 展開対象の語
term text,
-- 同義語のリスト
-- term自身も含める
-- 含めない場合はtermが検索禁止語になる
terms text[]
);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
同義語展開:データ例
INSERT INTO synonyms
VALUES ('牛乳', -- 「牛乳」を展開
ARRAY['牛乳', 'ミルク']),
('ミルク', -- 「ミルク」を展開
ARRAY['ミルク', '牛乳']);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
同義語展開:データ管理のポイント
普通のテーブルなので管理が楽
追加・削除・更新が楽
ダンプ・リストアもいつも通り
レプリケーションもいつも通り
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
同義語展開:インデックス定義
CREATE INDEX synonym_search ON synonyms
USING PGroonga
-- ...text_term_search...
-- termで完全一致検索をするため
(term pgroonga_text_term_search_ops_v2);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
同義語展開:確認方法
SELECT pgroonga_query_expand(
'synonyms', -- テーブル名
'term', -- 展開対象のカラム名
'terms', -- 対応する同義語配列のカラム名
'牛乳' -- クエリー
);
-- '((牛乳) OR (ミルク))'
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
同義語展開:検索方法
SELECT title FROM entries
WHERE
-- title &@~ 'アイス ((牛乳) OR (ミルク))'になる
title &@~
pgroonga_query_expand('synonyms',
'term',
'terms',
'アイス 牛乳');
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
類似文書検索
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
類似文書検索
検索クエリーは文書そのもの
キーワードではない
関連エントリーの提示に使える
メタデータがあるなら組み合わせる
→精度向上
メタデータ:タグ・行動履歴など
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
類似文書検索:実現方法
類似検索用インデックスが必要
自然言語に合わせた処理で精度向上
日本語ならMeCabを活用
類似検索用の演算子を使う
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
類似文書検索:インデックス定義
CREATE INDEX entries_similar_search
ON entries
-- タイトルと内容を合わせたテキストをインデックス
-- 理由1:タイトルも重要→対象に加えて精度向上
-- 理由2:PostgreSQLが全文検索インデックスと
-- 区別できるように
USING PGroonga (id, (title || ' ' || content))
-- TokenMecabを使うと精度向上
WITH (tokenizer='TokenMecab');
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
類似文書検索:検索方法
SELECT title,
pgroonga_score(entries) AS score
FROM entries
WHERE
-- &@*で類似文書検索
-- 既存文書の内容をそのまま指定
(title || ' ' || content) &@*
'...Groongaで高速全文検索!...'
ORDER BY score DESC LIMIT 3;
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
類似文書検索:結果例
クエリー:
...Groongaで高速全文検索!...
ヒット例:
...PGroongaで高速全文検索!...
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
おさらい:基本機能
高速全文検索+ソート
検索キーワードハイライト
キーワード周辺テキスト表示
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
おさらい:高度な機能
オートコンプリート
ローマ字対応(zen→全文検索)
類似文書検索
同義語展開
「牛乳」→
「牛乳 OR ミルク」
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
全文検索システムの実装
次の一歩
構造化データ対応
オフィス文書・HTMLなど
対応に必要な処理
テキスト抽出
メタデータ抽出(例:タイトル・更新日時)
スクリーンショット作成(なおよい)
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
抽出ツール
Apache Tika
Apache Luceneのサブプロジェクト
対応フォーマット数が多い
ChupaText
Groongaのサブプロジェクト
スクリーンショット作成対応
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText
対応フォーマット
Word/Excel/PowerPoint
ODT/ODS/ODP(OpenDocument)
PDF/HTML/XML/CSV/...
インターフェイス
HTTPとコマンドライン
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:インストール
DockerかVagrantを使うのが楽
https://github.com/ranguba/chupa-text-docker
https://github.com/ranguba/chupa-text-vagrant
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:Docker
% GITHUB=https://github.com
% git clone 
${GITHUB}/ranguba/chupa-text-docker.git
% cd chupa-text-docker
% docker-compose up --build
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:使い方
% curl 
--form data=@XXX.pdf 
http://localhost:20080/extraction.json
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:結果例
{
"mime-type": "application/pdf", # 元データのMIMEタイプ
"size": 147159, # メタデータ
...,
"texts": [ # 抽出されたテキスト(N個)
{
"mime-type": "text/plain", # 抽出後のMIMEタイプ
...,
"creator": "Adobe Illustrator CS3", # メタデータ
"body": "This is sample PDF. ...", # 抽出したテキスト
"screenshot": {
"mime-type": "image/png", # スクリーンショットのMIMEタイプ
"data": "iVBORw...", # Base64にした画像データ
"encoding": "base64" # Base64であることを明記
}
}
]
}
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:Web UI
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:Web UI抽出例
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:Web UI抽出例
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:Vagrant
% GITHUB=https://github.com
% git clone 
${GITHUB}/ranguba/chupa-text-vagrant.git
% cd chupa-text-vagrant
% vagrant up
使い方はDocker版と同じ
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ChupaText:活用例
抽出したテキスト
PGroongaへ挿入
抽出したメタデータ
PGroongaへ挿入
絞り込みに活用
作成したスクリーンショット
検索結果表示時に掲載
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
まとめ
PostgreSQL経由で
全文検索エンジン
採用の判断材料を提供
全文検索システム実装例を紹介
PGroonga
構造化データの対応方法を紹介
ChupaText
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
扱わなかった話題
運用について
障害対策・レプリケーション
ロジカルレプリケーションは
対応済み!(少しだけ設定方法を紹介)
チューニング
Groongaの機能を直接使う方法
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
postgresql.conf
# マスター
wal_level = logical
max_wal_senders = 10
max_replication_slots = 10
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
DB作成・PGroongaインストール
-- マスター
CREATE DATABASE test_master;
c test_master
CREATE EXTENSION pgroonga;
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
テーブル作成
-- マスター
CREATE TABLE memos (
id integer PRIMARY KEY,
content text
);
CREATE INDEX
full_text_search_index ON memos
USING pgroonga (id, content);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
レプリケーション用ユーザー作成
-- マスター
-- pg_hba.confも編集すること
CREATE ROLE replica
WITH REPLICATION
LOGIN PASSWORD 'pass';
GRANT SELECT
ON ALL TABLES IN SCHEMA public
TO replica;
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
publication作成
-- マスター
CREATE PUBLICATION pub
FOR TABLE memos;
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
DB作成・PGroongaインストール
-- スレーブ
CREATE DATABASE test_slave;
c test_slave
CREATE EXTENSION pgroonga;
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
テーブル作成
-- スレーブ
CREATE TABLE memos (
id integer PRIMARY KEY,
content text
);
CREATE INDEX
full_text_search_index ON memos
USING pgroonga (id, content);
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
subscription作成
-- スレーブ
CREATE SUBSCRIPTION sub
CONNECTION
'host=192.168.0.18 port=5432
user=replica password=pass
dbname=test_master'
PUBLICATION pub;
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
ロジカルレプリケーション
確認
-- マスター
INSERT INTO memos VALUES (1, '全文検索');
-- スレーブ
SELECT * FROM memos
WHERE content &@~ '全文検索';
-- id | content
-- ----+----------
-- 1 | 全文検索
-- (1 row)
PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2
サポートサービス紹介
導入支援(設計支援・性能検証・移行支援・…)
開発支援
(サンプルコード提供・問い合わせ対応・…)
運用支援(障害対応・チューニング支援・…)
問い合わせ先:
https://www.clear-code.com/contact/?
type=groonga

More Related Content

What's hot

雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうkasaharatt
 
cassandra調査レポート
cassandra調査レポートcassandra調査レポート
cassandra調査レポートAkihiro Kuwano
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...NTT DATA Technology & Innovation
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)NTT DATA Technology & Innovation
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングKosuke Kida
 
問合せ最適化インサイド
問合せ最適化インサイド問合せ最適化インサイド
問合せ最適化インサイドTakahiro Itagaki
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)NTT DATA Technology & Innovation
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報Kouhei Sutou
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo dbYuji Isobe
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)NTT DATA Technology & Innovation
 
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?Kouhei Sutou
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)NTT DATA Technology & Innovation
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

What's hot (20)

雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろうPostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろう
 
cassandra調査レポート
cassandra調査レポートcassandra調査レポート
cassandra調査レポート
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
問合せ最適化インサイド
問合せ最適化インサイド問合せ最適化インサイド
問合せ最適化インサイド
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報初心者向けMroonga・PGroonga情報
初心者向けMroonga・PGroonga情報
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Viewers also liked

PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムKouhei Sutou
 
Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Kazutaka Tomita
 
モバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイントモバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイントNaoya Kaneko
 
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行PHP Version Up と AWS への移行
PHP Version Up と AWS への移行gree_tech
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)Kosuke Kida
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Masahito Zembutsu
 
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩Yuuki Takezawa
 
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With LaravelTakumi Yoshida
 
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介Fumiya Sakai
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!Kouhei Sutou
 
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチKazuaki KURIU
 
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリFirebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリFumihiko Shiroyama
 
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイントカスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイントFumiya Sakai
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDockerMasashi Shinbara
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムKouhei Sutou
 
アプリチームを支えるSlack bot
アプリチームを支えるSlack botアプリチームを支えるSlack bot
アプリチームを支えるSlack botKazuaki KURIU
 
Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。Futoshi Endo
 
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付きMayumi Narisawa
 
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説Fumiya Sakai
 

Viewers also liked (20)

PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
 
Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析
 
モバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイントモバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイント
 
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行PHP Version Up と AWS への移行
PHP Version Up と AWS への移行
 
PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)PostgreSQLレプリケーション(pgcon17j_t4)
PostgreSQLレプリケーション(pgcon17j_t4)
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
 
20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel20151205フルスクラッチcms作成のノウハウ With Laravel
20151205フルスクラッチcms作成のノウハウ With Laravel
 
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
 
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 PHPでPostgreSQLとPGroongaを使って高速日本語全文検索! PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
 
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
 
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリFirebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
 
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイントカスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
 
アプリチームを支えるSlack bot
アプリチームを支えるSlack botアプリチームを支えるSlack bot
アプリチームを支えるSlack bot
 
Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。
 
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
 
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
 
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
 

Similar to PGroonga 2 - PostgreSQLでの全文検索の決定版

MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーKouhei Sutou
 
Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索Kouhei Sutou
 
Droongaのはじめかた
DroongaのはじめかたDroongaのはじめかた
DroongaのはじめかたKouhei Sutou
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12Toshi Harada
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_FdwKohei KaiGai
 

Similar to PGroonga 2 - PostgreSQLでの全文検索の決定版 (10)

MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
 
PGroongaの実装
PGroongaの実装PGroongaの実装
PGroongaの実装
 
Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法Mroonga・PGroonga導入方法
Mroonga・PGroonga導入方法
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
Groonga族2015
Groonga族2015Groonga族2015
Groonga族2015
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索
 
Droongaのはじめかた
DroongaのはじめかたDroongaのはじめかた
Droongaのはじめかた
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw
 

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
 
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
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!Kouhei 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
 
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
 
PGroonga & Zulip
PGroonga & ZulipPGroonga & Zulip
PGroonga & Zulip
 
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
 

Recently uploaded

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Recently uploaded (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

PGroonga 2 - PostgreSQLでの全文検索の決定版

  • 1. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 PGroonga 2PostgreSQLでの全文検索の決定版 須藤功平 クリアコード PostgreSQL Conference Japan 2017 2017-11-03
  • 2. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 対象者 PostgreSQLで全文検索したい 全文検索はよく知らない PGroongaは使ったことがない
  • 3. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 全文検索システム:対象 大量のテキスト 例:Wikiのデータ 例:オフィス文書のテキスト 例:商品説明・口コミ 例:チャットログ
  • 4. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 全文検索システム:目的 必要な情報を 必要なときに 活用
  • 5. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 必要な情報を活用 × 探している情報が見つからない ○ 探している情報が見つかる ◎ 意識していなかったけど 実は欲しかった情報も見つかる!
  • 6. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 必要なときに活用 × なかなか見つからない ○ すぐに見つかる ◎ すでに見つかっていた 例:レコメンデーション
  • 7. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 実装方法 選択肢 全文検索サーバーを使う PostgreSQLを使う
  • 8. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 全文検索サーバー案 メリット 必要な機能が揃っている +αの機能もある 速い
  • 9. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 全文検索サーバー案 デメリット 実装コスト大 それぞれ独自の使い方だから マスターデータの同期はどうする? メンテナンスコスト大 それぞれ独自の仕組みだから
  • 10. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 PostgreSQL案 メリット 実装コスト小 新しく覚えることが少ない データの一元管理 メンテナンスコスト小 既存の運用ノウハウを使える
  • 11. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 PostgreSQL案 デメリット 組込機能では機能不足 SQLの表現力不足 1クエリーで実現できない機能アリ ↑は性能を出しにくい
  • 12. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 実現方法 第3の選択肢 PostgreSQL経由(SQL)で 全文検索エンジンを使う
  • 13. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 メリット 高速で豊富な機能 実装コスト小 メンテナンスコスト小
  • 14. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 デメリット PostgreSQLに拡張機能が必要 DBaaSで使えない
  • 15. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オススメの選択肢 全文検索の知識ナシ まだ単純な機能で十分 データ少:PostgreSQLでLIKE (数十万件とか) いまどきの全文検索機能が必要 PostgreSQL経由で全文検索エンジン
  • 16. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オススメの選択肢 全文検索の知識アリ カリカリにチューニングしたい PostgreSQL+全文検索サーバー それ以外 PostgreSQL経由で全文検索エンジン
  • 17. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 説明する選択肢 PostgreSQL経由 で 全文検索 エンジン
  • 18. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 全文検索エンジン Groonga(ぐるんが) 組込可能な全文検索エンジン PostgreSQLに組込→PGoonga 全文検索サーバーとして 単独でも使用可能 PostgreSQL+全文検索サーバー構成 もできる
  • 19. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 Groongaの得意なこと データの追加・更新 新鮮な情報がすぐ検索可能! バッチで更新しなくてもよい チャットくらいの頻度でもOK 例:ZulipはPGroongaを採用 更新中も検索性能が落ちない! 利用ユーザーが多い時でも更新可能
  • 20. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 Groongaの得意なこと 日本語まわり 開発者が日本人 便利機能が組み込み もちろん、日本語以外もOK!
  • 21. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 PGroonga (ぴーじーるんが) PostgreSQLのインデックス B-tree・GINなどと同じレイヤー 使用方法 CREATE INDEX ... USING PGroonga ...
  • 22. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 PostgreSQLと全文検索 LIKE:組込機能 textsearch:組込機能 pg_trgm:標準添付 アーカイブには含まれている 別途インストールすれば使える
  • 23. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 LIKEと速度 少ないデータ 十分実用的 400文字×20万件くらいなら1秒とか 少なくないデータ 性能問題アリ
  • 24. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 LIKEと全文検索システム 速度が実用的なことも多い 少ないデータなら それっぽい順のソート不可 全文検索ではソート順が重要 ユーザーは先頭n件しか見ない
  • 25. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 textsearch インデックスを作るので速い 言語毎にモジュールが必要 英語やフランス語などは組込 日本語は別途必要 日本語用モジュールはあるが… 公式にはメンテナンスされていない forkして動くようにしている人はいる
  • 26. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 pg_trgm インデックスを作るので速い 注:ヒット件数が増えると遅い 注:テキスト量が多いと遅い 注:1,2文字の検索は遅い(米・日本) 日本語を使うにはひと工夫必要 C.UTF-8を使う ソースを変更してビルド
  • 27. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 プラグイン pg_bigm pg_trgmの日本語対応強化版 それっぽい順のソート不可 PGroonga 本気の全文検索エンジンを利用 速いし日本語もバッチリ! それっぽい順のソート可
  • 28. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ベンチマーク:pg_bigm 0 0.5 1 1.5 2 2.5 3 311 14706 20389 Data: Japanese Wikipedia (Many records and large documents) N records: About 0.9millions Average text size: 6.7KiB Slow Slow Elapsedtime(sec) (Lowerisbetter) N hits pg_bigm
  • 29. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ベンチマーク:PGroonga 0 0.5 1 1.5 2 2.5 3 311 14706 20389 Data: Japanese Wikipedia (Many records and large documents) N records: About 0.9millions Average text size: 6.7KiB Fast Fast Elapsedtime(sec) (Lowerisbetter) N hits PGroonga pg_bigm
  • 30. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 PostgreSQLで全文検索システム PostgreSQLで全文検索 PGroongaがベスト! PGroonga 高速 日本語対応 それっぽい順でソート可
  • 31. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 基本機能 高速全文検索+ソート 検索キーワードハイライト キーワード周辺テキスト表示
  • 32. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 高度な機能 オートコンプリート ローマ字対応(zen→全文検索) 類似文書検索 同義語展開 「牛乳」→ 「牛乳 OR ミルク」
  • 33. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 高速全文検索+ソート
  • 34. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 テーブル定義 CREATE TABLE entries ( -- 主キーを用意する -- それっぽい順でソートするために必要 id integer PRIMARY KEY, title text, content text );
  • 35. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 インデックス定義 -- 全文検索用インデックス -- よくわからないなら -- デフォルトのまま使うこと! CREATE INDEX entries_full_text_search ON entries --「USING PGroonga」=「PGroongaを使う」 -- 主キーはそれっぽい順ソートのため! USING PGroonga (id, title, content);
  • 36. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 データ挿入 -- 普通に挿入するだけでよい INSERT INTO entries VALUES (1, 'Groongaで高速全文検索!', '高速に全文検索したいですね!');
  • 37. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 全文検索 SELECT title FROM entries WHERE -- &@~で全文検索 -- 「検索」と「高速」をAND検索 title &@~ '検索 高速' OR content &@~ '検索 高速';
  • 38. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 全文検索:LIKE SELECT title FROM entries WHERE -- LIKEでもインデックスが効く --=アプリを書き換えずに高速化可能 -- ただし&@~より性能が落ちる title LIKE '%検索%' OR content LIKE '%検索%';
  • 39. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 それっぽい順のソート SELECT title, -- pgroonga_score(テーブル名)で -- それっぽさを数値で取得 pgroonga_score(entries) AS score FROM entries WHERE -- ... -- それっぽさでソート ORDER BY score DESC LIMIT 10;
  • 40. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 キーワードハイライト
  • 41. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 HTML用にハイライト SELECT pgroonga_highlight_html( title, -- クエリーから対象キーワードを抽出 pgroonga_query_extract_keywords('検索 高速')) FROM entries WHERE title &@~ '検索 高速' OR content &@~ '検索 高速';
  • 42. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 HTML用ハイライト結果例 <Groonga>で高速全文検索! ↓ &lt;Groonga&gt;で ← タグをエスケープ <span class="keyword">高速</span> 全文 ↑↓キーワードはclass付け <span class="keyword">検索</span>!
  • 43. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 周辺テキスト
  • 44. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 HTML用に周辺テキスト取得 SELECT pgroonga_snippet_html( content, -- クエリーから対象キーワードを抽出 pgroonga_query_extract_keywords('検索 高速')) FROM entries WHERE title &@~ '検索 高速' OR content &@~ '検索 高速';
  • 45. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 HTML用周辺テキスト結果例 ...<Groonga>で高速全文検索!... ↓ ARRAY[ ↓ 1つ目 'ga&gt;で ←タグをエスケープ <span class="keyword">高速</span> 全文 ↑↓キーワードはclass付け <span class="keyword">検索/span>!', '...' ← 2つ目 ]
  • 46. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート
  • 47. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート:必要なもの マスターテーブル 候補(例:牛乳) 候補のヨミ(カタカナ・複数可) 例1:ギュウニュウ 例2:ミルク
  • 48. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート:実装方法 以下の検索のOR ヨミでの前方一致検索 候補を緩い全文検索 候補でソートして提示 https://pgroonga.github.io/ja/how-to/auto-complete.html
  • 49. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート テーブル定義 CREATE TABLE terms ( -- 補完候補 term text, -- この候補のヨミ(N個可) readings text[], );
  • 50. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート:データ例 INSERT INTO terms VALUES ( '牛乳', -- 補完候補 ARRAY[ -- ヨミはカタカナで指定 'ギュウニュウ', -- 「ミルク」でも補完可 'ミルク' ] );
  • 51. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート データ管理のポイント 普通のテーブルなので管理が楽 追加・削除・更新が楽 ダンプ・リストアもいつも通り レプリケーションもいつも通り
  • 52. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート 前方一致用インデックス CREATE INDEX prefix_search ON terms USING PGroonga -- ...text_array_term_search... (readings pgroonga_text_array_term_search_ops_v2);
  • 53. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート 緩い全文検索用 CREATE INDEX loose_search ON terms USING PGroonga (term) -- 緩い全文検索用トークナイザー WITH (tokenizer='TokenBigramSplitSymbolAlphaDigit');
  • 54. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート 検索方法 SELECT term FROM terms -- ヨミで前方一致検索 WHERE readings &^~ '${入力}' OR -- 緩い全文検索 term &@ '${入力}' ORDER BY term LIMIT 10; -- ソート
  • 55. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート 検索例:漢字1 -- ユーザーが「牛」を入力した場合 SELECT term FROM terms -- ヨミで前方一致検索 WHERE readings &^~ '牛' OR -- 緩い全文検索(ヒット) term &@ '牛' ORDER BY term LIMIT 10; -- ソート
  • 56. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート 検索例:漢字2 -- ユーザーが「乳」を入力した場合 SELECT term FROM terms -- ヨミで前方一致検索 WHERE readings &^~ '乳' OR -- 緩い全文検索(ヒット) term &@ '乳' ORDER BY term LIMIT 10; -- ソート
  • 57. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート 検索例:カタカナ -- ユーザーが「ギュウ」を入力した場合 SELECT term FROM terms -- ヨミで前方一致検索(ヒット) WHERE readings &^~ 'ギュウ' OR -- 緩い全文検索 term &@ 'ギュウ' ORDER BY term LIMIT 10; -- ソート
  • 58. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート 検索例:ひらがな -- ユーザーが「ぎゅう」を入力した場合 SELECT term FROM terms -- ヨミで前方一致検索(ヒット) WHERE readings &^~ 'ぎゅう' OR -- 緩い全文検索 term &@ 'ぎゅう' ORDER BY term LIMIT 10; -- ソート
  • 59. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 オートコンプリート 検索例:ローマ字 -- ユーザーが「gyu」を入力した場合 SELECT term FROM terms -- ヨミで前方一致検索(ヒット) WHERE readings &^~ 'gyu' OR -- 緩い全文検索 term &@ 'gyu' ORDER BY term LIMIT 10; -- ソート
  • 60. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 同義語展開 同義語 同じ意味だが表記が異なる語 例:「牛乳」と「ミルク」 どの表記でもヒットして欲しい 同義語展開→同義語すべてでOR検索
  • 61. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 同義語展開 実装方法 同義語管理テーブルを作成 クエリー内の同義語を展開 展開後のクエリーで検索 https://pgroonga.github.io/ja/reference/functions/ pgroonga-query-expand.html
  • 62. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 同義語展開:テーブル定義 CREATE TABLE synonyms ( -- 展開対象の語 term text, -- 同義語のリスト -- term自身も含める -- 含めない場合はtermが検索禁止語になる terms text[] );
  • 63. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 同義語展開:データ例 INSERT INTO synonyms VALUES ('牛乳', -- 「牛乳」を展開 ARRAY['牛乳', 'ミルク']), ('ミルク', -- 「ミルク」を展開 ARRAY['ミルク', '牛乳']);
  • 64. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 同義語展開:データ管理のポイント 普通のテーブルなので管理が楽 追加・削除・更新が楽 ダンプ・リストアもいつも通り レプリケーションもいつも通り
  • 65. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 同義語展開:インデックス定義 CREATE INDEX synonym_search ON synonyms USING PGroonga -- ...text_term_search... -- termで完全一致検索をするため (term pgroonga_text_term_search_ops_v2);
  • 66. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 同義語展開:確認方法 SELECT pgroonga_query_expand( 'synonyms', -- テーブル名 'term', -- 展開対象のカラム名 'terms', -- 対応する同義語配列のカラム名 '牛乳' -- クエリー ); -- '((牛乳) OR (ミルク))'
  • 67. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 同義語展開:検索方法 SELECT title FROM entries WHERE -- title &@~ 'アイス ((牛乳) OR (ミルク))'になる title &@~ pgroonga_query_expand('synonyms', 'term', 'terms', 'アイス 牛乳');
  • 68. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 類似文書検索
  • 69. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 類似文書検索 検索クエリーは文書そのもの キーワードではない 関連エントリーの提示に使える メタデータがあるなら組み合わせる →精度向上 メタデータ:タグ・行動履歴など
  • 70. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 類似文書検索:実現方法 類似検索用インデックスが必要 自然言語に合わせた処理で精度向上 日本語ならMeCabを活用 類似検索用の演算子を使う
  • 71. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 類似文書検索:インデックス定義 CREATE INDEX entries_similar_search ON entries -- タイトルと内容を合わせたテキストをインデックス -- 理由1:タイトルも重要→対象に加えて精度向上 -- 理由2:PostgreSQLが全文検索インデックスと -- 区別できるように USING PGroonga (id, (title || ' ' || content)) -- TokenMecabを使うと精度向上 WITH (tokenizer='TokenMecab');
  • 72. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 類似文書検索:検索方法 SELECT title, pgroonga_score(entries) AS score FROM entries WHERE -- &@*で類似文書検索 -- 既存文書の内容をそのまま指定 (title || ' ' || content) &@* '...Groongaで高速全文検索!...' ORDER BY score DESC LIMIT 3;
  • 73. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 類似文書検索:結果例 クエリー: ...Groongaで高速全文検索!... ヒット例: ...PGroongaで高速全文検索!...
  • 74. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 おさらい:基本機能 高速全文検索+ソート 検索キーワードハイライト キーワード周辺テキスト表示
  • 75. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 おさらい:高度な機能 オートコンプリート ローマ字対応(zen→全文検索) 類似文書検索 同義語展開 「牛乳」→ 「牛乳 OR ミルク」
  • 76. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 全文検索システムの実装 次の一歩 構造化データ対応 オフィス文書・HTMLなど 対応に必要な処理 テキスト抽出 メタデータ抽出(例:タイトル・更新日時) スクリーンショット作成(なおよい)
  • 77. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 抽出ツール Apache Tika Apache Luceneのサブプロジェクト 対応フォーマット数が多い ChupaText Groongaのサブプロジェクト スクリーンショット作成対応
  • 78. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText 対応フォーマット Word/Excel/PowerPoint ODT/ODS/ODP(OpenDocument) PDF/HTML/XML/CSV/... インターフェイス HTTPとコマンドライン
  • 79. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:インストール DockerかVagrantを使うのが楽 https://github.com/ranguba/chupa-text-docker https://github.com/ranguba/chupa-text-vagrant
  • 80. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:Docker % GITHUB=https://github.com % git clone ${GITHUB}/ranguba/chupa-text-docker.git % cd chupa-text-docker % docker-compose up --build
  • 81. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:使い方 % curl --form data=@XXX.pdf http://localhost:20080/extraction.json
  • 82. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:結果例 { "mime-type": "application/pdf", # 元データのMIMEタイプ "size": 147159, # メタデータ ..., "texts": [ # 抽出されたテキスト(N個) { "mime-type": "text/plain", # 抽出後のMIMEタイプ ..., "creator": "Adobe Illustrator CS3", # メタデータ "body": "This is sample PDF. ...", # 抽出したテキスト "screenshot": { "mime-type": "image/png", # スクリーンショットのMIMEタイプ "data": "iVBORw...", # Base64にした画像データ "encoding": "base64" # Base64であることを明記 } } ] }
  • 83. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:Web UI
  • 84. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:Web UI抽出例
  • 85. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:Web UI抽出例
  • 86. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:Vagrant % GITHUB=https://github.com % git clone ${GITHUB}/ranguba/chupa-text-vagrant.git % cd chupa-text-vagrant % vagrant up 使い方はDocker版と同じ
  • 87. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ChupaText:活用例 抽出したテキスト PGroongaへ挿入 抽出したメタデータ PGroongaへ挿入 絞り込みに活用 作成したスクリーンショット 検索結果表示時に掲載
  • 88. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 まとめ PostgreSQL経由で 全文検索エンジン 採用の判断材料を提供 全文検索システム実装例を紹介 PGroonga 構造化データの対応方法を紹介 ChupaText
  • 89. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 扱わなかった話題 運用について 障害対策・レプリケーション ロジカルレプリケーションは 対応済み!(少しだけ設定方法を紹介) チューニング Groongaの機能を直接使う方法
  • 90. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション postgresql.conf # マスター wal_level = logical max_wal_senders = 10 max_replication_slots = 10
  • 91. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション DB作成・PGroongaインストール -- マスター CREATE DATABASE test_master; c test_master CREATE EXTENSION pgroonga;
  • 92. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション テーブル作成 -- マスター CREATE TABLE memos ( id integer PRIMARY KEY, content text ); CREATE INDEX full_text_search_index ON memos USING pgroonga (id, content);
  • 93. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション レプリケーション用ユーザー作成 -- マスター -- pg_hba.confも編集すること CREATE ROLE replica WITH REPLICATION LOGIN PASSWORD 'pass'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO replica;
  • 94. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション publication作成 -- マスター CREATE PUBLICATION pub FOR TABLE memos;
  • 95. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション DB作成・PGroongaインストール -- スレーブ CREATE DATABASE test_slave; c test_slave CREATE EXTENSION pgroonga;
  • 96. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション テーブル作成 -- スレーブ CREATE TABLE memos ( id integer PRIMARY KEY, content text ); CREATE INDEX full_text_search_index ON memos USING pgroonga (id, content);
  • 97. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション subscription作成 -- スレーブ CREATE SUBSCRIPTION sub CONNECTION 'host=192.168.0.18 port=5432 user=replica password=pass dbname=test_master' PUBLICATION pub;
  • 98. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 ロジカルレプリケーション 確認 -- マスター INSERT INTO memos VALUES (1, '全文検索'); -- スレーブ SELECT * FROM memos WHERE content &@~ '全文検索'; -- id | content -- ----+---------- -- 1 | 全文検索 -- (1 row)
  • 99. PGroonga 2 - PostgreSQLでの全文検索の決定版 Powered by Rabbit 2.2.2 サポートサービス紹介 導入支援(設計支援・性能検証・移行支援・…) 開発支援 (サンプルコード提供・問い合わせ対応・…) 運用支援(障害対応・チューニング支援・…) 問い合わせ先: https://www.clear-code.com/contact/? type=groonga