全文索引


准备工作

这节我们先建立一个集合(collections)-info,然后插入一小段文章,作用就是为建立全文索引提供数据,当然我们不再建立百万级数据,我们只是看一下效果。

db.info.insert({contextInfo:"I am a programmer, I love life, love family. Every day after work, I write a diary."})
db.info.insert({contextInfo:"I am a programmer, I love PlayGame, love drink. Every day after work, I playGame and drink."}

当然这很简单,再次强调这只是文章需要,实际工作中这么简单的数据没必要建立全文索引。

建立全文索引

db.info.ensureIndex({contextInfo:'text'})

需要注意的是这里使用text关键词来代表全文索引,我们在这里就不建立数据模型了。

全文索引查找

建立好了全文索引就可以查找了,查找时需要两个关键修饰符:

  • $text:表示要在全文索引中查东西。
  • $search:后边跟查找的内容。
db.info.find({$text:{$search:"programmer"}})

查找多个词

全文索引是支持多个次查找的,比如我们希望查找数据中有programmer,family,diary,drink的数据(这是或的关系),所以两条数据都会出现。

db.info.find({$text:{$search:"programmer family diary drink"}})

如果我们这时候希望不查找出来有drink这个单词的记录,我们可以使用“-”减号来取消。

db.info.find({$text:{$search:"programmer family diary -drink"}})

转义符

全文搜索中是支持转义符的,比如我们想搜索的是两个词(love PlayGame和drink),这时候需要使用\斜杠来转意。

db.info.find({$text:{$search:"\"love PlayGame\" drink"}})

文章作者: 技术潘
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 技术潘 !
 上一篇
用户的创建、删除与修改 用户的创建、删除与修改
安装好MongoDB时,它为我们默认开了一个最高管理权限方便我们管理数据库,我们可以用mongo链接数据库,就是这个原理。但在实际开发中并一般不能使用这个用户,因为大家都知道和最高权限的原因,安全性和可靠性都不适合,所以要对MongoDB的用户进行管理。
2019-06-03
下一篇 
复合索引 复合索引
复合索引的使用和语法,包括复合索引的建立、删除和一些使用索引的小窍门。
2019-05-29
  目录