Text
Page: 1
Redmine検索の
未来像
須藤功平
株式会社クリアコード
redmine.tokyo第17回
2019-11-02
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 2
Redmine検索の未来
全文検索プラグイン
https://github.com/clear-code/redmine_full_text_search
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 3
従来の検索システム
SQLの標準機能で実現
比較条件+LIKE
例:
プロジェクト絞り込み:等価条件
コメント検索:LIKE
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 4
未来の検索システム
全文検索エンジンで実現
全文検索だけでなく比較条件もすべて
例:
プロジェクト絞り込み:等価条件
コメント検索:全文検索
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 5
従来の検索システムの課題
速度とソート
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 6
速度
コメント増加→検索時間増加
検索への期待
すばやく必要な情報を見つけたい
遅いと期待に応えられない
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 7
ソート
更新時刻のみ
検索への期待
すばやく必要な情報を見つけたい
最新の情報≠必要な情報
必要な順にソートしないと
期待に応えられない
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 8
未来の検索システム
速度
コメント増加→検索時間超微増
すばやく必要な情報を見つけられる
ソート
更新時刻+適合度
すばやく必要な情報を見つけられる
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 9
未来の検索システムの改善点
高速さと高精度
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 10
未来の検索システムのさらなる改善点
検索対象を追加
クリックで絞り込めるUI
表現の揺らぎに対応
定量的な検索機能の評価基盤
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 11
検索対象を追加
メタデータ
ステータス・トラッカー・ユーザー・…
添付ファイル・リポジトリー内のファイル
PDF・オフィス文書からもテキスト抽出
アーカイブも展開して再帰的にテキスト抽出
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 12
メタデータで検索
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 13
クリックで絞り込めるUI
ユーザー:なにを探しているかわからない
検索システムとの対話の中で見つける
対話:検索結果+次のクエリーを提案
ユーザーと検索システムが一緒に答えを探す
提案されたクエリーで絞り込み
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 14
表現の揺らぎに対応
表現の揺らぎ:
同義語:ネジとビス
異表記:ネジと螺子
クエリー拡張:
検索前に自動でクエリーを拡張
ネジ→ネジ OR ビス OR 螺子
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 15
クエリー拡張:Groonga→Groonga OR PGroonga
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 16
表現の揺らぎのメンテナンス
手動はツライ。。。
誰がやるの?
いつやるの?
自動化しないと陳腐化
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 17
未来の検索システムでのメンテナンス
自動化中
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 18
自動化方法
既知の情報を収集
例:Wikipediaのリダイレクト情報
例:NEologdの情報
Redmine内の情報から学習
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 19
既知の情報を収集
メリット:楽
スクリプトを準備する予定
デメリット:
一般的な言い回ししか集まらない
ドメイン固有の言い回しがない
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 20
Redmine内の情報から学習
メリット:
ドメイン固有の言い回しに対応可
デメリット:
難しい
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 21
学習:検証中
1. テキスト情報を抽出
全文検索用に抽出した情報を活用
自然言語っぽいものだけ選別して行に分割
2. SentencePieceでトークナイズ
MeCabだとドメイン固有の未知語に対応できない
3. BERT/fastTextでベクトル化
4. 類似単語を揺らぎとして抽出
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 22
学習:現状(伸びしろしかない)
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 23
定量的な検索機能の評価基盤
定性的な評価(例:インタビュー)
体感で速くなった!
体感で見つかりやすくなった!
定量的な評価(例:ログ分析)
利用ユーザーが○人
ユーザーが必要な情報を取得できた割合が○%
ログを追加し定量的な評価が可能に
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 24
定量的な評価基盤:現状
Railsのログに記録
スクリプトでログを解析してレポート
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 25
定量的な評価基盤:未来
RDBMSに記録
管理画面でリアルタイムにレポート
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 27
さらなる高速化
常に1秒未満を目指す
検索システムとの対話ストレスをなくす
インクリメンタル検索も現実的に
パカパカしてうるさいかもしれない
Googleはこの機能を捨てた
定量的な評価をしながら取捨選択する予定
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 28
入力補完
入力中にクエリーを提案
Googleはこの機能にシフトした
課題:良質な補完候補の用意
Wikipediaなど一般的なデータを活用
Redmine内のデータから機械学習で生成
極秘データの扱いに注意が必要
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 29
テキスト抽出可能ファイルの追加
.msg(Outlookのファイル)
SVGファイル
CADファイル
...
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 30
Redmine検索の未来
全文検索プラグイン
https://github.com/clear-code/redmine_full_text_search
Redmine検索の 未来像
Powered by Rabbit 3.0.1
Page: 31
一緒に未来を作ろう!
仕事として一緒に開発
あなた:お金と要望とデータを提供
クリアコード:開発・コンサルティング
成果は自由なソフトウェアとして公開
連絡先
https://www.clear-code.com/contact/
Redmine検索の 未来像
Powered by Rabbit 3.0.1