बूलियन व्यंजन नियम

इस अध्याय में, हम यह सिखाएंगे कि कैसे पूछताछ शर्त व्यंजन लिखें।

अवलोकन

पूरक व्यंजन एक बूलियन मान उत्पन्न करता है। Milvus ने पूरक द्वारा वास्तविक संख्याएँ फ़िल्टर करता है। एक पूरक व्यंजन की मूल्यांकन करते समय, यह TRUE या FALSE वापस करेगा। पूरक व्यंजन का आकलन करते समय, कृपया पैथन SDK API संदर्भ में दिशानिर्देश के लिए संदर्भित करें।

ऑपरेटर

तार्किक ऑपरेटर

तार्किक ऑपरेटर दो व्यंजनों का तुलनात्मक मूल्यांकन करते हैं।

प्रतीक कार्रवाई उदाहरण विवरण
'and' && और expr1 && expr2 जब तब TRUE वापिस करता है जब तक expr1 और expr2 दोनों सही हों।
'or' || या expr1 || expr2 जब तब TRUE वापिस करता है जब तक expr1 या expr2 में से कोई भी सही है।

बाइनरी अंकगणित ऑपरेटर

बाइनरी अंकगणित ऑपरेटर दो उपाधियों को लेते हैं और मूल अंकगणित कार्रवाई निष्पादित करते हैं, संबंधित परिणाम लौटाते हैं।

प्रतीक कार्रवाई उदाहरण विवरण
+ जोड़ a + b दो उपाधियों को मिलाता है।
- घटाव a - b पहले उपाधि से दूसरे को कम करता है।
* गुणन a * b दो उपाधियों को गुणा करता है।
/ भागफल a / b पहले उपाधि को दूसरे से भाग देता है।
** घातांकण a ** b पहले उपाधि को दूसरे की शक्ति पर उठाता है।
% शेष a % b पहले उपाधि को दूसरे से भाग देता है और शेष लौटाता है।

सापेक्षिक ऑपरेटर

सापेक्षिक ऑपरेटर संकेतों का उपयोग समानता, असमानता या दो व्यंजनों के बीच आपसी क्रम की जांच के लिए करते हैं।

प्रतीक कार्रवाई उदाहरण विवरण
< से छोटा a < b अगर a b से छोटा है तो TRUE वापिस करता है।
> से अधिक a > b अगर a b से अधिक है तो TRUE वापिस करता है।
== के बराबर a == b अगर a b के बराबर है तो TRUE वापिस करता है।
!= न के बराबर a != b अगर a b के बराबर नहीं है तो TRUE वापिस करता है।
<= इससे छोटा या बराबर a <= b अगर a छोटा या बराबर है तो TRUE वापिस करता है।
>= इससे अधिक या बराबर a >= b अगर a अधिक या बराबर है तो TRUE वापिस करता है।

ऑपरेटर पूर्वाधारण और संबद्धता

निम्नलिखित सारणी में ऑपरेटर की पूर्वाधारण और संबद्धता सूचीबद्ध है। ऑपरेटरों की पूर्वाधारण क्रम सूची की गई है ऊपर से नीचे तक।

पूर्वाधारण ऑपरेटर विवरण संबद्धता
1 + - एकाधिक अंकगणित ऑपरेटर बाएं से दाएं
2 not एकाधिक तार्किक ऑपरेटर दाएं से बाएं
3 ** बाइनरी अंकगणित ऑपरेटर बाएं से दाएं
4 * / % बाइनरी अंकगणित ऑपरेटर बाएं से दाएं
5 + - बाइनरी अंकगणित ऑपरेटर बाएं से दाएं
6 < <= > >= तुलना ऑपरेटर बाएं से दाएं
7 == != तुलना ऑपरेटर बाएं से दाएं
8 like LIKE मिलान ऑपरेटर बाएं से दाएं
9 json_contains JSON_CONTAINS JsonArray ऑपरेटर बाएं से दाएं
10 json_contains_all JSON_CONTAINS_ALL JsonArray ऑपरेटर बाएं से दाएं
11 json_contains_any JSON_CONTAINS_ANY JsonArray ऑपरेटर बाएं से दाएं
12 && and बाइनरी तार्किक ऑपरेटर बाएं से दाएं
13 || or बाइनरी तार्किक ऑपरेटर बाएं से दाएं

