9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OSSの全文検索サーバ「Fess」でお手軽Webクローリング&スクレイピング

Last updated at Posted at 2018-06-19

はじめに

世にOSSのクローラや検索システムは沢山ありますが、プラグインなしでクローリング+スクレイピング+全文検索が一挙にできるツールは意外と少ない気がします。

Fessは、それらをまとめて簡単に実現できるOSSの全文検索サーバです。今回は、Wikipediaをクローリングし、検索できることを確認するところまでやってみます。

Fessの主な特徴は以下の通りです。

  • Javaベース
  • Apache License
  • 日本語のドキュメントあり
  • 導入が非常に簡単
  • 機能多数

詳しくは公式を参照。
https://fess.codelibs.org/ja/index.html

インストール手順

OS : Windows10
Fessのバージョン : 12.1.3

https://github.com/codelibs/fess/releases
から圧縮ファイルを落として解凍するだけです。

Webクロール

実際にWebクロールをしてみます。

Fessの起動

初めにFessを起動します。

Fessの起動
$ .\bin\fess

※事前にJavaをインストールし、環境変数JAVA_HOMEを設定しておく必要があります。

起動したら、Fessの管理画面 http://localhost:8080/admin/ にアクセスします。
ユーザ名/パスワードはadmin/adminです。

クローラ設定

次にクローラの設定をします。
クローラ>ウェブ>新規作成をクリックします。

localhost_8080_admin_webconfig_ (2).png

設定画面が開きます。
そのままではページ全体が検索対象となってしまうため、本文以外は検索に引っかからないように設定パラメータに以下のようなフィールドを追加します。
field.xpath.article_title=//*[@id="firstHeading"]
field.xpath.article_content=//*[@id="mw-content-text"]/DIV/P

一行目では、article_titleフィールドに//*[@id="firstHeading"](記事タイトル)の内容
二行目では、article_contentフィールドに//*[@id="mw-content-text"]/DIV/P(記事本文)の内容
をXPathで指定しています1

※この設定によりフィールドにテキスト自体は格納されますが、そのフィールドを指定した検索ができません。検索可能にするには以下のようにファイルを編集し、Fessを再起動する必要があります。

\app\WEB-INF\classes\fess_config.properties
query.additional.response.fields=article_title,article_content
query.additional.search.fields=article_title,article_content

クロール

実際にクロールをします。

システム>スケジューラ>Default Crawler>今すぐ開始をクリックするとクローリングが始まるので、しばし待ちます(デフォルト設定では毎日0時0分に自動でクローリングします)。
クロールの実行中はDefault Crawlerの状態が実行中になるので確認できます。

検索

最後に検索をしてみます。

Fessの検索画面 http://localhost:8080/ にアクセスし、先ほど作成したフィールドで検索します2

localhost_8080_search__q=article_title%3A%E3%82%A2%E3%83%87%E3%83%AA%E3%83%BC%E3%83%9A%E3%83%B3%E3%82%AE%E3%83%B3&num=10&sort=.png

できました。

おわりに

FessはWebだけでなく、ファイルシステムなどもクロール可能な非常に完成度の高いクローラだと思います。
ただ完成度が高いがゆえに、細かい設定をしようと思うと難しい印象がありますね。そういう場合は、ManifoldCFやElasticsearch、Solr等を使って自分でシステムを作ったほうが良いのかもしれません。

  1. XPathはChromeのデベロッパーツール(F12)で簡単に取れるのでおすすめです。
    設定したら、+作成をクリックします。

  2. 本当はデフォルトでこのフィールド検索をしたいのですが、やり方がわかりません・・・。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?