オープンソースのウェブクローラである Apache Nutch 用の Cloud Search インデクサ プラグインをデプロイすると、Google Cloud Search を設定してウェブ コンテンツをユーザーに提供できます。
ウェブクロールを開始すると、Apache Nutch がウェブをクロールし、インデクサ プラグインを使用して元のバイナリ(またはテキスト)バージョンのドキュメント コンテンツを Google Cloud Search API にアップロードします。Cloud Search API はコンテンツをインデックスに登録し、ユーザーに結果を提供します。
重要な考慮事項
インデクサ プラグインをデプロイする前に、次の点に注意してください。
システム要件
| システム要件 | |
|---|---|
| オペレーティング システム | Linux のみ:
|
| ソフトウェア |
|
| Apache Tika のドキュメント タイプ | Apache Tika 1.18 でサポートされているドキュメント形式 |
インデクサ プラグインをデプロイする
次の手順では、インデクサー プラグインをインストールし、そのコンポーネントを構成して URL をクロールし、結果を Cloud Search に返す方法について説明します。
前提条件
インデクサ プラグインをデプロイする前に、Cloud Search とデータソースの接続に必要な情報を収集します。
- Google Workspace の秘密鍵(サービス アカウント ID を含む)。秘密鍵を取得する方法については、Cloud Search API へのアクセスを構成するをご覧ください。
- Google Workspace データソース ID。データソース ID の取得方法については、検索対象のデータソースを追加するをご覧ください。
ステップ 1: プラグイン ソフトウェアと Apache Nutch をビルドしてインストールする
GitHub からインデクサー プラグイン リポジトリのクローンを作成します。
$ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git $ cd apache-nutch-indexer-plugin
必要なバージョンのインデクサ プラグインをチェックアウトします。
$ git checkout tags/v1-0.0.5
インデクサー プラグインをビルドします。
$ mvn package
プラグインのビルド時にテストをスキップするには、
mvn package -DskipTestsを使用します。Apache Nutch 1.15 をダウンロードし、Apache Nutch のインストール手順に従います。
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 を構成する
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>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 のチュートリアルをご覧ください。
開始 URL を設定します。
開始 URL では、ウェブクローラがコンテンツのクロールを開始する場所を制御します。クローラがリンクをたどって、含めるすべてのコンテンツに到達できるようにする必要があります。
開始 URL を設定するには:
- Nutch インストール ディレクトリに移動します。
$ cd ~/nutch/apache-nutch-X.Y/
- URL のディレクトリを作成します。
$ mkdir urls
seed.txtという名前のファイルを作成し、1 行に 1 つの URL をリストします。
- Nutch インストール ディレクトリに移動します。
「対象にする」ルールと「除外する」ルールを設定します。
「対象にする URL」ルールでは、クローラがインデックスに登録する URL を制御します。「除外する」ルールでは、クロール対象から URL を除外します。
これらのルールを設定するには:
- Nutch インストール ディレクトリに移動します。
conf/regex-urlfilter.txtを編集します。$ nano conf/regex-urlfilter.txt
「+」または「-」の接頭辞が付いた正規表現を入力します。
# 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 #+.
クロール スクリプトを編集します。
gcs.uploadFormatパラメータが指定されていないか、「raw」に設定されている場合は、nutch indexコマンドに-addBinaryContent -base64引数を追加する必要があります。これらの引数は、バイナリ コンテンツを Base64 で含めるよう Nutch Indexer モジュールに指示します。apache-nutch-1.15/binでcrawlスクリプトを開きます。この例に示すようにオプションを追加します。
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 を編集します。