مخطط 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 حقل كحد أقصى لكل عنصر (بما في ذلك الحقول المضمّنة).