SlideShare a Scribd company logo

GroongaでRedmineを高速全文検索

Kouhei Sutou
Kouhei Sutou
Kouhei SutouFree Software Programmer at ClearCode

Redmineに全文検索エンジンGroongaサポートを追加する「Full Text Search」プラグインを紹介します。このプラグインを使えば数十万チケットがあるRedmineでも高速に目的の情報を見つけられます。高速になるという現状の話だけでなく、Redmine内のデータを有効活用するという今後の話もします。

GroongaでRedmineを高速全文検索

1 of 42
Download to read offline
Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1
Groongaで
Redmineを
高速全文検索
須藤功平 株式会社クリアコード
redmine.tokyo第12回勉強会
2017-05-13
Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1
よく活用されたRedmine
情報の宝庫
問題解決の経緯
Wikiに整理したノウハウ
Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1
さらに活用するために
必要なときに
必要な情報に
素早くアクセスしたい!
Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1
活用方法:検索!
Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1
活用の壁
よく活用されたRedmine
大量の情報(ただし玉石混合)
さらに活用するための課題
大量→必要な情報を見つけにくい
大量→探す時間が増える
Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1
課題例1:検索ノイズが多い
これ以外全部ノイズ

Recommended

全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!Kouhei Sutou
 
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)onozaty
 
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...Kohei Nakamura
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなすonozaty
 
Redmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
 
View Customize Pluginで出来ること
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ることonozaty
 
Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例Go Maeda
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 

More Related Content

What's hot

Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020onozaty
 
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたAnsibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたKeijiUehata1
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技Yoichi Toyota
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システムRedmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システムGo Maeda
 
ユーザ要望に応えるView customize活用事例
ユーザ要望に応えるView customize活用事例ユーザ要望に応えるView customize活用事例
ユーザ要望に応えるView customize活用事例Hidehisa Matsutani
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Tomohisa Kusukawa
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】Kohei Nakamura
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Minoru Maeda
 
講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターンHidehisa Matsutani
 
ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718Mao Ohnishi
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine PluginMei Nakamura
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Kuniharu(州晴) AKAHANE(赤羽根)
 
「情報」を「書く」ということ(仮) #RedmineJapan
 「情報」を「書く」ということ(仮)  #RedmineJapan 「情報」を「書く」ということ(仮)  #RedmineJapan
「情報」を「書く」ということ(仮) #RedmineJapanKazuhito Miura
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 

What's hot (20)

Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
 
Ansibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみたAnsibleの最近の動向を追ってみた
Ansibleの最近の動向を追ってみた
 
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システムRedmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
 
ユーザ要望に応えるView customize活用事例
ユーザ要望に応えるView customize活用事例ユーザ要望に応えるView customize活用事例
ユーザ要望に応えるView customize活用事例
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】
 
Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門Redmineプラグイン導入・開発入門
Redmineプラグイン導入・開発入門
 
講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718ドメイン駆動設計の捉え方 20150718
ドメイン駆動設計の捉え方 20150718
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin継続使用と新規追加したRedmine Plugin
継続使用と新規追加したRedmine Plugin
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
 
「情報」を「書く」ということ(仮) #RedmineJapan
 「情報」を「書く」ということ(仮)  #RedmineJapan 「情報」を「書く」ということ(仮)  #RedmineJapan
「情報」を「書く」ということ(仮) #RedmineJapan
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 

Viewers also liked

Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Sho Douhashi
 
Mroongaを選んだ理由と
ちょっと嬉しかった話
Mroongaを選んだ理由と
ちょっと嬉しかった話Mroongaを選んだ理由と
ちょっと嬉しかった話
Mroongaを選んだ理由と
ちょっと嬉しかった話Terui Masashi
 
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -akiko_pusu
 
開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話Ryou Soda
 
ある工場の Redmine バージョンアップ
ある工場の Redmine バージョンアップある工場の Redmine バージョンアップ
ある工場の Redmine バージョンアップKohei Nakamura
 
UnofficialCookingの紹介とRedmine本家への貢献
UnofficialCookingの紹介とRedmine本家への貢献UnofficialCookingの紹介とRedmine本家への貢献
UnofficialCookingの紹介とRedmine本家への貢献Yuuki Nara
 
Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Yuuki Nara
 
Redmineを活用したプロジェクトマネジメント技術向上について
Redmineを活用したプロジェクトマネジメント技術向上についてRedmineを活用したプロジェクトマネジメント技術向上について
Redmineを活用したプロジェクトマネジメント技術向上についてHirofumi Kadoya
 
