مخطط Google Cloud Search هو بنية JSON تحدّد الكائنات والخصائص والخيارات لفهرسة البيانات والبحث عنها. يستخدم موصّل المحتوى المخطط المسجّل لتنظيم بيانات المستودع وفهرستها.
يمكنك إنشاء مخطط من خلال تقديم عنصر مخطط JSON إلى واجهة برمجة التطبيقات. يجب تسجيل مخطط لكل مستودع قبل فهرسة البيانات.
يتناول هذا المستند أساسيات إنشاء المخططات. لتحسين تجربة البحث، اطّلِع على مقالة تحسين جودة البحث.
إنشاء مخطط
اتّبِع الخطوات التالية لإنشاء مخطط Cloud Search:
- تحديد سلوك المستخدم المتوقّع
- تهيئة مصدر بيانات
- تحديد العناصر
- تحديد خصائص الكائن
- تسجيل المخطط
- فهرسة بياناتك
- اختبار المخطّط
- تحسين المخطط
تحديد سلوك المستخدم المتوقّع
يساعد توقّع طريقة بحث المستخدمين في تحديد استراتيجية المخطط. في قاعدة بيانات أفلام، قد يبحث المستخدمون عن "أفلام من بطولة روبرت ريدفورد". يجب أن يتيح المخطط الخاص بك إجراء طلبات بحث عن أفلام يشارك فيها ممثل معيّن.
لمواءمة المخطط مع سلوك المستخدمين، اتّبِع الخطوات التالية:
- تقييم طلبات بحث متنوعة من مستخدمين مختلفين
- تحديد مجموعات البيانات المنطقية أو العناصر، مثل "فيلم"
- تحديد السمات (الخصائص) مثل العنوان أو تاريخ الإصدار
- تحديد قيم صالحة للسمات، مثل "سارقو التابوت الضائع"
- تحديد احتياجات الترتيب والتصنيف، مثل الترتيب الزمني أو تقييمات الجمهور
- تحديد خصائص السياق، مثل الدور الوظيفي، لتحسين اقتراحات الإكمال التلقائي
- أدرِج هذه العناصر والسمات وقيم الأمثلة. استخدِم هذه القائمة من أجل تحديد خيارات عامل التشغيل.
تهيئة مصدر البيانات
يمثّل مصدر البيانات بيانات المستودع المفهرسة والمخزّنة في Google Cloud. اطّلِع على إدارة مصادر بيانات الجهات الخارجية. عندما ينقر المستخدم على نتيجة، توجّهه Cloud Search إلى العنصر باستخدام عنوان URL من طلب الفهرسة.
تحديد العناصر
الكائن هو الوحدة الأساسية للمخطط. تُعد البُنى المنطقية، مثل "فيلم" أو "شخص"، عناصر. يحتوي كل عنصر على خصائص مثل العنوان أو المدة أو الاسم.
المخطط هو قائمة بتعريفات العناصر في العلامة objectDefinitions.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
استخدِم أسماء فريدة لكل عنصر، مثل movie. تستخدم خدمة المخطط هذه الأسماء كمفاتيح. راجِع
ObjectDefinition.
تحديد خصائص الكائن
حدِّد السمات، مثل العنوان وتاريخ الإصدار، في القسم propertyDefinitions. استخدِم
options
لـ
freshnessOptions
(الترتيب) و
displayOptions
(تصنيفات واجهة المستخدم).
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
يتضمّن PropertyDefinition ما يلي:
- سلسلة
name - خيارات غير مرتبطة بنوع معيّن (مثل
isReturnable) - نوع وخيارات خاصة بالنوع (مثل
textPropertyOptions) operatorOptionsلعوامل تشغيل البحث-
displayOptionsلتصنيفات واجهة المستخدم
يمكنك إعادة استخدام أسماء السمات في عناصر مختلفة. على سبيل المثال، يمكن أن تظهر القيمة movieTitle
في فيلموغرافيا كلّ من الكائن movie والكائن person.
إضافة خيارات مستقلة عن النوع
يتضمّن PropertyDefinition خيارات منطقية لضبط وظيفة البحث في موقع إلكتروني، بغض النظر عن نوعه. تكون هذه الخيارات مضبوطة تلقائيًا على false ويجب ضبطها على true لاستخدامها.
isReturnable: اضبط القيمة علىtrueإذا كان من المفترض عرض بيانات الموقع في نتائج البحث باستخدام Query API. يمكن استخدام الخصائص غير القابلة للإرجاع في البحث أو الترتيب بدون أن تظهر في النتائج.isRepeatable: اضبط القيمة علىtrueإذا كان بإمكان السمة أن تتضمّن قيمًا متعدّدة. على سبيل المثال، يكون للفيلم تاريخ إصدار واحد ولكن يشارك فيه عدة ممثلين.isSortable: اضبط القيمة علىtrueإذا كان يمكن استخدام السمة للترتيب. لا يمكن أن تكون القيمةtrueإذا كانت قيمةisRepeatableهيtrueأو إذا كانت السمة داخل عنصر فرعي قابل للتكرار.isFacetable: اضبط القيمة علىtrueإذا كان يمكن استخدام الموقع لإنشاء فلاتر (سمات تُستخدَم لتحسين نتائج البحث).- يجب أن تكون قيمة
isReturnableهيtrue. - لا تتوفّر إلا لخصائص التعداد والقيم المنطقية والنصية.
- يجب أن تكون قيمة
isWildcardSearchable: اضبط القيمة علىtrueللسماح للمستخدمين بإجراء عمليات بحث باستخدام أحرف بدل في هذه السمة. لا يتوفّر هذا الخيار إلا في خصائص النصوص، ويعتمد سلوكه على إعدادexactMatchWithOperator:- إذا كانت قيمة
exactMatchWithOperatorهيtrue: يتم التعامل مع القيمة النصية كرمز مميز واحد. يتطابق طلب البحث مثلscience-*مع القيمةscience-fiction. - إذا كانت قيمة
exactMatchWithOperatorهيfalse: يتم تقسيم القيمة النصية إلى رموز مميزة. يتطابق طلب البحث مثلsci*أوfi*معscience-fiction، ولكن لا يتطابق معscience-*.
- إذا كانت قيمة
تحديد النوع
اضبط نوع البيانات من خلال تحديد عنصر خيارات السمة المناسب (مثل textPropertyOptions). استخدِم القيم الثابتة (enumPropertyOptions) إذا كنت تعرف جميع القيم المحتملة. يمكن أن يحتوي الموقع على نوع بيانات واحد فقط.
تحديد خيارات عامل التشغيل
operatorOptions وصف طريقة عمل إحدى الخصائص كعامل بحث
يجب أن يتضمّن كل operatorOptions operatorName (مثلاً، title)، وهو المعلمة التي يكتبها المستخدمون في طلبات البحث (مثلاً، title:titanic). استخدِم أسماء بديهية واعرضها للمستخدمين.
يمكنك مشاركة operatorName بين مواقع من النوع نفسه. تستردّ طلبات البحث التي تستخدم هذا الاسم نتائج من جميع المواقع المطابقة.
يمكن أن تتضمّن السمات القابلة للفرز lessThanOperatorName وgreaterThanOperatorName لطلبات البحث الخاصة بالمقارنة. يمكن أن تستخدم سمات النص exactMatchWithOperator للتعامل مع القيمة بأكملها كرمز مميز واحد.
إضافة خيارات العرض
يحتوي القسم الاختياري displayOptions على displayLabel. هذا التصنيف سهل الاستخدام ويظهر في نتائج البحث.
إضافة عوامل تشغيل لفلترة الاقتراحات
استخدِم suggestionFilteringOperators[] لتحديد سمة تعمل على فلترة اقتراحات الإكمال التلقائي (مثل فلترة اقتراحات الأفلام حسب النوع المفضّل لدى المستخدم). يمكنك تحديد فلتر اقتراحات واحد فقط.
تسجيل المخطط
سجِّل المخطط مع خدمة المخطط باستخدام معرّف مصدر البيانات. أرسِل طلب UpdateSchema:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
استخدِم validateOnly: true لاختبار المخطط بدون تسجيله.
فهرسة بياناتك
بعد التسجيل، املأ مصدر البيانات باستخدام طلبات الفهرس، وعادةً ما يتم ذلك باستخدام أداة ربط.
مثال على طلب الفهرسة:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
اختبار المخطط
اختبِر باستخدام مستودع صغير قبل الإنتاج. أنشئ قائمة التحكّم بالوصول (ACL) التي تحصر النتائج على مستخدم تجريبي.
- طلب بحث عام: ابحث عن سلسلة (مثل "تيتانيك") للاطّلاع على كل العناصر المطابقة.
- طلب البحث باستخدام عامل تشغيل: استخدِم عامل تشغيل (مثل
actor:Zane) للحدّ من النتائج.
تحسين المخطط
تتبُّع ملاحظات المستخدمين وتعديل المخطط يمكنك فهرسة حقول جديدة أو إعادة تسمية عوامل التشغيل لتصبح أكثر سهولة.
إعادة الفهرسة بعد تغيير المخطط
لست بحاجة إلى إعادة الفهرسة لإجراء تغييرات على ما يلي:
- أسماء عوامل التشغيل
- الحدود الرقمية
- الترتيب حسب الأهمية
- خيارات العرض أو الترتيب حسب الأحدث
يجب إعادة الفهرسة في الحالات التالية:
- إضافة أو إزالة مواقع أو عناصر
- تغيير
isReturnableأوisFacetableأوisSortableإلىtrue - وضع علامة
isSuggestableعلى مكان مخصّص للاستئجار
التغييرات غير المسموح بها في العقارات
لا يُسمح بإجراء تغييرات تؤدي إلى تعطيل الفهرس أو عرض نتائج غير متسقة، بما في ذلك:
- نوع بيانات الموقع أو اسمه
- إعدادات
exactMatchWithOperatorأوretrievalImportance
إجراء تغيير معقّد على المخطط
لإجراء تغيير غير مسموح به، عليك نقل السمات من تعريف قديم إلى تعريف جديد باتّباع الخطوات التالية:
- أضِف سمة جديدة باسم مختلف إلى المخطط.
- سجِّل المخطط بكل من السمات الجديدة والقديمة.
- املأ الفهرس بالبيانات السابقة باستخدام السمة الجديدة فقط.
- احذف الموقع القديم من المخطط.
- عدِّل رمز طلب البحث لاستخدام اسم الموقع الجديد.
تسجّل Cloud Search العناصر المحذوفة لمدة 30 يومًا لمنع حدوث مشاكل في إعادة الاستخدام.
القيود المفروضة على الحجم
- يمكنك إضافة 10 عناصر كحدّ أقصى في المستوى الأعلى.
- الحدّ الأقصى للعمق هو 10 مستويات.
- يمكن إضافة 1,000 حقل كحد أقصى لكل عنصر (بما في ذلك الحقول المتداخلة).