مخطط Google Cloud Search هو بنية JSON تحدّد الكائنات والسمات والخيارات التي سيتم استخدامها في فهرسة بياناتك والبحث فيها. يقرأ موصّل المحتوى البيانات من المستودع، ويستند إلى المخطط المسجّل لتنظيم البيانات وفهرستها.
يمكنك إنشاء مخطط من خلال تقديم عنصر مخطط JSON إلى واجهة برمجة التطبيقات ثم تسجيله. يجب تسجيل عنصر مخطط لكل مستودع من مستودعاتك قبل أن تتمكّن من فهرسة بياناتك.
يتناول هذا المستند أساسيات إنشاء المخططات. للحصول على معلومات حول كيفية تحسين المخطط من أجل تحسين تجربة البحث، يمكنك الاطّلاع على تحسين جودة البحث.
إنشاء مخطط
في ما يلي قائمة بالخطوات المستخدَمة لإنشاء مخطط Cloud Search:
- تحديد سلوك المستخدم المتوقّع
- تهيئة مصدر بيانات
- إنشاء مخطط
- نموذج مخطط كامل
- تسجيل المخطّط
- فهرسة بياناتك
- اختبار المخطّط
- تحسين المخطط
تحديد سلوك المستخدم المتوقّع
يساعد توقّع أنواع طلبات البحث التي يجريها المستخدمون في توجيه استراتيجيتك لإنشاء المخطط.
على سبيل المثال، عند تنفيذ طلبات بحث في قاعدة بيانات أفلام، قد تتوقّع أن يطلب المستخدم "عرض جميع الأفلام من بطولة روبرت ريدفورد". لذلك، يجب أن يتيح المخطط إمكانية عرض نتائج طلبات البحث استنادًا إلى "جميع الأفلام التي يشارك فيها ممثل معيّن".
لتحديد المخطط الخاص بك بما يعكس أنماط سلوك المستخدم، ننصحك بتنفيذ المهام التالية:
- تقييم مجموعة متنوعة من طلبات البحث المطلوبة من مستخدمين مختلفين
- تحديد العناصر التي يمكن استخدامها في طلبات البحث العناصر هي مجموعات منطقية من البيانات ذات الصلة، مثل فيلم في قاعدة بيانات أفلام.
- تحديد الخصائص والقيم التي يتكوّن منها العنصر والتي يمكن استخدامها في طلبات البحث السمات هي السمات القابلة للفهرسة الخاصة بالكائن، ويمكن أن تتضمّن قيمًا أساسية أو كائنات أخرى. على سبيل المثال، قد يحتوي عنصر فيلم على خصائص مثل عنوان الفيلم وتاريخ إصداره كقيم أولية. قد يحتوي كائن الفيلم أيضًا على كائنات أخرى، مثل أعضاء فريق التمثيل، الذين لديهم سمات خاصة بهم، مثل الاسم أو الدور.
- تحديد أمثلة على القيم الصالحة للسمات القيم هي البيانات الفعلية التي تم فهرستها لسمة معيّنة. على سبيل المثال، قد يكون عنوان أحد الأفلام في قاعدة البيانات هو "Raiders of the Lost Ark".
- حدِّد خيارات الترتيب والتصنيف التي يريدها المستخدمون. على سبيل المثال، عند البحث عن أفلام، قد يريد المستخدمون ترتيبها زمنيًا وتصنيفها حسب تقييم الجمهور، ولا يحتاجون إلى ترتيبها أبجديًا حسب العنوان.
- (اختياري) حدِّد ما إذا كانت إحدى السمات تمثّل سياقًا أكثر تحديدًا يمكن تنفيذ عمليات البحث فيه، مثل الدور الوظيفي للمستخدمين أو القسم، حتى يمكن تقديم اقتراحات الإكمال التلقائي استنادًا إلى السياق. على سبيل المثال، إذا كان المستخدمون يبحثون في قاعدة بيانات للأفلام، قد يهتمون فقط بنوع معيّن من الأفلام. سيحدّد المستخدمون نوع المحتوى الذي يريدون أن تعرضه عمليات البحث، ربما كجزء من ملف المستخدم. بعد ذلك، عندما يبدأ المستخدم بكتابة طلب بحث عن أفلام، لن يتم اقتراح سوى الأفلام التي تنتمي إلى النوع المفضّل لديه، مثل "أفلام الحركة"، وذلك كجزء من اقتراحات الإكمال التلقائي.
- أنشئ قائمة بهذه العناصر والسمات وقيم الأمثلة التي يمكن استخدامها في عمليات البحث. (لمعرفة تفاصيل حول كيفية استخدام هذه القائمة، يُرجى الاطّلاع على قسم تحديد خيارات المشغّل).
تهيئة مصدر البيانات
يمثّل مصدر البيانات البيانات من مستودع تمت فهرستها وتخزينها في Google Cloud. للحصول على تعليمات حول بدء مصدر بيانات، راجِع مقالة إدارة مصادر بيانات الجهات الخارجية.
يتم عرض نتائج بحث المستخدم من مصدر البيانات. عندما ينقر المستخدم على نتيجة بحث، يوجّهه Cloud Search إلى العنصر الفعلي باستخدام عنوان URL المقدَّم في طلب الفهرسة.
تحديد العناصر
الوحدة الأساسية للبيانات في المخطط هي العنصر، ويُطلق عليه أيضًا اسم "عنصر المخطط"، وهو عبارة عن بنية منطقية للبيانات. في قاعدة بيانات للأفلام، يكون أحد البُنى المنطقية للبيانات هو "فيلم". قد يكون عنصر آخر هو "شخص" لتمثيل الممثلين وطاقم العمل المشاركين في الفيلم.
يحتوي كل عنصر في المخطط على سلسلة من الخصائص أو السمات التي تصف العنصر، مثل العنوان والمدة الخاصة بفيلم، أو الاسم وتاريخ الميلاد الخاصين بشخص. يمكن أن تتضمّن سمات الكائن قيمًا أساسية أو كائنات أخرى.
تعرض الشكل 1 عناصر الفيلم والشخص والسمات المرتبطة بها.
مخطط Cloud Search هو في الأساس قائمة بعبارات تعريف الكائنات المحدّدة ضمن العلامة objectDefinitions. تعرض مقتطفات المخطط التالية عبارات objectDefinitions الخاصة بكائنَي المخطط الخاصين بالفيلم والشخص.
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
عند تحديد عنصر مخطط، عليك تقديم name للعنصر يجب أن يكون فريدًا بين جميع العناصر الأخرى في المخطط. عادةً ما تستخدم name
قيمة تصف العنصر، مثل movie لعنصر فيلم. تستخدم خدمة المخطط حقل name كمعرّف رئيسي للكائنات القابلة للفهرسة. للحصول على مزيد من المعلومات حول الحقل name، يُرجى الرجوع إلى تعريف العنصر.
تحديد خصائص الكائن
كما هو محدّد في مرجع
ObjectDefinition،
يتبع اسم العنصر مجموعة من
options،
وقائمة
propertyDefinitions.
يمكن أن يتألف
options
أيضًا من
freshnessOptions
و
displayOptions.
يتم استخدام
freshnessOptions
لتعديل ترتيب البحث استنادًا إلى مدى حداثة المنتج. تُستخدَم
displayOptions
لتحديد ما إذا كان سيتم عرض تصنيفات وخصائص معيّنة في
نتائج البحث الخاصة بكائن معيّن.
في القسم
propertyDefinitions
يمكنك تحديد خصائص عنصر، مثل عنوان الفيلم وتاريخ إصداره.
تعرض المقتطفة التالية عنصر movie مع سمتَين: movieTitle وreleaseDate.
{
"objectDefinitions": [
{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": 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"
}
},
"displayOptions": {
"displayLabel": "Release date"
}
...
]
}
]
}
يتألف PropertyDefinition من العناصر التالية:
- سلسلة
name - قائمة بالخيارات غير المرتبطة بنوع معيّن، مثل
isReturnableفي المقتطف السابق - نوع وخياراته المرتبطة به،
مثل
textPropertyOptionsوretrievalImportanceفي المقتطف السابق - تمثّل
operatorOptionsوصفًا لطريقة استخدام السمة كعامل تشغيل بحث. - عنصر واحد أو أكثر من
displayOptions، مثلdisplayLabelفي المقتطف السابق
يجب أن يكون name الخاص بالسمة فريدًا ضمن العنصر الحاوي، ولكن يمكن استخدام الاسم نفسه في عناصر أخرى وعناصر فرعية.
في الشكل 1، تم تحديد عنوان الفيلم وتاريخ إصداره مرتين:
مرة في العنصر movie ومرة أخرى في العنصر الفرعي filmography ضمن العنصر person. يعيد هذا المخطط استخدام الحقل movieTitle
ليتمكّن من توفير نوعَين من سلوكيات البحث:
- عرض نتائج الأفلام عندما يبحث المستخدمون عن عنوان فيلم
- عرض نتائج تتضمّن أشخاصًا عندما يبحث المستخدمون عن عنوان فيلم شارك فيه ممثل
وبالمثل، يعيد المخطط استخدام الحقل releaseDate لأنّ له المعنى نفسه بالنسبة إلى الحقلَين movieTitle.
عند تطوير المخطط الخاص بك، ضع في اعتبارك كيف يمكن أن يتضمّن المستودع حقولاً ذات صلة تحتوي على بيانات تريد تعريفها أكثر من مرة في المخطط.
إضافة خيارات مستقلة عن النوع
تعرض PropertyDefinition خيارات وظائف البحث العامة الشائعة في جميع المواقع الإلكترونية بغض النظر عن نوع البيانات.
isReturnable: تشير إلى ما إذا كان الموقع يعرّف البيانات التي يجب عرضها في نتائج البحث من خلال واجهة Query API. يمكن إرجاع جميع سمات الأفلام الواردة في المثال. يمكن استخدام السمات غير القابلة للعرض في البحث أو ترتيب النتائج بدون عرضها للمستخدم.isRepeatable: تشير إلى ما إذا كان يُسمح بقيم متعددة للسمة. على سبيل المثال، لا يمكن أن يكون للفيلم سوى تاريخ إصدار واحد، ولكن يمكن أن يضمّ عدة ممثلين.isSortable: تشير إلى أنّه يمكن استخدام السمة للترتيب. لا يمكن أن ينطبق ذلك على السمات التي يمكن تكرارها. على سبيل المثال، يمكن ترتيب نتائج الأفلام حسب تاريخ الإصدار أو تقييم الجمهور.isFacetable: تشير إلى أنّه يمكن استخدام السمة لإنشاء فلاتر. يتم استخدام الواجهة لتحسين نتائج البحث، حيث يرى المستخدم النتائج الأولية ثم يضيف معايير أو واجهات لتحسين تلك النتائج بشكل أكبر. لا يمكن أن تكون قيمة هذا الخيار صحيحة للسمات التي يكون نوعها كائنًا، ويجب أن تكون قيمةisReturnableصحيحة لضبط هذا الخيار. أخيرًا، لا يتوفّر هذا الخيار إلا للخصائص من النوع enum وboolean وtext. على سبيل المثال، في نموذج المخطط الخاص بنا، يمكننا جعلgenreوactorNameوuserRatingوmpaaRatingقابلة للتصنيف من أجل السماح باستخدامها في تحسين نتائج البحث بشكل تفاعلي.- تشير
isWildcardSearchableإلى أنّه يمكن للمستخدمين إجراء بحث باستخدام أحرف بدل لهذه السمة. لا يتوفّر هذا الخيار إلا في المواقع النصية. تعتمد طريقة عمل البحث باستخدام أحرف البدل في حقل النص على القيمة التي تم ضبطها في الحقل exactMatchWithOperator. إذا تم ضبطexactMatchWithOperatorعلىtrue، يتم تقسيم القيمة النصية إلى رموز باعتبارها قيمة ذرية واحدة ويتم إجراء بحث باستخدام أحرف البدل في مقابلها. على سبيل المثال، إذا كانت قيمة النص هيscience-fiction، سيتطابق معها طلب بحث باستخدام حرف بدلscience-*. إذا تم ضبطexactMatchWithOperatorعلىfalse، يتم تقسيم قيمة النص إلى رموز مميزة ويتم إجراء بحث باستخدام أحرف البدل لكل رمز مميز. على سبيل المثال، إذا كانت قيمة النص هي "خيال علمي"، ستتطابق طلبات البحث التي تتضمّن أحرف بدلsci*أوfi*مع العنصر، ولكن لن تتطابق طلبات البحث التي تتضمّنscience-*معه.
جميع مَعلمات وظيفة البحث العامة هذه هي قيم منطقية، وقيمتها التلقائية هي false، ويجب ضبطها على true لاستخدامها.
يعرض الجدول التالي المَعلمات المنطقية التي تم ضبطها على true
لجميع سمات الكائن movie:
| الموقع | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
|---|---|---|---|---|---|
movieTitle |
صحيح | صحيح | |||
releaseDate |
صحيح | صحيح | |||
genre |
صحيح | صحيح | صحيح | ||
duration |
صحيح | ||||
actorName |
صحيح | صحيح | صحيح | صحيح | |
userRating |
صحيح | صحيح | |||
mpaaRating |
صحيح | صحيح |
تم ضبط قيمة isRepeatable لكل من genre وactorName على true
لأنّ الفيلم قد ينتمي إلى أكثر من نوع واحد ويتضمّن عادةً
أكثر من ممثل واحد. لا يمكن ترتيب سمة إذا كانت قابلة للتكرار أو مضمّنة في كائن فرعي قابل للتكرار.
تحديد النوع
يسرد قسم المرجع PropertyDefinition عدة قيم xxPropertyOptions حيث يكون xx نوعًا محددًا، مثل boolean. لضبط نوع بيانات السمة، يجب تحديد عنصر نوع البيانات المناسب. يؤدي تحديد عنصر نوع بيانات لسمة ما إلى تحديد نوع بيانات هذه السمة. على سبيل المثال، يشير تحديد
textPropertyOptions للسمة movieTitle إلى أنّ عنوان الفيلم
هو من النوع نص. تعرض المقتطفة التالية السمة movieTitle مع textPropertyOptions التي تحدد نوع البيانات.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
يمكن أن يتضمّن الموقع نوع بيانات واحدًا مرتبطًا به فقط. على سبيل المثال، في مخطط الأفلام، يمكن أن تكون قيمة releaseDate تاريخًا فقط (مثل 2016-01-13) أو سلسلة
(مثلاً، January 13, 2016)، ولكن ليس كليهما.
في ما يلي عناصر نوع البيانات المستخدَمة لتحديد أنواع البيانات الخاصة بالسمات في نموذج مخطط الفيلم:
| الموقع | كائن نوع البيانات |
|---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
يعتمد نوع البيانات الذي تختاره للسمة على حالات الاستخدام المتوقّعة.
في السيناريو المفترض لمخطط الفيلم هذا، من المتوقّع أن يريد المستخدمون ترتيب النتائج حسب التسلسل الزمني، لذا فإنّ releaseDate هو عنصر تاريخ.
على سبيل المثال، إذا كانت هناك حالة استخدام متوقّعة لمقارنة إصدارات كانون الأول (ديسمبر) على مدار السنوات بإصدارات كانون الثاني (يناير)، قد يكون تنسيق السلسلة مفيدًا.
ضبط الخيارات الخاصة بنوع الملف
يرتبط قسم المرجع PropertyDefinition بخيارات لكل نوع. معظم الخيارات الخاصة بنوع البيانات اختيارية، باستثناء قائمة possibleValues في enumPropertyOptions. بالإضافة إلى ذلك، يتيح لك الخيار orderedRanking ترتيب القيم بالنسبة إلى بعضها البعض. تعرض المقتطفة التالية السمة movieTitle مع textPropertyOptions التي تحدّد نوع البيانات، ومع الخيار retrievalImportance الخاص بالنوع.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
...
},
...
}
في ما يلي الخيارات الإضافية الخاصة بأنواع محدّدة والمستخدَمة في نموذج المخطط:
| الموقع | النوع | خيارات خاصة بنوع الحساب |
|---|---|---|
movieTitle |
textPropertyOptions |
retrievalImportance |
releaseDate |
datePropertyOptions |
|
genre |
enumPropertyOptions |
|
duration |
textPropertyOptions |
|
actorName |
textPropertyOptions |
|
userRating |
integerPropertyOptions |
orderedRanking، maximumValue |
mpaaRating |
textPropertyOptions |
تحديد خيارات عامل التشغيل
بالإضافة إلى الخيارات الخاصة بنوع معيّن، يتضمّن كل نوع مجموعة من الخيارات الاختيارية
operatorOptions تصف هذه الخيارات كيفية استخدام السمة كعامل بحث. تعرض المقتطفة التالية السمة movieTitle مع ضبط نوع البيانات باستخدام textPropertyOptions، ومع خيارات retrievalImportance وoperatorOptions الخاصة بالنوع.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
...
}
كل operatorOptions له operatorName، مثل title لـ movieTitle. اسم عامل التشغيل هو عامل تشغيل البحث الخاص بالسمة. عامل تشغيل البحث هو المَعلمة الفعلية التي تتوقّع أن يستخدمها المستخدمون عند تضييق نطاق البحث. على سبيل المثال، للبحث عن أفلام استنادًا إلى عناوينها، يكتب المستخدم title:movieName، حيث movieName هو اسم فيلم.
ليس من الضروري أن تتطابق أسماء المشغّلين مع اسم المكان المخصّص للاستئجار. بدلاً من ذلك، عليك استخدام أسماء عوامل تشغيل تعكس الكلمات الأكثر شيوعًا التي يستخدمها المستخدمون في مؤسستك. على سبيل المثال، إذا كان المستخدمون يفضّلون استخدام المصطلح "الاسم" بدلاً من "العنوان" للإشارة إلى عنوان فيلم، يجب ضبط اسم المشغّل على "الاسم".
يمكنك استخدام اسم عامل التشغيل نفسه لعدة سمات طالما أنّ جميع السمات تؤدي إلى النوع نفسه. عند استخدام اسم عامل تشغيل مشترك أثناء إجراء طلب بحث، يتم استرداد جميع المواقع التي تستخدم اسم عامل التشغيل هذا. على سبيل المثال،
لنفترض أنّ عنصر الفيلم يتضمّن السمتَين plotSummary وplotSynopsis،
وأنّ كل سمة من هاتين السمتَين تتضمّن operatorName بقيمة plot. وطالما أنّ كلتا السمتَين عبارة عن نص (textPropertyOptions)، يمكن استردادهما معًا من خلال طلب بحث واحد باستخدام عامل تشغيل البحث plot.
بالإضافة إلى operatorName، يمكن أن تتضمّن السمات القابلة للترتيب الحقلين lessThanOperatorName وgreaterThanOperatorName في operatorOptions.
يمكن للمستخدمين استخدام هذه الخيارات لإنشاء طلبات بحث استنادًا إلى مقارنات بقيمة تم إدخالها.
أخيرًا، يحتوي textOperatorOptions على حقل exactMatchWithOperator في operatorOptions. إذا ضبطت exactMatchWithOperator على true، يجب أن تتطابق سلسلة طلب البحث مع قيمة السمة بأكملها، وليس أن تكون موجودة ضمن النص فقط.
سيتم التعامل مع القيمة النصية كقيمة ذرية واحدة في عمليات البحث باستخدام عوامل التشغيل وفي عمليات مطابقة الأوجه.
على سبيل المثال، ننصح بفهرسة عناصر Book أو Movie باستخدام سمات النوع.
يمكن أن تشمل الأنواع "خيال علمي" و"علوم" و "أدب خيالي". عند ضبط
exactMatchWithOperator على false أو عدم إدخال قيمة،
سيؤدي البحث عن نوع أو
اختيار الفئة "علمي" أو "خيالي" إلى عرض نتائج تتضمّن "خيال علمي" أيضًا، لأنّ النص يتم تقسيمه إلى رموز مميّزة، وتتوفّر الرموز المميّزة "علمي" و "خيالي" في "خيال علمي".
عندما تكون قيمة exactMatchWithOperator هي true،
يتم التعامل مع النص كرمز مميز واحد، وبالتالي لا يتطابق كل من
"Science" و "Fiction" مع "Science-Fiction".
(اختياري) إضافة القسم displayOptions
يتوفّر قسم displayOptions اختياري في نهاية أي قسم propertyDefinition. يحتوي هذا القسم على سلسلة displayLabel واحدة.
displayLabel هو تصنيف نصي مقترَح وسهل الاستخدام للسمة. إذا تم ضبط الموقع للعرض باستخدام ObjectDisplayOptions، سيتم عرض هذا التصنيف أمام الموقع. إذا تم ضبط السمة للعرض ولم يتم تحديد displayLabel، سيتم عرض قيمة السمة فقط.
يعرض المقتطف التالي السمة movieTitle مع القيمة displayLabel
المضبوطة على "العنوان".
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
في ما يلي قيم displayLabel لجميع سمات الكائن movie في نموذج المخطط:
| الموقع | displayLabel |
|---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
(اختياري) إضافة قسم suggestionFilteringOperators[]
يتوفّر قسم suggestionFilteringOperators[] اختياري في نهاية أي قسم propertyDefinition. استخدِم هذا القسم لتحديد سمة تُستخدَم لفلترة اقتراحات الإكمال التلقائي. على سبيل المثال، يمكنك تحديد عامل التشغيل genre لفلترة الاقتراحات استنادًا إلى نوع الأفلام المفضّل لدى المستخدم. بعد ذلك، عندما يكتب المستخدم طلب البحث، لن تظهر ضمن اقتراحات الإكمال التلقائي سوى الأفلام التي تتطابق مع النوع المفضّل لديه.
تسجيل المخطط
لكي يتم عرض البيانات المنظَّمة كنتيجة لطلبات البحث في Cloud Search، عليك تسجيل المخطط الخاص بك في خدمة المخططات في Cloud Search. يتطلّب تسجيل مخطط رقم تعريف مصدر البيانات الذي حصلت عليه خلال خطوة تهيئة مصدر بيانات.
باستخدام معرّف مصدر البيانات، أرسِل طلب UpdateSchema لتسجيل المخطط.
كما هو موضّح بالتفصيل في صفحة مرجع UpdateSchema، أرسِل طلب HTTP التالي لتسجيل المخطط:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
يجب أن يتضمّن نص طلبك ما يلي:
{
"validateOnly": // true or false,
"schema": {
// ... Your complete schema object ...
}
}
استخدِم الخيار validateOnly لاختبار صحة المخطط بدون تسجيله فعليًا.
فهرسة بياناتك
بعد تسجيل المخطط، املأ مصدر البيانات باستخدام طلبات الفهرس. تتم الفهرسة عادةً ضمن أداة ربط المحتوى.
باستخدام مخطط الفيلم، سيبدو طلب الفهرسة لواجهة REST API لفيلم واحد على النحو التالي:
{
"name": "datasource/<data_source_id>/items/titanic",
"acl": {
"readers": [
{
"gsuitePrincipal": {
"gsuiteDomain": true
}
}
]
},
"metadata": {
"title": "Titanic",
"sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [
{
"name": "movieTitle",
"textValues": {
"values": [
"Titanic"
]
}
},
{
"name": "releaseDate",
"dateValues": {
"values": [
{
"year": 1997,
"month": 12,
"day": 19
}
]
}
},
{
"name": "actorName",
"textValues": {
"values": [
"Leonardo DiCaprio",
"Kate Winslet",
"Billy Zane"
]
}
},
{
"name": "genre",
"enumValues": {
"values": [
"Drama",
"Action"
]
}
},
{
"name": "userRating",
"integerValues": {
"values": [
8
]
}
},
{
"name": "mpaaRating",
"textValues": {
"values": [
"PG-13"
]
}
},
{
"name": "duration",
"textValues": {
"values": [
"3 h 14 min"
]
}
}
]
}
},
"content": {
"inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
"contentFormat": "TEXT"
},
"version": "01",
"itemType": "CONTENT_ITEM"
}
لاحظ كيف تتطابق قيمة movie في الحقل objectType مع اسم تعريف العنصر في المخطط. من خلال مطابقة هاتين القيمتين، يعرف Cloud Search عنصر المخطط الذي يجب استخدامه أثناء الفهرسة.
يُرجى أيضًا ملاحظة كيف أنّ فهرسة السمة releaseDate في المخطط تستخدم السمات الفرعية year وmonth وday التي ترثها لأنّها معرَّفة كنوع بيانات date من خلال استخدام datePropertyOptions لتعريفها.
ومع ذلك، بما أنّ year وmonth وday غير معرَّفة في المخطط، لا يمكنك الاستعلام عن إحدى هذه السمات (على سبيل المثال، year) بشكل فردي.
لاحظ أيضًا كيف يتم فهرسة السمة القابلة للتكرار actorName باستخدام قائمة بالقيم.
تحديد المشاكل المحتملة في الفهرسة
في ما يلي المشكلتان الأكثر شيوعًا المتعلّقتان بالمخططات والفهرسة:
يتضمّن طلب الفهرسة الخاص بك اسم عنصر أو سمة مخطط لم يتم تسجيله في خدمة المخطط. تتسبّب هذه المشكلة في تجاهل السمة أو العنصر.
يتضمّن طلب الفهرسة خاصية ذات قيمة نوع مختلفة عن النوع المسجّل في المخطط. تتسبّب هذه المشكلة في أن تعرض Cloud Search خطأً أثناء الفهرسة.
اختبار المخطط باستخدام عدة أنواع من طلبات البحث
قبل تسجيل المخطط لمستودع كبير لبيانات الإنتاج، ننصحك بإجراء اختبار باستخدام مستودع أصغر لبيانات الاختبار. يتيح لك الاختبار باستخدام مستودع اختبار أصغر إجراء تعديلات على المخطط بسرعة وحذف البيانات المفهرسة بدون التأثير في فهرس أكبر أو فهرس حالي متاح في قناة الإصدار العلني. بالنسبة إلى مستودع بيانات الاختبار، أنشئ قائمة التحكّم بالوصول (ACL) التي تسمح لمستخدم اختبار فقط بالوصول إلى البيانات، وذلك لكي لا يرى المستخدمون الآخرون هذه البيانات في نتائج البحث.
لإنشاء واجهة بحث للتحقّق من صحة طلبات البحث، يُرجى الرجوع إلى واجهة البحث.
يحتوي هذا القسم على عدة أمثلة مختلفة لطلبات البحث التي يمكنك استخدامها لاختبار مخطط فيلم.
الاختبار باستخدام طلب بحث عام
يعرض طلب البحث العام جميع العناصر في مصدر البيانات التي تحتوي على سلسلة محددة. باستخدام واجهة بحث، يمكنك تنفيذ طلب بحث عام في مصدر بيانات خاص بالأفلام من خلال كتابة الكلمة "تيتانيك" والضغط على Return. يجب أن تعرض نتائج البحث كل الأفلام التي تتضمّن الكلمة "titanic".
الاختبار باستخدام عامل تشغيل
يؤدي إضافة عامل تشغيل إلى طلب البحث إلى حصر النتائج على العناصر التي تتطابق مع قيمة عامل التشغيل هذا. على سبيل المثال، يمكنك استخدام عامل التشغيل actor للعثور على جميع الأفلام التي يشارك فيها ممثل معيّن. باستخدام واجهة بحث، يمكنك تنفيذ طلب البحث هذا ببساطة عن طريق كتابة زوج عامل=قيمة، مثل "الممثل:زين"، والضغط على Return. يجب أن تظهر في نتائج البحث جميع الأفلام التي شارك فيها "زين" كممثل.
تعديل المخطط
بعد أن يصبح المخطط والبيانات قيد الاستخدام، واصِل مراقبة ما ينجح وما لا ينجح مع المستخدمين. عليك التفكير في تعديل المخطط في الحالات التالية:
- فهرسة حقل لم تتم فهرسته من قبل على سبيل المثال، قد يبحث المستخدمون بشكل متكرّر عن أفلام استنادًا إلى اسم المخرج، لذا يمكنك تعديل المخطط الخاص بك ليتيح استخدام اسم المخرج كعامل تشغيل.
- تغيير أسماء عوامل تشغيل البحث استنادًا إلى ملاحظات المستخدمين من المفترض أن تكون أسماء عوامل التشغيل سهلة الاستخدام. إذا كان المستخدمون "يتذكرون" اسم عامل التشغيل الخاطئ بشكل متكرر، يمكنك تغيير الاسم.
إعادة الفهرسة بعد تغيير المخطط
إنّ تغيير أي من القيم التالية في المخطط لا يتطلّب إعادة فهرسة بياناتك. يمكنك ببساطة إرسال طلب جديد UpdateSchema وسيستمر الفهرس في العمل:
- أسماء عوامل التشغيل
- الحدّ الأدنى والأقصى لقيم الأعداد الصحيحة
- الترتيب حسب الأعداد الصحيحة وقيم التعداد
- خيارات الحداثة
- خيارات العرض
بالنسبة إلى التغييرات التالية، ستستمر البيانات التي تمت فهرستها سابقًا في العمل وفقًا للمخطط الذي تم تسجيله سابقًا. ومع ذلك، عليك إعادة فهرسة الإدخالات الحالية للاطّلاع على التغييرات استنادًا إلى المخطط المعدَّل إذا كان يتضمّن التغييرات التالية:
- إضافة أو إزالة موقع أو عنصر جديد
- تغيير
isReturnableأوisFacetableأوisSortableمنfalseإلىtrue
يجب ضبط isFacetable أو isSortable على true فقط إذا كان لديك حالة استخدام واضحة وتحتاج إلى ذلك.
أخيرًا، عند تعديل المخطط من خلال وضع علامة isSuggestable على إحدى السمات، عليك إعادة فهرسة بياناتك، ما يؤدي إلى تأخير في استخدام ميزة الإكمال التلقائي لهذه السمة.
التغييرات غير المسموح بها في العقارات
لا يُسمح بإجراء بعض التغييرات على المخطط، حتى إذا أعدت فهرسة بياناتك، لأنّها ستؤدي إلى تعطيل الفهرس أو تقديم نتائج بحث غير دقيقة أو غير متسقة. وتشمل هذه التغييرات ما يلي:
- نوع بيانات الموقع
- اسم الموقع
- إعدادات
exactMatchWithOperator - إعدادات
retrievalImportance
ومع ذلك، هناك طريقة للتغلّب على هذا القيد.
إجراء تغيير معقّد على المخطط
لتجنُّب التغييرات التي قد تؤدي إلى ظهور نتائج بحث رديئة أو تعذُّر البحث، يمنع Cloud Search أنواعًا معيّنة من التغييرات في طلبات UpdateSchema بعد فهرسة المستودع. على سبيل المثال، لا يمكن تغيير نوع البيانات أو اسم إحدى السمات بعد ضبطها. لا يمكن إجراء هذه التغييرات من خلال طلب UpdateSchema بسيط، حتى إذا أعدت فهرسة بياناتك.
في الحالات التي يجب فيها إجراء تغيير غير مسموح به على المخطط، يمكنك غالبًا إجراء سلسلة من التغييرات المسموح بها التي تحقق التأثير نفسه. بشكل عام، يتضمّن ذلك أولاً نقل الخصائص المفهرسة من تعريف كائن قديم إلى تعريف أحدث، ثم إرسال طلب فهرسة يستخدم فقط الخاصية الأحدث.
توضّح الخطوات التالية كيفية تغيير نوع البيانات أو اسم الموقع:
- أضِف سمة جديدة إلى تعريف العنصر في المخطط. استخدِم اسمًا مختلفًا عن اسم الموقع الذي تريد تغييره.
- أرسِل طلب UpdateSchema مع التعريف الجديد. تذكَّر إرسال المخطط بأكمله، بما في ذلك السمة الجديدة والقديمة، في الطلب.
إعادة ملء الفهرس من مستودع البيانات لإعادة ملء الفهرس، أرسِل جميع طلبات الفهرسة باستخدام السمة الجديدة، ولكن ليس السمة القديمة، لأنّ ذلك سيؤدي إلى احتساب تطابقات طلب البحث مرّتين.
- أثناء إعادة ملء الفهرس، تحقَّق من السمة الجديدة واستخدِم السمة القديمة تلقائيًا لتجنُّب السلوك غير المتسق.
- بعد اكتمال عملية التعبئة الاحتياطية، نفِّذ طلبات بحث اختبارية للتحقّق من ذلك.
احذف الموقع القديم. أرسِل طلب UpdateSchema آخر بدون اسم الخاصية القديم، وتوقّف عن استخدام اسم الخاصية القديم في طلبات الفهرسة المستقبلية.
نقل أي استخدام للموقع القديم إلى الموقع الجديد على سبيل المثال، إذا غيّرت اسم السمة من "صانع المحتوى" إلى "المؤلف"، عليك تعديل رمز طلب البحث لاستخدام "المؤلف" بدلاً من "صانع المحتوى".
يحتفظ Cloud Search بسجلّ لأي سمة أو عنصر محذوف لمدة 30 يومًا للحماية من أي إعادة استخدام قد تؤدي إلى نتائج فهرسة غير متوقّعة. خلال هذه الفترة، عليك التوقّف عن استخدام جميع العناصر أو السمات المحذوفة، بما في ذلك عدم تضمينها في طلبات الفهرسة المستقبلية. يضمن ذلك أنّه إذا قررت لاحقًا إعادة إدراج هذا الموقع أو العنصر، يمكنك إجراء ذلك بطريقة تحافظ على صحة الفهرس.
التعرّف على القيود المتعلقة بالحجم
يفرض Cloud Search حدودًا على حجم عناصر البيانات المنظَّمة والمخططات. وهذه الحدود هي:
- الحد الأقصى لعدد العناصر ذات المستوى الأعلى هو 10 عناصر.
- الحدّ الأقصى لعمق التسلسل الهرمي للبيانات المنظَّمة هو 10 مستويات.
- يقتصر العدد الإجمالي للحقول في أحد العناصر على 1000 حقل، ويشمل ذلك عدد الحقول الأساسية بالإضافة إلى مجموع عدد الحقول في كل عنصر متداخل.
الخطوات التالية
في ما يلي بعض الخطوات التالية التي يمكنك اتّخاذها:
أنشئ واجهة بحث لاختبار المخطط.
اضبط المخطط لتحسين جودة البحث.
تعرَّف على كيفية الاستفادة من مخطط
_dictionaryEntryلتحديد مرادفات للمصطلحات الشائعة الاستخدام في شركتك. لاستخدام مخطط_dictionaryEntry، يُرجى الرجوع إلى تحديد المرادفات.أنشئ موصلًا.