مشاركة عبر


فهرسة الكائنات الثنائية كبيرة الحجم ل JSON والملفات في Azure الذكاء الاصطناعي Search

ينطبق على: مفهرسات Blob، مفهرسات الملفات

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

  • مستند JSON واحد
  • مستند JSON يحتوي على صفيف من عناصر JSON جيدة التكوين
  • مستند JSON يحتوي على كيانات متعددة، مفصولة بخط جديد

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

parsingMode مستند JSON الوصف
json واحد لكل كائن ثنائي كبير الحجم (افتراضي) تحليل الكائنات الثنائية كبيرة الحجم JSON كملف نص واحد. يصبح كل كائن ثنائي كبير الحجم JSON مستند بحث واحد.
jsonArray متعدد لكل كائن ثنائي كبير الحجم تحليل صفيف JSON في الكائن الثنائي كبير الحجم، حيث يصبح كل عنصر من عناصر الصفيف مستند بحث منفصل.
jsonLines متعدد لكل كائن ثنائي كبير الحجم تحليل كائن ثنائي كبير الحجم يحتوي على كيانات JSON متعددة (أيضا صفيف)، مع عناصر فردية مفصولة بخط جديد. يبدأ المفهرس مستند بحث جديد بعد كل سطر جديد.

لكل من jsonArray و jsonLines، يجب عليك مراجعة فهرسة كائن ثنائي كبير الحجم واحد لإنتاج العديد من مستندات البحث لفهم كيفية تعامل مفهرس blob مع إزالة الغموض عن مفتاح المستند لمستندات بحث متعددة تم إنتاجها من نفس الكائن الثنائي كبير الحجم.

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

إشعار

عند استخدام وضع تحليل JSON، يفترض Azure الذكاء الاصطناعي Search أن جميع الكائنات الثنائية كبيرة الحجم تستخدم نفس المحلل (إما ل json، jsonArray أو jsonLines). إذا كان لديك مزيج من أنواع الملفات المختلفة في نفس مصدر البيانات، ففكر في استخدام عوامل تصفية ملحق الملفات للتحكم في الملفات التي يتم استيرادها.

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

فهرسة مستندات JSON الفردية (واحد لكل كائن ثنائي كبير الحجم)

بشكل افتراضي، تحلل مفهرسات الكائنات الثنائية كبيرة الحجم الكائنات الثنائية كبيرة الحجم JSON كملف نص واحد، مستند بحث واحد لكل كائن ثنائي كبير الحجم في حاوية. إذا كان JSON منظما، يمكن أن يعكس مستند البحث هذه البنية، مع عناصر فردية ممثلة كالحقول الفردية. على سبيل المثال، افترض أن لديك مستند JSON التالي في Azure Blob Storage:

{
    "article" : {
        "text" : "A hopefully useful article explaining how to parse JSON blobs",
        "datePublished" : "2020-04-13",
        "tags" : [ "search", "storage", "howto" ]    
    }
}

يقوم مفهرس الكائن الثنائي كبير الحجم بتحليل مستند JSON في مستند بحث واحد، وتحميل فهرس عن طريق مطابقة "النص" و"datePublished" و"العلامات" من المصدر مقابل حقول الفهرس الهدف المسماة والمكتبة بشكل متطابق. بالنظر إلى فهرس يحتوي على حقول "النص" و"datePublished" و"tags"، يمكن لمفهرس الكائن الثنائي كبير الحجم استنتاج التعيين الصحيح دون تعيين حقل موجود في الطلب.

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

POST https://[service name].search.windows.net/indexers?api-version=2025-09-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "my-json-indexer",
    "dataSourceName" : "my-blob-datasource",
    "targetIndexName" : "my-target-index",
    "parameters" : { "configuration" : { "parsingMode" : "json" } }
}

إشعار

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

مثال json (ملفات JSON لفندق واحد)

مجموعة بيانات مستند JSON الفندق على GitHub مفيدة لاختبار تحليل JSON، حيث يمثل كل كائن ثنائي كبير الحجم ملف JSON منظم. يمكنك تحميل ملفات البيانات إلى Blob Storage واستخدام معالج استيراد لتقييم كيفية تحليل هذا المحتوى بسرعة في مستندات البحث الفردية.

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

تحليل صفائف JSON

