Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การสร้างดัชนีเพื่อรันคิวรีซับซ้อนบนฟิลด์ที่ไม่มีดัชนีใน MongoDB

เพิ่มประสิทธิภาพคิวรีซับซ้อนด้วย Text Index

เมื่อต้องการค้นหาข้อความในฟิลด์ที่ไม่มีดัชนี ให้สร้าง Text Index เพื่อให้การค้นหาด้วย $text และ $search ทำงานได้อย่างมีประสิทธิภาพ

ตัวอย่างสร้างข้อมูลและ Text Index

> db.demo400.insertOne({ SubjectName: "Java Spring" });
> db.demo400.insertOne({ SubjectName: "Spring Hibernate" });
> db.demo400.insertOne({ SubjectName: "Java Hibernate" });
> db.demo400.createIndex({ SubjectName: "text" });

แสดงข้อมูลทั้งหมด

> db.demo400.find();

ผลลัพธ์:

{ "_id": ObjectId("..."), "SubjectName": "Java Spring" }
{ "_id": ObjectId("..."), "SubjectName": "Spring Hibernate" }
{ "_id": ObjectId("..."), "SubjectName": "Java Hibernate" }

คำสั่งค้นหาข้อความ "Spring" ด้วย Text Search

> db.demo400.find({ $text: { $search: "Spring" } });

ผลลัพธ์ที่ได้

{ "_id": ObjectId("..."), "SubjectName": "Spring Hibernate" }
{ "_id": ObjectId("..."), "SubjectName": "Java Spring" }

คุณสมบัติของ Text Index

  • ค้นหาคำได้แม้อยู่กลางประโยค (ไม่ใช่แค่ prefix)
  • รองรับ stemming (ค้นหา "running" เจอ "run")
  • รองรับ phrase search ด้วยคำพูด: $search: "\"Java Spring\""
  • สามารถกำหนด weight ให้ฟิลด์ต่างๆ ได้
  • มีข้อจำกัด: 1 คอลเลกชันมี Text Index ได้สูงสุด 1 ตัว

สร้าง Text Index หลายฟิลด์

> db.demo400.createIndex({ SubjectName: "text", Description: "text" });

จะค้นหาได้ทั้ง 2 ฟิลด์พร้อมกัน