مشاركة عبر


البرنامج التعليمي: إنشاء محلل مخصص لأرقام الهواتف

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

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

في هذا البرنامج التعليمي، سوف تتعلّم:

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

المتطلبات الأساسية

تنزيل الملفات

توجد التعليمات البرمجية المصدر لهذا البرنامج التعليمي في ملف custom-analyzer.rest في مستودع GitHub Azure-Samples/azure-search-rest-samples .

نسخ مفتاح مسؤول وعنوان URL

تتطلب استدعاءات REST في هذا البرنامج التعليمي نقطة نهاية خدمة بحث ومفتاح واجهة برمجة تطبيقات مسؤول. يمكنك الحصول على هذه القيم من مدخل Microsoft Azure.

  1. سجل الدخول إلى مدخل Microsoft Azure وحدد خدمة البحث.

  2. من اللوحة اليسرى، اختر نظرة عامة وانسخ نقطة النهاية. يجب أن يكون بهذا الشكل: https://my-service.search.windows.net

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

    لقطة شاشة لمفاتيح URL وواجهة برمجة التطبيقات في مدخل Microsoft Azure.

إنشاء فهرس أولي

  1. افتح ملفا نصيا جديدا في Visual Studio Code.

  2. تعيين المتغيرات إلى نقطة نهاية البحث ومفتاح API الذي جمعته في القسم السابق.

    @baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE
    @apiKey = PUT-YOUR-ADMIN-API-KEY-HERE
    
  3. احفظ الملف بملحق .rest ملف.

  4. الصق المثال التالي لإنشاء فهرس صغير يسمى phone-numbers-index مع حقلين: id و phone_number.

    ### Create a new index
    POST {{baseUrl}}/indexes?api-version=2025-09-01  HTTP/1.1
    Content-Type: application/json
    api-key: {{apiKey}}
    
    {
      "name": "phone-numbers-index",  
      "fields": [
        {
          "name": "id",
          "type": "Edm.String",
          "key": true,
          "searchable": true,
          "filterable": false,
          "facetable": false,
          "sortable": true
        },
        {
          "name": "phone_number",
          "type": "Edm.String",
          "sortable": false,
          "searchable": true,
          "filterable": false,
          "facetable": false
        }
      ]
    }
    

    لم تقم بتعريف محلل حتى الآن، لذلك standard.lucene يتم استخدام المحلل بشكل افتراضي.

  5. حدد إرسال طلب. يجب أن يكون لديك استجابة HTTP/1.1 201 Created ، ويجب أن يتضمن نص الاستجابة تمثيل JSON لمخطط الفهرس.

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

    ### Load documents
    POST {{baseUrl}}/indexes/phone-numbers-index/docs/index?api-version=2025-09-01  HTTP/1.1
    Content-Type: application/json
    api-key: {{apiKey}}
    
    {
      "value": [
        {
          "@search.action": "upload",
          "id": "1",
          "phone_number": "425-555-0100"
        },
        {
          "@search.action": "upload",
          "id": "2",
          "phone_number": "(321) 555-0199"
        },
        {
          "@search.action": "upload",
          "id": "3",
          "phone_number": "+1 425-555-0100"
        },
        {
          "@search.action": "upload",
          "id": "4",
          "phone_number": "+1 (321) 555-0199"
        },
        {
          "@search.action": "upload",
          "id": "5",
          "phone_number": "4255550100"
        },
        {
          "@search.action": "upload",
          "id": "6",
          "phone_number": "13215550199"
        },
        {
          "@search.action": "upload",
          "id": "7",
          "phone_number": "425 555 0100"
        },
        {
          "@search.action": "upload",
          "id": "8",
          "phone_number": "321.555.0199"
        }
      ]
    }
    
  7. جرب استعلامات مشابهة لما قد يقوم المستخدم بكتابته. على سبيل المثال، قد يبحث (425) 555-0100 المستخدم عن أي عدد من التنسيقات ولا يزال يتوقع إرجاع النتائج. ابدأ بالبحث (425) 555-0100.

    ### Search for a phone number
    POST {{baseUrl}}/indexes/phone-numbers-index/docs/search?api-version=2025-09-01  HTTP/1.1
    Content-Type: application/json
    api-key: {{apiKey}}
    
    {
      "search": "(425) 555-0100"
    }
    

    يقوم الاستعلام بإرجاع ثلاث نتائج من أصل أربع نتائج متوقعة ولكنه يرجع أيضا نتيجتين غير متوقعتين.

    {
        "value": [
            {
                "@search.score": 0.05634898,
                "phone_number": "+1 425-555-0100"
            },
            {
                "@search.score": 0.05634898,
                "phone_number": "425 555 0100"
            },
            {
                "@search.score": 0.05634898,
                "phone_number": "425-555-0100"
            },
            {
                "@search.score": 0.020766128,
                "phone_number": "(321) 555-0199"
            },
            {
                "@search.score": 0.020766128,
                "phone_number": "+1 (321) 555-0199"
            }
        ]
    }
    
  8. حاول مرة أخرى دون أي تنسيق: 4255550100.

    ### Search for a phone number
    POST {{baseUrl}}/indexes/phone-numbers-index/docs/search?api-version=2025-09-01  HTTP/1.1
    Content-Type: application/json
    api-key: {{apiKey}}
    
    {
      "search": "4255550100"
    }
    

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

    {
        "value": [
            {
                "@search.score": 0.6015292,
                "phone_number": "4255550100"
            }
        ]
    }
    

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