講演1 redmineの簡易crmとしての活用事例r2
講演1 redmineの簡易crmとしての活用事例r2講演1 redmineの簡易crmとしての活用事例r2
講演1 redmineの簡易crmとしての活用事例r2Hidehisa Matsutani
 
ある工場はこれでRedmineバージョンアップを決意した
ある工場はこれでRedmineバージョンアップを決意したある工場はこれでRedmineバージョンアップを決意した
ある工場はこれでRedmineバージョンアップを決意したKohei Nakamura
 
Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫Go Maeda
 
Unofficial Redmine Cooking 闇鍋_デモ環境への発展
Unofficial Redmine Cooking 闇鍋_デモ環境への発展Unofficial Redmine Cooking 闇鍋_デモ環境への発展
Unofficial Redmine Cooking 闇鍋_デモ環境への発展Yuuki Nara
 
灰かぶりチケットはシンデレラに成り得るか?
灰かぶりチケットはシンデレラに成り得るか?灰かぶりチケットはシンデレラに成り得るか?
灰かぶりチケットはシンデレラに成り得るか?ishikawa_mizuki
 
Redmine tokyo #13 LT
Redmine tokyo #13 LT Redmine tokyo #13 LT
Redmine tokyo #13 LT Asako Yanuki
 
20171117 redminetokyo13
20171117 redminetokyo1320171117 redminetokyo13
20171117 redminetokyo13Yukiya Hayashi
 

Viewers also liked (15)

Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13
 
Mroongaを選んだ理由と
ちょっと嬉しかった話
Mroongaを選んだ理由と
ちょっと嬉しかった話Mroongaを選んだ理由と
ちょっと嬉しかった話
Mroongaを選んだ理由と
ちょっと嬉しかった話
 
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
 
開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話
 
ある工場の Redmine バージョンアップ
ある工場の Redmine バージョンアップある工場の Redmine バージョンアップ
ある工場の Redmine バージョンアップ
 
UnofficialCookingの紹介とRedmine本家への貢献
UnofficialCookingの紹介とRedmine本家への貢献UnofficialCookingの紹介とRedmine本家への貢献
UnofficialCookingの紹介とRedmine本家への貢献
 
Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介Unofficial Redmine Cookingの紹介
Unofficial Redmine Cookingの紹介
 
Redmineを活用したプロジェクトマネジメント技術向上について
Redmineを活用したプロジェクトマネジメント技術向上についてRedmineを活用したプロジェクトマネジメント技術向上について
Redmineを活用したプロジェクトマネジメント技術向上について
 
講演1 redmineの簡易crmとしての活用事例r2
講演1 redmineの簡易crmとしての活用事例r2講演1 redmineの簡易crmとしての活用事例r2
講演1 redmineの簡易crmとしての活用事例r2
 
ある工場はこれでRedmineバージョンアップを決意した
ある工場はこれでRedmineバージョンアップを決意したある工場はこれでRedmineバージョンアップを決意した
ある工場はこれでRedmineバージョンアップを決意した
 
Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫Redmineのバージョンアップに追従していくための一工夫
Redmineのバージョンアップに追従していくための一工夫
 
Unofficial Redmine Cooking 闇鍋_デモ環境への発展
Unofficial Redmine Cooking 闇鍋_デモ環境への発展Unofficial Redmine Cooking 闇鍋_デモ環境への発展
Unofficial Redmine Cooking 闇鍋_デモ環境への発展
 
灰かぶりチケットはシンデレラに成り得るか?
灰かぶりチケットはシンデレラに成り得るか?灰かぶりチケットはシンデレラに成り得るか?
灰かぶりチケットはシンデレラに成り得るか?
 
Redmine tokyo #13 LT
Redmine tokyo #13 LT Redmine tokyo #13 LT
Redmine tokyo #13 LT
 
20171117 redminetokyo13
20171117 redminetokyo1320171117 redminetokyo13
20171117 redminetokyo13
 

Similar to GroongaでRedmineを高速全文検索

Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29kenhys
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込みKouhei Sutou
 
MroongaとPGroonga
MroongaとPGroongaMroongaとPGroonga
MroongaとPGroongaKouhei Sutou
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版Kouhei Sutou
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Kouhei Sutou
 
SEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジSEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジKouhei Sutou
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムKouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
JRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたJRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたkimukou_26 Kimukou
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Hitoshi Kurokawa
 

