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
420
社内ドキュメント検索システム構築のノウハウ
企業内検索システムを作る際に遭遇するような課題を紹介します。
Shinsuke Sugaya
April 23, 2019
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
LastaFluteでKotlinをはじめよう
marevol
0
440
日本最大級の求人検索エンジン「スタンバイ」を支える技術
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
570
Other Decks in Technology
See All in Technology
産業的変化も組織的変化も乗り越えられるチームへの成長 〜チームの変化から見出す明るい未来〜
kakehashi
PRO
1
570
Scrum Guide Expansion Pack が示す現代プロダクト開発への補完的視点
sonjin
0
620
Data Hubグループ 紹介資料
sansan33
PRO
0
2.6k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
テストセンター受験、オンライン受験、どっちなんだい?
yama3133
0
210
Databricks Free Editionで始めるLakeflow SDP
taka_aki
0
100
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
複雑さを受け入れるか、拒むか? - 事業成長とともに育ったモノリスを前に私が考えたこと #RSGT2026
murabayashi
1
1.8k
チームで安全にClaude Codeを利用するためのプラクティス / team-claude-code-practices
tomoki10
7
3.3k
2025年 山梨の技術コミュニティを振り返る
yuukis
0
160
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
150
迷わない!AI×MCP連携のリファレンスアーキテクチャ完全ガイド
cdataj
0
470
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Six Lessons from altMBA
skipperchong
29
4.1k
Design in an AI World
tapps
0
120
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Designing for Performance
lara
610
70k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
46
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
210
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
170
Deep Space Network (abreviated)
tonyrice
0
34
Building Adaptive Systems
keathley
44
2.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