Playwrightを利用したクロール

Fessでは、もともとWebDriverを利用したクローラーなどがありましたが、最近ではメンテするのが面倒だったので、取り除いていました。しかしながら、JavaScriptもいい感じ処理できるようなクロールの仕組みは必要で、最近、Fessとか関係ない話で、Playwrightを使うことが多くなっていたので、そのうち、使えるようにしようとは考えていました。ということで、今回その機能を入れました。

とはいえ、今までも使うのが、かなり面倒でWebDriver版でクロールしようと思えばできる、くらいで仕組み的には、汎用的な感じではありませんでした。今回は、そこら辺も整理して、使いやすい感じにしてみました。

使い方としては、

  • Playwrightの実行環境がインストールされている
  • クロール設定で、設定パラメーターで設定する

をすれば、通常のウェブクローラーの変わりにPlaywrightでクロールします。設定パラメーターは以下を設定すればOKです。

client.crawlerClients=playwright:http://.*,playwright:https://.*

あとは、いつもどおりにクロールを実行するだけです。ひとまず、実験的な機能な感じではあるので、細かい問題はあるかもしれませんが…。マルチスレッドでクロールできるのか?とかもちょっと怪しい気もしますし。とりあえずは、試しながら改善はしていく予定です。

Fess 14.5から利用可能になる予定ですが、興味があれば利用してみてください。

Fess 14.4.0のリリース

Fess 14.4.0をリリースしました。細々とした修正が多いのですが、今回は、standard_analyzerを変更しているので、再インデクシングすると、同義語の挙動がちょっと変わる可能性があると思います。今回の修正をざっとまとめると、

#2671は独自のsynonym tokenizerを標準的なsynonym token filterを使うように変更しました。メンテとかいろいろと考えると、できるだけ標準のものを使っていったほうが良いかなと考えているのと、以前のように実行したまま、analyzerを変更したいような要件も少なくなったので、頑張って提供する必要はないかなと思っています。

#2672はサジェストの生成オプションで、ログからなのか、ドキュメントからなのか、のオプションの処理で、処理がうまく行かないパターンがあったので修正しました。

#2673フォーラムでクロールジョブを複数作ったときにロブファイルが分けたいという話があったので、ジョブの設定でlogSuffix (“suffix”)で指定できるようにしました。fess-crawler-suffix.logみたいな名前になる想定です。

#2675はsitemaps.xmlなどに大量にURLを記述した場合、Elasticsearchの取得上限に引っかかるため、エラーにならずに処理できるように修正しました。

#2676はbc*系のjarをJava 8以上のものに置き換えました。

#2678はウェブクロールのフィルタ設定でも#DISABLE_URL_ENCODEを使えるようにしました。(プルリクをもらいました。ありがとうございます!)

#2679はOIDCの処理でgroupsも取得するようになりました。(プルリクをもらいました。ありがとうございます!)

#2680は今までfess-ds-csvとfess-ds-dbはバンドルしていたのですが、リリースの手間になったりも指定なので、このバージョンからデフォルトで入れておくのをやめました。必要であれば、管理画面のプラグインからインストールしてください。

#2681はいつものリリース作業用の対応です。

#2682はJSONレスポンスに例外情報などを含めないオプションを追加しました。#2683はそのGSAレスポンス版です。

#2684はM1 Macだと、JNAのwarningログが出てしまうので、出ないようにしました。

他にも依存ライブラリの更新とかもしていますが、何かあればフォーラムをご利用ください。

ClamAVでPermission deniedが起きる

ClamAVを実行できるようにしようかなと思い、Ubunut 22.04に入れて、試してみると

$ sudo clamdscan /opt/
/opt: File path check failure: Permission denied. ERROR

みたいな感じで、エラーになる。なぜかなと思ったら、実際の実行されるユーザーが異なる動きをするようなので、–fdpassのオプションを指定して実行する必要があるらしい。