Apache Nutch インデクサ プラグインのデプロイ

オープンソースのウェブクローラである Apache Nutch 用の Cloud Search インデクサ プラグインをデプロイすると、Google Cloud Search を設定してウェブ コンテンツをユーザーに提供できます。

ウェブクロールを開始すると、Apache Nutch がウェブをクロールし、インデクサ プラグインを使用して元のバイナリ(またはテキスト)バージョンのドキュメント コンテンツを Google Cloud Search API にアップロードします。Cloud Search API はコンテンツをインデックスに登録し、ユーザーに結果を提供します。

重要な考慮事項

インデクサ プラグインをデプロイする前に、次の点に注意してください。

システム要件

システム要件
オペレーティング システム Linux のみ:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10(64 ビット)
ソフトウェア
  • Apache Nutch バージョン 1.15。インデクサ プラグイン ソフトウェアには、このバージョンの Nutch が含まれています。
  • インデクサ プラグインを実行するコンピュータに Java JRE 1.8 がインストールされている
Apache Tika のドキュメント タイプ Apache Tika 1.18 でサポートされているドキュメント形式

インデクサ プラグインをデプロイする

次の手順では、インデクサー プラグインをインストールし、そのコンポーネントを構成して URL をクロールし、結果を Cloud Search に返す方法について説明します。

前提条件

インデクサ プラグインをデプロイする前に、Cloud Search とデータソースの接続に必要な情報を収集します。

ステップ 1: プラグイン ソフトウェアと Apache Nutch をビルドしてインストールする

  1. GitHub からインデクサー プラグイン リポジトリのクローンを作成します。

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. 必要なバージョンのインデクサ プラグインをチェックアウトします。

    $ git checkout tags/v1-0.0.5
  3. インデクサー プラグインをビルドします。

    $ mvn package

    プラグインのビルド時にテストをスキップするには、mvn package -DskipTests を使用します。

  4. Apache Nutch 1.15 をダウンロードし、Apache Nutch のインストール手順に従います。

  5. target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip をフォルダに展開します。plugins/indexer-google-cloudsearch フォルダを Apache Nutch の plugins フォルダ(apache-nutch-1.15/plugins)にコピーします。

ステップ 2: インデクサ プラグインを構成する

プラグインを構成するには、plugin-configuration.properties という名前のファイルを作成します。構成ファイルでは、Cloud Search データソースにアクセスするために次のパラメータを指定する必要があります。

設定 パラメータ
データソース ID api.sourceId = 1234567890abcdef
必須。Google Workspace 管理者がインデクサ プラグイン用に設定した Cloud Search ソースの ID。
サービス アカウント api.serviceAccountPrivateKeyFile = ./PrivateKey.json
必須。Google Workspace 管理者がインデクサ プラグインへのアクセス用に作成した Cloud Search サービス アカウントの鍵ファイル。

次の例は、構成ファイルの例を示しています。

# data source access
api.sourceId=1234567890abcdef
api.serviceAccountPrivateKeyFile=./PrivateKey.json

構成ファイルには、プラグインの動作を制御するパラメータ(プラグインが Cloud Search API にデータを push する方法、メタデータと構造化データを入力する方法など)を含めることもできます。これらのパラメータの説明については、Google 提供のコネクタ パラメータをご覧ください。

