Conditional Query

এই বিষয়টি পরিচিতি করায় এলোমেলো অনুসন্ধান কীভাবে করতে হয়।

ভেক্টরে সাদৃশ্যতা অনুসন্ধান বিরোধিতামূলক প্রকারে মিলভুস বুলিয়ান অভিব্যক্তিতে মাধ্যমে স্ক্যালার ফিল্টারগুলি ব্যবহার করে ভেক্টর পুনর্প্রাপ্ত করে। মিলভুস স্ক্যালার ফিল্ড এবং বিভিন্ন বুলিয়ান অভিব্যক্তিগুলির উপর চয়ন করা সহায়তা করে। বুলিয়ান অভিব্যক্তিগুলি ব্যবহার করা যেতে পারে স্ক্যালার ফিল্ড বা প্রাইমারি কী ফিল্ডগুলি ফিল্টার করতে বা ফিল্টারিং শর্তানুযায়ী সমস্ত ফলাফল পুনঃপ্রাপ্ত করতে। যিমন একটি বিশেষ বইয়ের আইডি ভিত্তি অনুসন্ধানের সিমুলেশন করে, ২০০০ টি বইয়ের ডেটাসেটের জন্য একটি অনুসন্ধানের উদাহরণ প্রদর্শন জন্য book ID (প্রাথমিক কী), শব্দ গণনা (স্ক্যালার ফিল্ড), বই পরিচিতি (ভেক্টর ফিল্ড) অন্তর্ভুক্ত বই প্রদর্শন করে।

সংগ্রহ লোড করুন

অনুসন্ধানের আগে, সংগ্রহটি মেমোরিতে লোড করা প্রয়োজন।

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 বৈশিষ্ট বৈশিষ্ট্যগুলি ফিল্টার করার জন্য ব্যবহৃত বুলিয়ান অভিব্যক্তি। বুলিয়ান অভিব্যক্তি নিয়ম সম্পর্কে আরও তথ্য জানতে, দয়া করে বুলিয়ান অভিব্যক্তির নিয়ম দেখুন।
সীমা ফির্তি করার সবচেয়ে প্রামাণ্য ফলাফলের সংখ্যা। এই মান এবং অফসেট এর সমষ্টি 16384 এর চেয়ে কম হতে হবে।
অফসেট সংগ্রহে ছোট হবে কতটি ফলাফল ছাড়াতে। শুধুমাত্র যখন সীমা স্পষ্টভাবে উল্লেখ করা হয়, এবং এই মান এবং সীমা এর সমষ্টি 16384 এর চেয়ে কম হবে। উদাহরণরূপ, যদি আপনি ভেক্টরের 9-এ এবং 10-এ নিকটতম সাপ্তাহিক পাড়ের প্রত্যক্ষ প্রাচীর অনুসন্ধান করতে চান, তবে বাউন্ডেড অফসেট হবে দুটি এবং অফসেট হবে 8
আউটপুট ফিল্ড (optional) ফিল্ড নেম প্রদান করার জন্য একটি তালিকা।
পার্টিশন নেমস (optional) অনুসন্ধান করার জন্য বিভাগের নামের তালিকা।
সামর্থ্য পরেবেল (optional) অনুসন্ধানের জন্য সামর্থ্য পরেবেল।

উত্তর পরীক্ষা করুন।

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

সম্পদ গণনা

একটি অনুসন্ধান চালাতে যখন আপনি চাইবেন output_fields মধ্যে count(*) যোগ করুন যাতে মিলভুস কালেকশনে সম্পদের সংখ্যা ফেরত করতে পারে। যদি আপনি নির্দিষ্ট শর্তানুযায়ী সম্পত্তির সংখ্যা গণনা করতে চান, তবে 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 প্যারামিটারের ব্যবহার নিষিদ্ধ।