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

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

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

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

דרישות מערכת

דרישות מערכת
מערכת הפעלה ב-Linux בלבד:
  • Ubuntu
  • Red Hat Enterprise Linux 5.0
  • SUSE Enterprise Linux 10‏ (64 ביט)
תוכנה
  • Apache Nutch בגרסה 1.15. תוכנת הפלאגין של ה-indexer כוללת את הגרסה הזו של Nutch.
  • Java JRE 1.8 מותקנת במחשב שבו מריצים את הפלאגין של ה-Indexer
סוגי מסמכים ב-Apache Tika פורמטים נתמכים של מסמכים ב-Apache Tika 1.18

פריסה של פלאגין ה-Indexer

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

דרישות מוקדמות

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

שלב 1: פיתוח והתקנה של תוכנת הפלאגין ו-Apache Nutch

  1. משכפלים את מאגר הפלאגין של ה-indexer מ-GitHub.

    $ git clone https://github.com/google-cloudsearch/apache-nutch-indexer-plugin.git
    $ cd apache-nutch-indexer-plugin
  2. בודקים את הגרסה הרצויה של פלאגין ה-Indexer:

    $ git checkout tags/v1-0.0.5
  3. פיתוח הפלאגין של ה-Indexer.

    $ mvn package

    כדי לדלג על הבדיקות בזמן היצירה של הפלאגין של ה-Indexer, משתמשים ב-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: מגדירים את הפלאגין של ה-indexer

כדי להגדיר את הפלאגין Apache Nutch Indexer, יוצרים קובץ בשם plugin-configuration.properties.

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

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

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

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

קובץ התצורה יכול להכיל גם פרמטרים אחרים ששולטים בהתנהגות של הפלאגין של ה-Indexer. אפשר להגדיר את האופן שבו הפלאגין דוחף נתונים ל-Cloud Search API, ל-defaultAcl.* ול-batch.*. אפשר גם להגדיר את האופן שבו הפלאגין של ה-Indexer מאכלס מטא-נתונים ונתונים מובְנים.

לתיאור הפרמטרים האלה, אפשר לעיין במאמר פרמטרים של מחברים שסופקו על ידי 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 indexer API. הערכים החוקיים כוללים:

    • raw: הפלאגין של ה-indexer דוחף תוכן מסמך מקורי שלא הומר.
    • text: הפלאגין של ה-indexer דוחף תוכן טקסטואלי שחולץ. ערך ברירת המחדל הוא 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, כתובת אחת בכל שורה.

  2. מגדירים כללים של מעקב ושל אי-מעקב.

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

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

    כדי להגדיר כללים של מעקב אחרי כתובות 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. הארגומנטים האלה מורים למודול ה-Indexer של Nutch לכלול תוכן בינארי ב-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: מתחילים סריקה של האינטרנט והעלאת תוכן

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

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

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

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