การค้นหา 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[] |
ช่องที่จะแสดงผล หากเว้นว่างไว้ ระบบจะแสดงผลทุกช่อง หากต้องการแสดงผลเฉพาะชื่อเอกสาร ให้ใช้ |
CollectionSelector
คอลเล็กชันที่เลือก เช่น messages as m1
การแสดง JSON |
---|
{ "collectionId": string, "allDescendants": boolean } |
ช่อง | |
---|---|
collectionId |
รหัสคอลเล็กชัน เมื่อตั้งค่าแล้ว ให้เลือกเฉพาะคอลเล็กชันที่มีรหัสนี้ |
allDescendants |
เมื่อเป็นเท็จ ให้เลือกเฉพาะคอลเล็กชันที่เป็นรายการย่อยของ |
กรอง
ตัวกรอง
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ฟิลด์สหภาพ filter_type ประเภทตัวกรอง filter_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
compositeFilter |
ตัวกรองแบบผสม |
fieldFilter |
ตัวกรองในช่องเอกสาร |
unaryFilter |
ตัวกรองที่ใช้อาร์กิวเมนต์เพียงรายการเดียว |
CompositeFilter
ตัวกรองที่ผสานตัวกรองอื่นๆ หลายรายการโดยใช้โอเปอเรเตอร์ที่กำหนด
การแสดง JSON |
---|
{ "op": enum ( |
ช่อง | |
---|---|
op |
โอเปอเรเตอร์สำหรับการรวมตัวกรองหลายรายการ |
filters[] |
รายการตัวกรองที่จะรวม ข้อกำหนด
|
ผู้ประกอบธุรกิจ
โอเปอเรเตอร์ตัวกรองผสม
Enum | |
---|---|
OPERATOR_UNSPECIFIED |
ไม่ระบุ ต้องไม่ใช้ค่านี้ |
AND |
ต้องใช้เอกสารตามตัวกรองที่รวมกันทั้งหมด |
OR |
ต้องใช้เอกสารเพื่อให้เป็นไปตามตัวกรองที่รวมกันอย่างน้อย 1 รายการ |
FieldFilter
ตัวกรองในช่องที่เฉพาะเจาะจง
การแสดง 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 |
ค่าของ ข้อกำหนด
|
UnaryFilter
ตัวกรองที่มีตัวถูกดำเนินการเดี่ยว
การแสดง 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 |
มากไปน้อย |
FindNearest
การกำหนดค่าการค้นหาเพื่อนบ้านที่ใกล้ที่สุด
การแสดง JSON |
---|
{ "vectorField": { object ( |
ช่อง | |
---|---|
vectorField |
ต้องระบุ ฟิลด์เวกเตอร์ที่มีการจัดทำดัชนีสำหรับค้นหา ส่งคืนได้เฉพาะเอกสารที่มีเวกเตอร์ที่มีมิติข้อมูลตรงกับ queryVector |
queryVector |
ต้องระบุ เวกเตอร์การค้นหาที่เรากำลังค้นหา ต้องเป็นเวกเตอร์ขนาดไม่เกิน 2,048 มิติข้อมูล |
distanceMeasure |
ต้องระบุ ต้องระบุมาตรการวัดระยะทาง |
limit |
ต้องระบุ จำนวนเพื่อนบ้านที่ใกล้ที่สุดที่จะส่งคืน ต้องเป็นจำนวนเต็มบวกที่ไม่เกิน 1000 |
DistanceMeasure
ระยะทางที่ใช้เมื่อเปรียบเทียบเวกเตอร์
Enum | |
---|---|
DISTANCE_MEASURE_UNSPECIFIED |
ไม่ควรตั้งค่า |
EUCLIDEAN |
วัดระยะห่าง EUCLIDEAN ระหว่างเวกเตอร์ ดู Euclidean เพื่อเรียนรู้เพิ่มเติม |
COSINE |
เปรียบเทียบเวกเตอร์ตามมุมระหว่างเวกเตอร์ ซึ่งช่วยให้คุณสามารถวัดความคล้ายคลึงที่ไม่ได้อิงตามขนาดของเวกเตอร์ได้ เราขอแนะนำให้ใช้ DOT_PRODUCT กับเวกเตอร์มาตรฐานหน่วยแทนระยะทาง COSINE ซึ่งเทียบเท่าทางคณิตศาสตร์ได้แต่มีประสิทธิภาพดีกว่า ดูข้อมูลเพิ่มเติมที่ความคล้ายคลึงกันของโคไซน์ |
DOT_PRODUCT |
คล้ายกับโคไซน์แต่ได้รับผลกระทบจากขนาดของเวกเตอร์ ดู Dot Product เพื่อเรียนรู้เพิ่มเติม |