การดำเนินการคิวรีเงื่อนไข

หัวข้อนี้นำเสนอวิธีการดำเนินการคิวรีเงื่อนไข คล้ายกับเงื่อนไข WHERE ใน SQL

ต่างจากการค้นหาความคล้ายคลึงเวกเตอร์ คิวรีจะดึงเวกเตอร์ตามการกรองค่าสกาลาร์แบบบูลีน Milvus รองรับประเภทข้อมูลต่าง ๆ ในฟิลด์สกาลาร์และมีรูปแบบของการกรองข้อมูลแบบบูลีนต่าง ๆ สามารถกรองฟิลด์สกาลาร์หรือฟิลด์คีย์หลัก และดึงผลลัพธ์ทั้งหมดที่ตรงกับเงื่อนไขการกรองข้อมูล

ตัวอย่างต่อไปนี้สาธิตถึงวิธีการดำเนินการคิวรีบนชุดข้อมูลที่มี 2000 แถว ประกอบด้วย book ID (คีย์หลัก) word count (ฟิลด์สกาลาร์) และ book introduction (ฟิลด์เวกเตอร์) เราจะจำลองการคิวรีหนังสือที่เฉพาะเจาตาม ID ของหนังสือนั้นๆ

โหลดคอลเลกชัน

ใน Milvus การค้นหาและดำเนินการคิวรีทุกครั้งจะเป็นการดำเนินการในหน่วยความจำ ก่อนที่จะดำเนินการคิวรีคอลเลกชันจำเป็นต้องโหลดลงในหน่วยความจำก่อน

err := milvusClient.LoadCollection(
  context.Background(),   // ctx
  "book",                 // ชื่อคอลเลกชัน
  false                   // การดำเนินการแบบไม่สะดวก
)
if err != nil {
  log.Fatal("ไม่สามารถโหลดคอลเลกชัน:", err.Error())
}

การดำเนินการคิวรี

ตัวอย่างต่อไปนี้กรองเวกเตอร์ตามค่า book_id ที่ระบุและคืนค่าฟิลด์ book_id และ book_intro ที่ตรงกับเงื่อนไข

Milvus รองรับการตั้งค่าระดับความสอดคล้องสำหรับคิวรี ตัวอย่างนี้ตั้งค่าระดับความสอดคล้องเป็น แข็ง คุณ cŏ napʉ̂ng lɛ̀ŋ làkkép lɛʉ̂x à cɔ̂ʉrat nɔ̂ng ʉ̄ʉ sʉ̂t sûan sàb xmek tʉ̂ʉm càj lèʉ̂ sʉ̂t ngàbai kʉrʉ̀ng phuënçhîst̄h̄ʉ̂n pr̂esī in tâa ฉน สายi pʉ̂ʉ dʉ̂ dʉ̂ů jâk hʉ̂n lɛ̀ŋ kʉb tʉ̀ạ̀ s̄kwm` ʉ̄ʉb lèḥ rʉ̂ sangkho‛ phuṣphathin ain mili vus refer to (Consistency)[https://www.tizi365.com/topic/7611.html).

คุณยังสามารถใช้ฟิลด์โดยนาความเพื่อเมืองในวงเล็บขอ้ไขขณะกรองและออกพื้นที่ในคำขอบคุ ตย: เปแคปตเทิน

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",                                                 // ชื่อคอลเลกชัน
    "",                                                     // ชื่อพาร์ติชัน
    entity.NewColumnInt64("book_id", []int64{2,4,6,8}),     // expr
    []string{"book_id", "book_intro"},                      // ฟิลด์ที่คืนค่า
    opt,                                                    // queryOptions
)
if err != nil {
    log.Fatal("ไม่สามารถคิวรีคอลเลกชัน:", err.Error())
}
พารามิเตอร์ คำอธิบาย ตัวเลือก
ctx Context ที่ใช้ควบคุมกระบวนการเรียก API N/A
CollectionName ชื่อคอลเลกชันที่จะถูกคิวรี N/A
partitionName ชื่อพาร์ติชันที่จะถูกโหลด ถ้าว่าง query ทุกพาร์ติชัน N/A
expr นิพพานบูลีนที่ใช้กรองแอตทริบิวต์ สำหรับข้อมูลเพิ่มเติม ดูที่กฎการแสดงการกรองแบบบูลีน.
OutputFields ชื่อฟิลด์ที่จะคืนค่า ไม่รองรับฟิลด์เวกเตอร์ในเวอร์ชันปัจจุบัน
opts ตัวเลือกคิวรีในรูปแบบ entity.SearchQueryOptionFunc - Limit แสดงจำนวนทั่วไปของอิทธิพลที่จะคืน - Offset แสดงจำนวนทััยางของอิทธิพลที่จะถหันแกรกระบี ผ ผข ่ำนวนนีงอัย่งเช่นแลวั่งภายัเป็งาวี่่น้อยะสังะวน์้ำadnkjสสงส่ะื439ู 329์871หห 673ี็ืบเัน- ConsistencyLevel ให้แสดงระดับความสอดคล้องที่จะนำไปใช ้ดต้ี่ระน ั-

سء ling(option of thể surch process`


ขอดูผลลัพธ์ที่คืนค่า

```go
fmt.Printf("%#v\n", queryResult)
for _, qr := range queryResult {
    fmt.Println(qr.IDs)
}

การคำนวณจำนวนของดิบ

เมื่อดำเนินการคิวรี คุณสามารถเพิ่ม count(*) ไปยัง output_fields เพื่อให้ Milvus สามารถคืนค่าปริมาณของดิบในคอลเลกชัน ถ้าคุณต้องการนับจำนวนของดิบที่ตรงกับเงื่อนไขบางอย่าง ให้ใช้ expr ในการกำหนดนิพพานบูลีน

ข้อจำกัด

เมื่อใช้ count(*) ใน output_fields ไม่อนุฟรให้ใช้พารามิเตอร์ limit