Apache Nutch Indexer Eklentisi Dağıtma

Açık kaynaklı bir web tarayıcısı olan Apache Nutch için Cloud Search dizine ekleme eklentisini dağıtarak Google Cloud Search'ü kullanıcılarınıza web içeriği sunacak şekilde ayarlayabilirsiniz.

Web taramasına başladığınızda Apache Nutch, web'i tarar ve belge içeriğinin orijinal ikili (veya metin) sürümlerini Google Cloud Search API'ye yüklemek için dizin oluşturucu eklentisini kullanır. Cloud Search API, içeriği dizine ekler ve sonuçları kullanıcılarınıza sunar.

Dikkat edilecek önemli noktalar

Dizin oluşturucu eklentisini dağıtmadan önce aşağıdaki hususları göz önünde bulundurun.

Sistem gereksinimleri

Sistem gereksinimleri
İşletim sistemi Yalnızca Linux:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10 (64 bit)
Yazılım
  • Apache Nutch 1.15 sürümü. Dizin oluşturucu eklenti yazılımı, Nutch'un bu sürümünü içerir.
  • Dizin oluşturucu eklentisinin çalıştırılacağı bilgisayarda Java JRE 1.8'in yüklü olması
Apache Tika belge türleri Apache Tika 1.18 desteklenen belge biçimleri

Dizin oluşturucu eklentisini dağıtma

Bu adımlarda, dizin oluşturucu eklentisinin nasıl yükleneceği ve bileşenlerinin URL'leri tarayıp Cloud Search'e sonuç döndürecek şekilde nasıl yapılandırılacağı açıklanmaktadır.

Ön koşullar

Dizin oluşturucu eklentisini dağıtmadan önce Cloud Search'ü ve veri kaynağını bağlamak için gereken bilgileri toplayın:

1. adım: Eklenti yazılımını ve Apache Nutch'ı oluşturup yükleyin

  1. Indexer eklenti deposunu GitHub'dan klonlayın.

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. İstediğiniz dizin oluşturucu eklentisinin sürümünü kontrol edin:

    $ git checkout tags/v1-0.0.5
  3. Dizin oluşturucu eklentisini oluşturun.

    $ mvn package

    Eklentiyi oluştururken testleri atlamak için mvn package -DskipTests kullanın.

  4. Apache Nutch 1.15'i indirip Apache Nutch yükleme talimatlarını uygulayın.

  5. target/google-cloudsearch-apache-nutch-indexer-plugin-v1.0.0.5.zip dosyasını bir klasöre çıkarın. plugins/indexer-google-cloudsearch klasörünü Apache Nutch plugins klasörüne (apache-nutch-1.15/plugins) kopyalayın.

2. adım: Dizin oluşturucu eklentisini yapılandırın

Eklentiyi yapılandırmak için plugin-configuration.properties adlı bir dosya oluşturun. Yapılandırma dosyası, Cloud Search veri kaynağına erişmek için aşağıdaki parametreleri belirtmelidir.

Ayar Parametre
Veri kaynağı kimliği api.sourceId = 1234567890abcdef
Zorunlu. Google Workspace yöneticisinin dizine ekleyici eklentisi için ayarladığı Cloud Search kaynak kimliği.
Hizmet hesabı api.serviceAccountPrivateKeyFile = ./PrivateKey.json
Zorunlu. Google Workspace yöneticisinin dizin oluşturucu eklentisinin erişilebilirliği için oluşturduğu Cloud Search hizmet hesabı anahtar dosyası.

Aşağıdaki örnekte örnek bir yapılandırma dosyası gösterilmektedir:

# data source access
api.sourceId=1234567890abcdef
api.serviceAccountPrivateKeyFile=./PrivateKey.json

Yapılandırma dosyası, eklentinin verileri Cloud Search API'ye nasıl aktardığı ve meta verileri ile yapılandırılmış verileri nasıl doldurduğu gibi eklenti davranışını kontrol eden parametreler de içerebilir. Bu parametrelerin açıklamaları için Google tarafından sağlanan bağlayıcı parametreleri bölümüne bakın.

