Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
社内ドキュメント検索システム構築のノウハウ
Search
Shinsuke Sugaya
April 23, 2019
Technology
0
320
社内ドキュメント検索システム構築のノウハウ
企業内検索システムを作る際に遭遇するような課題を紹介します。
Shinsuke Sugaya
April 23, 2019
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
LastaFluteでKotlinをはじめよう
marevol
0
340
日本最大級の求人検索エンジン「スタンバイ」を支える技術
marevol
2
880
Fess/Elasticsearchを使った業務で使える?全文検索への道
marevol
0
1.1k
PredictionIO構築入門
marevol
0
4.2k
PredictionIOのPython対応計画
marevol
0
4.1k
全文検索システムFessを用いた 検索システム構築入門
marevol
0
2.7k
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
marevol
0
230
Elasticsearchベースの全文検索システムFess
marevol
0
200
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
marevol
0
460
Other Decks in Technology
See All in Technology
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
260
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
320
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
600
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.7k
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
180
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.5k
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
420
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Music & Morning Musume
bryan
46
6.2k
How to Ace a Technical Interview
jacobian
276
23k
Scaling GitHub
holman
458
140k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
A better future with KSS
kneath
238
17k
Docker and Python
trallard
40
3.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Speed Design
sergeychernyshev
25
620
Embracing the Ebb and Flow
colly
84
4.5k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Transcript
社内ドキュメント検索システム構築のノウハウ Search Engineering Tech Talk 2019 Spring
Search Engineering Tech Talk 2019 Spring ▪ 名前: 菅谷信介 ▪
仕事 ➔ 検索やAIに関する開発や技術コンサルティング ▪ オープンソース活動 ➔ Fess, Apache PredictionIO, DBFlute関連,... ▪ IT Search+で連載中 ➔ 「簡単導入! OSS全文検索サーバFess入門」 自己紹介 2
Search Engineering Tech Talk 2019 Spring 今回は 検索エンジンの中身的な話ではなく 企業内検索における検索システムの話 3
Search Engineering Tech Talk 2019 Spring 企業内検索とは 4
Search Engineering Tech Talk 2019 Spring ▪ 企業内の様々な情報を検索するシステム 企業内検索(エンタープライズサーチ) 5
検索システム 利用者 社内(外)サイト 業務システム (クラウドサービスも含む) 検索 クロール ファイルサーバ 複数のデータソースを対象として横断検索を実現する
Search Engineering Tech Talk 2019 Spring Fessで学んだ 企業内検索を作るための話 6
Search Engineering Tech Talk 2019 Spring Fessとは 7
Search Engineering Tech Talk 2019 Spring 8 Fessとは ▪ オープンソースの全文検索システム
➔5分で構築できるくらい簡単に利用可能 ▪ Apacheライセンスで提供 ▪ Javaベースのアプリケーションサーバ ▪ Elasticsearchを検索エンジンとして利用 ▪ 様々な検索シーンで利用可能 ▪ 現在の最新バージョンは12.6 ➔今年で開発10年目! https://fess.codelibs.org/
Search Engineering Tech Talk 2019 Spring 9 デモ環境: https://search.n2sm.co.jp/ 検索画面
PC版 スマホ版
Search Engineering Tech Talk 2019 Spring 10 管理画面 adminユーザーでログイン
Search Engineering Tech Talk 2019 Spring 11 検索分野での立ち位置 検索関連の知識なくても利用可能(すぐに使える) 検索関連の知識が必要(開発が必要)
検索システム ➔ Fess、商用検索システム 検索サーバ+クローラ ➔ Hyper Estraier、Namazu、Nutchなど 検索サーバ ➔ Solr、Elasticsearch、groongaなど 検索ライブラリ ➔ Luceneなど
Search Engineering Tech Talk 2019 Spring 企業内検索を 構築するときの課題 12
Search Engineering Tech Talk 2019 Spring ▪ クロール対象の大規模化 ▪ セキュア検索
▪ シングルサインオン ▪ 業務システムとの連携 ▪ ファイルの種類 よくでる課題 13
Search Engineering Tech Talk 2019 Spring ▪ クロール対象のファイル数の増加 ➔数千万ファイル以上の案件が増えた ▪
クラスタにして分散検索 ➔Elasticsearchで実現できる(運用ナレッジは必要) ➔できるだけ運用リスクを減らす ▪ クロールする方法も工夫が必要 ➔通常のファイルシステムのクロールでは無理 ➔更新ファイルリストを生成しクロール クロール対象の大規模化 14 Fess データストアクロール 更新されたファイルの ファイルパス一覧 ファイルサーバなど 更新されたファイルだけ クロールする
Search Engineering Tech Talk 2019 Spring 15 セキュア検索(ロール検索) ▪ 認証状態により検索結果を出し分ける
➔ログインしているユーザー情報を利用する ➔AD連携して認証情報を取得するなど ▪ クロール時に権限情報を付加する ➔Sambaクロールの場合はファイルの権限を利用する 営業部 技術部 Fess 部門別や役職別に検索結果を 出し分けることが可能 営業資料 検索条件に 部署を追加 ドキュメントに 部署を追加
Search Engineering Tech Talk 2019 Spring ▪ 検索システムにも自動でログインする ➔Windows統合認証 ➔リバースプロキシ型認証
➔OpenID Connectなど ▪ Active DirectoryだとWindows統合認証 ➔今後はAzureADでOpenID Connectと増えるかも シングルサイオン 16 利用者 Fess 認証サーバ 利用者 Fess 認証サーバ Windows統合認証 OpenID Connect リバースプロキシ型
Search Engineering Tech Talk 2019 Spring ▪ いろいろな業務システムがある ▪ とはいえ、データはデータベースにある
➔SQLで取得してインデックスすれば良い ➔JDBCドライバがあればだいたい何とかなる 業務システムとの連携 17 Fess データストアクロール DBサーバ SQLのSELECT文 1行1ドキュメントとして 加工してインデックスする
Search Engineering Tech Talk 2019 Spring ▪ 検索するためにはテキスト化が必要 ▪ MS
Office: POI ▪ PDF: PDFBox ▪ DocuWork: IFilter or xdw2text ▪ 一太郎: IFilter (消えつつある気がする…) ▪ AutoCAD: libdxfrw ▪ その他もろもろ: Tika ➔Tikaはいろいろなことをいい感じにテキスト化する ➔場合によっては微調整は必要 ファイルの種類 18
Search Engineering Tech Talk 2019 Spring その他の細々とした課題 19
Search Engineering Tech Talk 2019 Spring 20 ▪ http://〜の検索結果ページでfile://〜のリンクが機 能しない
➔セキュリティポリシーの設定で有効な場合もある? ▪ 対応方法としては… ➔WebDAVでhttp://〜等でアクセス可能にする ➔Fessではプロキシとして対象ファイルを返却 file://〜問題
Search Engineering Tech Talk 2019 Spring 21 ▪ zipファイル爆弾 ➔展開すると数Gのファイルになる
➔展開時には展開後のサイズの考慮が必要 ➔Tikaは対策をしている ▪ excelファイル爆弾 ➔何でもExcelにコピペする人がいる… ➔無駄な単語が膨大にあり、Analyzerで高負荷に… ➔Fessは単語の切り捨てや重複除去対応での対策 〜爆弾ファイル
Search Engineering Tech Talk 2019 Spring 22 ▪ PDFのフォーマットにも複数のバージョン ▪
テキスト抽出ならJavaだとPDFBoxとか ▪ PDFBoxは古いバージョンで文字化けする ➔古いバージョンなので気にする必要はない ▪ その他ではOCRのPDFとかの場合 ➔無駄なスペースが入るので、独別な処理が必要 PDF文字化け
Search Engineering Tech Talk 2019 Spring 23 ▪ クリック数やLike数をドキュメントに保持する ▪
クリック数は検索結果クリック時に集計 ➔リンクを書き換えてリダイレクト ▪ 検索状況を集計してレポートする ▪ Function Score Queryでスコアに反映する 検索の集計や反映 利用者 Fess 検索結果を表示 検索結果をクリック 検索結果へリダイレクト 検索結果のサイト ここでクリック情報を取得
Search Engineering Tech Talk 2019 Spring 24 ▪ Google Search
Applianceが保有する機能なので 普通に要求される場合が多い ▪ Analyzerで同義語辞書で対応可能な場合もある ➔リアルタイムな反映が求められると☓ ▪ 特定のクエリーのときに登録語を展開する ➔Fessでは実装済み ➔関連コンテンツ的な機能もあったり… 関連クエリー(同義語)
Search Engineering Tech Talk 2019 Spring 25 ▪ クロールとは別に画像生成処理を実行 ▪
HTMLであればページ内で指定された画像 ➔metaタグのthumbnailかog:imageなど ➔ページ内のimgタグで正方形に近い画像など ➔PhantomJSなどでがんばる必要はない ▪ PDFであればImageMagickのconvertコマンド ▪ MS Officeはunoconvとconvertの合せ技 サムネイル画像の表示
Search Engineering Tech Talk 2019 Spring まとめ 26
Search Engineering Tech Talk 2019 Spring ▪ 企業内検索を作る際にはいろいろと課題がある ▪ 今後はクラウドの対象も増えそう
▪ Fessは数々の課題を乗り越えてきた! ➔ 何か作るならFessをベースに考えると良いはず まとめ 27