FessのEOL通知機能

Fessも10年くらい開発し、バージョンも13系まできました。古いバージョンについては、EOLの日付をここで公開して、サポートを打ち切ってきていますが、開発チームとしては、EOLを気にせず使い続けてもらうのはいろいろと問題があるなと考えています。結構、いろいろなところでFessを導入して使ってもらっているかと思いますが、EOLを超えて使う場合は担当者が責任持って運用してほしいですし、新しいバージョンのほうが機能面や性能面で多くの改善があるので、より良いものを使い続けてもらいたいと思います。ということで、今後のリリースからはEOLを超えると、管理画面の右上にアイコン表示がされ、ログファイルにはEOLになっていることが通知されます。ということで、定期的に更新して、より良いものを使っていただければと思います。

Fess AutoML: Fione

Fioneというのをはじめました。ここ数ヶ月でFessにいろいろと機能を追加してきましたが、これを作るためだったとも言えます。

Fioneは簡単にいうと、Fessで実現するAutoMLです。結構前から作ろうとは思っていたものの、時間も経ってしまい、昨年末に株式会社コードリブズも始めたし、そこでの主力商品として出していくためにも、今回作った感じです。一応、株式会社コードリブズはオープンなテクノロジーで世の中を効率化していく、というのをモットーとしているので、Fione自体はApacheライセンスで提供するので自由に使ってもられば良いと思います。Fessと同様にコンサルティングやサポートで運営していければ良いと考えています。

Fioneの技術的なところでは、現時点では、Fess, Elasticsearch, H2O, MinIOで構成されています。なんで、Fessなのか?というのもあるかもしれませんが、Fessは10年近くやってきていることもあり、アーキテクチャはかなり汎用的に作られていて、全文検索システムを超えて、機能を差し込んだりも可能です。ゼロからそれなりのものを作ると時間もかかるので、Fessの拡張機能としてFioneは作りました。Fessの商用版のN2 SearchもFessに差し込む形で機能拡張をして販売しているので、仕組み的には同じ感じです。直近では、Fessのインデックスを作ったりはできませんが、どこかのタイミングでは検索との連携は考えています。

Fioneが目指している世界観は、5分でできる機械学習環境、という感じで、専門家でなくても、知識発見ができそうなデータがあれば、特徴や予測とかがそれなりにできる感じを作りたいと考えています。AutoML系のプロダクトやサービスがいろいろと出てきていますが、わかっている人には良いのかもしれませんが、まだまだいろいろな壁が存在していると考えています。Fessも利用者とSolrやElasticsearchの距離を縮めてきたと思っていますが、Fioneも利用者と機械学習の距離を縮めて、業務の効率化などを実現できる環境を提供出れば良いと思っています。

将来的にはFessのインデックスを作れるようにして、データの検索をできるようにしようと思いますが、それ以外のところを見ていくと、AutoMLの機能はH2O.aiを使っています。なので、FessからH2OのAPIを叩いて実行しています。H2OのREST APIも謎の部分があったりして、たまに怪しい挙動をするかもしれませんが、謎が解けるまでは運用回避的な対応しかできないかもしれません…。とはいえ、AutoMLの機能面はきちんと実行できるので、そこはH2Oに頼ろうかと思っています。AutoML周りではFioneとしては前処理部分で独自の機能を追加していくことは考えています。あとは、MinIOはデータの置き場とか、結果の保存とか、その辺のデータを置く場所として利用しています。Fessを含めて、それらの依存しているものたちはスケールアウトがしやすいものばかりだと思うので、全体的に大規模化とかもできるかなと考えています。

ドキュメントは近いうちに書いていこうかと思いますが、現時点でのFioneの提供方法や実行方法はdocker-fioneで提供して、docker-composeで簡単に実行して試せる状態にしていこうと思っています。今のところはH2OのAutoMLの処理の流れに近いものになっていて、わかる人しか使えない雰囲気なので、これは早めに改善していこうと考えています。

という感じで、もう少し手軽に使えるようになったら、使い方を書いていこうと思います。

Fess 12.5のリリース

Fess 12.5をリリースしました。

今回の新機能はストレージ機能です。Fessを使っていると、別途ファイルサーバとか用意しないでもファイル置き場的な場所が欲しくなるケースもあります。とはいえ、独自に作るといろいろと考えることも多いので、MinIOと上手く連携することで処理できるようにしました。管理画面の全般でエンドポイントとかを指定すれば、管理画面のストレージでファイルにアクセスできるようになります。さらに、ファイルクロール設定でstorage://バケット名/パス的な感じで指定するとクロールすることもできます。試したことはないですが、MinIOはゲートウェイとしてS3やGCSなどにも繋げるようなので、いろいろな使い方ができるはずと考えています。

それ以外のところだと、ライブラリの依存関係を整理したりと細々として変更をいれてあります。どうぞ、ご利用ください。

storage:// を追加

Fess 13.5からはMinIO連携が入る予定ですが、MinIOへのアクセスをstorage://という新たなプロトコルで追加します。なので、ファイルクロールの設定でstorage://バケット名/ とすることでクロールすることができます。

まず、MinIOを以下のような感じで起動しておきます。

docker run -p 9000:9000 \
   -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \
   -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
   minio/minio server /data

Fessのクロール設定的には、たとえば、fessというバケット名であれば

パス:storage://fess/
設定パラメータ:
client.endpoint=http://localhost:9000
client.accessKey=AKIAIOSFODNN7EXAMPLE
client.secretKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

という感じになります。あとは、普通にfessバケット配下をインデックスしてくれます。

MinIOはバックエンドで動いている想定なので、検索結果のリンクをクリックすると、Fessのコンテンツプロキシ機能によって、MinIOに直接ではなく、Fess経由で取得することができます。これにより、Fessへのアクセス権限を用いて管理することもできます。

MinIO自体はゲートウェイ機能もあるので、AWS S3を対象にできたり、GCPやAzureなども同様にクロールすることができるようになります。

FessのEOL日付の変更

現在は、バージョンx.y.zのときはバージョンx.y.0をリリースした日付から18ヶ月後にしていたのですが、FessはElasticsearchがリリースされてからちょっと時間が経ってからリリースしていることもあり、Fessより先にElasticsearchがEOLされてしまっている状態になってます。これはこれで微妙だなと前から思っていたのですが、微妙なのでシンプルに、対応するElasticsearchのバージョンのEOLに合わせようと思います。EOL期限以上のサポートが必要な場合は商用サポートを参照してください。