オープンソースのウェブクローラである Apache Nutch 用に Google Cloud Search インデクサ プラグインをデプロイすると、Google Cloud Search をセットアップしてウェブ コンテンツをユーザーに提供できます。
ウェブクロールを始めると、Apache Nutch がウェブをクロールし、インデクサ プラグインを使用して、元のバイナリ(またはテキスト)バージョンのドキュメント コンテンツを Google Cloud Search インデックス 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 のインストール手順に沿ってインストールします。
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 を構成する
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」ルールでは、クロールと Google Cloud Search インデックスへの登録の対象とする URL を制御します。ウェブクローラは、URL を「対象にする URL」ルールと照合します。これらのルールに適合した URL のみがクロールされて、インデックスに登録されます。
「除外する」ルールでは、クロールと Google Cloud Search インデックスへの登録対象から URL を除外します。クロールしないパターンが 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
」引数を追加する必要があります。これらの引数は、インデクサ プラグインを呼び出すときにバイナリ コンテンツを Base64 で含めるよう Nutch Indexer モジュールに指示します。デフォルトでは、./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
を編集します。