部署 Apache Nutch Indexer 外掛程式

您可以為開放原始碼網路檢索器 Apache Nutch 部署 Google Cloud Search 索引器外掛程式,設定 Google Cloud Search 為使用者提供網路內容。

開始網頁檢索時,Apache Nutch 會檢索網頁,並使用索引器外掛程式,將文件內容的原始二進位 (或文字) 版本上傳至 Google Cloud Search 索引 API。索引 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 支援的文件格式

部署索引器外掛程式

以下步驟說明如何安裝索引器外掛程式,並設定其元件,以便檢索指定的網址,並將結果傳回至 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、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 的格式。有效值如下:

    • raw:索引器外掛程式會推送原始未轉換的文件內容。
    • text:索引器外掛程式會推送已擷取的文字內容。預設值為 raw

步驟 4:設定網頁檢索

開始檢索網頁前,請先設定檢索作業,讓檢索作業只包含貴機構希望在搜尋結果中提供的資訊。本節將提供概略說明。如要進一步瞭解如何設定網頁檢索,請參閱 Nutch 教學課程

  1. 設定起始網址。

    起始網址可控制 Apache Nutch 網路爬蟲開始檢索內容的位置。開始網址應可讓網頁檢索器透過連結,找到您要納入特定檢索作業的所有內容。必須提供開始網址。

    如要設定起始網址,請按照下列步驟操作:

    1. 將工作目錄變更為 Nutch 安裝目錄:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. 建立網址目錄:

      $ mkdir urls
    3. 建立名為 seed.txt 的檔案,並在其中列出網址,每行一個網址。

  2. 設定追蹤和不追蹤規則。

    追蹤網址規則可控制系統檢索哪些網址,並將這些網址納入 Google Cloud Search 索引。網頁檢索器會根據「遵循網址」規則檢查網址。系統只會檢索及建立索引符合這些規則的網址。

    不追蹤規則會排除網址,不讓系統檢索並將網址納入 Google Cloud Search 索引。如果網址包含「不檢索」模式,網路檢索器就不會檢索該網址。

    如要設定追蹤和不追蹤網址規則,請按照下列步驟操作:

    1. 將工作目錄變更為 Nutch 安裝目錄:

      $ cd ~/nutch/apache-nutch-X.Y/
    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
      # (commented out due to the single url-prefix allowed above)
      #+.
      
  3. 編輯檢索腳本。

    如果缺少 gcs.uploadFormat 參數或已設為「raw」,您必須新增「-addBinaryContent -base64」引數,才能傳遞至 nutch index 指令。這些引數會告訴 Nutch Indexer 模組,在叫用索引器外掛程式時,將二進位內容納入 Base64 中。根據預設,./bin/crawl 指令碼沒有這些引數。

    1. apache-nutch-1.15/bin 中開啟 crawl 指令碼。
    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

檢索記錄可在 std 輸出內容 (終端機) 或 logs/ 目錄中找到。如要導向記錄輸出內容或取得更詳細的記錄資訊,請編輯 conf/log4j.properties