بدلا من ذلك، يمكنك استخدام خيار صفيف JSON. يكون هذا الخيار مفيدا عندما تحتوي الكائنات الثنائية كبيرة الحجم على صفيف من كائنات JSON جيدة التكوين، وتريد أن يصبح كل عنصر مستند بحث منفصل. باستخدام jsonArrays، ينتج كائن JSON الثنائي كبير الحجم التالي ثلاثة مستندات منفصلة، كل منها مع "id" وحقول "text" .

[
    { "id" : "1", "text" : "example 1" },
    { "id" : "2", "text" : "example 2" },
    { "id" : "3", "text" : "example 3" }
]

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

POST https://[service name].search.windows.net/indexers?api-version=2025-09-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "my-json-indexer",
    "dataSourceName" : "my-blob-datasource",
    "targetIndexName" : "my-target-index",
    "parameters" : { "configuration" : { "parsingMode" : "jsonArray" } }
}

مثال jsonArrays

مجموعة بيانات JSON في نيويورك Philharmonic على GitHub مفيدة لاختبار تحليل صفيف JSON. يمكنك تحميل ملفات البيانات إلى تخزين Blob واستخدام معالج استيراد لتقييم كيفية تحليل هذا المحتوى بسرعة في مستندات بحث فردية.

تتكون مجموعة البيانات من ثمانية كائنات ثنائية كبيرة الحجم، كل منها يحتوي على صفيف JSON من الكيانات، لإجمالي 100 كيان. تختلف الكيانات حسب الحقول التي يتم ملؤها، ولكن النتيجة النهائية هي مستند بحث واحد لكل كيان، من جميع الصفائف، في جميع الكائنات الثنائية كبيرة الحجم.

تحليل صفائف JSON المتداخلة

بالنسبة إلى صفائف JSON التي تحتوي على عناصر متداخلة، يمكنك تحديد documentRoot للإشارة إلى بنية متعددة المستويات. على سبيل المثال، إذا كانت الكائنات الثنائية كبيرة الحجم تبدو كما يلي:

{
    "level1" : {
        "level2" : [
            { "id" : "1", "text" : "Use the documentRoot property" },
            { "id" : "2", "text" : "to pluck the array you want to index" },
            { "id" : "3", "text" : "even if it's nested inside the document" }  
        ]
    }
}

استخدم هذا التكوين لفهرسة الصفيف المضمن في الخاصية level2 :

{
    "name" : "my-json-array-indexer",
    ... other indexer properties
    "parameters" : { "configuration" : { "parsingMode" : "jsonArray", "documentRoot" : "/level1/level2" } }
}

تحليل كيانات JSON مفصولة بخطوط جديدة

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

{ "id" : "1", "text" : "example 1" }
{ "id" : "2", "text" : "example 2" }
{ "id" : "3", "text" : "example 3" }

بالنسبة لخطوط JSON، يجب أن يبدو تعريف المفهرس مشابها للمثال التالي.

POST https://[service name].search.windows.net/indexers?api-version=2025-09-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "my-json-indexer",
    "dataSourceName" : "my-blob-datasource",
    "targetIndexName" : "my-target-index",
    "parameters" : { "configuration" : { "parsingMode" : "jsonLines" } }
}

تعيين حقول JSON للبحث في الحقول

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

يوضح المثال التالي هذا السيناريو. لمزيد من المعلومات حول تعيينات الحقول بشكل عام، راجع تعيينات الحقول.

{
    "article" : {
        "text" : "A hopefully useful article explaining how to parse JSON blobs",
        "datePublished" : "2016-04-13"
        "tags" : [ "search", "storage", "howto" ]    
    }
}

افترض فهرس بحث بالحقول التالية: text من النوع Edm.String، date من النوع Edm.DateTimeOffset، ومن tags النوع Collection(Edm.String). لاحظ التناقض بين "datePublished" في المصدر وحقل date في الفهرس. لتعيين JSON إلى الشكل المطلوب، استخدم تعيينات الحقول التالية:

"fieldMappings" : [
    { "sourceFieldName" : "/article/text", "targetFieldName" : "text" },
    { "sourceFieldName" : "/article/datePublished", "targetFieldName" : "date" },
    { "sourceFieldName" : "/article/tags", "targetFieldName" : "tags" }
    ]

يتم تحديد حقول المصدر باستخدام تدوين مؤشر JSON . تبدأ بشرطة مائلة للأمام للإشارة إلى جذر مستند JSON، ثم اختر الخاصية المطلوبة (على مستوى عشوائي من التداخل) باستخدام مسار مائل للأمام مفصول.

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

{ "sourceFieldName" : "/article/tags/0", "targetFieldName" : "firstTag" }

إشعار

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

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