オープンソース全文検索システムFessの速度検証

オープンソース全文検索システムFessの速度検証 サーバー

「オープンソースの全文検索システムは大量データでちゃんと動くのか?」
「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の速度検証について説明しました。

タイトルとURLをコピーしました