目次

全文検索エンジンFessをdocker compose で試す


自端末内のドキュメント管理どうしていますか。

Googleデスクトップ検索がサービス終了してからというもの、自端末のドキュメント管理が課題。l基本的にMacを使っているので、Documentsのディレクトリに全てのドキュメントを入れて、少し前まではAlfred、最近はSpotlightを利用しているのだけれども、いまいち使い勝手が悪い。

そんな中、OSSの全文検索エンジンのFessというものがあるということを知ったので、試してみました。結論から言うと、満足できる結果は得られていない。アプリとしての性能は良いのだと思うのだけれども、日本語ファイルや日本語フォルダがクロール対象にならないことが課題(逆に言うとこれがクリアになれば、使えるのではないかな、という体感)

ただし、クロール対象のフォルダをSambaとしてマウントさせるとクロール対象となった。(とはいえ、Dockerのホスト端末にSambaを起動させてクロールするのはちょっと・・・)

以下、メモ。

docker composeでFessをインストールする

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
% git clone git@github.com:codelibs/docker-fess.git fess
Cloning into 'fess'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 503 (delta 0), reused 2 (delta 0), pack-reused 499
Receiving objects: 100% (503/503), 65.89 KiB | 247.00 KiB/s, done.
Resolving deltas: 100% (220/220), done.

% cd fess/compose                                                               

クローンしたら、composeフィアルを編集して、ローカルのドキュメントフォルダをwww配下にマウント

1
2
volumes:
- ~/Documents:/var/www

Fessにログインして、クロールポイントを作成

Fessはデフォルト8080ポートで稼働しているので、http://localhost:8080にアクセスして、クロール場所を設定する。

まずは試しに以下のように設定した。

1
2
3
4
5
6
7
8
9
クロール先:file:///var/www/
クロール対象ファイル:.*\.xls?$
.*\.xlsx?$
.*\.doc?$
.*\.docx?$
.*\.ppt?$
.*\.pptx?$
.*\.txt?$
.*\.pdf?$

このようにすると、一旦、マウントしたローカルディレクトリ内で、マルチバイトが含まれないファイルがクロール対象となりElasticSeachで検索可能となる。

ファイルの中に日本語が入っている場合、その文字列も検索対象となるが、ファイル名、あるいはパス名に日本語が含まれていると対象とならない。

一方、ローカルにマウントせず、ホスト側にSambaを起動し、同様に設定すると、日本語がパス、ファイルに含まれていたとしても検索対象となる。とはいえ、そのためにSambaを起動しておくのもちょっと・・・。

もう少し試して、日本語文字列が入っていてもクロールできるようになれば、改めて更新しようと思う。