مراجعة كيفية عمل المحللات

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

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

تتكون المحللات من ثلاثة مكونات:

يوضح الرسم التخطيطي التالي كيفية عمل هذه المكونات الثلاثة معا لإضافة رمز مميز لجملة.

رسم تخطيطي لعملية المحلل إلى ترميز الجملة.

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

مثال الفهرس المعكوس.

ينحصر البحث كله في البحث عن المصطلحات المخزنة في الفهرس المعكوس. عندما يصدر مستخدم استعلاماً عن:

  1. يتم تحليل الاستعلام ويتم تحليل شروط الاستعلام.
  2. يتم فحص الفهرس المقلوب بحثا عن المستندات ذات المصطلحات المطابقة.
  3. تصنف خوارزمية التسجيل المستندات التي تم استردادها.

يتشابه الرسم التخطيطي مع ترتيب عملية المحلل

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

ملاحظة

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

اختبار المحللات باستخدام تحليل واجهة برمجة التطبيقات

يوفر Azure الذكاء الاصطناعي Search واجهة برمجة تطبيقات تحليل تسمح لك باختبار المحللات لفهم كيفية معالجة النص.

استدعاء تحليل واجهة برمجة التطبيقات باستخدام الطلب التالي:

### Test analyzer
POST {{baseUrl}}/indexes/phone-numbers-index/analyze?api-version=2025-09-01  HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}}

{
  "text": "(425) 555-0100",
  "analyzer": "standard.lucene"
}

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

{
    "tokens": [
        {
            "token": "425",
            "startOffset": 1,
            "endOffset": 4,
            "position": 0
        },
        {
            "token": "555",
            "startOffset": 6,
            "endOffset": 9,
            "position": 1
        },
        {
            "token": "0100",
            "startOffset": 10,
            "endOffset": 14,
            "position": 2
        }
    ]
}

على العكس من ذلك، يتم رمز رقم الهاتف4255550100 المنسق دون أي علامات ترقيم إلى رمز مميز واحد.

{
  "text": "4255550100",
  "analyzer": "standard.lucene"
}

الاستجابة:

{
    "tokens": [
        {
            "token": "4255550100",
            "startOffset": 0,
            "endOffset": 10,
            "position": 0
        }
    ]
}

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

في الاستعلام الأول، يتم إرجاع أرقام هواتف غير متوقعة لأن أحد رموزها المميزة، 555، تطابق أحد المصطلحات التي بحثت فيها. في الاستعلام الثاني، يتم إرجاع رقم واحد فقط لأنه السجل الوحيد الذي يحتوي على رمز مميز مطابق 4255550100.

إنشاء محلل مخصص

الآن بعد أن فهمت النتائج التي تراها، قم بإنشاء محلل مخصص لتحسين منطق الرمز المميز.

الهدف من ذلك هو تقديم بحث بديهياً مقابل أرقام الهواتف بصرف النظر عن تنسيق الاستعلام أو السلسلة الفهرسة. لتحقيق هذه النتيجة، حدد عامل تصفية الأحرفوالرمز المميزوعامل تصفية الرمز المميز.

عوامل تصفية الأحرف

تقوم عوامل تصفية الأحرف بمعالجة النص قبل إدخاله في الرمز المميز. الاستخدامات الشائعة لعوامل تصفية الأحرف هي تصفية عناصر HTML واستبدال الأحرف الخاصة.

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

"charFilters": [
    {
      "@odata.type": "#Microsoft.Azure.Search.MappingCharFilter",
      "name": "phone_char_mapping",
      "mappings": [
        "-=>",
        "(=>",
        ")=>",
        "+=>",
        ".=>",
        "\\u0020=>"
      ]
    }
  ]

يقوم عامل التصفية بإزالة -()+. المسافات والمسافات من الإدخال.

إدخال المخرجات
(321) 555-0199 3215550199
321.555.0199 3215550199

tokenizer

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

