شرائطی کوئیری
یہ موضوع شرائطی کوئیری کرنے کا طریقہ متعارف کراتا ہے۔
ویکٹرز پر مشابہتی تلاش کے برخلاف، شرائطی کوئیریاں بولین اظہارات کے ذریعے سکیلر فلٹرز کا استعمال کر کے ویکٹرز کو حاصل کرتی ہیں۔ ملوس سکیلر فیلڈز اور مختلف بولین اظہارات پر کوئیری کی حمایت کرتا ہے۔ بولین اظہارات استعمال کر کے سکیلر فیلڈز یا پرائمری کی فیلڈز کو فلٹر کر کے وہ تمام نتائج حاصل ہوتے ہیں جو فلٹر کرنے والے شرائط کے مطابق ہوں۔
نیچے دی گئی مثال میں دیکھایا گیا ہے کہ 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
پیرامیٹر کا استعمال ممنوع ہوتا ہے۔