إنشاء مخطط وتسجيله

مخطط Google Cloud Search هو بنية JSON تحدّد الكائنات والخصائص والخيارات التي سيتم استخدامها في فهرسة بياناتك وإجراء طلبات بحث عنها. يقرأ موصِّل المحتوى البيانات من المستودع، وبناءً على المخطط المسجَّل لديك، ينشئ بنية البيانات ويفهرسها.

يمكنك إنشاء مخطط من خلال توفير كائن مخطط JSON لواجهة برمجة التطبيقات ثم تسجيله. يجب تسجيل كائن مخطط لكل مستودع من مستودعاتك قبل أن تتمكن من فهرسة بياناتك.

يتناول هذا المستند أساسيات إنشاء المخططات. للحصول على معلومات حول كيفية ضبط المخطط لتحسين تجربة البحث، يُرجى الرجوع إلى المقالة تحسين جودة البحث.

إنشاء مخطط

في ما يلي قائمة بالخطوات المستخدمة لإنشاء مخطط Cloud Search:

  1. تحديد سلوك المستخدم المتوقّع
  2. إعداد مصدر بيانات
  3. إنشاء مخطّط
  4. إكمال نموذج المخطط
  5. تسجيل المخطط
  6. فهرسة بياناتك
  7. اختبار المخطط
  8. تحسين المخطط
.

تحديد السلوك المتوقع للمستخدم

يساعد توقع أنواع الاستعلامات التي يجريها المستخدمون في توجيه استراتيجيتك لإنشاء المخطط.

على سبيل المثال، عند إصدار طلبات بحث في قاعدة بيانات الأفلام، قد تتوقع أن المستخدم قد ينفّذ طلب بحث مثل "عرض كل الأفلام من بطولة روبرت ريدفورد". وبالتالي، يجب أن يتيح مخططك نتائج طلبات البحث استنادًا إلى "جميع الأفلام التي تضم ممثلًا معيّنًا".

لتحديد مخطط يعكس الأنماط السلوكية للمستخدم، ضع في اعتبارك إجراء المهام التالية:

  1. قيِّم مجموعة متنوعة من طلبات البحث المطلوبة من مستخدمين مختلفين.
  2. تحديد الكائنات التي يمكن استخدامها في الاستعلامات. الكائنات هي مجموعات منطقية من البيانات ذات الصلة، مثل فيلم في قاعدة بيانات الأفلام.
  3. حدد الخصائص والقيم التي يتألف منها الكائن والتي يمكن استخدامها في الاستعلامات. الخصائص هي السمات القابلة للفهرسة للكائن، ويمكن أن تتضمن قيمًا أولية أو كائنات أخرى. على سبيل المثال، قد يحتوي كائن الفيلم على خصائص مثل عنوان الفيلم وتاريخ الإصدار كقيم أساسية. قد يحتوي كائن الفيلم أيضًا على كائنات أخرى، مثل أعضاء فريق التمثيل، لها خصائصها الخاصة، مثل الاسم أو الدور.
  4. حدِّد أمثلة للقيم الصالحة للسمات. القيم هي البيانات الفعلية المفهرَسة لأحد المواقع. على سبيل المثال، قد يكون عنوان أحد الأفلام في قاعدة البيانات لديك "Raiders of the Lost Ark".
  5. تحديد خيارات الترتيب والترتيب التي يريدها المستخدمون. على سبيل المثال، عند الاستعلام عن الأفلام، قد يرغب المستخدمون في الفرز حسب التسلسل الزمني والترتيب حسب تقييم الجمهور ولا يحتاجون إلى الفرز أبجديًا حسب العنوان.
  6. (اختياري) ضَع في اعتبارك ما إذا كانت إحدى مواقعك الإلكترونية تمثّل سياقًا أكثر تحديدًا يمكن فيه تنفيذ عمليات البحث، مثل الدور الوظيفي للمستخدم أو القسم، لكي يتم تقديم اقتراحات الإكمال التلقائي استنادًا إلى السياق. على سبيل المثال، بالنسبة للأشخاص الذين يبحثون في قاعدة بيانات الأفلام، قد يكون المستخدمون مهتمين فقط بنوع معين من الأفلام. سيحدد المستخدمون النوع الذي يريدون أن تعرضه عمليات البحث، وربما كجزء من الملف الشخصي للمستخدم. وبعد ذلك، عندما يبدأ المستخدم في كتابة استعلام عن الأفلام، لا يتم اقتراح سوى الأفلام في النوع المفضّل لها مثل "أفلام الحركة" كجزء من اقتراحات الإكمال التلقائي.
  7. يمكنك إنشاء قائمة بهذه الكائنات والخصائص وأمثلة القيم التي يمكن استخدامها في عمليات البحث. (للحصول على تفاصيل حول كيفية استخدام هذه القائمة، راجِع القسم تحديد خيارات عوامل التشغيل).

