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

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

כשמתחילים את סריקת האינטרנט, Apache Nutch סורק את האינטרנט ומשתמש בתוסף indexer כדי להעלות גרסאות בינאריות (או טקסט) מקוריות של תוכן המסמך ל-Google Cloud Search indexing API. ה-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 Apache Nutch indexer, צריך לאסוף את המידע שנדרש כדי לקשר בין 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 Indexer, יוצרים קובץ בשם plugin-configuration.properties.

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

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

בדוגמה הבאה מוצג קובץ תצורה לדוגמה עם הפרמטרים הנדרשים.

#
# 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-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> מכיל את הפרמטרים הבאים:

    הגדרה פרמטר
    נתיב לקובץ ההגדרות של Google Cloud Search gcs.config.file = path

    חובה. הנתיב המלא (המוחלט) לקובץ ההגדרות של Google Cloud Search.

    פורמט ההעלאה gcs.uploadFormat = text

    אופציונלי. הפורמט שבו התוכן של המסמך מועבר על ידי תוסף ההוספה לאינדקס אל Google Cloud Search Indexer API. הערכים החוקיים כוללים:

    • raw: התוסף של כלי היצירה של האינדקסים דוחף תוכן מקורי של מסמכים שלא עבר המרה.
    • text: התוסף של הכלי ליצירת אינדקס מעביר תוכן טקסטואלי שחולץ. ערך ברירת המחדל הוא raw.

שלב 4: הגדרת סריקת אתרים

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

  1. מגדירים כתובות URL להתחלה.

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

    כדי להגדיר כתובות URL להתחלה:

    1. משנים את ספריית העבודה לספריית ההתקנה של Nutch:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. יוצרים ספרייה לכתובות ה-URL:

      $ mkdir urls
    3. יוצרים קובץ בשם seed.txt ומוסיפים בו רשימה של כתובות URL, כתובת URL אחת בכל שורה.

  2. הגדרת כללים למעקב ולביטול מעקב.

    כללי כתובות URL קובעים אילו כתובות URL נסרקות ונכללות באינדקס של Google Cloud Search. סורק האינטרנט בודק את כתובות ה-URL בהשוואה לכללים של כתובות ה-URL שצריך לעקוב אחריהן. רק כתובות URL שתואמות לכללים האלה נסרקות ונוספות לאינדקס.

    כללים של 'לא למעקב' מוציאים כתובות URL מסריקה ומהכללה באינדקס של Google Cloud Search. אם כתובת URL מכילה תבנית של 'לא לסרוק', סורק האינטרנט לא יסרוק אותה.

    כדי להגדיר כללים של כתובות URL למעקב וללא מעקב:

    1. משנים את ספריית העבודה לספריית ההתקנה של Nutch:

      $ cd ~/nutch/apache-nutch-X.Y/
    2. עריכה של conf/regex-urlfilter.txt כדי לשנות את הכללים של מעקב/לא מעקב: \

      $ nano conf/regex-urlfilter.txt
    3. מזינים ביטויים רגולריים עם הקידומת '+' או '-' כדי לעקוב אחרי תבניות של כתובות 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)
      #+.
      
  3. עורכים את סקריפט הסריקה.

    אם הפרמטר gcs.uploadFormat חסר או מוגדר כ-raw, צריך להוסיף ארגומנטים של -addBinaryContent -base64 כדי להעביר אותם לפקודה nutch index. הארגומנטים האלה מציינים למודול Nutch Indexer לכלול תוכן בינארי ב-Base64 כשהוא מפעיל את תוסף Indexer. כברירת מחדל, לא מופיעים הארגומנטים האלה בסקריפט ‎ ./bin/crawl.

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

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

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

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