社内データをfessで全文検索可能にする

こんにちは、アルバイトの伊藤です。 社内LTで発表した内容を記事にさせていただきました。

今回やること

fessというOSSの全文検索システムを使って、社内データの利活用をしたいと思います。
https://fess.codelibs.org/ja/

社内データって?

雑に列挙してもこれぐらいあります。

  1. 業務データ (社内ファイルサーバー)
    a. 請求書
    b. 契約書
    c. 注文書
    d. 領収証
    e. 見積書
  2. ナレッジ (GitHub上でmd管理)
  3. 社内ルール (GitHub上でmd管理)
  4. Slack会話ログ (社内ファイルサーバー)
    a. 添付ファイル
    b. メッセージ
  5. ライセンスや認証情報 (社内ファイルサーバー)
  6. 開発データ (Google Driveと社内ファイルサーバー)
    a. 設計書
    b. 異常時のログ
    c. ソースコード
    d. 議事録
    e. お客さんのドメイン知識

分散のつらさ

適材適所という言葉がある通り、扱う情報によって保存場所が異なります。
例えば、デジタル化された請求書などは社内のファイルサーバーにあります。
一方、社内ナレッジはGitHub上でmd管理をしています。

適材適所は悪くないですが、どこに保存したか忘れたら探し出すのが大変です。

検索性のつらさ

保存場所やファイルの種類によって異なりますが、基本的にはテキストファイル以外は全文検索できないことが多いです。
特に領収書や、見積書、設計書などはpdfやエクセルであることが多いため、ファイルに対応した全文検索があると便利です。

本題

やっと本題のfessの話です。
fessとは、Elastic Seaerchを使った全文検索を5分で環境構築を実現できる神プロジェクトです。
Webサイトやファイルサーバーなど、様々なファイルシステムをクロールしてインデックスを作ってくれます。

そのため、fessを使うと、分散の辛さと検索性の辛さを同時に解決できます。
まさにデータとデータを繋ぎ、一括での検索を可能にするData Hubです。

image

動かし方

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サーバーが立ち上がるのでアクセス

image

インデックス化設定

細かい設定は省きまSambaの認証情報とファイルパスを入力します。
仮として社内のファイルサーバーのクロール設定だけ保存します。
image

とにかく待つ

fessでは内部でElastic Searchを使用しています。
Elastic Searchにデータを投げ込む作業にとても時間がかかります。

出来上がったので検索してみる

「走行」というキーワードで検索してみます。
とても速度が速く、0.04秒で検索できています。
また、ファイル名だけではなく、pdfの中身も検索できました。
とても便利!

(画像では分かりにくいですが、ちゃんとファイルの中身にマッチしています。) image

今後の展望

デフォルト機能のみで社内ファイルサーバーの全文検索化をすることができました。
今後の展望として、Google DriveやGit Hubなどの別のファイルストレージにも対応させたいと思います。

PS

Google Driveは簡単に実現できそうです。

Google DriveをLinuxのファイルシステムとしてマウントできる技術
google-drive-ocamlfuse: https://github.com/astrada/google-drive-ocamlfuse

余談ですが、デザインの変更も簡単でした。 alt text

この記事をシェア

弊社では、一緒に会社を面白くしてくれる仲間を募集しています。
お気軽にお問い合わせください!