חיפוש מתקדם

בקטע הזה נדון בניואנסים נוספים של תכונת החיפוש ובנושאים מתקדמים.

מילים נרדפות בהתאמה אישית

ב-Document AI Warehouse יש תכונה שנקראת "מילים נרדפות בהתאמה אישית", שמאפשרת ללקוחות לספק מילים נרדפות משלהם לדומיינים הספציפיים שלהם. מילה נרדפת, כמו שהשם מרמז, היא מילה דומה שמשמשת במהלך החיפוש. אם המשתמש מבצע חיפוש של "טלוויזיה", אפשר להוסיף את המילים הנרדפות הבאות בצורה חלקה בלי שהמשתמש יידע: "TV", "מסך וידאו", "מסך". שאילתת החיפוש תתבצע באמצעות מונחי החיפוש המקוריים של המשתמש והמילים הנרדפות.

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

Synonym,‏ Context ו-SynonymSet

ב-Document AI Warehouse יש שלושה מונחים עיקריים להתאמה אישית של מילים נרדפות:

  • Synonym. מילה נרדפת מייצגת קבוצה של מילים שלכולן יש משמעות דומה.

  • Context. הקשר מייצג קבוצת משתמשים (כמו משתמשים בתעשייה, במחלקה או בארגון) שיש להם מילים נרדפות ספציפיות שקבוצות אחרות לא משתמשות בהן. לדוגמה, סביר להניח שמחלקת הכספים ומחלקת הבריאות משתמשות ב-SynonymSet שונה לגמרי. אפשר לציין את ההקשרים בשדה queryContext של Search API. לכן, שימוש בהקשרים שונים לאותם מונחים בשאילתת החיפוש יכול להניב תוצאות חיפוש שונות.

  • SynonymSet. SynonymSet הוא אוסף של מילים נרדפות להקשר ספציפי.

{
  "name": string,
  "context": string,
  "synonyms": [
    {
      object (Synonym)
    }
  ]
}

תרחיש שימוש לדוגמה

SynonymSet עם ההקשר: "finance"

"מטבע","מטבע חוץ","דולר","אירו"​​,"ין"
"אינפלציה","מדד המחירים לצרכן","התרחבות כלכלית","פריחה כלכלית","מחירים גבוהים יותר"
"IRS","Internal Revenue Service","US Treasury"
"Tax return","1040","1120","1099","W-2"

