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

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

ウェブクロールを始めると、Apache Nutch がウェブをクロールし、インデクサ プラグインを使用して、元のバイナリ(またはテキスト)バージョンのドキュメント コンテンツを Google Cloud Search インデックス API にアップロードします。Indexing 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 Apache Nutch インデクサ プラグインをデプロイする前に、Google 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(手順 2 で作成)をフォルダに展開します。plugins/indexer-google-cloudsearch フォルダを Apache Nutch インストール プラグイン フォルダ(apache-nutch-1.15/plugins)にコピーします。

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

Apache Nutch インデクサ プラグインを構成するには、plugin-configuration.properties というファイルを作成します。

構成ファイルでは、Google Cloud Search データソースにアクセスするために必要な次のパラメータを指定する必要があります。

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

次の例は、必須パラメータを含む構成ファイルの例を示しています。

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

構成ファイルには、インデクサ プラグインの動作を制御する他のパラメータを含めることもできます。プラグインが Cloud Search API にデータを push する方法(defaultAcl.*batch.*)を構成できます。インデクサ プラグインがメタデータと構造化データを入力する方法も構成できます。

これらのパラメータの説明については、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

    省略可。対応するデータソースのスキーマ内のプロパティにマッピングされるタグのカンマ区切りのリスト。メタタグ用に Apache Nutch を設定する方法について詳しくは、Nutch によるメタタグの解析をご覧ください。

    次の例は、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> セクションには、次のパラメータが含まれています。

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

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

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

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

    • raw: インデクサ プラグインは、変換されていない元のドキュメント コンテンツを push します。
    • text: インデクサ プラグインは、抽出されたテキスト コンテンツを push します。デフォルト値は raw です。

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

ウェブクロールを開始する前に、組織が検索結果で使用できるようにする情報のみが含まれるようにクロールを構成します。このセクションでは概要について説明します。ウェブクロールの設定方法について詳しくは、Nutch のチュートリアルをご覧ください。

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

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

    開始 URL を設定するには:

    1. 作業ディレクトリを nutch インストール ディレクトリに変更します。

      $ cd ~/nutch/apache-nutch-X.Y/
    2. URL のディレクトリを作成します。

      $ mkdir urls
    3. seed.txt という名前のファイルを作成し、URL を 1 行に 1 つずつリストします。

  2. 「対象にする」ルールと「除外する」ルールを設定する。

    「対象にする URL」ルールでは、クロールと Google Cloud Search インデックスへの登録の対象とする URL を制御します。ウェブクローラは、URL を「対象にする URL」ルールと照合します。これらのルールに適合した URL のみがクロールされて、インデックスに登録されます。

    「除外する」ルールでは、クロールと Google Cloud Search インデックスへの登録対象から URL を除外します。クロールしないパターンが URL に含まれている場合、ウェブクローラはその URL をクロールしません。

    「対象にする URL」ルールと「除外する URL」ルールを設定するには:

    1. 作業ディレクトリを nutch インストール ディレクトリに変更します。

      $ cd ~/nutch/apache-nutch-X.Y/
    2. conf/regex-urlfilter.txt を編集して、「対象にする」ルール / 「除外する」ルールを変更します。\

      $ nano conf/regex-urlfilter.txt
    3. 次の例に示すように、対象にする / 除外する URL パターンや拡張子などの前に「+」または「-」を追加して正規表現を入力します。開放的な表現は許可されます。

      # 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
      # (commented out due to the single url-prefix allowed above)
      #+.
      
  3. クロール スクリプトを編集します。

    gcs.uploadFormat パラメータが指定されていないか、「raw」に設定されている場合は、nutch index コマンドに渡す「-addBinaryContent -base64」引数を追加する必要があります。これらの引数は、インデクサ プラグインを呼び出すときにバイナリ コンテンツを Base64 で含めるよう Nutch Indexer モジュールに指示します。デフォルトでは、./bin/crawl スクリプトにこれらの引数は含まれていません。

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

            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 のスクリプトを使用して、クロールジョブや個々の Nutch コマンドを実行します。

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

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

クロールログは、標準出力(ターミナル)または logs/ ディレクトリで参照できます。ロギング出力を転送する場合や、より詳細なロギングを設定する場合は、conf/log4j.properties を編集します。