شرائطی کوئیری

یہ موضوع شرائطی کوئیری کرنے کا طریقہ متعارف کراتا ہے۔

ویکٹرز پر مشابہتی تلاش کے برخلاف، شرائطی کوئیریاں بولین اظہارات کے ذریعے سکیلر فلٹرز کا استعمال کر کے ویکٹرز کو حاصل کرتی ہیں۔ ملوس سکیلر فیلڈز اور مختلف بولین اظہارات پر کوئیری کی حمایت کرتا ہے۔ بولین اظہارات استعمال کر کے سکیلر فیلڈز یا پرائمری کی فیلڈز کو فلٹر کر کے وہ تمام نتائج حاصل ہوتے ہیں جو فلٹر کرنے والے شرائط کے مطابق ہوں۔

نیچے دی گئی مثال میں دیکھایا گیا ہے کہ 2000 صفوں کی کتب کے ڈیٹا سیٹ کی کوئیری کیسے کرنی ہے، جس میں کتاب کا شناختی نمبر (پرائمری کی)، لفظ کا تعداد (سکیلر فیلڈ)، اور کتاب کی تعارف (ویکٹر فیلڈ) شامل ہیں، جو ایک خاص کتاب کی کوئیری کرنے کی مصوری کا نمائندہ بناتا ہے۔

کلیکشن لوڈ کریں

کوئیری کرنے سے پہلے، کلیکشن کو میموری میں لوڈ کرنا ضروری ہے۔

from pymilvus import Collection
collection = Collection("book")      # موجودہ کلیکشن حاصل کریں۔
collection.load()

کوئیری کریں

نیچے دی گئی مثال میں، مشخص book_id قیمتوں کی بنیاد پر ویکٹرز کو فلٹر کر کے نتائج میں book_id فیلڈ اور book_intro فیلڈ واپس کروایا جاتا ہے۔

ملوس کوئیریوں کے لئے موافقت کی سطحوں کو ترتیب دینے کی حمایت ہوتی ہے۔ اس موضوع میں دی گئی مثال میں موافقت کی سطح کو 'مضبوط' پر ترتیب دی گئی ہے۔ آپ یہ بھی کر سکتے ہیں کہ آپ موافقت کی سطح کو 'محدود'، 'سیشن'، یا 'آخر میں' پر ترتیب دیں۔ ملوس میں چار موافقت کی سطحوں کے بارے میں مزید معلومات کے لئے، براہ کرم مضافات کی جانچ کار کریں۔

فلٹر اظہار میں متغیر فیلڈز کا بھی استعمال کیا جا سکتا ہے اور کوئیری درخواست میں خارج کرنے کے لئے فیلڈز کو مخصوص کیا جا سکتا ہے۔ مثال کے طور پر، ڈائنامک سکیما کی حوالے سے معلومات کے لئے، ڈائنامک سکیما کی جانچ کار کریں۔

res = collection.query(
  expr="book_id in [2,4,6,8]",
  offset = 0,
  limit = 10, 
  output_fields = ["book_id", "book_intro"],
)
پیرامیٹر تفصیل
expr خصوصیات کو فلٹر کرنے کے لئے استعمال ہونے والا بولین اظہار۔ بولین اظہار کے قواعد کے مزید تفصیلات کے لئے، براہ کرم اس بولین اظہار کے قواعد پر رجوع کریں۔
limit واپسیت کے لیے سب سے مشابہ نتائج کی تعداد۔ اس قیمت کا مجموعہ اور offset کا مجموعہ 16384 سے کم ہونا ضروری ہے۔
offset کلیکشن میں چھوڑنے والے نتائج کی تعداد۔ صرف اس صورت میں دستیاب ہوتا ہے جب limit مخصوص کیا گیا ہو اور اس کا مجموعہ اور limit کا مجموعہ 16384 سے کم ہونا ضروری ہے۔ مثال کے طور پر، اگر آپ کسی ویکٹر کے نوازنہ نمبر دیکھنا چاہتے ہیں تو، limit کو 2 اور offset کو 8 پر ترتیب دیں۔
output_fields (اختیاری) واپسیت کے لیے فیلڈ کے ناموں کی فہرست۔
partition_names (اختیاری) کوئیری کرنے کیلئے پارٹیشن کے ناموں کی فہرست۔
consistency_level (اختیاری) کوئیری کے لئے موافقت کی سطح۔

نتائج کی جانچ کار کریں۔

sorted_res = sorted(res, key=lambda k: k['book_id'])
sorted_res

انٹٹیز کا تعداد

جب کوئیری کرتے ہیں، آپ count(*) کو output_fields میں شامل کر سکتے ہیں تاکہ ملوس کلیکشن میں انٹٹیز کی تعداد واپس کر سکے۔ اگر آپ کسی مخصوص شرائط پر پورے ہونے والی انٹٹیز کی تعداد شمار کرنا چاہتے ہیں تو، expr کو استعمال کر کے بولین اظہار کی تعریف کریں۔

کلیکشن میں تمام انٹٹیز کی تعداد شمار کریں۔

res = collection.query(
  expr="", 
  output_fields = ["count(*)"],
)

print(res)
print(res[0])

مخصوص فلٹر کنندہ شرائط پر پورے ہونے والی انٹٹیز کی تعداد شمار کریں۔

res = collection.query(
  expr="book_id in [2,4,6,8]", 
  output_fields = ["count(*)"],
)

print(res)
print(res[0])

محدودیتیں

output_fields میں count(*) کا استعمال کرتے وقت، limit پیرامیٹر کا استعمال ممنوع ہوتا ہے۔