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

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

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

פריסת הפלאגין של הכלי לאינדקס

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

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

לפני שפורסים את הפלאגין Cloud Search Apache Nutch לאינדקס, צריך לאסוף את המידע הנדרש כדי לקשר את 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. בודקים את הגרסה הרצויה של הפלאגין של האינדקס:

    $ 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
#

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

לתיאורים של הפרמטרים האלה, קראו את המאמר פרמטרים של מחבר שסופק על ידי Google.

שלב 3: הגדרת Apache Nutch

  1. פותחים את conf/nutch-site.xml ומוסיפים את הפרמטרים הבאים:

    ההגדרה פרמטר
    הפלאגין כולל plugin.includes = text

    חובה. רשימת יישומי פלאגין לשימוש. היא צריכה לכלול לפחות:

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

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

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

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

    כתובות ה-URL להתחלה קובעות איפה סורק האינטרנט Apache Nutch יתחיל לסרוק את התוכן. כתובות ה-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 כשהוא מפעיל את הפלאגין של הכלי לאינדקס. כברירת מחדל, הסקריפט ./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

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