בדוגמה שלמעלה, כשהמשתמש מחפש את המונח "מטבע" והערך של queryContext הוא "כספים", המילים הנרדפות האחרות באותה שורה (כלומר, מט"ח, דולר, אירו, ין) מתווספות באופן משתמע לשאילתת החיפוש. באופן דומה, אם המשתמש מזין שאילתה עם מונח כלשהו בשורה הזו, כל שאר המונחים מתווספים לשאילתה הסופית. לפי אותה דוגמה, אם המשתמש מזין את השאילתה "אירו", המערכת מוסיפה לשאילתה הסופית את המונחים "מטבע", "מט"ח", "דולר" ו"ין".

SynonymSet עם ההקשר: "healthcare"

"provider","clinic","hospital","doctor","therapist","specialist"
"Medical claim","Claim","1500","Diagnosis","ICD-9","ICD9","ICD-10","ICD10","CPT","HCPCS"
"פציעה","טראומה","פגיעה","פצע","כאב","חבורה","חתך","קרע","נגע","שפשוף","חבלה"

חיפוש עם הרחבה של מילים נרדפות בהתאמה אישית

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

כמו שהשם מרמז, folder search מחפש רק בתיקייה מסוימת ובתיקיות המשנה שלה.

דוגמה לבקשת חיפוש:

  {
    document_query {
      query: "songs";,
      folderNameFilter: "projects/PROJECT_NUM/locations/LOCATION/documents/888"
    }
  }

היסטוגרמות

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

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

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

פורמט כללי של שאילתת היסטוגרמה

ה-HistogramQuery מוגדר כך:

{
  "histogramQuery": string,
  "requirePreciseResultSize": boolean,
  "filters": {
    object (HistogramQueryPropertyNameFilter)
  }
}

השדה histogram_query הוא בפורמט הבא: COUNT('<item to count>'). השדה הזה הוא שדה חוזר, שמאפשר לכם להגדיר יותר משאילתת היסטוגרמה אחת.

השדה require_precise_result_size לא מיושם.

השדה filters מוסבר בקטע מסננים.

היסטוגרמות של סכימות מסמכים

כדי ליצור היסטוגרמות של סכימת מסמכים או של סוגי מסמכים, מוסיפים את שאילתת ההיסטוגרמה הבאה:

  {
    document_query {
      query: "test"
    },
    histogram_queries: [
      {
        histogram_query: "count('DocumentSchemaId')"
      }
    ]
  }

לדוגמה, המפה בתוך HistogramQueryResult של השאילתה הזו תיראה כך:

  histogramQueryResults: [
    {
      histogramQuery: "DocumentSchemaId",
      histogram:
        {
          "projects/1234/locations/us-west/documentSchemas/5543": "22",
          "projects/1234/locations/us-west/documentSchemas/5544": "2",
          "projects/1234/locations/us-west/documentSchemas/5545": "4",
          "projects/1234/locations/us-west/documentSchemas/5546": "122",
          "projects/1234/locations/us-west/documentSchemas/5547": "256",
          "projects/1234/locations/us-west/documentSchemas/5548": "1",
          "projects/1234/locations/us-west/documentSchemas/5549": "5",
          "projects/1234/locations/us-west/documentSchemas/5550": "15",
        }
    }
  ]

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

היסטוגרמות של נכסים

היסטוגרמות של מאפיינים מציגות את הספירות של מאפיינים מסוימים שניתן לסנן. הפורמט של היסטוגרמות של מאפיינים הוא:

  COUNT('SomeSchema.SomeProp')

  // Also, you can try with:

  COUNT('SomeSchema.ParentProp.SubProp')

דוגמה לבקשה:

  histogramQueryResults: [
    {
      histogramQuery: "5678.text_prop",
      histogram: {
        some_text: "1",
        More_text: "55",
        Additional_text: "19"
      }
    }
  ]

בהיסטוגרמה הזו מוצגות כל ההיסטוגרמות של הנכסים שאפשר לסנן לפי הקריטריון HistogramQueryPropertyNameFilter. הפונקציה מחזירה את מספר הפעמים שנעשה שימוש במאפיין (בניגוד למספר הערכים).

ה-HistogramQueryPropertyNameFilter מוגדר כך:

  {
    "documentSchemas": [
      string
    ],
    "propertyNames": [
      string
    ],
    "yAxis": enum (HistogramYAxis)
  }

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

השדה y_axis קובע איך לספור את הנכסים. אם המדיניות לא מוגדרת או מוגדרת לערך HISTOGRAM_YAXIS_DOCUMENT, תכונת ההיסטוגרמה סופרת רק את השימוש בנכס הייחודי. אם המדיניות y_axis מוגדרת לערך HISTOGRAM_YAXIS_PROPERTY, ההיסטוגרמה סופרת את כל השימוש בנכס. לדוגמה:

מסמך 1: Payments_property: [AMEX, VISA]

מסמך 2: Payments_property: [MC]

`HISTOGRAM_YAXIS_DOCUMENT` would return:
  Payments_property: 2
  _Explanation_: The `Payments_property` is found in two documents

`HISTOGRAM_YAXIS_PROPERTY` would return:
  Payments_property: 3
  _Explanation_: The `Payments_property` has three values in the documents found

דוגמה לשאילתה פשוטה:

  {
    document_query {
    },
    histogram_queries: [
      {
        histogramQuery: "count('FilterableProperties')";
      }
    ]
  }

תגובה לדוגמה לשאילתה הקודמת:

  histogramQueryResults: [
    {
      histogramQuery: "FilterableProperties",
      histogram: {
        456.int_prop: "4",
        456.text_prop: "26"
      }
    }
  ]

כדי לסנן את התוצאות של count('FilterableProperties')) לפי סכימות, אפשר להשתמש בבקשה הבאה:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          document_schemas: [
            "projects/1234/locations/us-west/documentSchemas/678",
            "projects/1234/locations/us-west/documentSchemas/456"
          ]
        }
      }
    ]
  }

כדי לסנן את התוצאות של count('FilterableProperties') לפי מאפיינים ספציפיים, אפשר להשתמש בבקשה הבאה:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          property_names: [
            "678.MORTAGE_TYPE",
            "456.language_code"
          ]
        }
      }
    ]
  }

כדי לראות את מספר הנכסים של count("FilterableProperties"), משנים את y_axis ל-HISTOGRAM_YAXIS_PROPERTY באופן הבא:

  {
    document_query: {
    },
    histogram_queries: [
      {
        histogram_query: "count('FilterableProperties')",
        filters: {
          y_axis: "HISTOGRAM_YAXIS_PROPERTY"
        }
      }
    ]
  }

השלבים הבאים