GroongaでRedmineを高速全文検索

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

Recommended

全文検索でRedmineをさらに活用! by
全文検索でRedmineをさらに活用!全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!Kouhei Sutou
11.5K views55 slides
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ... by
ある工場の 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
2K views32 slides
Redmine にいろいろ埋め込んでみた by
Redmine にいろいろ埋め込んでみたRedmine にいろいろ埋め込んでみた
Redmine にいろいろ埋め込んでみたKohei Nakamura
26.9K views20 slides
Redmineの基本と適用事例 by
Redmineの基本と適用事例Redmineの基本と適用事例
Redmineの基本と適用事例Go Maeda
2.9K views41 slides
Redmine 4.2 新機能評価ガイド by
Redmine 4.2 新機能評価ガイドRedmine 4.2 新機能評価ガイド
Redmine 4.2 新機能評価ガイドGo Maeda
1.4K views60 slides
挫折しないRedmine (2022) by
 挫折しないRedmine  (2022) 挫折しないRedmine  (2022)
挫折しないRedmine (2022)Go Maeda
1.3K views46 slides

More Related Content

What's hot

Redmineの意外と知らない便利機能(Redmine 4.2対応版) by
Redmineの意外と知らない便利機能(Redmine 4.2対応版)Redmineの意外と知らない便利機能(Redmine 4.2対応版)
Redmineの意外と知らない便利機能(Redmine 4.2対応版)Go Maeda
1.6K views55 slides
ある工場のRedmine by
ある工場のRedmineある工場のRedmine
ある工場のRedmineKohei Nakamura
58K views13 slides
View Customize Pluginで出来ること by
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ることonozaty
51.7K views29 slides
View customize pluginを使いこなす by
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなすonozaty
41.9K views83 slides
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020 by
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020onozaty
9.9K views61 slides
ドメイン駆動設計 ( DDD ) をやってみよう by
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
50.1K views45 slides

What's hot(20)

Redmineの意外と知らない便利機能(Redmine 4.2対応版) by Go Maeda
Redmineの意外と知らない便利機能(Redmine 4.2対応版)Redmineの意外と知らない便利機能(Redmine 4.2対応版)
Redmineの意外と知らない便利機能(Redmine 4.2対応版)
Go Maeda1.6K views
View Customize Pluginで出来ること by onozaty
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ること
onozaty51.7K views
View customize pluginを使いこなす by onozaty
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
onozaty41.9K views
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020 by onozaty
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
onozaty9.9K views
ドメイン駆動設計 ( DDD ) をやってみよう by 増田 亨
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨50.1K views
挫折しないRedmine by Go Maeda
挫折しないRedmine挫折しないRedmine
挫折しないRedmine
Go Maeda120.5K views
Redmineによるメール対応管理の運用事例 by Go Maeda
Redmineによるメール対応管理の運用事例Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例
Go Maeda137.2K views
Redmineって何ができるの? by Tomohisa Kusukawa
Redmineって何ができるの?Redmineって何ができるの?
Redmineって何ができるの?
Tomohisa Kusukawa154.9K views
うちのRedmineの使い方(2) by Tomohisa Kusukawa
うちのRedmineの使い方(2)うちのRedmineの使い方(2)
うちのRedmineの使い方(2)
Tomohisa Kusukawa4.3K views
講演1 Redmine導入のアンチパターン by Hidehisa Matsutani
講演1 Redmine導入のアンチパターン講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン
Hidehisa Matsutani19.9K views
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB) by Amazon Web Services Japan
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Redmine 5.0 + RedMica 2.1 新機能評価ガイド by Go Maeda
Redmine 5.0 + RedMica 2.1 新機能評価ガイドRedmine 5.0 + RedMica 2.1 新機能評価ガイド
Redmine 5.0 + RedMica 2.1 新機能評価ガイド
Go Maeda1.5K views
ソフトウェア設計の学び方を考える by 増田 亨
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
増田 亨25.1K views
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」 by akipii Oga
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
akipii Oga152.5K views
RedmineのFAQとアンチパターン集 by akipii Oga
RedmineのFAQとアンチパターン集RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
akipii Oga66.4K views
View customize plugin for Redmineの紹介 (2019年版) by onozaty
View customize plugin for Redmineの紹介 (2019年版)View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
onozaty10.9K views
Redmineの情報を自分好みに見える化した話 by ToshiharuSakai
Redmineの情報を自分好みに見える化した話Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話
ToshiharuSakai6.6K views
はじめる! Redmine (2015) by Go Maeda
はじめる! Redmine (2015)はじめる! Redmine (2015)
はじめる! Redmine (2015)
Go Maeda225K views

