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 を編集します。