لهذا السيناريو، استخدم الكلمة الأساسية tokenizer، ، keyword_v2لالتقاط رقم الهاتف كمصطلح واحد. هذه ليست الطريقة الوحيدة لحل هذه المشكلة، كما هو موضح في قسم النهج البديلة .

تقوم الرموز المميزة للكلمات الأساسية دائما إخراج نفس النص الذي يتم منحه كمصطلح واحد.

إدخال المخرجات
The dog swims. [The dog swims.]
3215550199 [3215550199]

عوامل تصفية الرمز المميز.

تقوم عوامل تصفية الرمز المميز بتعديل الرموز المميزة التي تم إنشاؤها بواسطة الرمز المميز أو تصفيتها. أحد الاستخدامات الشائعة لتصفية الرمز المميز هو أن تكون جميع الأحرف صغيرة باستخدام عامل تصفية رمز مميز صغير. هناك استخدام شائع آخر وهو تصفية كلمات التوقف، مثل theأو andأو is.

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

"tokenFilters": [
  {
    "@odata.type": "#Microsoft.Azure.Search.NGramTokenFilterV2",
    "name": "custom_ngram_filter",
    "minGram": 3,
    "maxGram": 20
  }
]

NGramTokenFilterV2

عامل تصفية الرمز المميزالخاص بـ nGram_v2 يقسم الرموز المميزة إلى n-grams من حجم معين استناداً إلى minGramوmaxGram والمعلمات.

بالنسبة إلى محلل الهاتف، minGram يتم تعيين إلى 3 لأن هذا هو أقصر سلسلة فرعية يتوقع من المستخدمين البحث فيها. maxGram تم تعيينها للتأكد 20 من أن جميع أرقام الهواتف، حتى مع الملحقات، تتناسب مع n-gram واحد.

الآثار الجانبية المؤسفة ل n-غرام هو أن يتم إرجاع بعض الإيجابيات الزائفة. يمكنك إصلاح ذلك في خطوة لاحقة عن طريق إنشاء محلل منفصل لعمليات البحث التي لا تتضمن عامل تصفية الرمز المميز n-gram.

إدخال المخرجات
[12345] [123, 1234, 12345, 234, 2345, 345]
[3215550199] [321, 3215, 32155, 321555, 3215550, 32155501, 321555019, 3215550199, 215, 2155, 21555, 215550, ... ]

المحلل

مع عوامل تصفية الأحرف والرمز المميز وعوامل تصفية الرمز المميز في مكانها، فأنت جاهز لتعريف المحلل.

"analyzers": [
  {
    "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
    "name": "phone_analyzer",
    "tokenizer": "keyword_v2",
    "tokenFilters": [
      "custom_ngram_filter"
    ],
    "charFilters": [
      "phone_char_mapping"
    ]
  }
]

من تحليل واجهة برمجة التطبيقات، بالنظر إلى المدخلات التالية، تكون المخرجات من المحلل المخصص كما يلي:

إدخال المخرجات
12345 [123, 1234, 12345, 234, 2345, 345]
(321) 555-0199 [321, 3215, 32155, 321555, 3215550, 32155501, 321555019, 3215550199, 215, 2155, 21555, 215550, ... ]

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

إعادة البناء باستخدام المحلل الجديد

  1. حذف الفهرس الحالي.

    ### Delete the index
    DELETE {{baseUrl}}/indexes/phone-numbers-index?api-version=2025-09-01 HTTP/1.1
    api-key: {{apiKey}}
    
  2. أعد إنشاء الفهرس باستخدام المحلل الجديد. يضيف مخطط الفهرس هذا تعريف محلل مخصص وتعيين محلل مخصص في حقل رقم الهاتف.

    ### Create a new index
    POST {{baseUrl}}/indexes?api-version=2025-09-01  HTTP/1.1
    Content-Type: application/json
    api-key: {{apiKey}}
    
    {
        "name": "phone-numbers-index-2",  
        "fields": [
          {
              "name": "id",
              "type": "Edm.String",
              "key": true,
              "searchable": true,
              "filterable": false,
              "facetable": false,
              "sortable": true
          },
          {
              "name": "phone_number",
              "type": "Edm.String",
              "sortable": false,
              "searchable": true,
              "filterable": false,
              "facetable": false,
              "analyzer": "phone_analyzer"
          }
        ],
        "analyzers": [
            {
              "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
              "name": "phone_analyzer",
              "tokenizer": "keyword_v2",
              "tokenFilters": [
              "custom_ngram_filter"
            ],
            "charFilters": [
              "phone_char_mapping"
              ]
            }
        ],
        "charFilters": [
            {
              "@odata.type": "#Microsoft.Azure.Search.MappingCharFilter",
              "name": "phone_char_mapping",
              "mappings": [
                "-=>",
                "(=>",
                ")=>",
                "+=>",
                ".=>",
                "\\u0020=>"
              ]
            }
          ],
          "tokenFilters": [
            {
              "@odata.type": "#Microsoft.Azure.Search.NGramTokenFilterV2",
              "name": "custom_ngram_filter",
              "minGram": 3,
              "maxGram": 20
          }
        ]
    }
    

