ค้นหาข้อความแบบเต็ม MongoDB
สถานประกอบการของดัชนีการค้นหาข้อความแบบเต็มสำหรับแต่ละคำแสดงให้เห็นจำนวนและตำแหน่งของคำที่ปรากฏในบทความเมื่อค้นหาของผู้ใช้โปรแกรมค้นหาจะถูกจัดตั้งขึ้นในปีล่วงหน้าเพื่อหาดัชนีและผลการค้นหากลับไปที่วิธีการค้นหาของผู้ใช้
กระบวนการนี้จะคล้ายกับคำค้นหาด้วยคำพูดตารางพจนานุกรมกระบวนการเรียก
MongoDB รุ่น 2.4 จากการเริ่มต้นที่จะสนับสนุนการค้นหาข้อความแบบเต็มขณะนี้สนับสนุน 15 ภาษา (ชั่วคราวไม่สนับสนุนภาษาจีน) ดัชนีข้อความเต็ม
- เดนมาร์ก
- ดัตช์
- อังกฤษ
- ฟินแลนด์
- ฝรั่งเศส
- เยอรมัน
- ฮังการี
- อิตาลี
- นอร์เวย์
- โปรตุเกส
- โรมาเนีย
- รัสเซีย
- สเปน
- สวีเดน
- ตุรกี
เปิดใช้งานการค้นหาข้อความแบบเต็ม
หลังจาก MongoDB รุ่น 2.6 เปิดใช้งานโดยการค้นหาเริ่มต้นข้อความแบบเต็มถ้าคุณใช้รุ่นก่อนหน้านี้คุณจะต้องใช้รหัสต่อไปนี้เพื่อเปิดใช้งานการค้นหาข้อความแบบเต็ม:
>db.adminCommand({setParameter:true,textSearchEnabled:true})
หรือใช้คำสั่ง:
mongod --setParameter textSearchEnabled=true
สร้างดัชนีข้อความเต็ม
พิจารณาเอกสารดังต่อไปนี้โพสต์ชุดข้อมูลรวมทั้งเนื้อหาของบทความ (post_text) และป้ายกำกับ (แท็ก) ไปนี้:
{ "post_text": "enjoy the mongodb articles on w3cschool.cc", "tags": [ "mongodb", "w3cschool" ] }
เราสามารถสร้างดัชนีข้อความเต็มของสนาม post_text เพื่อให้เราสามารถค้นหาเนื้อหาของบทความนี้:
>db.posts.ensureIndex({post_text:"text"})
ใช้จัดทำดัชนีข้อความ
ตอนนี้ที่เราได้สร้างดัชนีข้อความเต็มของ post_text เราสามารถค้นหาคำสำคัญใน w3cschool.cc บทความ:
>db.posts.find({$text:{$search:"w3cschool.cc"}})
คำสั่งดังต่อไปนี้ส่งกลับข้อมูลเอกสารที่มีอยู่ w3cschool.cc คำหลักต่อไปนี้:
{ "_id" : ObjectId("53493d14d852429c10000002"), "post_text" : "enjoy the mongodb articles on w3cschool.cc", "tags" : [ "mongodb", "w3cschool" ] } { "_id" : ObjectId("53493d1fd852429c10000003"), "post_text" : "writing tutorials on w3cschool.cc", "tags" : [ "mongodb", "tutorial" ] }
หากคุณกำลังใช้รุ่นเก่าของ MongoDB คุณสามารถใช้คำสั่งต่อไปนี้:
>db.posts.runCommand("text",{search:" w3cschool.cc"})
ใช้จัดทำดัชนีข้อความสามารถปรับปรุงประสิทธิภาพในการค้นหา
นำจัดทำดัชนีข้อความ
ลบดัชนีข้อความที่มีอยู่ที่คุณสามารถใช้คำสั่งค้นหาเพื่อหาชื่อดัชนี:
>db.posts.getIndexes()
ได้รับชื่อของดัชนีดังกล่าวข้างต้นคำสั่งในกรณีนี้ดัชนีชื่อ post_text_text รันคำสั่งต่อไปนี้เพื่อลบดัชนี:
>db.posts.dropIndex("post_text_text")