إعداد مصدر البيانات

يمثل مصدر البيانات البيانات الواردة من مستودع تمت فهرسته وتخزينها في Google Cloud. للحصول على تعليمات حول إعداد مصدر بيانات، يُرجى مراجعة إدارة مصادر البيانات التابعة لجهات خارجية.

يتم عرض نتائج بحث المستخدم من مصدر البيانات. عندما ينقر مستخدم على نتيجة بحث، توجّه خدمة Cloud Search المستخدم إلى العنصر الفعلي باستخدام عنوان URL المقدَّم في طلب الفهرسة.

تحديد الكائنات

الوحدة الأساسية للبيانات في المخطط هي كائن، ويسمى أيضًا "كائن مخطط"، وهو بنية منطقية للبيانات. في قاعدة بيانات الأفلام، أحد الهياكل المنطقية للبيانات هو "movie". قد يكون كائن آخر هو "شخص" لتمثيل طاقم العمل وطاقم العمل في الفيلم.

ويتضمّن كل عنصر في المخطط سلسلة من الخصائص أو السمات التي تصف العنصر، مثل عنوان الفيلم ومدته، أو اسم شخص وتاريخ ميلاده. يمكن أن تتضمن خصائص الكائن قيمًا أولية أو كائنات أخرى.

يعرض الشكل 1 كائنات الفيلم والشخص والخصائص المرتبطة بها.

رسم لاتصالات مخطط بين الكيانات
الشكل 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: يشير إلى إمكانية استخدام السمة لإنشاء facets. يتم استخدام الواجهات لتحسين نتائج البحث حيث يرى المستخدم النتائج الأولية ثم يضيف معايير أو واجهات لتحسين تلك النتائج. لا يمكن أن يكون هذا الخيار صحيحًا بالنسبة إلى المواقع الإلكترونية التي يكون نوعها كائنًا، ويجب أن يكون isReturnable صحيحًا لضبط هذا الخيار. وأخيرًا، لا يتم دعم هذا الخيار إلا للخصائص التعداد والمنطقية والنصية. على سبيل المثال، في نموذج المخطط الخاص بنا، قد نجعل 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" في "Science-Fiction". عندما تكون قيمة 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 تسمح لمستخدم تجريبي فقط حتى لا تظهر هذه البيانات للمستخدمين الآخرين في نتائج "بحث Google".

لإنشاء واجهة بحث للتحقّق من صحة طلبات البحث، يمكنك الاطّلاع على واجهة البحث.

يحتوي هذا القسم على العديد من نماذج طلبات البحث المختلفة التي قد تستخدمها لاختبار مخطط أفلام.

الاختبار باستخدام طلب عام

يعرض الاستعلام العام جميع العناصر في مصدر البيانات التي تحتوي على سلسلة محددة. باستخدام واجهة بحث، يمكنك تنفيذ طلب بحث عام على مصدر بيانات فيلم من خلال كتابة الكلمة "titanic" والضغط على Return. يجب عرض جميع الأفلام التي تحتوي على كلمة "titanic" في نتائج البحث.

الاختبار باستخدام عامل تشغيل

