Suche senden
Hochladen
三日で書くGroonga関数
•
Als PPT, PDF herunterladen
•
2 gefällt mir
•
2,048 views
F
firewood
Folgen
Technologie
Business
Melden
Teilen
Melden
Teilen
1 von 19
Jetzt herunterladen
Empfohlen
gitを使う準備をしよう - 中級編
gitを使う準備をしよう - 中級編
Sanae Yamashita
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
Sanae Yamashita
Githubことはじめ
Githubことはじめ
tikitikipoo
InnoDBだってシュッと全文検索したい!
InnoDBだってシュッと全文検索したい!
Rikito Taniguchi
Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29
kenhys
Groonga族2015
Groonga族2015
Kouhei Sutou
Best Bugs 2017 in the SmartNews iOS app
Best Bugs 2017 in the SmartNews iOS app
firewood
Xcodeでmrubyをステップ実行してみた
Xcodeでmrubyをステップ実行してみた
firewood
Empfohlen
gitを使う準備をしよう - 中級編
gitを使う準備をしよう - 中級編
Sanae Yamashita
gitを使う準備をしよう - 初級編
gitを使う準備をしよう - 初級編
Sanae Yamashita
Githubことはじめ
Githubことはじめ
tikitikipoo
InnoDBだってシュッと全文検索したい!
InnoDBだってシュッと全文検索したい!
Rikito Taniguchi
Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29
kenhys
Groonga族2015
Groonga族2015
Kouhei Sutou
Best Bugs 2017 in the SmartNews iOS app
Best Bugs 2017 in the SmartNews iOS app
firewood
Xcodeでmrubyをステップ実行してみた
Xcodeでmrubyをステップ実行してみた
firewood
Xcodeで値を表示する
Xcodeで値を表示する
firewood
SmartNewsアプリの品質
SmartNewsアプリの品質
firewood
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
firewood
delayed_jobの自動再起動
delayed_jobの自動再起動
firewood
C++でHello worldを書いてみた
C++でHello worldを書いてみた
firewood
フィルタドライバ入門
フィルタドライバ入門
firewood
L-R
L-R
firewood
FPGA
FPGA
firewood
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Weitere ähnliche Inhalte
Mehr von firewood
Xcodeで値を表示する
Xcodeで値を表示する
firewood
SmartNewsアプリの品質
SmartNewsアプリの品質
firewood
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
firewood
delayed_jobの自動再起動
delayed_jobの自動再起動
firewood
C++でHello worldを書いてみた
C++でHello worldを書いてみた
firewood
フィルタドライバ入門
フィルタドライバ入門
firewood
L-R
L-R
firewood
FPGA
FPGA
firewood
Mehr von firewood
(8)
Xcodeで値を表示する
Xcodeで値を表示する
SmartNewsアプリの品質
SmartNewsアプリの品質
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
delayed_jobの自動再起動
delayed_jobの自動再起動
C++でHello worldを書いてみた
C++でHello worldを書いてみた
フィルタドライバ入門
フィルタドライバ入門
L-R
L-R
FPGA
FPGA
Kürzlich hochgeladen
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Kürzlich hochgeladen
(10)
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
三日で書くGroonga関数
1.
三日で作る Groonga 関数 hotpepsi@twitter
2.
Agenda filter で呼べる関数を自作する
ただし三日くらいで
3.
背景 しょぼいサーバでスループットを上げ たい 更新中も検索を止めたくない
検索されるものは全部 Groonga につっ こむ
4.
処理したい内容 親子関係を持つテーブルがある 親と子の個数の比は
1:n ある条件で子テーブルを検索し、合致 する親テーブルを取得したい 具体的には : 商品 (1) : 在庫・価格 (n)
5.
SQL の場合 子テーブルに親テーブルを
JOIN 検索結果を親のキーで DISTINCT Groonga の場合、素直にはできない ※ ドリルダウンすれば 2 度引きで可能
6.
Groonga の場合 子テーブルで検索する
重複するキーを filter で捨てる filter で使える関数を自作する必要があ る
7.
自作する関数の仕様 引数として親のキー( _key
)をとる 格納済かどうかを返す Int32 distinct(ShortText parent_key)
8.
雛形 test/unit/fix/fixtures/modules/string.c に ある
str_len を参考にする 自作の関数を登録する :grn_proc_create grn_proc_create(ctx, "str_len", strlen("str_len"), GRN_PROC_FUNCTION, func_str_len, NULL, NULL, 0, NULL);
9.
とりあえず版 登録 proc.c ... grn_proc_create(ctx,
"distinct", 8, GRN_PROC_FUNCTION, func_distinct, NULL, NULL, 0, NULL); ...
10.
とりあえず版 関数 proc.c static
grn_obj *func_distinct(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data) { int result = 0; grn_obj *obj; if (nargs == 1) { grn_obj *item_key = args[0]; result = _distinct(GRN_TEXT_VALUE(item_key), GRN_TEXT_LEN(item_key)); if ((obj = GRN_PROC_ALLOC(GRN_DB_UINT32, 0))) { GRN_UINT32_SET(ctx, obj, result); } } return obj; }
11.
とりあえず版 中身 distinct.cc #include
<string> #include <set> typedef std::set<std::string> Map; static Map _map; // 格納済キーの保存庫 extern "C" int _distinct(const char *name, size_t length) { std::string _key(name, length); // std::string に変換 Map::iterator it = _map.find(_key); // キーを探す if (it != _map.end()) return 0; // 格納済なら 0 を返す _map.insert(key); // 格納する return 1; }
12.
適当にビルドしてみる lib/ に
distinct.cc を追加して make よくわからないエラー ../lib/.libs/libgroonga.so: undefined reference to `__cxa_begin_catch‘ g++ 経由でリンクしないと駄目
13.
正式なやり方 configure.ac に
AC_PROG_CXX を追加 lib/Makefile.am の libgroonga_la_SOURCES に distinct.cc を追加 autoreconf で configure を再生成
14.
autoreconf への道 色々更新が必要
autoconf-2.67 automake-1.11.1 libtool-2.2.6b 激しく遠い道のりなので以下略
15.
手抜き Makefile.in に追記
.SUFFIXES に .cc を追加 CCLD を gcc から g++ に変更 ビルドルールに .cc.o を追加
16.
デモ 商品テーブル item
ShortText 型 description 3 件 在庫テーブル stock item 型 i Time 型 date Int32 型 price 9 件
17.
distinct なし select
--table stock --output_columns i._key,price → i._key が重複する
18.
distinct あり select
--table stock --filter "distinct(i._key)" --output_columns i._key,price → i._key が重複しない
19.
end of file
Jetzt herunterladen