مشروط سوالات کا انجام دینا

یہ موضوع وہ تجربہ پیش کرتا ہے کہ مشروط استعلامات، 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 پیرامیٹر کا استعمال نہیں ہوتا۔