פריסת פלאגין של Apache Nutch Indexer

אתם יכולים להגדיר את Google Cloud Search כך שיציג למשתמשים תוכן אינטרנט באמצעות פריסת הפלאגין של Cloud Search indexer עבור Apache Nutch, סורק אינטרנט בקוד פתוח.

כשמתחילים בסריקת האינטרנט, Apache Nutch סורק את האינטרנט ומשתמש בתוסף indexer כדי להעלות גרסאות בינאריות (או טקסטואליות) מקוריות של תוכן המסמך אל Google Cloud Search API. ‫Cloud Search API מבצע אינדוקס של התוכן ומציג את התוצאות למשתמשים.

שיקולים חשובים

לפני שמפעילים את הפלאגין של כלי יצירת האינדקס, חשוב להביא בחשבון את הנקודות הבאות.

דרישות מערכת

דרישות מערכת
מערכת הפעלה ב-Linux בלבד:
  • Ubuntu
  • ‫Red Hat Enterprise Linux 5.0
  • ‫SUSE Enterprise Linux 10 (64 bit)
תוכנה
  • ‫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 לתיקייה plugins של Apache Nutch‏ (apache-nutch-1.15/plugins).

שלב 2: הגדרת הפלאגין של יצירת האינדקס

כדי להגדיר את הפלאגין, יוצרים קובץ בשם plugin-configuration.properties. כדי לגשת למקור הנתונים של Cloud Search, צריך לציין בקובץ ההגדרות את הפרמטרים הבאים.

הגדרה פרמטר
מזהה מקור הנתונים api.sourceId = 1234567890abcdef
חובה. מזהה המקור ב-Cloud Search שהאדמין ב-Google Workspace הגדיר עבור תוסף יצירת האינדקס.
חשבון שירות api.serviceAccountPrivateKeyFile = ./PrivateKey.json
חובה. קובץ מפתח של חשבון שירות Cloud Search שהאדמין ב-Google Workspace יצר כדי לאפשר גישה לתוסף של כלי יצירת האינדקס.

בדוגמה הבאה מוצג קובץ הגדרות לדוגמה:

# 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 metatags.

    בדוגמה הבאה אפשר לראות את השינוי הנדרש ב-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 הסורק מוסיף לאינדקס. כללי do-not-follow מחריגים כתובות 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 Indexer לכלול תוכן בינארי ב-Base64.

    1. פותחים את הסקריפט crawl ב-apache-nutch-1.15/bin.
    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 כדי להריץ משימת סריקה.

בדוגמה הבאה נניח שהרכיבים נמצאים בספרייה המקומית. מריצים את Nutch מהספרייה apache-nutch-1.15:

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

יומני הסריקה זמינים בטרמינל או בספרייה logs/. כדי להפנות את פלט הרישום, עורכים את conf/log4j.properties.