การค้นหา Firestore
ขั้นการค้นหาจะดำเนินการตามลำดับต่อไปนี้: 1. จาก 2. ที่ 3. เลือก 4. orderBy + startAt + endAt 5. ออฟเซ็ต 6. ลิมิต
การแสดง JSON |
---|
{ "select": { object ( |
ช่อง | |
---|---|
select |
เซ็ตย่อยของช่องที่จะแสดงผล (ไม่บังคับ) โดยจะทำหน้าที่เป็น |
from[] |
คอลเล็กชันที่ต้องการค้นหา |
where |
ตัวกรองที่จะใช้ |
orderBy[] |
ลำดับที่จะใช้กับผลการค้นหา Firestore ช่วยให้ผู้โทรสั่งซื้อได้อย่างเต็มรูปแบบ สั่งซื้อบางส่วน หรือไม่สั่งซื้อเลย ในทุกกรณี Firestore รับประกันการสั่งซื้อที่เสถียรผ่านกฎต่อไปนี้
ช่องจะต่อท้ายด้วยทิศทางการจัดเรียงเดียวกันกับลำดับสุดท้ายที่ระบุ หรือ "ASCENDING" หากไม่ได้ระบุคำสั่งซื้อไว้ เช่น
|
startAt |
คำนำหน้าที่เป็นไปได้ของตำแหน่งในชุดผลลัพธ์ที่จะเริ่มต้นการค้นหา ลำดับของชุดผลลัพธ์จะเป็นไปตามเงื่อนไข
ผลการค้นหาเรียงลำดับตาม เคอร์เซอร์อาจอ้างอิงการจัดลำดับแบบเต็มหรือคำนำหน้าตำแหน่งก็ได้ แต่จะอ้างอิงช่องมากกว่าที่มีอยู่ใน ต่อจากตัวอย่างด้านบน การแนบเคอร์เซอร์เริ่มต้นต่อไปนี้จะมีผลต่างกัน
เคอร์เซอร์เริ่มต้นจะทำให้การค้นหาเริ่มต้นในตำแหน่งที่เป็นตรรกะ ซึ่งต่างจาก ข้อกำหนด
|
endAt |
คำนำหน้าที่เป็นไปได้ของตำแหน่งในชุดผลลัพธ์ซึ่งกำหนดให้สิ้นสุดคำค้นหา ซึ่งคล้ายกับ ข้อกำหนด
|
offset |
จำนวนเอกสารที่จะข้ามก่อนที่จะแสดงผลลัพธ์แรก ซึ่งจะมีผลหลังจากข้อจํากัดที่ระบุโดย ข้อกำหนด
|
limit |
จำนวนผลลัพธ์สูงสุดที่จะแสดง ใช้หลังจากข้อจำกัดอื่นๆ ทั้งหมด ข้อกำหนด
|
findNearest |
ไม่บังคับ ค้นหาเพื่อนบ้านที่อาจจะอยู่ใกล้ที่สุด ใช้หลังจากตัวกรองและลำดับอื่นๆ ทั้งหมด ค้นหาเวกเตอร์ที่ใกล้เคียงที่สุดที่ฝังกับเวกเตอร์การค้นหาที่ระบุ |
การคาดคะเน
การคาดการณ์ช่องของเอกสารที่จะแสดงผล
การแสดง JSON |
---|
{
"fields": [
{
object ( |
ช่อง | |
---|---|
fields[] |
ช่องที่จะแสดง หากเว้นว่างไว้ ระบบจะแสดงผลทุกช่อง หากต้องการแสดงเฉพาะชื่อเอกสาร ให้ใช้ |
ตัวเลือกคอลเล็กชัน
คอลเล็กชันที่เลือก เช่น messages as m1
การแสดง JSON |
---|
{ "collectionId": string, "allDescendants": boolean } |
ช่อง | |
---|---|
collectionId |
รหัสคอลเล็กชัน เมื่อตั้งค่าแล้ว ระบบจะเลือกเฉพาะคอลเล็กชันที่มีรหัสนี้ |
allDescendants |
เมื่อเป็นเท็จ เลือกเฉพาะคอลเล็กชันที่เป็นรายการย่อยของ |
กรอง
ตัวกรอง
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ช่องการรวม filter_type ประเภทของตัวกรอง filter_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
compositeFilter |
ตัวกรองผสม |
fieldFilter |
ตัวกรองในช่องเอกสาร |
unaryFilter |
ตัวกรองที่มีอาร์กิวเมนต์เพียง 1 รายการ |
ตัวกรองผสม
ตัวกรองที่รวมตัวกรองอื่นๆ หลายรายการโดยใช้โอเปอเรเตอร์ที่ระบุ
การแสดง JSON |
---|
{ "op": enum ( |
ช่อง | |
---|---|
op |
โอเปอเรเตอร์สำหรับการรวมตัวกรองหลายรายการ |
filters[] |
รายการตัวกรองที่จะรวม ข้อกำหนด
|
โอเปอเรเตอร์
โอเปอเรเตอร์ตัวกรองผสม
Enum | |
---|---|
OPERATOR_UNSPECIFIED |
ไม่ระบุ ต้องไม่ใช้ค่านี้ |
AND |
ต้องใช้เอกสารตามตัวกรองที่รวมกันทั้งหมด |
OR |
ต้องใช้เอกสารเพื่อใช้ตัวกรองรวมกันอย่างน้อย 1 รายการ |
ตัวกรองฟิลด์
ตัวกรองในช่องที่เฉพาะเจาะจง
การแสดง JSON |
---|
{ "field": { object ( |
ช่อง | |
---|---|
field |
ช่องที่ใช้กรอง |
op |
โอเปอเรเตอร์ที่ใช้กรอง |
value |
ค่าที่จะเปรียบเทียบ |
โอเปอเรเตอร์
โอเปอเรเตอร์ตัวกรองช่อง
Enum | |
---|---|
OPERATOR_UNSPECIFIED |
ไม่ระบุ ต้องไม่ใช้ค่านี้ |
LESS_THAN |
ข้อกำหนด
|
LESS_THAN_OR_EQUAL |
ข้อกำหนด
|
GREATER_THAN |
ข้อกำหนด
|
GREATER_THAN_OR_EQUAL |
ข้อกำหนด
|
EQUAL |
field ที่ระบุจะเท่ากับ value ที่ระบุ |
NOT_EQUAL |
ข้อกำหนด
|
ARRAY_CONTAINS |
field ที่ระบุเป็นอาร์เรย์ที่มี value ที่ระบุ |
IN |
ข้อกำหนด
|
ARRAY_CONTAINS_ANY |
ข้อกำหนด
|
NOT_IN |
ค่าของ ข้อกำหนด
|
ตัวกรองเดี่ยว
ตัวกรองที่มีตัวถูกดำเนินการเดียว
การแสดง JSON |
---|
{ "op": enum ( |
ช่อง | |
---|---|
op |
โอเปอเรเตอร์แบบเดี่ยวที่จะใช้ |
ช่องการรวม operand_type อาร์กิวเมนต์ของตัวกรอง operand_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
field |
ฟิลด์ที่จะใช้โอเปอเรเตอร์ |
โอเปอเรเตอร์
โอเปอเรเตอร์แบบเอกภาค
Enum | |
---|---|
OPERATOR_UNSPECIFIED |
ไม่ระบุ ต้องไม่ใช้ค่านี้ |
IS_NAN |
field ที่ระบุเท่ากับ NaN |
IS_NULL |
field ที่ระบุเท่ากับ NULL |
IS_NOT_NAN |
ข้อกำหนด
|
IS_NOT_NULL |
ข้อกำหนด
|
สั่งซื้อ
คำสั่งซื้อในช่อง
การแสดง JSON |
---|
{ "field": { object ( |
ช่อง | |
---|---|
field |
ฟิลด์ที่จะเรียงลำดับ |
direction |
ทิศทางในการเรียงลำดับ ค่าเริ่มต้นคือ |
ทิศทาง
ทิศทางการจัดเรียง
Enum | |
---|---|
DIRECTION_UNSPECIFIED |
ไม่ระบุ |
ASCENDING |
จากน้อยไปมาก |
DESCENDING |
มากไปน้อย |
ค้นหาที่ใกล้ที่สุด
การกำหนดค่าการค้นหา Neighbor ที่ใกล้ที่สุด
การแสดง JSON |
---|
{ "vectorField": { object ( |
ช่อง | |
---|---|
vectorField |
ต้องระบุ ฟิลด์เวกเตอร์ที่จัดทำดัชนีเพื่อใช้ค้นหา ส่งกลับได้เฉพาะเอกสารที่มีเวกเตอร์ที่มีมิติข้อมูลตรงกับ queryVector เท่านั้น |
queryVector |
ต้องระบุ เวกเตอร์ของคำค้นหาที่เรากำลังค้นหา ต้องเป็นเวกเตอร์ที่มีมิติข้อมูลไม่เกิน 2048 รายการ |
distanceMeasure |
ต้องระบุ ต้องระบุมาตรวัดระยะทางที่จะใช้ |
limit |
ต้องระบุ จำนวนเพื่อนบ้านที่ใกล้ที่สุดที่จะส่งคืน ต้องเป็นจำนวนเต็มบวกที่ไม่เกิน 1000 |
การวัดระยะทาง
การวัดระยะทางที่จะใช้เมื่อเปรียบเทียบเวกเตอร์
Enum | |
---|---|
DISTANCE_MEASURE_UNSPECIFIED |
ไม่ควรตั้งค่า |
EUCLIDEAN |
วัดระยะห่าง EUCLIDEAN ระหว่างเวกเตอร์ ดู Euclidean เพื่อเรียนรู้เพิ่มเติม |
COSINE |
เปรียบเทียบเวกเตอร์โดยอิงตามมุมระหว่างเวกเตอร์ ซึ่งจะช่วยให้คุณวัดความคล้ายคลึงกันที่ไม่ได้อิงตามขนาดของเวกเตอร์ได้ เราขอแนะนำให้ใช้ DOT_PRODUCT กับหน่วยเวกเตอร์มาตรฐานแทนระยะทาง COSINE ซึ่งเทียบเท่าทางคณิตศาสตร์และเพิ่มประสิทธิภาพที่ดีกว่า ดูข้อมูลเพิ่มเติมได้ที่ความคล้ายคลึงกันของโคไซน์ |
DOT_PRODUCT |
คล้ายกับโคไซน์ แต่ได้รับผลกระทบจากขนาดของเวกเตอร์ โปรดดูที่ Dot Product เพื่อเรียนรู้เพิ่มเติม |