クロール対象から除外するURLが膨大な場合

いつもお世話になっております。

クロール対象から除外したいURLが1万件近くあり、
また、正規表現で一括で表現できないURLのみです。
(除外したくないURLと区別できないパターンのため)。

クロール対象から除外するURLの欄に入力したところ、
「クロール対象から除外するURLのサイズは 0 文字から 4000 文字の範囲にしてください。」
というエラーになってしまいました。

sitemap.txtというファイルにURLリストを記載し、クロール対象から除外したいURL欄にそのsitemap.txtのパスを入力しましたが、ログを見るとそのsitemap.txtは読み込まれてはいるものの、除外されずに、クロールされていました。

このような膨大なリストをクロールから除外する方法は何かございますでしょうか。

よろしくお願い致します。

入力上限はfess_config.propertiesの form.admin.max.input.size=4000 で設定されています。
とはいえ、1万件以上を除外に登録したい、というのは要件からの設計がおかしいような気もします。
CSVデータストアを使って、CSVファイルリストで必要なものだけをクロールするのが良いような話にも見えます。

1 Like

どうもありがとうございます。
更新頻度がほぼゼロの資料についてはクロールを省いてスピードアップを図りたく、
URLの設計が良くないため、そのようにせざるを得ないという状況です :sweat_smile:
教えて頂いたように設定を変更して試してみます。

form.admin.max.input.sizeを1000000に設定し、クロール対象から除外したいURL欄に1万件以上のURLを記載し、更新ボタンを押したところ、


データの更新に失敗しました。(Elasticsearch exception [type=illegal_argument_exception, reason=Document contains at least one immense term in field=“excludedUrls” (whose UTF8 encoding is longer than the max length 32766), all of which were skipped. Please correct the analyzer to not produce such terms. The prefix of the first immense term is: ‘[104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 99, 105, 116, 121, 46, 107, 111, 100, 97, 105, 114, 97, 46, 116, 111, 107, 121, 111, 46]…’, original message: bytes can be at most 32766 in length; got 908832] Elasticsearch exception [type=max_bytes_length_exceeded_exception, reason=bytes can be at most 32766 in length; got 908832] )


というエラーが表示されました。

Elasticsearchの例外で、クロールとは別のように思うのですが、もしこちら対処方法をご存じでしたらご教授頂きたく、よろしくお願い致します。

web_config.jsonでkeywordで指定していますが、Mapping Parametersの設定を使って、indexをfalseにしてみたり、ignore_aboveを指定してみたり、とelasticsearchを調整するしかないと思います。
とはいえ、将来のバージョンで動かなくなったりする可能性はあるので、データストアクロールで適切な設計をしていただいたほうが良いとは思いますが…。

1 Like

どうもありがとうございます。ご指摘の箇所を調整し、
また、クロール全体の設計も見直してみようと思います。
いつもありがとうございます。