Google Cloud Search を設定し、ユーザーにウェブ コンテンツを提供するには、オープンソースのウェブ クローラーである Apache Nutch 用の Google Cloud Search インデクサ プラグインをデプロイします。
ウェブクロールを開始すると、Apache Nutch はウェブをクロールし、インデクサ プラグインを使用してドキュメント コンテンツの元のバイナリ(またはテキスト)バージョンを Google Cloud Search Indexing API にアップロードします。Indexing API は、コンテンツをインデックスに登録し、その結果をユーザーに表示します。
重要な考慮事項
システム要件
システム要件 | |
---|---|
オペレーティング システム | Linux のみ:
|
ソフトウェア |
|
Apache Tika ドキュメント タイプ | Apache Tika 1.18 でサポートされているドキュメント形式 |
インデクサ プラグインをデプロイする
次の手順では、インデクサ プラグインをインストールし、指定された URL をクロールして結果を Cloud Search に返すようにそのコンポーネントを構成する方法について説明します。
前提条件
Cloud Search Apache Nutch インデクサ プラグインをデプロイする前に、Google Cloud Search とデータソースの接続に必要な情報を収集します。
- Google Workspace の秘密鍵(サービス アカウント ID を含む)。秘密鍵を取得する方法については、 Google 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 のインストール手順に沿って操作します。
手順 2 で作成した
target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip
をフォルダに抽出します。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(defaultAcl.*
と batch.*
)にデータを 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
省略可。対応するデータソースのスキーマのプロパティにマッピングされるタグのカンマ区切りのリスト。メタタグ用に 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>
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 のチュートリアルをご覧ください。
開始 URL を設定します。
開始 URL では、Apache Nutch ウェブクローラがコンテンツのクロールを開始する場所を制御します。開始 URL は、ウェブ クローラーがリンクをたどって特定のクロールに含めるすべてのコンテンツにアクセスできるようにします。開始 URL は必須です。
開始 URL を設定するには:
作業ディレクトリを nutch インストール ディレクトリに変更します。
$ cd ~/nutch/apache-nutch-X.Y/
URL 用のディレクトリを作成します。
$ mkdir urls
seed.txt
という名前のファイルを作成し、URL を 1 行に 1 つずつ入力してください。
「従う」ルールと「従わない」ルールを設定する。
「URL をフォロー」ルールは、どの URL をクロールして Google Cloud Search インデックスに含めるかを管理します。ウェブ クローラーは、URL を次の URL ルールに照らしてチェックします。これらのルールに適合した URL のみがクロールされて、インデックスに登録されます。
「従わない」ルールでは、URL をクロールの対象から Google Cloud Search インデックスから除外します。クロールしないパターンが URL に含まれている場合、ウェブクローラはその URL をクロールしません。
「対象にする URL」ルールと「除外する URL」ルールを設定するには:
作業ディレクトリを nutch インストール ディレクトリに変更します。
$ cd ~/nutch/apache-nutch-X.Y/
「従う/従わない」ルールを変更するには
conf/regex-urlfilter.txt
を編集します: \$ nano conf/regex-urlfilter.txt
次の例に示すように、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) #+.
クロール スクリプトを編集します。
gcs.uploadFormat
パラメータが指定されていないか、「raw」に設定されている場合は、nutch index
コマンドに渡す「-addBinaryContent -base64
」引数を追加する必要があります。これらの引数により、Nutch Indexer モジュールは、インデクサ プラグインを呼び出すときにバイナリ コンテンツを Base64 に含めるように指示します。./bin/crawl スクリプトには、これらの引数がデフォルトでありません。apache-nutch-1.15/bin
でcrawl
スクリプトを開きます。次の例のように、
-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
を編集します。