مخطّط Google Cloud Search هو بنية JSON تحدّد الكائنات والخصائص والخيارات التي سيتم استخدامها في فهرسة بياناتك وإجراء طلبات بحث عنها. يقرأ موصِّل المحتوى البيانات من المستودع، وبناءً على المخطط المسجَّل، يتم الهياكل وفهرسة البيانات استنادًا إلى المخطط المسجَّل.
يمكنك إنشاء مخطط من خلال توفير كائن مخطط JSON لواجهة برمجة التطبيقات ثم تسجيله. يجب عليك تسجيل كائن مخطط لكل مستودع من مستودعاتك قبل أن تتمكن من فهرسة بياناتك.
يتناول هذا المستند أساسيات إنشاء المخططات. للحصول على معلومات عن طريقة ضبط مخطّطك لتحسين تجربة البحث، راجِع المقالة تحسين جودة البحث.
إنشاء مخطط
في ما يلي قائمة بالخطوات المستخدمة لإنشاء مخطط Cloud Search:
- تحديد السلوك المتوقّع للمستخدم
- إعداد مصدر بيانات
- إنشاء مخطط
- إكمال نموذج المخطط
- تسجيل المخطط
- فهرسة بياناتك
- اختبار المخطط
- ضبط المخطّط
تحديد السلوك المتوقع للمستخدم
يساعد توقع أنواع الاستعلامات التي يقوم بها المستخدمون لديك في توجيه استراتيجيتك لإنشاء المخطط الخاص بك.
على سبيل المثال، عند إصدار استعلامات مقابل قاعدة بيانات أفلام، قد تتوقع أن يقوم المستخدم بطلب استعلام مثل "اعرض لي جميع أفلام بطولة روبرت ريدفورد". لذلك، يجب أن يدعم مخططك نتائج طلبات البحث استنادًا إلى "جميع الأفلام التي لها ممثل معين".
لتعريف المخطط ليعكس الأنماط السلوكية للمستخدم، ضع في اعتبارك تنفيذ المهام التالية:
- قيِّم مجموعة متنوعة من طلبات البحث المطلوبة من مستخدمين مختلفين.
- حدد الكائنات التي يمكن استخدامها في الاستعلامات. العناصر هي مجموعات منطقية من البيانات ذات الصلة، مثل فيلم في قاعدة بيانات للأفلام.
- حدد الخصائص والقيم التي تنشئ الكائن والتي يمكن استخدامها في الاستعلامات. الخصائص هي السمات القابلة للفهرسة للكائن، ويمكن أن تتضمن قيمًا أساسية أو كائنات أخرى. على سبيل المثال، قد يحتوي كائن الفيلم على خصائص مثل عنوان الفيلم وتاريخ إصداره كقيم أولية. وقد يحتوي كائن الفيلم أيضًا على كائنات أخرى، مثل أعضاء فريق التمثيل، والتي لها خصائص خاصة مثل الاسم أو الدور.
- حدِّد أمثلة على القيم الصالحة للخصائص. القيم هي البيانات الفعلية التي تمت فهرستها لأحد المواقع. على سبيل المثال، قد يكون عنوان أحد الأفلام في قاعدة البيانات لديك "Raiders of the Lost Ark".
- حدِّد خيارات الترتيب والترتيب التي يريدها المستخدمون. على سبيل المثال، عند إجراء طلبات بحث عن الأفلام، قد يرغب المستخدمون في الفرز ترتيبًا زمنيًا والترتيب حسب تصنيف الجمهور ولا يحتاجون إلى الفرز أبجديًا حسب العنوان.
- (اختياري) مراعاة ما إذا كان أحد مواقعك يمثل سياقًا أكثر تحديدًا يمكن تنفيذ عمليات البحث فيه، مثل دور المستخدمين أو قسمهم، بحيث يمكن تقديم اقتراحات الإكمال التلقائي بناءً على السياق. على سبيل المثال، بالنسبة للأشخاص الذين يبحثون في قاعدة بيانات للأفلام، قد يكون المستخدمون مهتمين فقط بنوع معين من الأفلام. سيحدد المستخدمون النوع الذي يريدون أن تعرضه عمليات البحث، ربما كجزء من الملف الشخصي للمستخدم. بعد ذلك، عندما يبدأ المستخدم في كتابة طلب بحث عن الأفلام، يتم اقتراح الأفلام من النوع المفضّل لديه فقط، مثل "أفلام الحركة" كجزء من اقتراحات الإكمال التلقائي.
- أنشئ قائمة بهذه الكائنات والخصائص وأمثلة القيم التي يمكن استخدامها في عمليات البحث. (للحصول على تفاصيل حول كيفية استخدام هذه القائمة، راجِع القسم تحديد خيارات عوامل التشغيل).
إعداد مصدر البيانات
يمثل مصدر البيانات البيانات الواردة من المستودع الذي تمت فهرسته وتخزينه في Google Cloud. للحصول على تعليمات حول إعداد مصدر بيانات، يُرجى الاطّلاع على إدارة مصادر البيانات التابعة لجهات خارجية.
يتم عرض نتائج بحث المستخدم من مصدر البيانات. عندما ينقر المستخدم على نتيجة بحث، توجّه خدمة Cloud Search المستخدم إلى العنصر الفعلي باستخدام عنوان URL المقدَّم في طلب الفهرسة.
تحديد الكائنات
إنّ وحدة البيانات الأساسية في المخطط هي الكائن، ويسمّى أيضًا "كائن المخطط"، وهو بنية منطقية للبيانات. في قاعدة بيانات للأفلام، أحد الهياكل المنطقية للبيانات هي "movie". قد يكون هناك شيء آخر هو "شخص" لتمثيل طاقم التمثيل وطاقم العمل المشاركين في الفيلم.
يحتوي كل كائن في المخطط على سلسلة من الخصائص أو السمات التي تصف الكائن، مثل عنوان الفيلم ومدته، أو اسم الشخص وتاريخ ميلاده. يمكن أن تتضمن خصائص الكائن قيمًا أولية أو كائنات أخرى.
يعرض الشكل 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
: تشير إلى ما إذا كانت السمة تحدّد البيانات التي يجب عرضها في نتائج البحث عبر واجهة برمجة تطبيقات طلبات البحث. جميع أمثلة خصائص الأفلام قابلة للإرجاع. يمكن استخدام الخصائص غير القابلة للإرجاع للبحث أو ترتيب النتائج بدون عرضها للمستخدم.isRepeatable
: تشير هذه السمة إلى ما إذا كان مسموحًا باستخدام قيم متعددة للسمة. على سبيل المثال، للفيلم تاريخ إصدار واحد فقط ولكن يمكن أن يكون له ممثلون متعددون.isSortable
: تشير هذه السمة إلى إمكانية استخدام الخاصية للترتيب. لا يمكن أن يكون هذا صحيحًا بالنسبة للخصائص القابلة للتكرار. على سبيل المثال، يمكن فرز نتائج الأفلام حسب تاريخ الإصدار أو تقييم الجمهور.isFacetable
: يشير إلى إمكانية استخدام الخاصية لإنشاء واجهات. يتم استخدام الواجهة لتحسين نتائج البحث حيث يرى المستخدم النتائج الأولية ثم يضيف معايير أو واجهات لتحسين تلك النتائج بشكل أكبر. لا يمكن أن يكون هذا الخيار صحيحًا للمواقع التي يكون نوعها كائنًا ويجب أن يكونisReturnable
true لضبط هذا الخيار. أخيرًا، لا يتوفر هذا الخيار إلا لخصائص التعداد والمنطقية والنص. على سبيل المثال، في نموذج المخطط، قد نجعل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
إلى اسم الفيلم.
ليس من الضروري أن تكون أسماء عوامل التشغيل مطابقة لاسم الموقع الإلكتروني. بدلاً من ذلك، يجب عليك استخدام أسماء عوامل التشغيل التي تعكس الكلمات الأكثر شيوعًا التي يستخدمها المستخدمون في مؤسستك. على سبيل المثال، إذا كان المستخدمون يفضلون مصطلح "name" بدلاً من "title" لعنوان الفيلم، فيجب تعيين اسم عامل التشغيل على "name".
يمكنك استخدام اسم عامل التشغيل نفسه لمواقع متعددة ما دامت جميع الخصائص
تتوافق مع النوع نفسه. عند استخدام اسم عامل تشغيل مشترك أثناء
استعلام ما، يتم استرداد جميع الخصائص التي تستخدم اسم العامل هذا. على سبيل المثال، لنفترض أنّ كائن الفيلم يحتوي على السمتَين plotSummary
وplotSynopsis
، وكان لكل من هذه السمات operatorName
من plot
. وما دامت كلتا السمتَين عبارة عن نص (textPropertyOptions
)، يتم استردادهما في طلب بحث واحد باستخدام عامل تشغيل البحث plot
.
بالإضافة إلى operatorName
، يمكن أن تحتوي السمات القابلة للترتيب على الحقلَين lessThanOperatorName
وgreaterThanOperatorName
في operatorOptions
.
يمكن للمستخدمين استخدام هذه الخيارات لإنشاء طلبات بحث استنادًا إلى المقارنات مع القيمة المرسلة.
أخيرًا، يتضمّن textOperatorOptions
الحقل exactMatchWithOperator
في operatorOptions
. في حال ضبط exactMatchWithOperator
على true
، يجب أن تتطابق سلسلة طلب البحث مع قيمة السمة بأكملها، وليس فقط داخل النص.
يتم التعامل مع القيمة النصية كقيمة صغيرة واحدة في عمليات بحث عامل التشغيل وتطابقات الواجهة.
على سبيل المثال، يمكنك فهرسة عناصر "كتب" أو "أفلام" مع خصائص النوع.
يمكن أن تتضمن الأنواع "علوم الخيال" و"العلوم" و "الخيال". عند ضبط
exactMatchWithOperator
على false
أو حذفه،
سيؤدي البحث عن نوع أو
اختيار واجهة "العلوم" أو "الخيال" أيضًا
إلى عرض نتائج لـ "Science-Fiction" بما أنّه يتم إنشاء رموز مميّزة للنص
ووجود رمزين مميزين لـ "العلوم" و "الخيال" في "Science-Fiction".
إذا كانت قيمة السمة exactMatchWithOperator
هي true
،
يتم التعامل مع النص كرمز مميّز واحد، لذلك لا يتطابق
"العلوم" أو "الخيال" مع "العلوم الخيالية".
(اختياري) إضافة القسم 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 لفيلم واحد على النحو التالي:
{
"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 لخطأ في وقت الفهرسة.
اختبار مخطّطك باستخدام عدة أنواع طلبات بحث
قبل تسجيل المخطط في مستودع بيانات إنتاج كبير، ضع في اعتبارك الاختبار باستخدام مستودع بيانات اختبار أصغر. من خلال إجراء اختبار باستخدام مستودع اختبار أصغر، يمكنك إجراء تعديلات على المخطط بسرعة وحذف البيانات المفهرسة بدون التأثير في فهرس أكبر أو فهرس إنتاج حالي. بالنسبة إلى مستودع بيانات الاختبار، يمكنك إنشاء قائمة تحكُّم تفوِّض مستخدم تجريبي فقط حتى لا يرى المستخدمون الآخرون هذه البيانات في نتائج البحث.
لإنشاء واجهة بحث للتحقق من صحة طلبات البحث، ارجع إلى واجهة البحث
يحتوي هذا القسم على العديد من أمثلة طلبات البحث المختلفة التي يمكنك استخدامها لاختبار مخطط فيلم.
الاختبار باستخدام طلب بحث عام
يعرض طلب البحث العام جميع العناصر في مصدر البيانات الذي يحتوي على سلسلة معيّنة. باستخدام واجهة بحث، يمكنك تشغيل طلب بحث عام مقابل مصدر بيانات فيلم عن طريق كتابة كلمة "titanic" والضغط على Return. يجب عرض جميع الأفلام التي تحمل كلمة "titanic" في نتائج البحث.
الاختبار مع عامل تشغيل
تؤدي إضافة عامل تشغيل إلى الاستعلام إلى تقييد النتائج إلى العناصر التي تطابق قيمة عامل التشغيل هذه. على سبيل المثال، قد تحتاج إلى استخدام عامل التشغيل actor
للعثور على
كل الأفلام التي يلعب فيها ممثل معين. باستخدام واجهة بحث، يمكنك تنفيذ طلب البحث عن عامل التشغيل هذا ببساطة عن طريق كتابة زوج Operator=value، مثل
"actor:Zane"، والضغط على Return. يجب عرض جميع الأفلام التي يكون فيها زين
كممثل في نتائج البحث.
تعديل المخطط
بعد استخدام المخطط وبياناتك، استمر في مراقبة العناصر التي تعمل وما لا تعمل للمستخدمين. يجب أن تفكر في تعديل المخطط للمواقف التالية:
- فهرسة حقل لم يسبق أن تمت فهرسته. على سبيل المثال، قد يبحث المستخدمون بشكل متكرر عن الأفلام بناءً على اسم المخرج، لذلك يمكنك تعديل المخطط الخاص بك لدعم اسم المخرج كعامل تشغيل.
- تغيير أسماء عوامل تشغيل البحث استنادًا إلى ملاحظات المستخدمين من المفترض أن تكون أسماء المشغلات سهلة الاستخدام. إذا كان المستخدمون "يتذكرون" اسم المشغّل الخاطئ باستمرار، فيمكنك التفكير في تغييره.
إعادة الفهرسة بعد تغيير المخطط
لا يتطلب منك تغيير أي من القيم التالية في المخطط إعادة فهرسة بياناتك. يمكنك ببساطة إرسال طلب UpdateSchema جديد وسيستمر تشغيل الفهرس في العمل:
- أسماء عوامل التشغيل
- القيم الدنيا والقصوى لعدد صحيح
- الترتيب وفقًا للعدد الصحيح والتعداد
- خيارات الحداثة.
- خيارات العرض
بالنسبة إلى التغييرات التالية، ستستمر البيانات التي تمت فهرستها سابقًا في العمل وفقًا للمخطط المسجَّل سابقًا. ومع ذلك، يجب إعادة فهرسة الإدخالات الحالية للاطّلاع على التغييرات استنادًا إلى المخطط المُعدَّل إذا كان يتضمّن هذه التغييرات:
- إضافة أو إزالة خاصية أو كائن جديد
- جارٍ تغيير
isReturnable
أوisFacetable
أوisSortable
منfalse
إلىtrue
.
يجب ضبط السمة isFacetable
أو isSortable
على true
فقط إذا كانت لديك حالة استخدام وحاجة واضحة.
وأخيرًا، عند تعديل المخطط من خلال وضع علامة على السمة isSuggestable
،
يجب إعادة فهرسة البيانات، ما يؤدي إلى تأخير في استخدام ميزة "الإكمال التلقائي" لتلك السمة.
تغييرات السمات غير المسموح بها
غير مسموح ببعض التغييرات في المخطط، حتى إذا أعدت فهرسة بياناتك، لأنّها ستؤدي إلى تعطّل الفهرس أو تؤدي إلى نتائج بحث سيئة أو غير متسقة. ويشمل ذلك التغييرات التي تطرأ على:
- نوع بيانات الموقع.
- اسم الموقع.
- الإعداد
exactMatchWithOperator
. - الإعداد
retrievalImportance
.
ومع ذلك، هناك طريقة للتغلب على هذا القيد.
إجراء تغيير معقد في المخطط
لتجنّب التغييرات التي قد تؤدي إلى إنشاء نتائج بحث سيئة أو فهرس بحث معطّل، يمنع Cloud Search أنواعًا معيّنة من التغييرات في طلبات UpdateSchema بعد فهرسة المستودع. على سبيل المثال، لا يمكن تغيير نوع البيانات أو اسم الموقع بعد تعيينه. ولا يمكن تنفيذ هذه التغييرات من خلال طلب UpdateSchema بسيط، حتى إذا أعدت فهرسة بياناتك.
عندما يكون عليك إجراء تغيير غير مسموح به على المخطط، يمكنك غالبًا إجراء سلسلة من التغييرات المسموح بها التي تحقق التأثير نفسه. وبشكل عام، يتضمن ذلك أولاً نقل الخصائص المفهرسة من تعريف كائن قديم إلى تعريف أحدث، ثم إرسال طلب فهرسة يستخدم الموقع الأحدث فقط.
توضّح الخطوات التالية كيفية تغيير نوع البيانات أو اسم الموقع:
- أضِف سمة جديدة إلى تعريف الكائن في مخططك. استخدِم اسمًا مختلفًا عن الموقع الذي تريد تغييره.
- أصدر طلب UpdateSchema بالتعريف الجديد. تذكر أن ترسل المخطط بأكمله، بما في ذلك كل من الخاصية الجديدة والقديمة، في الطلب.
إضافة البيانات السابقة إلى الفهرس من مستودع البيانات. لإضافة بيانات الفهرس السابقة، أرسِل جميع طلبات الفهرسة باستخدام الموقع الجديد، ولكن ليس الموقع القديم، لأنّ ذلك سيؤدي إلى تكرار احتساب مطابقات طلبات البحث.
- خلال إعادة تعبئة الفهرسة، تحقّق من الموقع الجديد واختَر الموقع القديم تلقائيًا لتجنّب رصد أي سلوك غير متّسق.
- بعد اكتمال إضافة البيانات السابقة، نفِّذ طلبات اختبارية للتحقّق من ذلك.
حذف الموقع القديم. يمكنك إصدار طلب UpdateSchema آخر بدون اسم الموقع القديم والتوقّف عن استخدام اسم الموقع القديم في طلبات الفهرسة المستقبلية.
انقل أي استخدام للموقع القديم إلى الموقع الجديد. على سبيل المثال، إذا غيّرت اسم السمة من "منشئ" إلى "مؤلف"، يجب تعديل رمز طلب البحث لاستخدام "المؤلف" في المكان الذي أشارت فيه إلى المنشئ.
يحتفظ Cloud Search بسجل لأي موقع أو عنصر تم حذفه لمدة 30 يومًا للحماية من أي إعادة استخدام من شأنها أن تؤدي إلى نتائج فهرسة غير متوقعة. وخلال هذه المدة البالغة 30 يومًا، عليك الابتعاد عن جميع استخدامات الكائن أو الموقع المحذوف، بما في ذلك حذفهما من طلبات الفهرسة المستقبلية. وهذا يضمن أنه إذا قررت لاحقًا إعادة هذه الخاصية أو الكائن، فيمكنك القيام بذلك بطريقة تحافظ على صحة الفهرس.
تعرّف على حدود الحجم
تفرض Cloud Search حدودًا على حجم كائنات ومخططات البيانات المنظَّمة. هذه الحدود هي:
- الحد الأقصى لعدد العناصر ذات المستوى الأعلى هو 10 عناصر.
- الحد الأقصى لعمق العرض الهرمي للبيانات المنظَّمة هو 10 مستويات.
- الحد الأقصى لعدد الحقول في الكائن هو 1000 حقل، ويشمل ذلك عدد الحقول الأساسية بالإضافة إلى مجموع عدد الحقول في كل كائن متداخل.
الخطوات التالية
في ما يلي بعض الخطوات التي يمكنك اتّخاذها:
أنشئ واجهة بحث لاختبار مخططك.
اضبط المخطّط لتحسين جودة البحث.
تعرَّف على كيفية الاستفادة من مخطط
_dictionaryEntry
لتحديد مرادفات للمصطلحات الشائعة الاستخدام في شركتك. لاستخدام مخطط_dictionaryEntry
، يمكنك الرجوع إلى تعريف المرادفات.أنشئ موصِّل.