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

مخطط 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 المقدَّم في طلب الفهرسة.

تحديد العناصر

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

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

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

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

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

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

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

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

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

تعديل المخطط

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

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

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

إنّ تغيير أي من القيم التالية في المخطط لا يتطلّب إعادة فهرسة بياناتك. يمكنك ببساطة إرسال طلب جديد 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. نقل أي استخدام للموقع القديم إلى الموقع الجديد على سبيل المثال، إذا غيّرت اسم السمة من &quot;صانع المحتوى&quot; إلى &quot;المؤلف&quot;، عليك تعديل رمز طلب البحث لاستخدام &quot;المؤلف&quot; بدلاً من &quot;صانع المحتوى&quot;.

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

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

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

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

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

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

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

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

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

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

  5. أنشئ موصّلاً.