3. adım: Apache Nutch'ı yapılandırın

  1. conf/nutch-site.xml bağlantısını açın ve aşağıdaki parametreleri ekleyin:

    Ayar Parametre
    Eklenti şunları içerir: plugin.includes = text

    Zorunlu. Kullanılacak eklentilerin listesi. Bu açıklama en az şunları içermelidir:

    • index-basic
    • index-more
    • indexer-google-cloudsearch
    conf/nutch-default.xml varsayılan bir değer sağlar ancak indexer-google-cloudsearch değerini manuel olarak eklemeniz gerekir.
    Meta etiket adları metatags.names = text

    İsteğe bağlı. İlgili veri kaynağı şemasındaki özelliklerle eşlenen etiketlerin virgülle ayrılmış listesi. Daha fazla bilgi edinmek için Nutch-parse metatags başlıklı makaleyi inceleyin.

    Aşağıdaki örnekte nutch-site.xml için gerekli değişiklik gösterilmektedir:

    <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 bağlantısını açın ve aşağıdaki bölümü ekleyin:

    <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> bölümü aşağıdaki parametreleri içerir:

    Ayar Parametre
    Cloud Search yapılandırma dosyasının yolu gcs.config.file = path

    Zorunlu. Cloud Search yapılandırma dosyasının tam (mutlak) yolu.

    Yükleme biçimi gcs.uploadFormat = text

    İsteğe bağlı. Eklentinin, belge içeriğini Cloud Search API'ye aktarmak için kullandığı biçim. Geçerli değerler şunlardır:

    • raw: Orijinal ve dönüştürülmemiş içerikleri gönderir.
    • text: Çıkarılan metin içeriğini gönderir. Varsayılan değer raw'dir.

4. adım: Web taramayı yapılandırın

Web taraması başlatmadan önce, yalnızca kuruluşunuzun kullanıma sunmak istediği bilgileri içerecek şekilde yapılandırın. Daha fazla bilgi için Nutch eğitimine bakın.

  1. Başlangıç URL'lerini ayarlayın.

    Başlangıç URL'leri, web tarayıcısının içeriğinizi taramaya nereden başlayacağını kontrol eder. Tarayıcı, bağlantıları izleyerek dahil etmek istediğiniz tüm içeriğe ulaşabilmelidir.

    Başlangıç URL'lerini ayarlamak için:

    1. Nutch kurulum dizinine geçin:
      $ cd ~/nutch/apache-nutch-X.Y/
    2. URL'ler için bir dizin oluşturun:
      $ mkdir urls
    3. seed.txt adlı bir dosya oluşturun ve her satıra bir URL yazın.
  2. Takip etme ve takip etmeme kuralları oluşturun.

    Takip edilen URL kuralları, tarayıcının hangi URL'leri dizine ekleyeceğini kontrol eder. Takip etme kuralları, URL'lerin taranmasını engeller.

    Bu kuralları ayarlamak için:

    1. Nutch kurulum dizinine geçin.
    2. conf/regex-urlfilter.txt öğesini düzenleyin:
      $ nano conf/regex-urlfilter.txt
    3. "+" veya "-" önekli normal ifadeler girin:

      # 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. Tarama komut dosyasını düzenleyin.

    gcs.uploadFormat parametresi eksikse veya "raw" olarak ayarlanmışsa nutch index komutuna -addBinaryContent -base64 bağımsız değişkenlerini eklemeniz gerekir. Bu bağımsız değişkenler, Nutch Indexer modülüne ikili içeriği Base64'e dahil etmesini söyler.

    1. crawl komut dosyasını apache-nutch-1.15/bin'da açın.
    2. Seçenekleri bu örnekte gösterildiği gibi ekleyin:

            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. adım: Web taraması ve içerik yükleme başlatma

Dizin oluşturucu eklentisini ayarladıktan sonra yerel modda çalıştırabilirsiniz. Bir tarama işini yürütmek için ./bin komut dosyalarını kullanın.

Aşağıdaki örnekte, bileşenlerin yerel dizinde olduğu varsayılmaktadır. Nutch'u apache-nutch-1.15 dizininden çalıştırın:

$ bin/crawl -i -s urls/ crawl-test/ 5

Tarama günlüklerine terminalden veya logs/ dizininden ulaşabilirsiniz. Günlük kaydı çıkışını yönlendirmek için conf/log4j.properties öğesini düzenleyin.