การดำเนินการคิวรีเงื่อนไข
หัวข้อนี้นำเสนอวิธีการดำเนินการคิวรีเงื่อนไข คล้ายกับเงื่อนไข 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