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