Weitere ähnliche Inhalte
Ähnlich wie 社内ドキュメント検索システム構築のノウハウ (20)
Mehr von Shinsuke Sugaya (17)
Kürzlich hochgeladen (10)
社内ドキュメント検索システム構築のノウハウ
- 2. Search Engineering Tech Talk 2019 Spring
■ 名前: 菅谷信介
■ 仕事
➔ 検索やAIに関する開発や技術コンサルティング
■ オープンソース活動
➔ Fess, Apache PredictionIO, DBFlute関連,...
■ IT Search+で連載中
➔ 「簡単導入! OSS全文検索サーバFess入門」
自己紹介
2
- 5. Search Engineering Tech Talk 2019 Spring
■ 企業内の様々な情報を検索するシステム
企業内検索(エンタープライズサーチ)
5
検索システム利用者
社内(外)サイト
業務システム
(クラウドサービスも含む)
検索 クロール
ファイルサーバ
複数のデータソースを対象として横断検索を実現する
- 8. Search Engineering Tech Talk 2019 Spring 8
Fessとは
■ オープンソースの全文検索システム
➔5分で構築できるくらい簡単に利用可能
■ Apacheライセンスで提供
■ Javaベースのアプリケーションサーバ
■ Elasticsearchを検索エンジンとして利用
■ 様々な検索シーンで利用可能
■ 現在の最新バージョンは12.6
➔今年で開発10年目!
https://fess.codelibs.org/
- 11. Search Engineering Tech Talk 2019 Spring 11
検索分野での立ち位置
検索関連の知識なくても利用可能(すぐに使える)
検索関連の知識が必要(開発が必要)
検索システム
➔ Fess、商用検索システム
検索サーバ+クローラ
➔ Hyper Estraier、Namazu、Nutchなど
検索サーバ
➔ Solr、Elasticsearch、groongaなど
検索ライブラリ
➔ Luceneなど
- 14. Search Engineering Tech Talk 2019 Spring
■ クロール対象のファイル数の増加
➔数千万ファイル以上の案件が増えた
■ クラスタにして分散検索
➔Elasticsearchで実現できる(運用ナレッジは必要)
➔できるだけ運用リスクを減らす
■ クロールする方法も工夫が必要
➔通常のファイルシステムのクロールでは無理
➔更新ファイルリストを生成しクロール
クロール対象の大規模化
14
Fess
データストアクロール
更新されたファイルの
ファイルパス一覧
ファイルサーバなど
更新されたファイルだけ
クロールする
- 15. Search Engineering Tech Talk 2019 Spring 15
セキュア検索(ロール検索)
■ 認証状態により検索結果を出し分ける
➔ログインしているユーザー情報を利用する
➔AD連携して認証情報を取得するなど
■ クロール時に権限情報を付加する
➔Sambaクロールの場合はファイルの権限を利用する
営業部
技術部
Fess
部門別や役職別に検索結果を
出し分けることが可能
営業資料
検索条件に
部署を追加
ドキュメントに
部署を追加
- 16. Search Engineering Tech Talk 2019 Spring
■ 検索システムにも自動でログインする
➔Windows統合認証
➔リバースプロキシ型認証
➔OpenID Connectなど
■ Active DirectoryだとWindows統合認証
➔今後はAzureADでOpenID Connectと増えるかも
シングルサイオン
16
利用者 Fess認証サーバ
利用者 Fess認証サーバ
Windows統合認証
OpenID Connect
リバースプロキシ型
- 17. Search Engineering Tech Talk 2019 Spring
■ いろいろな業務システムがある
■ とはいえ、データはデータベースにある
➔SQLで取得してインデックスすれば良い
➔JDBCドライバがあればだいたい何とかなる
業務システムとの連携
17
Fess
データストアクロール DBサーバ
SQLのSELECT文
1行1ドキュメントとして
加工してインデックスする
- 18. Search Engineering Tech Talk 2019 Spring
■ 検索するためにはテキスト化が必要
■ MS Office: POI
■ PDF: PDFBox
■ DocuWork: IFilter or xdw2text
■ 一太郎: IFilter (消えつつある気がする…)
■ AutoCAD: libdxfrw
■ その他もろもろ: Tika
➔Tikaはいろいろなことをいい感じにテキスト化する
➔場合によっては微調整は必要
ファイルの種類
18
- 20. Search Engineering Tech Talk 2019 Spring 20
■ http://〜の検索結果ページでfile://〜のリンクが機
能しない
➔セキュリティポリシーの設定で有効な場合もある?
■ 対応方法としては…
➔WebDAVでhttp://〜等でアクセス可能にする
➔Fessではプロキシとして対象ファイルを返却
file://〜問題
- 21. Search Engineering Tech Talk 2019 Spring 21
■ zipファイル爆弾
➔展開すると数Gのファイルになる
➔展開時には展開後のサイズの考慮が必要
➔Tikaは対策をしている
■ excelファイル爆弾
➔何でもExcelにコピペする人がいる…
➔無駄な単語が膨大にあり、Analyzerで高負荷に…
➔Fessは単語の切り捨てや重複除去対応での対策
〜爆弾ファイル
- 22. Search Engineering Tech Talk 2019 Spring 22
■ PDFのフォーマットにも複数のバージョン
■ テキスト抽出ならJavaだとPDFBoxとか
■ PDFBoxは古いバージョンで文字化けする
➔古いバージョンなので気にする必要はない
■ その他ではOCRのPDFとかの場合
➔無駄なスペースが入るので、独別な処理が必要
PDF文字化け
- 23. Search Engineering Tech Talk 2019 Spring 23
■ クリック数やLike数をドキュメントに保持する
■ クリック数は検索結果クリック時に集計
➔リンクを書き換えてリダイレクト
■ 検索状況を集計してレポートする
■ Function Score Queryでスコアに反映する
検索の集計や反映
利用者
Fess
検索結果を表示
検索結果をクリック
検索結果へリダイレクト
検索結果のサイト
ここでクリック情報を取得
- 24. Search Engineering Tech Talk 2019 Spring 24
■ Google Search Applianceが保有する機能なので
普通に要求される場合が多い
■ Analyzerで同義語辞書で対応可能な場合もある
➔リアルタイムな反映が求められると☓
■ 特定のクエリーのときに登録語を展開する
➔Fessでは実装済み
➔関連コンテンツ的な機能もあったり…
関連クエリー(同義語)
- 25. Search Engineering Tech Talk 2019 Spring 25
■ クロールとは別に画像生成処理を実行
■ HTMLであればページ内で指定された画像
➔metaタグのthumbnailかog:imageなど
➔ページ内のimgタグで正方形に近い画像など
➔PhantomJSなどでがんばる必要はない
■ PDFであればImageMagickのconvertコマンド
■ MS Officeはunoconvとconvertの合せ技
サムネイル画像の表示
- 27. Search Engineering Tech Talk 2019 Spring
■ 企業内検索を作る際にはいろいろと課題がある
■ 今後はクラウドの対象も増えそう
■ Fessは数々の課題を乗り越えてきた!
➔ 何か作るならFessをベースに考えると良いはず
まとめ
27