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

สร้าง Text Index สำหรับการค้นหาข้อความใน MongoDB

ใช้ createIndex() พร้อมระบุ "text" เพื่อสร้าง text index สำหรับการค้นหาข้อความ full-text search สร้างคอลเลกชันตัวอย่าง:

> db.demo331.insertOne({"Words":"This is a MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e521c35f8647eb59e562089") }
> db.demo331.insertOne({"Words":"THIS is a MongoDB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e521c36f8647eb59e56208a") }

แสดงข้อมูล:

> db.demo331.find();

สร้าง text index บนฟิลด์ Words:

> db.demo331.createIndex( {Words: "text" } );
{ "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }

ค้นหาข้อความ "MySQL":

> db.demo331.find({$text:{$search:"MySQL"}});

ผลลัพธ์:

{ "_id" : ObjectId("5e521c35f8647eb59e562089"), "Words" : "This is a MySQL" }

รายละเอียด Text Search

  • Text index รองรับการค้นหาหลายภาษา (ระบุ language ได้)
  • ใช้ $text และ $search ในการค้นหา
  • ค้นหาได้หลายคำ: {$search: "MySQL MongoDB"} (OR logic)
  • ค้นหาข้อความที่แน่นอน: {$search: "\"MySQL database\""}
  • ยกเว้นคำ: {$search: "MySQL -database"}
  • ดูคะแนนความเกี่ยวข้อง: { score: { $meta: "textScore" } } ใน projection
  • คอลเลกชันหนึ่งมีได้เพียง 1 text index เท่านั้น