Apache Nutch 색인 생성기 플러그인 배포

오픈소스 웹 크롤러인 Apache Nutch용 Cloud Search 색인 생성기 플러그인을 배포하여 사용자에게 웹 콘텐츠를 제공하도록 Google Cloud Search를 설정할 수 있습니다.

웹 크롤링을 시작하면 Apache Nutch가 웹을 크롤링하고 색인 생성기 플러그인을 사용하여 문서 콘텐츠의 원본 바이너리 (또는 텍스트) 버전을 Google Cloud Search API에 업로드합니다. Cloud Search 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와 데이터 소스를 연결하는 데 필요한 정보를 수집합니다.

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을 폴더에 추출합니다. 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에 데이터를 푸시하는 방식, 메타데이터와 구조화된 데이터를 채우는 방식 등 플러그인 동작을 제어하는 매개변수도 포함될 수 있습니다. 이러한 매개변수에 대한 설명은 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

    선택사항입니다. 해당 데이터 소스 스키마의 속성에 매핑되는 태그의 쉼표로 구분된 목록입니다. 자세한 내용은 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>
    
  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> 섹션에는 다음 매개변수가 포함됩니다.

    설정 매개변수
    Cloud Search 구성 파일의 경로 gcs.config.file = path

    필수 항목입니다. Cloud Search 구성 파일의 전체 (절대) 경로입니다.

    업로드 형식 gcs.uploadFormat = text

    선택사항입니다. 플러그인이 문서 콘텐츠를 Cloud Search API에 푸시하는 데 사용하는 형식입니다. 유효한 값은 다음과 같습니다.

    • raw: 변환되지 않은 원본 콘텐츠를 푸시합니다.
    • text: 추출된 텍스트 콘텐츠를 푸시합니다. 기본값은 raw입니다.

4단계: 웹 크롤링 구성

웹 크롤링을 시작하기 전에 조직에서 제공하려는 정보만 포함하도록 구성하세요. 자세한 내용은 Nutch 가이드를 참고하세요.

  1. 시작 URL을 설정합니다.

    시작 URL은 웹 크롤러가 콘텐츠 크롤링을 시작하는 위치를 제어합니다. 크롤러는 링크를 따라 포함하려는 모든 콘텐츠에 도달할 수 있어야 합니다.

    시작 URL을 설정하려면 다음 안내를 따르세요.

    1. Nutch 설치 디렉터리로 변경합니다.
      $ cd ~/nutch/apache-nutch-X.Y/
    2. URL용 디렉터리를 만듭니다.
      $ mkdir urls
    3. seed.txt이라는 파일을 만들고 한 줄에 하나의 URL을 나열합니다.
  2. 크롤링 포함 규칙과 크롤링 제외 규칙을 설정합니다.

    크롤링 대상 URL 규칙은 크롤러가 색인을 생성하는 URL을 제어합니다. 크롤링 제외 규칙은 URL을 크롤링 대상에서 제외합니다.

    이 규칙을 설정하려면 다음 안내를 따르세요.

    1. Nutch 설치 디렉터리로 변경합니다.
    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
      #+.
      
  3. 크롤링 스크립트를 수정합니다.

    gcs.uploadFormat 매개변수가 없거나 'raw'로 설정되어 있으면 -addBinaryContent -base64 인수를 nutch index 명령어에 추가해야 합니다. 이러한 인수는 Nutch 색인 생성기 모듈이 Base64의 바이너리 콘텐츠를 포함하도록 지시합니다.

    1. apache-nutch-1.15/bin에서 crawl 스크립트를 엽니다.
    2. 이 예와 같이 옵션을 추가합니다.

            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를 수정하세요.