目前,MongoDB 支持大约 15 种语言的全文索引,例如 danish、dutch、english、finnish、french、german、hungarian、italian、norwegian、portuguese、romanian、russian、spanish、swedish、turkish 等。
最初,全文检索是一个实验性功能,但 MongoDB 在 2.6 版本以后默认开启了此功能,如果您使用 2.6 之前的版本,则需要使用以下代码来启用全文检索:
>db.adminCommand({setParameter:true, textSearchEnabled:true})
或者使用命令:
mongod --setParameter textSearchEnabled=true
假如我们在 posts 集合中插入以下文档:
> db.posts.insert([ ... { ... "post_text": "enjoy the mongodb articles on bianchengbang", ... "tags": ["mongodb", "bianchengbang"] ... }, ... { ... "post_text" : "writing tutorials on mongodb", ... "tags" : [ "mongodb", "tutorial" ] ... } ... ]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
若要在 post_text 字段上创建全文索引,以便我们可以直接搜索字段中的内容,可以像下面这样:
> db.posts.createIndex({post_text:"text"}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
使用全文索引可以提高搜索效率,前面我们已经在 post_text 字段上创建了全文索引,下面通过一个示例来演示全文索引的使用。
【示例】搜索 post_text 字段中包含关键词“bianchengbang”的所有文档:
> db.posts.find({$text:{$search:"bianchengbang"}}).pretty() { "_id" : ObjectId("6041dfc3835e4aa734b591df"), "post_text" : "enjoy the mongodb articles on bianchengbang", "tags" : [ "mongodb", "bianchengbang" ] }
如果您使用的是旧版本的 MongoDB,则可以使用以下命令:
>db.posts.runCommand("text",{search:"bianchengbang"})
要删除现有的全文索引,首先我们需要使用 getIndex() 方法来查看索引的名称,如下所示:
> db.posts.getIndexes() [ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "bianchengbang.posts" }, { "v" : 2, "key" : { "_fts" : "text", "_ftsx" : 1 }, "name" : "post_text_text", "ns" : "bianchengbang.posts", "weights" : { "post_text" : 1 }, "default_language" : "english", "language_override" : "language", "textIndexVersion" : 3 } ]
通过运行结果可以看出,我们前面创建的索引的名称为“post_text_text”,接下来就可以使用 dropIndex() 方法来删除指定的索引了,如下所示:
> db.posts.dropIndex("post_text_text") { "nIndexesWas" : 2, "ok" : 1 }
文章名称:MongoDB全文检索
转载源于:http://www.csdahua.cn/qtweb/news39/454539.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网