تؤدي إضافة عامل تشغيل إلى الاستعلام إلى تقييد النتائج إلى العناصر التي تطابق قيمة عامل التشغيل هذه. على سبيل المثال، يمكنك استخدام عامل التشغيل actor للبحث عن جميع الأفلام التي يلعب فيها ممثل محدد. باستخدام واجهة بحث، يمكنك إجراء طلب بحث عامل التشغيل هذا ببساطة من خلال كتابة زوج العامل/القيمة، مثل "actor:Zane"، والضغط على "actor:Zane". يجب عرض جميع الأفلام التي كان فيها زين كممثل في نتائج البحث.

ضبط المخطط

بعد استخدام المخطّط والبيانات، يمكنك الاستمرار في مراقبة الجوانب الناجحة وغير الناجحة للمستخدمين. نقترح عليك تعديل المخطّط في الحالات التالية:

  • فهرسة حقل لم يسبق أن تمت فهرسته. على سبيل المثال، قد يبحث المستخدمون بشكل متكرر عن الأفلام بناءً على اسم المخرج، لذلك يمكنك تعديل المخطط لدعم اسم المخرج كعامل.
  • تغيير أسماء عوامل تشغيل البحث بناءً على ملاحظات المستخدمين تعني أسماء المشغلات أن تكون سهلة الاستخدام. إذا كان المستخدمون "يتذكرون" اسم المشغل الخاطئ باستمرار، فيمكنك التفكير في تغييره.

إعادة الفهرسة بعد تغيير المخطط

لا يتطلّب تغيير أيّ من القيم التالية في مخططك إعادة فهرسة بياناتك. يمكنك ببساطة إرسال طلب UpdateSchema جديد وسيستمر عمل الفهرس:

  • أسماء عوامل التشغيل
  • قيَم الحد الأدنى والحد الأقصى لعدد صحيح
  • الترتيب المرتَّب من خلال الأعداد الصحيحة والتعداد
  • خيارات الحداثة
  • خيارات العرض:

بالنسبة إلى التغييرات التالية، ستستمر البيانات المفهرَسة سابقًا في العمل وفقًا للمخطط المسجَّل مسبقًا. ومع ذلك، يجب إعادة فهرسة الإدخالات الحالية للاطّلاع على التغييرات استنادًا إلى المخطط المحدّث في حال حدوث هذه التغييرات:

  • إضافة أو إزالة موقع جديد أو كائن جديد
  • جارٍ تغيير isReturnable أو isFacetable أو isSortable من false إلى true.

يجب ضبط السمة isFacetable أو isSortable على true فقط إذا كانت لديك حالة استخدام واضحة وكنت بحاجة إليها.

أخيرًا، عند تعديل المخطط من خلال وضع علامة على السمة isSuggestable، يجب إعادة فهرسة البيانات، ما يؤدي إلى تأخير في استخدام ميزة "الإكمال التلقائي" لتلك السمة.

تغييرات غير مسموح بها في المواقع

لا يُسمح بإجراء بعض تغييرات المخططات، حتى إذا أعدت فهرسة بياناتك، لأنها ستؤدي إلى تعطيل الفهرس أو تؤدي إلى ظهور نتائج بحث رديئة أو غير متسقة. ويشمل ذلك إجراء تغييرات على ما يلي:

  • نوع بيانات الموقع.
  • اسم الموقع.
  • الإعداد: exactMatchWithOperator
  • الإعداد: retrievalImportance

ومع ذلك، هناك طريقة لتجنُّب هذا القيد.

إجراء تغيير معقد للمخطط

ولتجنّب التغييرات التي قد تؤدي إلى إنشاء نتائج بحث سيئة أو فهرس بحث معطّل، تمنع خدمة Cloud Search أنواعًا معيّنة من التغييرات في طلبات UpdateSchema بعد فهرسة المستودع. على سبيل المثال، لا يمكن تغيير نوع البيانات أو اسم الموقع بعد تحديدها. ولا يمكن إجراء هذه التغييرات من خلال طلب UpdateSchema بسيط، حتى إذا أعدت فهرسة البيانات.