व्यक्तिगत व्यंजनों का मूल्यांकन सामान्यतः बाएं से दाएं होता है। जटिल व्यंजनों का मूल्यांकन एक बार में होता है। व्यंजनों का मूल्यांकन क्रम व्यक्तिगत ऑपरेटर की पूर्वाधारण के आधार पर निर्धारित किया जाता है।

यदि किसी व्यंजन में दो या दो से अधिक ऑपरेटर हों जो समान प्राधानता में हैं, तो सबसे बाएं ऑपरेटर को पहले मूल्यांकन किया जाता है।

उदाहरण के लिए, 10 / 2 * 5 का मूल्यांकन (10 / 2) के रूप में किया जाएगा और परिणाम को 5 से गुणा किया जाएगा।

जब निचली पूर्वाधारण ऑपरेशन को प्राधानता देना आवश्यक होता है, तो उन्हें घेरा जाना चाहिए।

उदाहरण के लिए, 30 / 2 + 8। आमतौर पर इसे 30 विभाजित किया जाता है 2 और फिर उसे परिणाम में 8 जोड़ा जाता है। अगर आप इसे 2 + 8 से विभाजित करना चाहते हैं, तो इसे 30 / (2 + 8) लिखा जाना चाहिए।

व्यंजन के भीतर घेरे लगाए जा सकते हैं। सबसे अंदर के घेरे का मूल्यांकन सबसे पहले होता है।

उदाहरण स्थितियाँ

यहां Milvus में उपलब्ध सभी बूलियन अभिव्यक्तियों के कुछ उदाहरण हैं (int64 INT64 प्रकार के डेटा वाली स्केलर फ़ील्ड को प्रस्तुत करता है, float फ़्लोटिंग-पॉइंट प्रकार के डेटा वाली स्केलर फ़ील्ड को प्रस्तुत करता है, और VARCHAR एक स्केलर फ़ील्ड प्रस्तुत करता है जिसमें VARCHAR प्रकार के डेटा होता है):

  1. तुलना अभिव्यक्ति
"int64 > 0"
"0 < int64 < 400"
"500 < int64"
VARCHAR > "str1"
  1. तार्किक ऑपरेशन और उपवाक्य
"(int64 > 0 && int64 < 400) या (int64 > 500 && int64 < 1000)"
  1. में अभिव्यक्ति

Milvus केवल विशिष्ट रूप से प्राथमिक कुंजीयों के साथ इकाइयों को हटाने का समर्थन करता है, जो केवल शब्द अभिव्यक्ति in के माध्यम से ही प्राप्त किया जा सकता है।

"int64 not in [1, 2, 3]"
VARCHAR not in ["str1", "str2"]
  1. TermExpr, BinaryLogicalOp, और CmpOp (अलग-अलग फ़ील्ड्स पर)
"int64 in [1, 2, 3] और float != 2"
  1. BinaryLogicalOp और CmpOp
"int64 == 0 || int64 == 1 || int64 == 2"
  1. CmpOp और UnaryArithOp या BinaryArithOp
"200+300 < int64"
  1. MatchOp (प्रीफ़िक्स मैचिंग)
VARCHAR like "prefix%"
  1. JsonArrayOp
  • JSON_CONTAINS(identifier, JsonExpr)

    अगर JSON_CONTAINS (दूसरा पैरामीटर) बयान में JSON अभिव्यक्ति एक सूची है, तो पहचानकर्ता (पहला पैरामीटर) को सूचियों की एक सूची होनी चाहिए। अन्यथा, बयान हमेशा असत्य माना जाता है।

json_contains(x, 1) # ==> सत्य
json_contains(x, "a") # ==> असत्य

json_contains(x, [1,2,3]) # ==> सत्य
json_contains(x, [3,2,1]) # ==> असत्य
  • JSON_CONTAINS_ALL(identifier, JsonExpr)

    JSON_CONTAINS_ALL बयान में JSON अभिव्यक्ति हमेशा एक सूची होनी चाहिए।

json_contains_all(x, [1,2,8]) # ==> सत्य
json_contains_all(x, [4,5,6]) # ==> असत्य (6 मौजूद नहीं है)
  • JSON_CONTAINS_ANY(identifier, JsonExpr)

    JSON_CONTAINS_ANY बयान में JSON अभिव्यक्ति हमेशा एक सूची होनी चाहिए। अन्यथा, इसका व्यवहार JSON_CONTAINS के समान है।

json_contains_any(x, [1,2,8]) # ==> सत्य
json_contains_any(x, [4,5,6]) # ==> सत्य
json_contains_any(x, [6,9]) # ==> असत्य