SlideShare a Scribd company logo
1 of 66
Download to read offline
ゆるいテキスト検索
ふたたび
N-gram編
ぬこ@横浜(@nuko_yokohama)
自己紹介
名前:ぬこ@横浜
仕事:ラーメンレビュー
副業:某通信系SI会社勤務
(趣味で)誰得なPostgreSQL拡張やってます
つくったもの
xml_fdw:XMLファイルのFDW
w24:二十四節気型
ksj:漢数字で演算する型
あいまいtextsearch用パッチ
neo4j_fdw:グラフデータベースのFDW
redis_fdw 9.3対応(やりかけ)
誰得?
今回のテーマ
pg_bigm+近似検索
pg_bigmって?
PostgreSQL組込み用
N-gram全文検索系
pg_trgnは3文字分割
pg_bigmは2文字分割
NTT DATAの藤井さんと
澤田さんが作っている。
公開中。
(”pg_bigm”で検索)
pg_bigmの売り
日本語をサポート
2文字以下の検索が速い
詳しいことは
(たぶん今日来ている)
藤井さんと澤田さんに
聞いてください。
さて、前回の
アンカンファレンス
発表で
こんなことを言った
「N-gramで近似検索は
無理」と言ったな。
あれは嘘だ。
確かにN-gramだけで
は無理
たとえば・・・
メロスは激怒した。
セリヌンティウスも激怒した。
「俺の名前はセンヌリティウス
じゃねー!」
確かにN-gramだけで
は無理っす
meros=# SELECT data FROM test
WHERE data LIKE likequery('セリヌンティウス') LIMIT 1;
data
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
------------------
------------
メロスには竹馬の友があった。セリヌンティウスである。今は此のシラクスの市で、石工
をしている。その友を、これから訪ねてみるつもりなのだ。久しく逢わなかったのだか
ら、訪ねて行くのが楽しみである。
(1 row)
meros=# SELECT data FROM test
WHERE data LIKE likequery('センヌリティウス') LIMIT 1;
data
------
(0 rows)
ですよねー
しかし
一手間かかるが
近似検索ぽいことは
実はできる。
そのためには
公式リリース版の
pg_bigmには機能が
足りない・・・
pg_trgmにはある・・・
なので作者さんに
丁重にお願いして
similarity関数等を
作ってGithubに上げて
もらった
pg_trgmでもいいんだけどさ・・・
せっかくだからpg_bigmの試験も兼ねて
澤田さん、サンクス!
similarity関数
文字列間の類似度を
算出(0.0~1.0)して返却
1.0なら完全一致
0.0なら全く一致しない
% 演算子
%:類似度が閾値以上なら真
閾値のデフォルトは0.3
pg_bigm.similarity_limit パラメータで変更可能
こんな感じ
bigm=# SHOW pg_bigm.similarity_limit ;
pg_bigm.similarity_limit
--------------------------
0.3
(1 row)
bigm=# SELECT similarity('センヌリティウス', 'セリヌンティウス');
similarity
------------
0.384615
(1 row)
bigm=# SELECT 'センヌリティウス' % 'セリヌンティウス';
?column?
----------
t
(1 row)
bigm=# SET pg_bigm.similarity_limit = 0.4;
SET
bigm=# SELECT 'センヌリティウス' % 'セリヌンティウス';
?column?
----------
f
(1 row)
N-gram近似検索の
やりかた
テキストから辞書を
Mecab等で生成。
文書も辞書も
N-gramインデクスを設定。
あいまいな語と辞書を比較し、
近似した語を取得。
取得した語で近似検索。
辞書テーブル
・・・
シラクス
セリヌンティウス
ゼウス
・・・ 文書テーブル
メロスは激怒した・・・
きょう未明メロスは村・・・
・・・
「セリヌンティウス。・・・
・・・
 勇者は、ひどく赤面・・・
