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

אחרי שיוצרים מחסן Vision, מוסיפים אותו לאפליקציה ופורסים את האפליקציה, אפשר לחפש את הנתונים שמאוחסנים במחסן Vision של סרטוני סטרימינג.

חיפוש מטא-נתונים של סרטונים בסטרימינג

כדי לחפש את הנתונים (assets) במחסן (corpus), צריך למלא את SearchAssetsRequest בתוכן שרוצים למצוא. התוכן הזה מגיע בכמה פורמטים שונים:

  1. criteria – תוכן טקסט, מספר או תאריך שסופק על ידי המשתמש.
  2. facet_selections – תוכן טקסט שמוחזר על ידי השרת ונבחר על ידי המשתמש.
  3. content_time_ranges – טווחי תאריכים שכל התוכן שמוחזר חייב להיות כלול בהם.

בדוגמה הבאה, נניח שיש מחסן נתונים שמכיל צילומי מצלמות אבטחה מסוגים שונים של חנויות ברחבי הארץ. כדי לאחזר את כל הנכסים לשנים 2018 או 2020 שתויגו בהערה "state": "California" או בהערה "state":"Pennsylvania", שולחים את הבקשה הבאה:

REST

כדי לחפש נכסים, שולחים בקשת POST באמצעות השיטה projects.locations.corpora.searchAssets.

בדוגמה הזו של גוף הבקשה, בשדה criteria נעשה שימוש בערכים textArray כדי לספק שני txt_values: California ו-Pennsylvania. אפשר גם לספק קריטריונים לחיפוש של סוגי נתונים אחרים. אפשר לציין רק סוג אחד של קריטריון חיפוש בכל בקשה.

אפשרויות נוספות לקריטריונים לחיפוש

טווחים של מספרים שלמים (כולל)

    "int_range_array" : {
      "int_ranges": { "start": "5", "end": "10" }
      "int_ranges": { "start": "20", "end": "30" }
    }
    

טווחים של מספרים עשרוניים (כולל)

    "float_range_array" : {
      "float_ranges": { "start": "2.6", "end": "14.3" }
      "float_ranges": { "start": "205.3", "end": "205.8" }
    }
    

מיקומים גיאוגרפיים (קואורדינטות ורדיוס)

    "geo_location_array": {
      "circle_areas": {
        "latitude": "37.4221",
        "longitude": "122.0841",
        "radius_meter": "500"
      },
      "circle_areas": {
        "latitude": "12.46523",
        "longitude": "-95.2146",
        "radius_meter": "100"
      }
    }
    

ערכים בוליאניים

    "bool_value" : {
      "value": "true"
    }
    

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

גוף בקשת JSON:

