مشروط سوالات کا انجام دینا
یہ موضوع وہ تجربہ پیش کرتا ہے کہ مشروط استعلامات، SQL WHERE شرائط کے مماثل ہوں۔
ویکٹر مماثلت تلاش کی مخالفت میں، استعلامات بولین اظہار کا استعمال کرتے ہیں تکمل سرفیلڈز کی ہے۔ ملوس مختلف اقسام کے ڈیٹا اندراجات کا سپورٹ کرتا ہے اور مختلف بولین اظہارات کا بھی۔ بولین اظہارات سکلر سرفیلڈز یا پرائمری کی سرفیلڈز کو فلٹر کر سکتے ہیں اور فلٹر کی شرائط پورے کرنے والے تمام نتائج واپس کر سکتے ہیں۔
مثال کے طور پر نیچے کا مواد دکھاتا ہے کہ کس طرح دیتا سیٹ پر استعلام کو انجام دیا جاتا ہے جو 2000 قطاروں پر ہوتا ہے، جس میں کتاب کا شناخت (پرائمری کی)، لفظ گنت (سکلر سرفیلڈ)، اور کتاب کی معرفی (ویکٹر فیلڈ) شامل ہوتا ہے۔ یہ مشروط استعلام دکھاتا ہے جو ان کتابوں کی تلاش کرتا ہے جو ان کے شناخت کے مبنی ہوں۔
کلیہ کوئیری لوڈ کرنا
ملوس میں، تمام تلاش اور استعلام کے عمل ان میموری میں کرتے ہیں۔ ایک استعلام کو انجام دینے سے پہلے، کلیکشن کو میموری میں لوڈ کرنا ضروری ہوتا ہے۔
err := milvusClient.LoadCollection(
context.Background(), // ctx
"book", // CollectionName
false // async
)
if err != nil {
log.Fatal("Failed to load collection:", err.Error())
}
استعلام کا انجام دینا
نیچے دی گئی مثال میں ویکٹرز کو مخصوص book_id
قیمتوں کے مبنی تصفیہ کرتا ہے اور نتائج کی book_id
اور book_intro
فیلڈز واپس کرتا ہے۔
ملوس استعلامات کو استقامتی سطحوں کو ترتیب دینے کا سپورٹ کرتا ہے۔ یہ مثال Strong
استقامتی سطح کو ترتیب دیتا ہے۔ آپ چاروں استقامتی سطحوں کو Bounded
، Session
یا Eventually
پر بھی ترتیب دے سکتے ہیں۔ ملوس میں چار استقامتی سطحوں کے بارے میں مزید معلومات کے لیے Consistency دیکھیں۔
آپ فلٹر اظہارات میں دینامک فیلڈز اور استعلام درخواست میں خروجی فیلڈز بھی استعمال کرسکتے ہیں۔ مثال کے طور پر دینامک پیٹرن دیکھیں۔
opt := client.SearchQueryOptionFunc(func(option *client.SearchQueryOption) {
option.Limit = 3
option.Offset = 0
option.ConsistencyLevel = entity.ClStrong
option.IgnoreGrowing = false
})
queryResult, err := milvusClient.Query(
context.Background(), // ctx
"book", // CollectionName
"", // PartitionName
entity.NewColumnInt64("book_id", []int64{2,4,6,8}), // expr
[]string{"book_id", "book_intro"}, // OutputFields
opt, // queryOptions
)
if err != nil {
log.Fatal("Failed to query the collection:", err.Error())
}
معمولات | وضاحت | اختیارات |
---|---|---|
ctx |
API کال کے عمل کو کنٹرول کرنے والے کنٹیکسٹ۔ | N/A |
CollectionName |
استعلام کرنیوالی کلیکشن کا نام۔ | N/A |
partitionName |
کلیکشن کی پارٹیشنوں کے نام۔ اگر خالی ہو، تمام پارٹیشنوں پر استعلام کریں۔ | N/A |
expr |
استعمال ہونے والے بولین اظہار کا استعمال کرتا ہے فلٹر کرنے کے لیے۔ | مزید معلومات کے لیے Boolean Expression Rules دیکھیں۔ |
OutputFields |
واپس کرنے والے فیلڈز کے نام۔ | موجودہ ورژن میں ویکٹر فیلڈز کا سپورٹ نہیں کیا گیا ہے۔ |
opts |
Query کو مظاہر کرنے والے entity.SearchQueryOptionFunc کی شکل میں ہونی چاہیے۔ |
- Limit واپس کرنے والی انٹٹیوں کی تعداد کو ظاہر کرتا ہے۔ - Offset تلاش کے دوران چھوڑنے والی انٹٹیوں کی تعداد کو ظاہر کرتا ہے۔ یہ پیرامیٹر اور Limit کا مجموعہ 16384 سے کم ہونا چاہئے۔ - ConsistencyLevel تلاش کرنے کے دوران کسستمی سطح کو ظاہر کرتا ہے۔ - Ignore Growing بتاتا ہے کہ کس حد تک سمیتتے تلاش کے دوران بڑھ رہا ہے۔ یہ پہنچ لیا ہے۔ |
واپسی نتیجے کی جانچ پڑتال کریں۔
fmt.Printf("%#v\n", queryResult)
for _, qr := range queryResult {
fmt.Println(qr.IDs)
}
کوانٹٹی نکالنا
ایک استعلام کو جاری کرتے وقت، آپ output_fields
میں count(*)
شامل کر سکتے ہیں تاکہ ملوس کو کلیکشن میں موجود انٹٹیوں کی مقدار واپس کرنے میں مدد ملے۔ اگر آپ کسی خاص حالات پر پوری ہونے والی انٹٹیوں کی مقدار کو گنتی کرنا چاہتے ہیں تو، expr
کا استعمال کریں تاکہ ایک بولین اظہار معیار کر سکیں۔
محدودیتیں
output_fields
میں count(*)
کا استعمال کرتے ہوئے، limit
پیرامیٹر کا استعمال نہیں ہوتا۔