تكوين مقترح للإكمال التلقائي والمطابقات المقترحة في استعلام

في Azure الذكاء الاصطناعي Search، يتم تمكين typeahead (الإكمال التلقائي) أو "البحث عند الكتابة" من خلال مقترح. المقترح هو تكوين في فهرس يحدد الحقول التي يجب استخدامها لملء الإكمال التلقائي والاقتراحات. تخضع هذه الحقول إلى رمز مميز إضافي، مما يؤدي إلى إنشاء تسلسلات بادئة لدعم التطابقات على المصطلحات الجزئية. على سبيل المثال، سيكون لدى المقترح الذي يتضمن حقل "مدينة" بقيمة "سياتل" مجموعات بادئة من "sea" و"seat" و"seatt" و"seattl" لدعم typeahead.

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

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

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

Visual comparison of autocomplete and suggested queries

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

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

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

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

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

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

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

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

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

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

اختيار الحقول

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

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

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

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

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

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

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

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

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

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

POST /indexes/myxboxgames/docs/autocomplete?search&api-version=2023-11-01
{
  "search": "minecraf",
  "suggesterName": "sg"
}

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

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

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