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

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

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

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

דרישות מערכת

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

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

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

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

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

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

    • מידע בסיסי
    • להוסיף לאינדקס
    • 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>
    

    התפקיד <author> מכיל את הפרמטרים הבאים:

    הגדרה פרמטר
    נתיב לקובץ התצורה של 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 להתחלה הן חובה.

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

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

      $ 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. משנים את ספריית העבודה לספריית ההתקנה של הנוצצים:

      $ 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 חסר או מוגדר כ'גולמי', עליך להוסיף -addBinaryContent -base64 ארגומנטים שצריך להעביר אל nutch index הפקודה. הארגומנטים האלה מורים למודול Nutch Indexer לכלול תוכן בינארי ב-Base64 כאשר הוא מפעיל את הפלאגין של האינדקס. בסקריפט ./bin/Scan אין את הארגומנטים האלה כברירת מחדל.

    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

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