セリヌンティウス
センヌリティウス
類似検索で
一番類似した
「セリヌンティウス」
を取り出す
「セリヌンティウス」を使って
LIKE検索で文書テーブルを
検索する。
だいたいこんな感じ
文書から
抜き出した
キーワード
汎用辞書
やってみた
確かにN-gramだけで
は無理っす
SELECT data FROM meros WHERE data LIKE likequery(
(SELECT data FROM token WHERE data % 'センヌリティウス' ORDER BY similarity(data, 'センヌリティ
ウス') DESC)
) LIMIT 3;
data
-------------------------------------------------------------------------------------------------
--------------------------------------------------
-------------------------------------------------------------------------------------------------
メロスには竹馬の友があった。セリヌンティウスである。今は此のシラクスの市で、石工をしている。その
友を、これから訪ねてみるつもりなのだ。久しく逢わなかったのだから、訪ねて行くのが楽しみである。
「そうです。帰って来るのです。」メロスは必死で言い張った。「私は約束を守ります。私を、三日間だけ
許して下さい。妹が、私の帰りを待っているのだ。そんなに私を信じられないならば、よろしい、この市に
セリヌンティウスという石工がいます。私の無二の友人だ。あれを、人質としてここに置いて行こう。私が
逃げしまって、三日目の日暮まで、ここに帰って来なかったら、あの友人を絞め殺して下さい。たのむ、そ
うして下さい。」
 メロスは腕に唸《うな》りをつけてセリヌンティウスの頬を殴った。
(3 rows)
やったね☆
確かにN-gramだけで
は無理っす
EXPLAIN
SELECT data FROM meros WHERE data LIKE likequery(
(SELECT data FROM token WHERE data % 'センヌリティウス' ORDER BY similarity(data, 'センヌリティ
ウス') DESC)
) LIMIT 3;
QUERY PLAN
--------------------------------------------------------------------------------------------
Limit (cost=56.04..60.06 rows=1 width=32)
InitPlan 1 (returns $0)
-> Sort (cost=44.03..44.04 rows=1 width=32)
Sort Key: (similarity(token.data, 'センヌリティウス'::text))
-> Bitmap Heap Scan on token (cost=40.01..44.02 rows=1 width=32)
Recheck Cond: (data % 'センヌリティウス'::text)
-> Bitmap Index Scan on token_data_idx (cost=0.00..40.01 rows=1 width=0)
Index Cond: (data % 'センヌリティウス'::text)
-> Bitmap Heap Scan on meros (cost=12.01..16.02 rows=1 width=32)
Recheck Cond: (data ~~ likequery($0))
-> Bitmap Index Scan on meros_data_idx (cost=0.00..12.01 rows=1 width=0)
Index Cond: (data ~~ likequery($0))
(12 rows)
インデクスもきちんと使われる
pg_trgm+近似検索
簡単かつ
それなりに有効?
しかし、この方式は
まだまだ欠陥がある
「インタフェース」問題
ふたたび
インタフェース
インタフェイス
インターフェース
インターフェイス
私はこの表記派
参考:各表記の類似度
インタフェース インタフェイス インターフェース インターフェイス
インタフェース 1.0 0.6 0.7 0.416667
インタフェイス 0.6 1.0 0.416667 0.7
インターフェース 0.7 0.416667 1.0 0.636364
インターフェイス 0.416667 0.7 0.636364 1.0
ということは、
Similarityで閾値以上の
類語をOR条件で繋げば
表記ゆれ検索も
ある程度カバーできる?
でも、さっきのクエリを
そのまま使うとエラーに
なる・・・
エラー回避のために
一番安直なのは
“LIMIT 1”
を指定して1行のみ返却
こんな感じ
SELECT data FROM test WHERE data LIKE likequery(
(SELECT token FROM token WHERE token % 'インタフェース'
ORDER BY similarity(token, 'インタフェース') DESC)
);
ERROR: more than one row returned by a subquery used as an expression
SELECT data FROM test WHERE data LIKE likequery(
(SELECT token FROM token WHERE token % 'インタフェース'
ORDER BY similarity(token, 'インタフェース') DESC LIMIT 1)
)
しかし、それでは
複数の候補に
展開できない
どうやって
複数の候補を
条件に展開するか
Point
% 演算子
行から配列を生成
サブクエリ
Text配列へのcast
ANY演算子
こんな感じ
SELECT data FROM test WHERE data LIKE ANY (
(SELECT array_agg(sml.token) FROM (SELECT likequery(token) AS token
FROM token
WHERE token % 'インタフェース'
ORDER BY similarity(token, 'インタフェース') DESC LIMIT 5) as sml)::text[]
);
%演算子で辞書を検索
一番近いN件をORDER Byで取得
その結果をarray_aggで配列化
そのサブクエリの結果をtext[]でキャスト
配列をLIKE ANYで評価
こんな感じ
SELECT data FROM test WHERE data LIKE ANY (
(SELECT array_agg(sml.token) FROM (SELECT likequery(token) AS token
FROM token
WHERE token % 'インタフェース'
ORDER BY similarity(token, 'インタフェース') DESC LIMIT 5) as sml)::text[]
);
data
---------------------------------------------------------------------------
今月号のインターフェースはコンパイラ特集だ。
実装はユーザインタフェースだけでなく、ユーザエクスペリエンスを考えねばならない。
発注元との意識ずれでインタフェイスの再設計をすることになった。
僕の考えた最強のユーザー・インターフェイスは却下された。
(4 rows)
やったね☆
「インタフェース」で
「インターフェース」
「インタフェイス」
「インターフェイス」が
ヒットした。
べたにSQLを書くのは
ちょっと大変・・・
ラッパ関数を作ろう。
こんな感じ
CREATE OR REPLACE FUNCTION create_synonyms(keyword text, limit_num int)
RETURNS text[] AS $$
SELECT array_append(array_agg(sml.token), likequery(keyword)) FROM
(SELECT likequery(token) AS token FROM token
WHERE token % keyword ORDER BY similarity(token, keyword)
  DESC LIMIT limit_num) as sml;
$$ LANGUAGE sql;
ラッパ関数を使うと
ちょっとだけ
シンプルに記述できる
こんな感じ
SELECT data FROM test WHERE data LIKE ANY
((SELECT create_synonyms('インタフェース', 5))::text[]);
data
------------------------------------------------------------------------
今月号のインターフェースはコンパイラ特集だ。
実装はユーザインタフェースだけでなく、ユーザエクスペリエンスを考えねばならない。
発注元との意識ずれでインタフェイスの再設計をすることになった。
僕の考えた最強のユーザー・インターフェイスは却下された。
やったね☆
あのさぁ・・・(棒読み)
色々やってるけど
それくらいなら
LIKE '%インタ%ス%'
で出来るんじゃないの?
そうかもしれないけど・・・
でも、メタ文字を書かせたら
負けな気がする。
それに・・・
「カレーライス」で
「ライスカレー」を
検索できるのか?
これはLIKEの書き方では
無理なはず。
こんな感じ
SELECT data FROM test WHERE data LIKE ANY
((SELECT create_synonyms('ライスカレー'))::text[]);
data
------------------------------------------------------------
彼女は言った。「カレーライスが嫌いな男子なんていません!」
昨晩食べたライスカレーはとても美味かった。
(2 rows)
更なる拡張
Mecab辞書(ipadic)には
ありがたいことに
読みがなもついている。
あいまい語
↓
類義語 or 読みがな
これも展開するとさらに
ゆるく検索できないか?
読みがな側も類似検索す
れば、かなのtypoにも
対応できるかも。
やってみた
こんな感じ
SELECT * FROM test WHERE data LIKE ANY
((SELECT create_synonyms2('小田原市'))::text[]);
data
--------------------------------------------------------------
神奈川の西部には小田原ラーメンというカテゴリの醤油ラーメンがある。
源平の戦いの英雄の一人、那須与一の郷は栃木の大田原市である。
私はコーディングスタイルには然程こだわらないようにしている。
僕は小市民の星を目指している。面倒事は勘弁してくれ。
(4 rows)
(゜Д゜)ハァ?
ちょっと何故ヒットしてるか
わかんないですけどwww
教訓
高度に(?)発達した
「だいたいあってる」は
「だいたいあってない」
と区別がつかない
まとめ
pg_bigmのsimilarityと
辞書を使うことで、
完全一致でない
検索が出来る。
なので
pg_bigmにsimilarity機
能が正式に取り込まれる
といいなあ・・・
このゆるい検索の肝は
TEXT配列を返却する
関数さえあればOK
ということ
汎用のシソーラス辞書を
使うも良し
Web-APIでシソーラス
を引っ張ってもOK
(TEXT配列さえ返却すれば)
最後に
本当は辞書的なものは
使いたくない。
辞書なしでキーワードと
文書間でsimilarityを
考慮した評価が出来るの
が一番いいのかも。
ご清聴
ありがとう
ございました

More Related Content

What's hot

Web本文抽出 using crf
Web本文抽出 using crfWeb本文抽出 using crf
Web本文抽出 using crfShuyo Nakatani
 
Pythonデータ分析 第3回勉強会資料 7章
Pythonデータ分析 第3回勉強会資料 7章Pythonデータ分析 第3回勉強会資料 7章
Pythonデータ分析 第3回勉強会資料 7章Makoto Kawano
 
MongoDBざっくり解説
MongoDBざっくり解説MongoDBざっくり解説
MongoDBざっくり解説知教 本間
 
RESTful Web API Design
RESTful Web API DesignRESTful Web API Design
RESTful Web API DesignAkinari Tsugo
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出Shuyo Nakatani
 
20161127 doradora09 japanr2016_lt
20161127 doradora09 japanr2016_lt20161127 doradora09 japanr2016_lt
20161127 doradora09 japanr2016_ltNobuaki Oshiro
 

What's hot (7)

Web本文抽出 using crf
Web本文抽出 using crfWeb本文抽出 using crf
Web本文抽出 using crf
 
Pythonデータ分析 第3回勉強会資料 7章
Pythonデータ分析 第3回勉強会資料 7章Pythonデータ分析 第3回勉強会資料 7章
Pythonデータ分析 第3回勉強会資料 7章
 
Swim_2013_02_19_jpn
Swim_2013_02_19_jpnSwim_2013_02_19_jpn
Swim_2013_02_19_jpn
 
MongoDBざっくり解説
MongoDBざっくり解説MongoDBざっくり解説
MongoDBざっくり解説
 
RESTful Web API Design
RESTful Web API DesignRESTful Web API Design
RESTful Web API Design
 
CRF を使った Web 本文抽出
CRF を使った Web 本文抽出CRF を使った Web 本文抽出
CRF を使った Web 本文抽出
 
20161127 doradora09 japanr2016_lt
20161127 doradora09 japanr2016_lt20161127 doradora09 japanr2016_lt
20161127 doradora09 japanr2016_lt
 

Similar to Pgunconf ゆるいテキスト検索ふたたび - n-gram応用編

全文検索In着うた配信サービス
全文検索In着うた配信サービス全文検索In着うた配信サービス
全文検索In着うた配信サービスtechtalkdwango
 
魂のコーディング
魂のコーディング魂のコーディング
魂のコーディングDaisuke Tasaki
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめKazumune Katagiri
 
スニペットとウェブカウントを用いたウェブ検索クエリの分類
スニペットとウェブカウントを用いたウェブ検索クエリの分類スニペットとウェブカウントを用いたウェブ検索クエリの分類
スニペットとウェブカウントを用いたウェブ検索クエリの分類Yahoo!デベロッパーネットワーク
 
MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習Preferred Networks
 
PHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストアPHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストアTakuya Sato
 
組み込みDb empressのご紹介
組み込みDb empressのご紹介組み込みDb empressのご紹介
組み込みDb empressのご紹介ITDORAKU
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介ao27
 
Scis2015 ruo ando_2015-01-20-01
Scis2015 ruo ando_2015-01-20-01Scis2015 ruo ando_2015-01-20-01
Scis2015 ruo ando_2015-01-20-01Ruo Ando
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会Nao Minami
 
Kaggle参加報告: Quora Insincere Questions Classification
Kaggle参加報告: Quora Insincere Questions ClassificationKaggle参加報告: Quora Insincere Questions Classification
Kaggle参加報告: Quora Insincere Questions ClassificationKazuki Fujikawa
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介fukuoka.ex
 
ICDE2014 Session 22 Similarity Joins
ICDE2014 Session 22 Similarity JoinsICDE2014 Session 22 Similarity Joins
ICDE2014 Session 22 Similarity JoinsMasumi Shirakawa
 

Similar to Pgunconf ゆるいテキスト検索ふたたび - n-gram応用編 (20)

Pfi last seminar
Pfi last seminarPfi last seminar
Pfi last seminar
 
全文検索In着うた配信サービス
全文検索In着うた配信サービス全文検索In着うた配信サービス
全文検索In着うた配信サービス
 
Tokyo r 25_lt_isobe
Tokyo r 25_lt_isobeTokyo r 25_lt_isobe
Tokyo r 25_lt_isobe
 
mysqlftppc 紹介
mysqlftppc 紹介mysqlftppc 紹介
mysqlftppc 紹介
 
魂のコーディング
魂のコーディング魂のコーディング
魂のコーディング
 
負荷テストことはじめ
負荷テストことはじめ負荷テストことはじめ
負荷テストことはじめ
 
MongoDB
MongoDBMongoDB
MongoDB
 
スニペットとウェブカウントを用いたウェブ検索クエリの分類
スニペットとウェブカウントを用いたウェブ検索クエリの分類スニペットとウェブカウントを用いたウェブ検索クエリの分類
スニペットとウェブカウントを用いたウェブ検索クエリの分類
 
MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習
 
PHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストアPHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストア
 
Tokyo r28 1
Tokyo r28 1Tokyo r28 1
Tokyo r28 1
 
組み込みDb empressのご紹介
組み込みDb empressのご紹介組み込みDb empressのご紹介
組み込みDb empressのご紹介
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
 
Thinking in Cats
Thinking in CatsThinking in Cats
Thinking in Cats
 
Scis2015 ruo ando_2015-01-20-01
Scis2015 ruo ando_2015-01-20-01Scis2015 ruo ando_2015-01-20-01
Scis2015 ruo ando_2015-01-20-01
 
Xtext 紹介
Xtext 紹介Xtext 紹介
Xtext 紹介
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
 
Kaggle参加報告: Quora Insincere Questions Classification
Kaggle参加報告: Quora Insincere Questions ClassificationKaggle参加報告: Quora Insincere Questions Classification
Kaggle参加報告: Quora Insincere Questions Classification
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
 
ICDE2014 Session 22 Similarity Joins
ICDE2014 Session 22 Similarity JoinsICDE2014 Session 22 Similarity Joins
ICDE2014 Session 22 Similarity Joins
 

More from Toshi Harada

無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々Toshi Harada
 
Pgunconf14 pg13-psql
Pgunconf14 pg13-psqlPgunconf14 pg13-psql
Pgunconf14 pg13-psqlToshi Harada
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12Toshi Harada
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-FunctionsToshi Harada
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extensionToshi Harada
 
20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrepToshi Harada
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extensionToshi Harada
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10Toshi Harada
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsqlToshi Harada
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10Toshi Harada
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdevToshi Harada
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Toshi Harada
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubToshi Harada
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubToshi Harada
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaToshi Harada
 
Pgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiPgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiToshi Harada
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-klyToshi Harada
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Toshi Harada
 

More from Toshi Harada (20)

無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々
 
Pgunconf16 toast
Pgunconf16 toastPgunconf16 toast
Pgunconf16 toast
 
Pgunconf14 pg13-psql
Pgunconf14 pg13-psqlPgunconf14 pg13-psql
Pgunconf14 pg13-psql
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pub
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
 
Pgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiPgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversi
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-kly
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
 

Recently uploaded

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
 
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
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 

Recently uploaded (7)

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
 
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
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 

Pgunconf ゆるいテキスト検索ふたたび - n-gram応用編