ใช้ 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 เท่านั้น