في الحالات التي يجب فيها إجراء تغيير غير مسموح به على المخطط، يمكنك غالبًا إجراء سلسلة من التغييرات المسموح بها التي تحقّق التأثير نفسه. بوجه عام، يشمل ذلك أولاً نقل السمات المفهرَسة من تعريف كائن قديم إلى تعريف أحدث، ثم إرسال طلب فهرسة يستخدم السمة الأحدث فقط.

توضّح الخطوات التالية كيفية تغيير نوع البيانات أو اسم الموقع:

  1. أضِف سمة جديدة إلى تعريف العنصر في مخططك. استخدِم اسمًا مختلفًا عن الخاصية التي تريد تغييرها.
  2. أدخِل التعريف الجديد في طلب UpdateSchema. تذكر إرسال المخطط بأكمله، بما في ذلك كل من الموقعين الجديد والقديم، في الطلب.
  3. إضافة بيانات الفهرس من مستودع البيانات. لإضافة البيانات السابقة إلى الفهرس، أرسِل جميع طلبات الفهرسة باستخدام السمة الجديدة، وليس السمة القديمة، لأنّ ذلك سيؤدي إلى مضاعفة احتساب مطابقات طلبات البحث.

    1. أثناء إعادة تعبئة الفهرسة، ابحث عن السمة الجديدة وضبط الإعدادات التلقائية على السمة القديمة لتجنُّب السلوك غير المتسق.
    2. بعد اكتمال إعادة التعبئة، أجرِ طلبات بحث تجريبية للتحقّق من ذلك.
  4. احذف الموقع القديم. عليك إصدار طلب UpdateSchema آخر بدون اسم السمة القديم وإيقاف استخدام اسم السمة القديم في طلبات الفهرسة المستقبلية.

  5. يمكنك نقل أي استخدامات للموقع القديم إلى الموقع الجديد. على سبيل المثال، إذا غيّرت اسم السمة من "صانع محتوى" إلى "مؤلف"، يجب تعديل رمز طلب البحث لاستخدام سمة "المؤلف" في الموضع الذي سبق أن ذكرت فيه منشئ المحتوى.

تحتفظ خدمة Cloud Search بسجل لأي موقع أو عنصر محذوف لمدة 30 يومًا، وذلك للحماية من أي إعادة استخدام قد تؤدي إلى نتائج فهرسة غير متوقّعة. وفي غضون 30 يومًا، عليك إيقاف جميع استخدامات العنصر أو السمة المحذوفة، بما في ذلك حذف هذه البيانات من طلبات الفهرسة المستقبلية. ويضمن هذا أنه إذا قررت لاحقًا استعادة تلك الخاصية أو الكائن، يمكنك إجراء ذلك بطريقة تحافظ على صحة الفهرس.

تعرف على قيود الحجم

تفرض خدمة Cloud Search حدودًا على حجم عناصر البيانات المنظَّمة ومخططاتها. هذه الحدود هي:

  • الحد الأقصى لعدد عناصر المستوى الأعلى هو 10 عناصر.
  • يبلغ الحد الأقصى لعمق العرض الهرمي للبيانات المنظَّمة 10 مستويات.
  • يقتصر العدد الإجمالي للحقول في الكائن على 1000 حقل، وهو ما يتضمن عدد الحقول الأساسية بالإضافة إلى مجموع عدد الحقول في كل كائن مدمج.

الخطوات التالية

في ما يلي بعض الخطوات التي يمكنك اتّخاذها:

  1. أنشئ واجهة بحث لاختبار مخطّطك.

  2. اضبط المخطط لتحسين جودة البحث.

  3. نظِّم مخطّطًا للحصول على التفسير الأمثل لطلب البحث.

  4. تعرَّف على كيفية الاستفادة من مخطّط _dictionaryEntry لتحديد مرادفات للمصطلحات الشائعة الاستخدام في شركتك. لاستخدام مخطط _dictionaryEntry، راجِع تحديد المرادفات.

  5. أنشئ موصل.