Similar to GroongaでRedmineを高速全文検索 (15)

Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Groonga族2015
Groonga族2015Groonga族2015
Groonga族2015
 
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
 
MroongaとPGroonga
MroongaとPGroongaMroongaとPGroonga
MroongaとPGroonga
 
PGroongaの実装
PGroongaの実装PGroongaの実装
PGroongaの実装
 
PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版PGroonga 2 - PostgreSQLでの全文検索の決定版
PGroonga 2 - PostgreSQLでの全文検索の決定版
 
Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!Mroonga開発者が来たぞ!
Mroonga開発者が来たぞ!
 
組込み向けRuby処理系mrubyの可能性
組込み向けRuby処理系mrubyの可能性組込み向けRuby処理系mrubyの可能性
組込み向けRuby処理系mrubyの可能性
 
SEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジSEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジ
 
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システムMySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
JRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみたJRebel for Android 1.0 を試食してみた
JRebel for Android 1.0 を試食してみた
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
 

More from Kouhei 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
 
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・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム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
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム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
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーKouhei Sutou
 

More from Kouhei Sutou (20)

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
 
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・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
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!
 
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
 
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
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
 

GroongaでRedmineを高速全文検索

  • 1. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 Groongaで Redmineを 高速全文検索 須藤功平 株式会社クリアコード redmine.tokyo第12回勉強会 2017-05-13
  • 2. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 よく活用されたRedmine 情報の宝庫 問題解決の経緯 Wikiに整理したノウハウ
  • 3. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 さらに活用するために 必要なときに 必要な情報に 素早くアクセスしたい!
  • 4. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 活用方法:検索!
  • 5. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 活用の壁 よく活用されたRedmine 大量の情報(ただし玉石混合) さらに活用するための課題 大量→必要な情報を見つけにくい 大量→探す時間が増える
  • 6. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 課題例1:検索ノイズが多い これ以外全部ノイズ
  • 7. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 課題例2:検索が遅い 本当に大量だとね! ↓これくらいだと遅くない チケット数:3629 コメント数:35721 Wikiページ数:1016 1秒以内に返ってくる
  • 8. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 解決策 Groongaで Redmineを 高速・高精度 全文検索
  • 9. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 解決例1:検索ノイズがない 全部それっぽい!
  • 10. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 検索ノイズ? 上位N件でがっかりする? がっかり→ノイズ多い ユーザーは上位N件しか確認しない Groongaはスコアを調整してソート 件数は関係ない 実はこの例ではヒット件数は同じ
  • 11. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 解決例2:検索が速い ↓これくらいだと誤差 チケット数:3629 コメント数:35721 Wikiページ数:1016
  • 12. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 200万チケットのケース https://twitter.com/akahane92/status/733832496945594368
  • 13. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 ここまでのまとめ Redmineをさらに活用したい! 素早く必要な情報にアクセス! 検索をがんばらないと! Groongaで全文検索! 検索ノイズが少ない! 速い!
  • 14. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 ここからの話 導入したくなる 情報を紹介
  • 15. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 インストール:RDBMS 対応RDBMS MySQLもPostgreSQLも! RDBMSにGroonga対応 プラグインをインストール プラグイン:別途サービス管理不要→運用コスト増加な し MySQL:Mroonga PostgreSQL:PGroonga
  • 16. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 インストール:Mroonga http://mroonga.org/ja/docs/install.html パッケージで簡単インストール 対応プラットフォーム Debian GNU/Linux, Ubuntu CentOS Fedora macOS Windows
  • 17. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 インストール:PGroonga https://pgroonga.github.io/ja/install/ パッケージで簡単インストール 対応プラットフォーム Debian GNU/Linux, Ubuntu CentOS Fedora macOS Windows
  • 18. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 設定:PGroonga Redmine用のユーザーに PGroongaを使う権限を付与 CREATE EXTENSION pgroonga; GRANT USAGE ON pgroonga TO ユーザー名;
  • 19. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 インストール:プラグイン % cd redmine % git clone https://github.com/okkez/redmine_full_text_search.git plugins/full_text_search % bin/rake redmine:plugins RAILS_ENV=production 再起動で完了!
  • 20. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 高度な検索1:AND/OR/NOT キーワード単位でのAND/OR/NOT 従来:AND/ORのみ 従来:キーワード全体で切り替え 例: (Groonga OR Mroonga) -PostgreSQL GroongaまたはMroongaを含むが PostgreSQLは含まない
  • 21. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 高度な検索2:並び順の変更 ソート対象:スコア・更新時刻 従来:更新時刻のみ ソート順:昇順・降順 従来:降順のみ
  • 22. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 並び順の変更UI
  • 23. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 ここまでのまとめ 簡単にインストールできる 運用も楽 AND/OR/NOTを使える 絞り込みに便利 並び順をカスタマイズできる スコアと更新時刻で十分
  • 24. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 ここからの話 今後の野望
  • 25. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 類似issue検索 issue作成時・閲覧時 自動で類似issueを提示 手動設定の関連issueとは別 類似しているかは計算する
  • 26. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 類似issue:ユースケース 新しい問題が発生! あれ?どこかで見たような… プラグイン: 「このissue、似ていませんか?」 →問題の早期解決!
  • 27. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 類似issue検索:実装 Groonga内のデータを活用 テキストデータだけでなく メタデータも活用 メタデータ例:関連issue 開発協力者を募集 実装・データ提供・発注など
  • 28. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 入力補完 検索ボックス 入力に応じてキーワードを随時提示 ↑ヒットするもののみ 各種入力欄(タイトルなど) 入力に応じて既存内容を随時提示 ローマ字でインクリメンタルサーチ
  • 29. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 入力補完:ユースケース 検索ボックス 自然と適切な検索に誘導! 例:typoを防ぐ・表記揺れを吸収 各種入力欄 自然と表記を統一! →検索しやすい・理解しやすい 例:typoを防ぐ・表記揺れを吸収
  • 30. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 入力補完:実装 Groonga内のデータを活用 どのくらいヒットするキーワード? ログも活用:検索頻度は? メタデータも活用: プロジェクト・トラッカー毎に 文脈をわける 開発協力者を募集 実装・データ提供・発注など
  • 31. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 同義語展開 表記揺れを吸収 例:「打ち合わせ」・「打合せ」 吸収:「打ち合わせ OR 打合せ」 同義語は管理が大変! 文脈で異なる!増減する! 同義語管理を支援 例:同義語候補を自動生成
  • 32. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 同義語展開:ユースケース 検索ボックス 欲しい情報にたどり着ける! 表記揺れによる未発見を解消 同義語管理のコスト削減 Redmine内のデータを より低コストで有効活用!
  • 33. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 同義語展開:実装 Groongaの組み込み機能を活用 高速に同義語展開が可能 同義語候補を機械学習 Groonga内のデータを活用 開発協力者を募集 実装・データ提供・発注など
  • 34. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 スマートナビ(仮) 言わなくても欲しいものを提示 例:駅の近くでスマホを見る →その駅の時刻表を自動で表示 ポイント:ユーザーは 「駅名 時刻表」で 明示的に検索していない!
  • 35. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 スマートナビ:ユースケース .oO(打ち合わせのアジェンダ をWikiにまとめておこう) Redmine:ホーム画面に該当Wikiペ ージのリンクを表示
  • 36. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 スマートナビ:実装 行動履歴から知識を学習 打ち合わせ前にいつもWikiを更新 内容から事実を収集 Wikiページ内のテキスト 「参加者:○○…」から抽出 開発協力者を募集 実装・データ提供・発注など
  • 37. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 ここまでのまとめ このプラグインの現状 Redmineの不便を解消 (マイナスを少しプラスに) このプラグインの今後 Redmineをさらに有効活用! (少しプラスをすごくプラスに)
  • 38. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 ここからの話 Redmineの開発に 参加しよう!
  • 39. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 開発に参加? Redmine本体のコードを書く だけじゃない バグレポート・テスト・issue対応 ドキュメント作成・宣伝 プラグインを作る だけじゃない 本体と同様↑のことも大事な開発
  • 40. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 開発の参加例 Groongaプラグイン開発時の 知見をフィードバック Defect #21993: サイズ上限が小 Patch #23153: フックを追加 Feature #25198: スコアを表示
  • 41. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 敷居が高そう? OSS Gateワークショップへ 参加してみよう 「OSS開発に参加」を経験できる (Redmineもプラグインの多くもOSS!) (もちろんこのプラグインもGroongaもOSS!) https://oss-gate.doorkeeper.jp/
  • 42. Groongaで Redmineを 高速全文検索 Powered by Rabbit 2.2.1 まとめ Redmineをさらに活用するなら Groongaプラグインを使おう! Redmineの開発に参加しよう! OSS Gateワークショップが役立つ 宣伝:全文検索のことは クリアコードに相談しよう!