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
410
社内ドキュメント検索システム構築のノウハウ
企業内検索システムを作る際に遭遇するような課題を紹介します。
Shinsuke Sugaya
April 23, 2019
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
LastaFluteでKotlinをはじめよう
marevol
0
420
日本最大級の求人検索エンジン「スタンバイ」を支える技術
marevol
2
960
Fess/Elasticsearchを使った業務で使える?全文検索への道
marevol
0
1.2k
PredictionIO構築入門
marevol
0
4.3k
PredictionIOのPython対応計画
marevol
0
4.1k
全文検索システムFessを用いた 検索システム構築入門
marevol
0
2.9k
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
marevol
0
280
Elasticsearchベースの全文検索システムFess
marevol
0
250
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
marevol
0
550
Other Decks in Technology
See All in Technology
CloudComposerによる大規模ETL 「制御と実行の分離」の実践
leveragestech
0
150
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
240
AWS re:Invent 2025事前勉強会資料 / AWS re:Invent 2025 pre study meetup
kinunori
0
1.1k
AIがコードを書いてくれるなら、新米エンジニアは何をする? / komekaigi2025
nkzn
24
17k
GCASアップデート(202508-202510)
techniczna
0
250
オブザーバビリティが育むシステム理解と好奇心
maruloop
3
2k
累計5000万DLサービスの裏側 – LINEマンガのKotlinで挑む大規模 Server-side ETLの最適化
ldf_tech
0
150
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
25
17k
re:Invent 2025の見どころと便利アイテムをご紹介 / Highlights and Useful Items for re:Invent 2025
yuj1osm
0
640
Mackerelにおけるインシデント対応とポストモーテム - 現場での工夫と学び
taxin
0
110
2025/10/27 JJUGナイトセミナー WildFlyとQuarkusの 始め方
megascus
0
110
AIエージェントを導入する [ 社内ナレッジ活用編 ] / Implement AI agents
glidenote
1
130
Featured
See All Featured
Fireside Chat
paigeccino
41
3.7k
Embracing the Ebb and Flow
colly
88
4.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
Balancing Empowerment & Direction
lara
5
710
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Typedesign – Prime Four
hannesfritz
42
2.8k
Become a Pro
speakerdeck
PRO
29
5.6k
Docker and Python
trallard
46
3.6k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Designing Experiences People Love
moore
142
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
How to Ace a Technical Interview
jacobian
280
24k
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