ステップ 3: Apache Nutch を構成する

  1. conf/nutch-site.xml を開き、次のパラメータを追加します。

    設定 パラメータ
    プラグインに含まれるもの plugin.includes = text

    必須。使用するプラグインのリスト。少なくとも次のものを含める必要があります。

    • index-basic
    • index-more
    • indexer-google-cloudsearch
    conf/nutch-default.xml はデフォルト値を提供しますが、手動で indexer-google-cloudsearch を追加する必要があります。
    メタタグ名 metatags.names = text

    省略可。対応するデータソース スキーマ内のプロパティにマッピングされるタグのカンマ区切りのリスト。詳細については、Nutch-parse メタタグをご覧ください。

    次の例は、nutch-site.xml に加える必要がある変更を示しています。

    <property>
      <name>plugin.includes</name>
      <value>protocol-(http|httpclient)|urlfilter-regex|index-(basic|more|metadata)|query-(basic|site|url|lang)|indexer-google-cloudsearch|nutch-extensionpoints|parse-(text|html|msexcel|msword|mspowerpoint|pdf|metatags)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|parse-(html|tika|metatags)|index-(basic|anchor|more|metadata)</value>
    </property>
    
  2. conf/index-writers.xml を開き、次のセクションを追加します。

    <writer id="indexer_google_cloud_search_1" class="org.apache.nutch.indexwriter.gcs.GoogleCloudSearchIndexWriter">
      <parameters>
        <param name="gcs.config.file" value="path/to/sdk-configuration.properties"/>
      </parameters>
      <mapping>
        <copy />
        <rename />
        <remove />
      </mapping>
    </writer>
    

    <writer> セクションには、次のパラメータが含まれています。

    設定 パラメータ
    Cloud Search 構成ファイルのパス gcs.config.file = path

    必須。Cloud Search 構成ファイルのフル(絶対)パス。

    アップロード形式 gcs.uploadFormat = text

    省略可。プラグインがドキュメント コンテンツを Cloud Search API に push するために使用する形式。指定できる値は次のとおりです。

    • raw: 変換されていない元のコンテンツを push します。
    • text: 抽出されたテキスト コンテンツを push します。デフォルトは raw です。

ステップ 4: ウェブクロールを構成する

ウェブクロールを開始する前に、組織で利用できるようにしたい情報のみが含まれるように構成します。詳細については、Nutch のチュートリアルをご覧ください。

  1. 開始 URL を設定します。

    開始 URL では、ウェブクローラがコンテンツのクロールを開始する場所を制御します。クローラがリンクをたどって、含めるすべてのコンテンツに到達できるようにする必要があります。

    開始 URL を設定するには:

    1. Nutch インストール ディレクトリに移動します。
      $ cd ~/nutch/apache-nutch-X.Y/
    2. URL のディレクトリを作成します。
      $ mkdir urls
    3. seed.txt という名前のファイルを作成し、1 行に 1 つの URL をリストします。
  2. 「対象にする」ルールと「除外する」ルールを設定します。

    「対象にする URL」ルールでは、クローラがインデックスに登録する URL を制御します。「除外する」ルールでは、クロール対象から URL を除外します。

    これらのルールを設定するには:

    1. Nutch インストール ディレクトリに移動します。
    2. conf/regex-urlfilter.txt を編集します。
      $ nano conf/regex-urlfilter.txt
    3. 「+」または「-」の接頭辞が付いた正規表現を入力します。

      # skip file extensions
      -\.(gif|GIF|jpg|JPG|png|PNG|ico)
      
      # skip protocols (file: ftp: and mailto:)
      -^(file|ftp|mailto):
      
      # allow urls starting with https://support.google.com/gsa/
      +^https://support.google.com/gsa/
      
      # accept anything else
      #+.
      
  3. クロール スクリプトを編集します。

    gcs.uploadFormat パラメータが指定されていないか、「raw」に設定されている場合は、nutch index コマンドに -addBinaryContent -base64 引数を追加する必要があります。これらの引数は、バイナリ コンテンツを Base64 で含めるよう Nutch Indexer モジュールに指示します。

    1. apache-nutch-1.15/bincrawl スクリプトを開きます。
    2. この例に示すようにオプションを追加します。

            if $INDEXFLAG; then
                echo "Indexing $SEGMENT to index"
                __bin_nutch index $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb -addBinaryContent -base64 -linkdb "$CRAWL_PATH"/linkdb "$CRAWL_PATH"/segments/$SEGMENT
      
                echo "Cleaning up index if possible"
                __bin_nutch clean $JAVA_PROPERTIES "$CRAWL_PATH"/crawldb
            else
                echo "Skipping indexing ..."
      

ステップ 5: ウェブクロールとコンテンツのアップロードを開始する

インデクサ プラグインを設定したら、ローカルモードで実行できます。./bin のスクリプトを使用して、クロールジョブを実行します。

次の例では、コンポーネントがローカル ディレクトリにあることを前提としています。apache-nutch-1.15 ディレクトリから Nutch を実行します。

$ bin/crawl -i -s urls/ crawl-test/ 5

クロールログは、ターミナルまたは logs/ ディレクトリで参照できます。ロギング出力を直接行うには、conf/log4j.properties を編集します。