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
430
社内ドキュメント検索システム構築のノウハウ
企業内検索システムを作る際に遭遇するような課題を紹介します。
Shinsuke Sugaya
April 23, 2019
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
LastaFluteでKotlinをはじめよう
marevol
0
460
日本最大級の求人検索エンジン「スタンバイ」を支える技術
marevol
2
990
Fess/Elasticsearchを使った業務で使える?全文検索への道
marevol
0
1.3k
PredictionIO構築入門
marevol
0
4.3k
PredictionIOのPython対応計画
marevol
0
4.2k
全文検索システムFessを用いた 検索システム構築入門
marevol
0
3k
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
marevol
0
290
Elasticsearchベースの全文検索システムFess
marevol
0
260
LastaFluteに移行したFessとElasticsearch+ESFluteによるDBFlute環境
marevol
0
590
Other Decks in Technology
See All in Technology
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
200
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
390
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
430
Context Engineeringの取り組み
nutslove
0
380
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
150
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
210
20260204_Midosuji_Tech
takuyay0ne
1
160
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
1.4k
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
58
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Un-Boring Meetings
codingconduct
0
200
Agile that works and the tools we love
rasmusluckow
331
21k
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
160
Fireside Chat
paigeccino
41
3.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Building Applications with DynamoDB
mza
96
6.9k
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