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
400
社内ドキュメント検索システム構築のノウハウ
企業内検索システムを作る際に遭遇するような課題を紹介します。
Shinsuke Sugaya
April 23, 2019
Tweet
Share
More Decks by Shinsuke Sugaya
See All by Shinsuke Sugaya
LastaFluteでKotlinをはじめよう
marevol
0
410
日本最大級の求人検索エンジン「スタンバイ」を支える技術
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
540
Other Decks in Technology
See All in Technology
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
5.4k
Large Vision Language Modelを用いた 文書画像データ化作業自動化の検証、運用 / shibuya_AI
sansan_randd
0
110
OCI Network Firewall 概要
oracle4engineer
PRO
1
7.8k
Azure SynapseからAzure Databricksへ 移行してわかった新時代のコスト問題!?
databricksjapan
0
140
Why React!?? Next.jsそしてReactを改めてイチから選ぶ
ypresto
10
4.5k
BirdCLEF+2025 Noir 5位解法紹介
myso
0
200
extension 現場で使えるXcodeショートカット一覧
ktombow
0
210
許しとアジャイル
jnuank
1
130
o11yで育てる、強い内製開発組織
_awache
3
120
ユニットテストに対する考え方の変遷 / Everyone should watch his live coding
mdstoy
0
130
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
0
140
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
77k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Building Applications with DynamoDB
mza
96
6.6k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
890
Thoughts on Productivity
jonyablonski
70
4.9k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
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