إنشاء مقترح لتمكين الإكمال التلقائي والنتائج المقترحة في استعلام

في Azure Cognitive Search، يتم تمكين الكتابة مسبقا أو "البحث أثناء الكتابة" من خلال مقترح. يوفر مقدم الاقتراح قائمة بالحقول التي تخضع لترميز إضافي ، مما يؤدي إلى إنشاء تسلسلات بادئة لدعم التطابقات بشروط جزئية. على سبيل المثال، سيكون للمقترح الذي يتضمن حقل مدينة بقيمة "سياتل" مجموعات بادئة من "البحر" و "المقعد" و "المقعد" و "المقعد" لدعم الكتابة إلى الأمام.

يمكن أن تكون المطابقات بشروط جزئية إما استعلام مكتمل تلقائيا أو مطابقة مقترحة. يدعم نفس المقترح كلتا التجربتين.

يمكن أن يكون Typeahead مكتملا تلقائيا، والذي يكمل إدخالا جزئيا لاستعلام مصطلح كامل، أو اقتراحات تدعو إلى النقر للوصول إلى مطابقة معينة. ينتج الإكمال التلقائي استعلاما. تنتج الاقتراحات مستندا مطابقا.

توضح لقطة الشاشة التالية من إنشاء تطبيقك الأول في C # كليهما. يتوقع الإكمال التلقائي مصطلحا محتملا ، حيث ينهي "tw" ب "in". الاقتراحات عبارة عن نتائج بحث مصغرة، حيث يمثل حقل مثل اسم الفندق مستند بحث فندق مطابق من الفهرس. بالنسبة للاقتراحات، يمكنك عرض أي حقل يوفر معلومات وصفية.

Visual comparison of autocomplete and suggested queries

يمكنك استخدام هذه الميزات بشكل منفصل أو معا. لتنفيذ هذه السلوكيات في Azure Cognitive Search، يوجد مكون فهرس واستعلام.

  • إضافة مقترح إلى تعريف فهرس البحث. يركز الجزء المتبقي من هذه المقالة على إنشاء مقترح.

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

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

كيفية إنشاء مقترح

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

  • استخدم حقول السلسلة فقط.

  • إذا كان حقل السلسلة جزءا من نوع معقد (على سبيل المثال، حقل مدينة داخل العنوان)، فقم بتضمين الأصل في مسار الحقل: "Address/City" (REST وC# وPython)، أو ["Address"]["City"] (جافا سكريبت).

  • استخدم محلل Lucene القياسي الافتراضي () أو محلل لغة ("analyzer": nullعلى سبيل المثال، "analyzer": "en.Microsoft") في الحقل.

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

اختر الحقول

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

يستفيد الإكمال التلقائي من مجموعة أكبر من الحقول للاستفادة منها لأن المحتوى الإضافي لديه إمكانات إكمال أكثر فترة.

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

لتلبية كل من تجارب البحث حسب النوع، أضف جميع الحقول التي تحتاجها للإكمال التلقائي، ولكن بعد ذلك استخدم "$select" و"$top" و"$filter" و"searchFields" للتحكم في نتائج الاقتراحات.

اختر أجهزة التحليل

يحدد اختيارك لمحلل كيفية ترميز الحقول ومن ثم تثبيتها مسبقا. على سبيل المثال ، بالنسبة لسلسلة واصلة مثل "حساسة للسياق" ، سيؤدي استخدام محلل لغة إلى مجموعات الرموز المميزة هذه: "السياق" ، "الحساس" ، "الحساس للسياق". إذا كنت تستخدم محلل Lucene القياسي ، فلن تكون السلسلة الواصلة موجودة.

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

الحقول التي تستخدم أجهزة تحليل مخصصة أو محللات مضمنة (باستثناء Lucene القياسية) غير مسموح بها صراحة لمنع النتائج السيئة.

ملاحظة

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

إنشاء باستخدام البوابة الإلكترونية

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

  1. في تعريف الفهرس، أدخل اسما للمقترح.

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

كما لوحظ سابقا ، يؤثر اختيار المحلل على الترميز والبادئة. ضع في اعتبارك تعريف الحقل بالكامل عند تمكين المقترحين.

إنشاء باستخدام REST

في واجهة برمجة تطبيقات REST، أضف اقتراحات من خلال إنشاء فهرس أو تحديث فهرس.

{
  "name": "hotels-sample-index",
  "fields": [
    . . .
        {
            "name": "HotelName",
            "type": "Edm.String",
            "facetable": false,
            "filterable": false,
            "key": false,
            "retrievable": true,
            "searchable": true,
            "sortable": false,
            "analyzer": "en.microsoft",
            "indexAnalyzer": null,
            "searchAnalyzer": null,
            "synonymMaps": [],
            "fields": []
        },
  ],
  "suggesters": [
    {
      "name": "sg",
      "searchMode": "analyzingInfixMatching",
      "sourceFields": ["HotelName"]
    }
  ],
  "scoringProfiles": [
    . . .
  ]
}

إنشاء باستخدام .NET

في C#، حدد كائن SearchSuggester. Suggesters هي مجموعة على كائن SearchIndex، ولكن يمكن أن تأخذ عنصرا واحدا فقط. إضافة مقترح إلى تعريف الفهرس.

private static void CreateIndex(string indexName, SearchIndexClient indexClient)
{
    FieldBuilder fieldBuilder = new FieldBuilder();
    var searchFields = fieldBuilder.Build(typeof(Hotel));

    var definition = new SearchIndex(indexName, searchFields);

    var suggester = new SearchSuggester("sg", new[] { "HotelName", "Category", "Address/City", "Address/StateProvince" });
    definition.Suggesters.Add(suggester);

    indexClient.CreateOrUpdateIndex(definition);
}

مرجع العقار

الخاصية الوصف
الاسم محدد في تعريف مقدم الاقتراح، ولكنه يستدعي أيضا طلب الإكمال التلقائي أو الاقتراحات.
المصدرحقول محدد في تعريف مقدم الاقتراح. إنها قائمة بحقل واحد أو أكثر في الفهرس الذي يمثل مصدر محتوى الاقتراحات. يجب أن تكون الحقول من النوع Edm.String و Collection(Edm.String). إذا تم تحديد محلل في الحقل ، فيجب أن يكون محللا معجميا مسمى من هذه القائمة (وليس محللا مخصصا).

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

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

استخدام مقترح

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

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

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

POST /indexes/myxboxgames/docs/autocomplete?search&api-version=2020-06-30
{
  "search": "minecraf",
  "suggesterName": "sg"
}

عينة التعليمات البرمجية

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

تعرف على المزيد حول الطلبات\ الصياغة.