اختبار المحلل المخصص

بعد إعادة إنشاء الفهرس، اختبر المحلل باستخدام الطلب التالي:

### Test custom analyzer
POST {{baseUrl}}/indexes/phone-numbers-index-2/analyze?api-version=2025-09-01  HTTP/1.1
Content-Type: application/json
api-key: {{apiKey}} 

{
  "text": "+1 (321) 555-0199",
  "analyzer": "phone_analyzer"
}

يجب أن تشاهد الآن مجموعة الرموز المميزة الناتجة عن رقم الهاتف.

{
    "tokens": [
        {
            "token": "132",
            "startOffset": 1,
            "endOffset": 17,
            "position": 0
        },
        {
            "token": "1321",
            "startOffset": 1,
            "endOffset": 17,
            "position": 0
        },
        {
            "token": "13215",
            "startOffset": 1,
            "endOffset": 17,
            "position": 0
        },
        ...
        ...
        ...
    ]
}

مراجعة المحلل المخصص للتعامل مع الإيجابيات الخاطئة

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

لمنع الإيجابيات الخاطئة، قم بإنشاء محلل منفصل للاستعلام. هذا المحلل مطابق للمحلل السابق، باستثناء أنه يحذف custom_ngram_filter.

    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "phone_analyzer_search",
      "tokenizer": "custom_tokenizer_phone",
      "tokenFilters": [],
      "charFilters": [
        "phone_char_mapping"
      ]
    }

في تعريف الفهرس، حدد كلا من indexAnalyzer و searchAnalyzer.

    {
      "name": "phone_number",
      "type": "Edm.String",
      "sortable": false,
      "searchable": true,
      "filterable": false,
      "facetable": false,
      "indexAnalyzer": "phone_analyzer",
      "searchAnalyzer": "phone_analyzer_search"
    }

مع هذا التغيير، وضعنا. فيما يلي خطواتك التالية:

  1. حذف الفهرس.

  2. أعد إنشاء الفهرس بعد إضافة المحلل المخصص الجديد (phone_analyzer-search) وتعيين هذا المحلل إلى phone-number خاصية الحقل searchAnalyzer .

  3. إعادة تحميل البيانات.

  4. أعد اختبار الاستعلامات للتحقق من أن البحث يعمل كما هو متوقع. إذا كنت تستخدم نموذج الملف، فإن هذه الخطوة تنشئ الفهرس الثالث المسمى phone-number-index-3.

نهج بديلة

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

يوضح المثال التالي محلل بديل أكثر كفاءة في الرمز المميز، ولكنه يحتوي على عيوب.

نظرا لإدخال 14255550100، لا يمكن للمحلل تقسيم رقم الهاتف منطقيا. على سبيل المثال، لا يمكن فصل رمز البلد، 1، من رمز المنطقة، 425. يؤدي هذا التناقض إلى عدم إرجاع رقم الهاتف إذا لم يقم المستخدم بتضمين رمز بلد في بحثه.

"analyzers": [
  {
    "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
    "name": "phone_analyzer_shingles",
    "tokenizer": "custom_tokenizer_phone",
    "tokenFilters": [
      "custom_shingle_filter"
    ]
  }
],
"tokenizers": [
  {
    "@odata.type": "#Microsoft.Azure.Search.StandardTokenizerV2",
    "name": "custom_tokenizer_phone",
    "maxTokenLength": 4
  }
],
"tokenFilters": [
  {
    "@odata.type": "#Microsoft.Azure.Search.ShingleTokenFilter",
    "name": "custom_shingle_filter",
    "minShingleSize": 2,
    "maxShingleSize": 6,
    "tokenSeparator": ""
  }
]

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

إدخال المخرجات
(321) 555-0199 [321, 555, 0199, 321555, 5550199, 3215550199]

اعتمادا على متطلباتك، قد يكون هذا نهجا أكثر كفاءة للمشكلة.

النقاط الرئيسية

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

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

تنظيف الموارد

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

يمكنك العثور على الموارد وإدارتها في مدخل Microsoft Azure، باستخدام الارتباط All resources أو Resource groups في جزء التنقل الأيسر.

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

الآن بعد أن عرفت كيفية إنشاء محلل مخصص، ألق نظرة على جميع عوامل التصفية والرموز المميزة والمحللات المختلفة المتاحة لبناء تجربة بحث غنية: