「オープンソースの全文検索システムは大量データでちゃんと動くのか?」
「Fessは実際に使えるのか?」
このような場合には、この記事の内容が参考となります。
この記事では、大量データを用いて実施したFessの速度検証について解説しています。
本記事の内容
- 大量データの取得
- Fessへの大量データ登録
- Fessの速度検証
それでは、上記に沿って解説していきます。
大量データの取得
大量データの定義は、各自で認識が異なるでしょう。
そのため、この記事における大量データを定義しておきます。
大量データとは、10GB以上を指します。
画像や動画以外のデータで10GB以上です。
つまり、テキスト中心のデータということになります。
テキスト中心のデータで10GBを超えるのは、決して少なくはないでしょう。
そして、今回は上場企業が発行する資料を対象にします。
IRの資料は、PDFが多いです。
上場企業と言えば、TDnet(適時開示情報閲覧サービス)というサービスが用意されています。
しかし、これは利用しません。
スクレイピング対策のためなのか、すごく使いづらいページになっています。
それとは逆に、株探はすごくわかりやすいページ構成です。
もともと、株探はスクレイピングがやりやすいサイトと言えます。
上記記事のように、次のページをスクレイピングしています。
https://kabutan.jp/disclosures/
上記ページをスクレイピングして、PDFのURLを探ります。
期間は、2022年1月、2月、3月(ある分だけ)です。
PDFのURLさえわかれば、あとは自動ダウンロードができます。
その際には、次のようなコードを用いています。
pdf_data = requests.get(pdf_url).content with open(pdf_file_path, mode='wb') as f: f.write(pdf_data)
Requestsを使うと、Webアクセス(ここではダウンロード)を簡単にコーディングできます。
Requestsについては、次の記事で解説しています。
そのような感じで、専用のプログラムをコーディングしました。
非常に雑なコードなので、ここでは載せません。
SeleniumとRequestsを使えば、10分程度で作れるレベルのプログラムです。
その専用プログラムを用いて、全部で22366個のPDFをダウンロードしました。
Seleniumについては、次の記事で説明しています。
以上、大量データの取得について説明しました。
次は、Fessへの大量データ登録を説明します。
Fessへの大量データ登録
登録する大量データについての説明から行います。
取得したPDFファイルは、「/opt/fess_data」というディレクトリにすべて保存しています。
$ ls /opt/fess_data | wc -w 22366
ファイル件数は、全部で22366件になります。
容量も確認しましょう。
$ du -h /opt/fess_data 12G /opt/fess_data
ファイルサイズの容量は、全部で12GBあります。
検証するには、なかなかのサイズ感と言えます。
これらファイルをFessに登録します。
その方法については、次の記事で説明しています。
FessにすべてのPDFが登録されるまでに、数時間ほど要しました。
ただ、夜間の日次バッチで対応すれば問題ではないでしょう。
なお、1ファイルだけエラーで登録できませんでした。
登録状況は、「システム情報」の子メニュー「障害URL」で確認できます。
「障害URL」では、登録に失敗したファイルを確認できます。
「org.codelibs.fess.crawler.exception.MaxLengthExceededException」
このエラーが出ている「20220121_140120220120570291.pdf」は、何度やってもエラーになります。
エラー内容から、PDFのサイズが大き過ぎると思われます。
実際、ファイルサイズは10MBを超えていました。
今回、このファイルは無視して進めます。
設定でMAXサイズを増やすなどは、ありそうですけどね。
以上、Fessへの大量データ登録について説明しました。
次は、Fessの速度検証を説明します。
Fessの速度検証
ユーザー向けの画面で検証します。
「メタバース」という流行りのキーワードの状況を確認します。
133件も確認できました。
そして、0.27秒という数字はかなり高速です。
結論を言うと、Fessは高速で大量データを全文検索できます。
12GBデータを全文検索して、この速度を出すのはなかなか高度なことだと言えます。
もちろん、速度はマシンスペックに依存する部分があります。
そのため、ある程度のスペックを持ったマシンは用意しましょう。
全文検索は、そもそも負荷のかかる処理であることに変わりはありませんので。
以上、Fessの速度検証について説明しました。