{
  "page_size": "2",
  "content_time_ranges": {
    "date_time_ranges": {
      "start": {
        "year":"2018",
        "month":"1",
        "day":"1",
      },
      "end": {
        "year":"2019",
        "month":"1",
        "day":"1",
      }
    },
    "date_time_ranges": {
      "start": {
        "year":"2020",
        "month":"1",
        "day":"1",
      },
      "end": {
        "year":"2021",
        "month":"1",
        "day":"1",
      }
    }
  },
  "criteria": {
    "field": "state",
    "text_array": {
      "txt_values": "California",
      "txt_values": "Pennsylvania"
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

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

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

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

תוכן בקשת JSON עם בחירת היבט:

{
  "page_size": "2",
  "content_time_ranges": {
    "date_time_ranges": {
      "start": {
        "year":"2018",
        "month":"1",
        "day":"1",
      },
      "end": {
        "year":"2018",
        "month":"12",
        "day":"31",
      }
    },
    "date_time_ranges": {
      "start": {
        "year":"2020",
        "month":"1",
        "day":"1",
      },
      "end": {
        "year":"2020",
        "month":"12",
        "day":"31",
      }
    }
  },
  "criteria": {
    "field": "state",
    "text_array": {
      "txt_values": "California",
      "txt_values": "Pennsylvania"
    }
  },
  "facet_selections": {
    "facetId": "state",
    "displayName": "State",
    "buckets": {
        "value": {
         "stringValue": "California"
        }
    },
    "buckets": {
      "value": {
        "stringValue": "Pennsylvania"
      }
    },
    "bucketType": "FACET_BUCKET_TYPE_VALUE"
  },
  "facet_selections": {
    "facetId": "store-type",
    "displayName": "StoreType",
    "buckets": {
      "value": {
        "stringValue": "Sporting Goods"
      }
    },
    "buckets": {
      "value": {
        "stringValue": "Grocery"
      },
      "selected": "true"
    },
    "bucketType": "FACET_BUCKET_TYPE_VALUE"
  }
}

בגלל שההיבט Grocery נבחר, כל תשובה תכיל את ההערה "store-type":"Grocery".

החזרת מטא-נתונים של נכס קליפ כשמבצעים חיפוש

בנוסף, Gemini Enterprise Agent Platform Vision API מאפשר למשתמשים לציין מטא-נתונים נוספים של קליפים שיוחזרו עם תוצאת החיפוש, באמצעות result_annotation_keys.

REST

בדוגמה הזו, מפתח ההערה שסופק על ידי המשתמש "camera-location" מצוין בגוף הבקשה, והערך של המפתח ("Sunnyvale") מסופק בתגובה.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

גוף בקשת JSON:

{
   "page_size": "2",
   "criteria": {
     "field": "state",
     "text_array": {
       "txt_values": "California",
       "txt_values": "Pennsylvania"
     }
   },
   "result_annotation_keys": "camera-location"
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

שימוש בקריטריונים כדי להחזיר מטא-נתונים של נכסים בחיפוש

בקריטריונים של החיפוש אפשר לציין אם להחזיר את ההערות התואמות לכל פריט בתוצאות החיפוש. התכונה הזו נתמכת בסוגים מוגבלים של סכימות נתונים: INTEGER, FLOAT, BOOLEAN, STRING (רק EXACT_SEARCH), וההערה צריכה להיות ברמת המחיצה.

נניח שאתם יוצרים את סכימת הנתונים הבאה בקורפוס של מחסן נתונים:

{
  "key": "image-classification",
  "schema_details": {
    "type":"STRING",
    "granularity":"GRANULARITY_PARTITION_LEVEL",
    "search_strategy": {
      "search_strategy_type":"EXACT_SEARCH"
    }
  }
}

חלק מההערות ל-"image-classification" מוזנות אל מאגר המידע באמצעות הזנת סרטונים בסטרימינג או בקשת CreateAnnotation.

אחרי שההערות מוזנות, אפשר לחפש "image-classification" ולקבל תוצאות של סרטונים וההערות התואמות שלהם:

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

גוף בקשת JSON:

{
  "page_size": "5",
  "facet_selections": {
    "facet_id": "image-classification",
    "fetch_matched_annotations": "true",
    "bucket_type": "FACET_BUCKET_TYPE_VALUE",
      "buckets": {
        "value": {
          "string_value": "cat"
        },
        "selected" : "true"
      },
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

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

כדי להשתמש בתכונה הזו, צריך להגדיר את השדה search_query ב-SearchAssetsRequest:

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

גוף בקשת JSON:

{
    "page_size": "2",
    "search_query': "Pennsylvania"
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

החלת מפרט מיון כדי להזמין מטא-נתונים של נכסים שהוחזרו בחיפוש

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

כדי להשתמש בתכונה הזו, צריך לציין את schema_key_sorting_strategy, שדורש לפחות מפתח סכימת נתונים וסדר עולה או יורד:

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

גוף בקשת JSON:

{
    "page_size": "2",
    "schemaKeySortingStrategy":
    { "options": 
      { 
        "data_schema_key": "stream-display-name", 
        "sort_decreasing": true
      } 
    }

}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content

אמורים לקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.

יצירת הגדרות חיפוש

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

אפשר להשתמש ב-SearchConfig כדי להגדיר אפשרויות הגדרה מפורטות יותר.

בדוגמה הבאה אפשר לראות איך יוצרים משאב SearchConfig.

הנחיות כלליות

כדי שהבקשה תתבצע בהצלחה בכל התרחישים לדוגמה, היא צריכה לעמוד בתנאים הבאים:

  1. השם Request.search_configuration.name לא יכול להיות קיים כבר.
  2. המערך mapped_fields לא יכול להיות ריק, והוא צריך למפות למפתחות הערות קיימים שסופקו על ידי המשתמש.
  3. כל הערכים של mapped_fields צריכים להיות מאותו סוג.
  4. כל mapped_fields צריכים לשתף הגדרות תצורה של התאמה מדויקת או חכמה.
  5. כל mapped_fields צריכים להיות באותה רמת פירוט.

יש כמה תרחישי שימוש ליצירת SearchConfig, ולכל אחד מהם יש הנחיות שונות שצריך לפעול לפיהן.

יצירת הגדרות חיפוש עם קריטריונים מותאמים אישית

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

REST

צריך לציין את מזהה SearchConfig החדש בסוף כתובת ה-URL של הבקשה, ולא כשדה בבקשה.

בדוגמה הזו, מפתחות ההערות שצוינו על ידי המשתמש הם "player", "coach" ו-"cheerleader".

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person

גוף בקשת JSON:

{
   "search_criteria_property": {
     "mapped_fields": "player",
     "mapped_fields": "coach",
     "mapped_fields": "cheerleader",
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/person",
  "searchCriteriaProperty":
    {
      "mappedFields": [
        "player",
        "coach",
        "cheerleader"
      ]
    }
}

יצירת הגדרת חיפוש עם מיפוי היבטים של 1:1

כדי ליצור היבט למפתח הערה יחיד שניתן על ידי משתמש, צריך לוודא ש-Request.search_configuration.facet_property.mapped_fields מכיל רכיב יחיד. הערך של הרכיב הזה חייב להיות שם של מפתח הערה שניתן על ידי המשתמש.

בדוגמה הבאה אפשר לראות איך יוצרים מיפוי של היבטים למפתח ההערה שניתן על ידי המשתמש "Location".

REST

צריך לציין את מזהה SearchConfig החדש בסוף כתובת ה-URL של הבקשה, ולא כשדה בבקשה.

בדוגמה הזו, הבקשה מצליחה כי search_config_id (Location) בכתובת ה-URL של הבקשה מפנה למפתח הערה קיים שסופק על ידי המשתמש, ו mapped_fields מכיל בדיוק רכיב אחד עם ערך ששווה ל-search_config_id (Location).

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location

גוף בקשת JSON:

{
   "facet_property": {
     "mapped_fields": "Location",
     "display_name": "Location",
     "result_size": "5",
     "bucket_type":"FACET_BUCKET_TYPE_VALUE"
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location" | Select-Object -Expand Content
 

הבקשות הבאות נכשלות כי הן לא עומדות בדרישות הנדרשות.

בקשות שנכשלו

בקשה 1 נכשלה:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \
      -d "{
         "facet_property": {
           "mapped_fields": "City", /* City is not equal to search_config_id. */
           "display_name": "City",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

בקשה שנכשלה 2:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=City \
      -d "{
         "facet_property": {
           "mapped_fields": "City", /* City doesn't map to an existing user-given annotation key. */
           "display_name": "City",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

בקשה שנכשלה 3:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \
      -d "{
         "facet_property": {
           "mapped_fields": "Location",
           "mapped_fields": "City", /* mapped_fields contains more than 1 element. */
           "display_name": "Location",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

יצירת הגדרת חיפוש עם מיפוי פנים מותאם אישית של 1:1 או יותר

לקוחות שרוצים ליצור מיפוי בין ערך של היבט בהתאמה אישית לבין מפתח הערה אחד או יותר שסופק על ידי המשתמשים צריכים לוודא ש:

  1. התג Request.search_configuration חייב להכיל את התג SearchCriteriaProperty כך שהתג Request.search_configuration.search_criteria_property.mapped_fields יכיל את אותם רכיבים כמו התג Request.search_configuration.facet_property.mapped_fields.

REST

צריך לציין את מזהה SearchConfig החדש בסוף כתובת ה-URL של הבקשה, ולא כשדה בבקשה.

בדוגמה הבאה אפשר לראות איך ליצור מיפוי של היבטים למפתחות ההערות שמשתמשים סיפקו "City" ו-"State".

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location

גוף בקשת JSON:

{
  "search_criteria_property": {
     "mapped_fields": "City",
     "mapped_fields": "State",
     "mapped_fields": "Province",
  }
  "facet_property": {
     "mapped_fields": "City",
     "mapped_fields": "State",
     "display_name": "Province",
     "result_size": "5",
     "bucket_type":"FACET_BUCKET_TYPE_VALUE"
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location" | Select-Object -Expand Content
 

הבקשות הבאות נכשלות כי הן לא עומדות בדרישות הנדרשות.

בקשות שנכשלו

בקשה 1 נכשלה:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \
      -d "{
        "facet_property": { /* Request is missing a SearchCriteriaProperty object.*/
           "mapped_fields": "City",
           "mapped_fields": "State",
           "display_name": "Location",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

בקשה שנכשלה 2:

      curl -X POST \
      -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
      -H "Content-Type: application/json; charset=utf-8" \
      https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \
      -d "{
        "search_criteria_property": {
           "mapped_fields": "City",
           "mapped_fields": "State",
        }
        "facet_property": {
           "mapped_fields": "City",
           "mapped_fields": "State",
           "mapped_fields": "Province", /* Province is missing from search_criteria_property. */
           "display_name": "Location",
           "result_size": "5",
           "bucket_type":"FACET_BUCKET_TYPE_VALUE"
        }
      }"
    

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

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

היבטים של טווח זמינים עבור:

  1. מספרים שלמים
  2. תאריכים

יש שלושה סוגים של היבטים של טווח:

  1. טווח קבוע – כל משבצת היא באותו גודל.
  2. טווח מותאם אישית – גדלים של משבצות שניתנים לתכנות. לדוגמה, לוגריתמי.
  3. טווח תאריכים – רמות פירוט קבועות של קטגוריות: DAY, MONTH ו-YEAR. ההגדרה הזו חלה רק על היבטים של טווח תאריכים.

אותם תנאים חלים על פילטרים יחידים, עם כמה כללי אימות נוספים לגבי הגדרת הטווח.

מפרט של קטגוריה עם טווח קבוע

בדוגמה הבאה נוצרת הגדרת פן של טווח קבוע לשדה inventory-count, והתוצאה היא הקטגוריות הבאות: [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf].

REST

צריך לציין את מזהה SearchConfig החדש בסוף כתובת ה-URL של הבקשה, ולא כשדה בבקשה.

הבקשה הזו משתמשת בפרמטר FixedRangeBucketSpec כדי ליצור כמה קטגוריות עם רמות פירוט שוות.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count

גוף בקשת JSON:

{
  "facet_property": {
    "mapped_fields": "inventory-count",
    "display_name": "Inventory Count",
    "result_size": "5",
    "bucket_type":"FACET_BUCKET_TYPE_FIXED_RANGE",
    "fixed_range_bucket_spec": {
       "bucket_start": {
         "integer_value": 0
       },
       "bucket_granularity": {
         "integer_value": 10
       },
       "bucket_count": 5
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count" | Select-Object -Expand Content
 

מפרט של משבצת לטווח בהתאמה אישית

בדוגמה הבאה נוצרת הגדרת פן של טווח קבוע לשדה video-views, והתוצאה היא הקטגוריות הבאות: [inf, 0), [0, 10), [10, 100), [100, 1000), [1000, 10000), [10000, inf).

REST

צריך לציין את מזהה SearchConfig החדש בסוף כתובת ה-URL של הבקשה, ולא כשדה בבקשה.

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views

גוף בקשת JSON:

{
  "facet_property": {
    "mapped_fields": "video-views",
    "display_name": "Video Views",
    "result_size": "6",
    "bucket_type":"FACET_BUCKET_TYPE_CUSTOM_RANGE",
    "custom_range_bucket_spec": {
       "endpoints": {
         "integer_value": 0
       },
       "endpoints": {
         "integer_value": 10
       },
       "endpoints": {
         "integer_value": 100
       },
       "endpoints": {
         "integer_value": 1000
       },
       "endpoints": {
         "integer_value": 10000
       }
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views" | Select-Object -Expand Content
 

הגדרה של קטגוריה לפי טווח תאריכים ושעות

בדוגמה הבאה נוצרת הגדרה של טווח תאריכים לשדה film-date עם רמת פירוט של DAY.

REST

צריך לציין את מזהה SearchConfig החדש בסוף כתובת ה-URL של הבקשה, ולא כשדה בבקשה.

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date

גוף בקשת JSON:

{
  "facet_property": {
    "mapped_fields": "film-date",
    "display_name": "Film Date",
    "result_size": "5",
    "bucket_type": "FACET_BUCKET_TYPE_DATETIME",
    "datetime_bucket_spec": {
       "granularity": "DAY"
    }
 }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date" | Select-Object -Expand Content
 

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

REST

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

גוף בקשת JSON:

{
   "page_size": "10",
   "facet_selections": {
     "facet_id": "inventory-count",
     "buckets": {
       "range": {
         "end" : {
           "integer_value": 0
         }
       }
     },
     "buckets": {
       "range": {
         "start" : {
           "integer_value": 20
         },
         "end" : {
           "integer_value": 30
         }
       }
     }
   },
   "facet_selections": {
     "facet_id": "video-views",
     "buckets": {
       "range": {
         "start" : {
           "integer_value": 100
         },
         "end" : {
           "integer_value": 1000
         }
       }
     }
   },
   "facet_selections": {
     "facet_id": "film-date",
     "buckets": {
       "range": {
         "start" : {
           "datetime_value": {
             "year": 2022,
             "month": 9,
             "day": 10
           }
         },
         "end" : {
           "datetime_value": {
             "year": 2022,
             "month": 9,
             "day": 11
           }
         }
       }
     }
   }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
 

עדכון של הגדרת חיפוש

כדי לעדכן את SearchConfig הנוכחי, הבקשה צריכה לעמוד בדרישות הבאות:

  1. Request.searchConfig.name חייב להיות קיים.
  2. הבקשה חייבת להכיל לפחות searchCriteriaProperty או facetProperty אחד לא ריק.
  3. המערך mappedFields לא יכול להיות ריק, והוא צריך למפות למפתחות קיימים של הערות שסופקו על ידי המשתמש.
  4. כל הערכים של mappedFields צריכים להיות מאותו סוג.
  5. כל mappedFields צריכים להיות באותה רמת פירוט.
  6. כל התנאים mappedFields צריכים להיות עם אותן אפשרויות התאמה סמנטית SearchConfig.

‏REST ושורת הפקודה

בדוגמת הקוד הבאה אפשר לראות איך מעדכנים משאב של הגדרת חיפוש במחסן באמצעות השיטה projects.locations.corpora.searchConfigs.patch.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID

גוף בקשת JSON:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1",
  "searchCriteriaProperty": {
    "mappedFields": "dataschema2"
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1",
  "searchCriteriaProperty": {
    "mappedFields": [
      "dataschema2"
    ]
  }
}