عوامل التشغيل المنطقية OData في البحث المعرفي Azure - and, , ornot

تعبيرات عامل تصفية OData في Azure Cognitive Search هي تعبيرات منطقية تقيم إلى true أو false. يمكنك كتابة مرشح معقد عن طريق كتابة سلسلة من المرشحات الأبسط وتكوينها باستخدام العوامل المنطقية من الجبر المنطقي:

  • andعامل تشغيل ثنائي يقيم إلى ما إذا كانت كل من التعبيرات الفرعية اليسرى واليمنى تقيم إلى truetrue.:
  • orعامل تشغيل ثنائي يقيم إلى ما إذا كان أحد التعبيرات الفرعية اليسرى أو اليمنى يقيم إلى truetrue.:
  • notعامل تشغيل موحد يقيم إلى ما إذا كان تعبيره الفرعي يقيم إلى truefalse، والعكس صحيح.:

هذه ، جنبا إلى جنب مع مشغلي any المجموعة و all، تسمح لك بإنشاء مرشحات يمكنها التعبير عن معايير بحث معقدة للغاية.

بناء الجملة

يعرف EBNF (نموذج Backus-Naur الموسعة) التالي قواعد تعبير OData الذي يستخدم عوامل التشغيل المنطقية.

logical_expression ::=
    boolean_expression ('and' | 'or') boolean_expression
    | 'not' boolean_expression

يتوفر أيضا رسم تخطيطي تفاعلي لبناء الجملة:

هناك شكلان من أشكال التعبيرات المنطقية: ثنائي () ، حيث يوجد تعبيران فرعيان ، و unary (and/ornot) ، حيث يوجد واحد فقط. يمكن أن تكون التعبيرات الفرعية تعبيرات منطقية من أي نوع:

  • الحقول أو متغيرات النطاق من النوع Edm.Boolean
  • الدالات التي ترجع قيم من النوع Edm.Boolean، مثل geo.intersects أو search.ismatch
  • تعبيرات المقارنة، مثل rating gt 4
  • تعبيرات المجموعة، مثل Rooms/any(room: room/Type eq 'Deluxe Room')
  • الحرفي true المنطقي أو false.
  • التعبيرات المنطقية الأخرى التي تم إنشاؤها باستخدام and، orو not.

هام

هناك بعض الحالات التي لا يمكن فيها استخدام جميع أنواع التعبير الفرعي مع and/or، خاصة داخل تعبيرات لامدا. راجع عوامل تشغيل مجموعة OData في Azure Cognitive Search للحصول على التفاصيل.

العوامل المنطقية و null

لا يمكن لمعظم التعبيرات المنطقية مثل الدوال والمقارنات إنتاج null قيم ، ولا يمكن تطبيق العوامل المنطقية على الحرفية null مباشرة (على سبيل المثال ، x and null غير مسموح به). ومع ذلك ، يمكن أن تكون الحقول المنطقية ، لذلك يجب أن تكون nullعلى دراية بكيفية andتصرف ، orوالمشغلين not في وجود فارغ. يتم تلخيص ذلك في الجدول التالي ، حيث b يوجد حقل من النوع Edm.Boolean:

Expression النتيجة عندما b تكون null
b false
not b true
b eq true false
b eq false false
b eq null true
b ne true true
b ne false true
b ne null false
b and true false
b and false false
b or true true
b or false false

عندما يظهر حقل b منطقي من تلقاء نفسه في تعبير مرشح ، فإنه يتصرف كما لو كان مكتوبا b eq true، لذلك إذا كان b كذلك ، يتم nullتقييم التعبير إلى false. وبالمثل ، يتصرف مثل not (b eq true)، not b لذلك يتم تقييمه إلى true. وبهذه الطريقة ، null تتصرف الحقول بنفس الطريقة التي تتصرف بها false. وهذا يتفق مع كيفية تصرفها عند دمجها مع تعبيرات أخرى باستخدام and و or، كما هو موضح في الجدول أعلاه. على الرغم من ذلك ، فإن المقارنة المباشرة مع false (b eq false) ستظل تقيم إلى false. وبعبارة أخرى ، لا يساوي ، null على falseالرغم من أنه يتصرف مثله في التعبيرات المنطقية.

أمثلة

مطابقة المستندات التي يتراوح فيها الحقل rating بين 3 و5، بما في ذلك:

    rating ge 3 and rating le 5

مطابقة المستندات التي تكون فيها جميع عناصر الحقل ratings أقل من 3 أو أكبر من 5:

    ratings/all(r: r lt 3 or r gt 5)

مطابقة المستندات حيث يكون الحقل ضمن المضلع location المحدد، ولا يحتوي المستند على مصطلح "عام".

    geo.intersects(location, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))') and not search.ismatch('public')

مطابقة المستندات للفنادق في فانكوفر ، كندا حيث توجد غرفة ديلوكس بسعر أساسي أقل من 160:

    Address/City eq 'Vancouver' and Address/Country eq 'Canada' and Rooms/any(room: room/Type eq 'Deluxe Room' and room/BaseRate lt 160)

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