Viewers also liked

Redmine4時代のプラグイン開発 redmine.tokyo #13 by
Redmine4時代のプラグイン開発 redmine.tokyo #13Redmine4時代のプラグイン開発 redmine.tokyo #13
Redmine4時代のプラグイン開発 redmine.tokyo #13Sho Douhashi
9.1K views73 slides
Mroongaを選んだ理由と
ちょっと嬉しかった話 by
Mroongaを選んだ理由と
ちょっと嬉しかった話Mroongaを選んだ理由と
ちょっと嬉しかった話
Mroongaを選んだ理由と
ちょっと嬉しかった話Terui Masashi
5.5K views67 slides
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) - by
あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -あなたのコードに ハナマルを。-  〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -
あなたのコードに ハナマルを。- 〜 ぼっち開発でも出来る
プラグインテスト初めの一歩(仮) -akiko_pusu
5.5K views28 slides
開発環境の認証を改善して Redmineを社内標準にした話 by
開発環境の認証を改善して Redmineを社内標準にした話開発環境の認証を改善して Redmineを社内標準にした話
開発環境の認証を改善して Redmineを社内標準にした話Ryou Soda
7.8K views42 slides
ある工場の Redmine バージョンアップ by
ある工場の Redmine バージョンアップある工場の Redmine バージョンアップ
ある工場の Redmine バージョンアップKohei Nakamura
20.2K views18 slides
UnofficialCookingの紹介とRedmine本家への貢献 by
UnofficialCookingの紹介とRedmine本家への貢献UnofficialCookingの紹介とRedmine本家への貢献
UnofficialCookingの紹介とRedmine本家への貢献Yuuki Nara
11.8K views17 slides

Viewers also liked(15)

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

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

Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用! by
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
2.5K views66 slides
Groonga Meetup 2014/04/29 by
Groonga Meetup 2014/04/29Groonga Meetup 2014/04/29
Groonga Meetup 2014/04/29kenhys
967 views82 slides
Redmine検索の未来像 by
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
1.3K views31 slides
Groonga族2015 by
Groonga族2015Groonga族2015
Groonga族2015Kouhei Sutou
1.1K views185 slides
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み by
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込みKouhei Sutou
790 views23 slides
MroongaとPGroonga by
MroongaとPGroongaMroongaとPGroonga
MroongaとPGroongaKouhei Sutou
1.1K views44 slides

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

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

More from Kouhei Sutou

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 by
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
500 views42 slides
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow by
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
246 views67 slides
Rubyと仕事と自由なソフトウェア by
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
686 views40 slides
Apache Arrowフォーマットはなぜ速いのか by
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
506 views45 slides
Apache Arrow 1.0 - A cross-language development platform for in-memory data by
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
539 views48 slides
Apache Arrow 2019 by
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019Kouhei Sutou
1.3K views55 slides

More from Kouhei Sutou(20)

Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021 by Kouhei Sutou
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Kouhei Sutou500 views
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow by Kouhei Sutou
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
Kouhei Sutou246 views
Rubyと仕事と自由なソフトウェア by Kouhei Sutou
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
Kouhei Sutou686 views
Apache Arrowフォーマットはなぜ速いのか by Kouhei Sutou
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
Kouhei Sutou506 views
Apache Arrow 1.0 - A cross-language development platform for in-memory data by Kouhei Sutou
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
Kouhei Sutou539 views
Apache Arrow 2019 by Kouhei Sutou
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
Kouhei Sutou1.3K views
Apache Arrow - A cross-language development platform for in-memory data by Kouhei Sutou
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
Kouhei Sutou1.2K views
Better CSV processing with Ruby 2.6 by Kouhei Sutou
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
Kouhei Sutou4.5K views
Apache Arrow - データ処理ツールの次世代プラットフォーム by Kouhei Sutou
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou7.6K views
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム by Kouhei Sutou
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
Kouhei Sutou9.1K views
MySQL 8.0でMroonga by Kouhei Sutou
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
Kouhei Sutou1.1K views
PGroonga 2 – Make PostgreSQL rich full text search system backend! by Kouhei Sutou
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
Kouhei Sutou597 views
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム by Kouhei Sutou
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システムPostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
PostgreSQLとPGroongaで作るPHPマニュアル高速全文検索システム
Kouhei Sutou1.8K views
Improve extension API: C++ as better language for extension by Kouhei Sutou
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
Kouhei Sutou2.1K views
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー by Kouhei Sutou
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナーMySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
Kouhei Sutou1.6K views

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ワークショップが役立つ 宣伝:全文検索のことは クリアコードに相談しよう!