技術情報 プラグインについて

http://wiki.apache.org/nutch/AboutPluginsの日本語訳です。

Nutch のプラグインシステムは、Eclipse 2.x で使用されているものに基づいています。 プラグインは nutch の仕組みの中核をなします。 nutch が行っているパース、インデクシング、検索のすべては実際はさまざまなプラグインによって行われています。

プラグインを書くとき、あなたは実際には、既存の extension-point の1つまたは複数のエクステンションを提供することになります。 コアの Nutch extension-points はプラグインの中で定義されている、NutchExtensionPoints プラグインです(NutchExtensionPoints plugin.xml ファイルに一覧があります)。 それぞれの extension-point はエクステンションが実装すべきインターフェイスを定義しています。コアの拡張ポイントは以下のとおりです:

  • OnlineCluster -- オンライン検索結果クラスタリングアルゴリズムのための拡張ポイント (javadoc より)。
  • IndexingFilter -- インデックスフィールドにメタデータを追加できます。この拡張ポイントを実装するすべてのプラグインは順番に parse に対して実行されます(javadoc より)。
  • Ontology
  • Parser -- 取得されたドキュメントをインデックスするためにデータを取り出します。もし Nutch に新しいコンテンツの種類をパースできるようにしたり、現在パース可能な種類でもさらに情報を取り出すようにしたい場合は、これが必要です。
  • HtmlParseFilter -- HTML parse にさらにメタデータを追加できます(javadoc より)。
  • Protocol -- Protocol の実装は、Nutch が別のプロトコル(ftp や http など) を使ってドキュメントを取得できるようにします。
  • QueryFilter -- クエリ変換のための拡張ポイントです。クエリにメタデータを追加できます(javadoc より)
  • URLFilter -- URLFilter の実装は、nutch が取得しようとする URL を制限します。 Nutch に同梱されている RegexURLFilter は Nutch がクロールするURLのコントロールの多くを提供しますが、クロールしたいURLについてとても複雑なルールが必要な場合、専用の実装を書くことが出来ます。
  • NutchAnalyzer -- この拡張ポイントはいくつかの言語固有のアナライザを提供します(MultiLingualSupport 提案を参照)。これは開発段階のため、リリースされている javadoc にはありません。

ソースファイル

プラグインソースディレクトリの中に、以下のファイルがあります:

  • plugin.xml これは、nutch にプラグインについて情報を提供します。
  • build.xml これはプラグインをビルドする方法を提供します。
  • プラグインのソースコード

Nutch がプラグインを使うようにする

Nutch がプラグインを使うようにするには、 conf/nutch-site.xml を編集し、 plugin.includes のリストにプラグインの名前を追加します。

コマンドラインからプラグインを使う

Nutch は main() メソッドを含むプラグインや、それらの使い方を説明するためのサンプルコードをいくつも同梱しています。これらのプラグインはコマンドラインから使うことが出来るので、それぞれのプラグインの内部の仕組みを探り始めるには良いでしょう。

そうするためには、$NUTCH_HOME ディレクトリから、bin/nutch スクリプトを使います:

$ bin/nutch plugin Usage: PluginRepository pluginId className [arg1 arg2 ...]

たとえば parse-html プラグインを使いたいとすると:

$bin/nutch plugin parse-html org.apache.nutch.parse.html.HtmlParser filename.html

PluginRepository はプラグインの名前で、pluginId はプラグインクラスの完全修飾名です。

お問い合わせ・ご相談はこちら

OpenCMSサポート

充実のユビキャストユーザー向けプラン

サポート詳細はこちら

Ubicast スタッフブログ

  • OpenCMS 公式サイト
  • メールでブログ投稿
  • プロジェクト管理ツール