社内データをfessで全文検索可能にする
2024年 03月 10日 日曜日
こんにちは、アルバイトの伊藤です。 社内LTで発表した内容を記事にさせていただきました。
今回やること
fessというOSSの全文検索システムを使って、社内データの利活用をしたいと思います。
https://fess.codelibs.org/ja/
社内データって?
雑に列挙してもこれぐらいあります。
- 業務データ (社内ファイルサーバー)
a. 請求書
b. 契約書
c. 注文書
d. 領収証
e. 見積書 - ナレッジ (GitHub上でmd管理)
- 社内ルール (GitHub上でmd管理)
- Slack会話ログ (社内ファイルサーバー)
a. 添付ファイル
b. メッセージ - ライセンスや認証情報 (社内ファイルサーバー)
- 開発データ (Google Driveと社内ファイルサーバー)
a. 設計書
b. 異常時のログ
c. ソースコード
d. 議事録
e. お客さんのドメイン知識
分散のつらさ
適材適所という言葉がある通り、扱う情報によって保存場所が異なります。
例えば、デジタル化された請求書などは社内のファイルサーバーにあります。
一方、社内ナレッジはGitHub上でmd管理をしています。
適材適所は悪くないですが、どこに保存したか忘れたら探し出すのが大変です。
検索性のつらさ
保存場所やファイルの種類によって異なりますが、基本的にはテキストファイル以外は全文検索できないことが多いです。
特に領収書や、見積書、設計書などはpdfやエクセルであることが多いため、ファイルに対応した全文検索があると便利です。
本題
やっと本題のfessの話です。
fessとは、Elastic Seaerchを使った全文検索を5分で環境構築を実現できる神プロジェクトです。
Webサイトやファイルサーバーなど、様々なファイルシステムをクロールしてインデックスを作ってくれます。
そのため、fessを使うと、分散の辛さと検索性の辛さを同時に解決できます。
まさにデータとデータを繋ぎ、一括での検索を可能にするData Hubです。
動かし方
Dockerが入っているPCでこれを実行するだけ
curl -o compose.yaml https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml
curl -o compose-opensearch2.yaml https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch2.yaml
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d
するとlocalhost:8080にWebサーバーが立ち上がるのでアクセス
インデックス化設定
細かい設定は省きまSambaの認証情報とファイルパスを入力します。
仮として社内のファイルサーバーのクロール設定だけ保存します。
とにかく待つ
fessでは内部でElastic Searchを使用しています。
Elastic Searchにデータを投げ込む作業にとても時間がかかります。
出来上がったので検索してみる
「走行」というキーワードで検索してみます。
とても速度が速く、0.04秒で検索できています。
また、ファイル名だけではなく、pdfの中身も検索できました。
とても便利!
(画像では分かりにくいですが、ちゃんとファイルの中身にマッチしています。)
今後の展望
デフォルト機能のみで社内ファイルサーバーの全文検索化をすることができました。
今後の展望として、Google DriveやGit Hubなどの別のファイルストレージにも対応させたいと思います。
PS
Google Driveは簡単に実現できそうです。
Google DriveをLinuxのファイルシステムとしてマウントできる技術
google-drive-ocamlfuse: https://github.com/astrada/google-drive-ocamlfuse