mongodb 3.2版本的文本搜索

本来还有一些内容想写的,但是主要是被这玩意给坑了一个早上了,觉得还是直接写出来比较好。

这里只是展示了文本搜索的方式,文本搜索更详细的内容之后会回来再更新这篇文章的。

首先,mongodb支持文本搜索,但是很不幸的消息就是不支持中文快哭了我下的是3.2.8,也不支持,默哀发火


但是这不是最坑的部分,还有比他更坑的,接下来会看到的。

首先使用shell开启文本搜索

db.adminCommand(
    {setParameter:1,
     textSearchEnabled:true})
接着就是针对字段创建文本索引了,下面先插入几组数据来做例子比较好

data1={
	'message':'hello world',
	'name':'yang'
}
data2={
	'message':'hello world again',
	'name':'qing'
}
data3={
	'message':'hello yang',
	'name':'xian'
}
data4={
	'message':'hello qing',
	'name':'guo'
}
db.blog.save(data4)
db.blog.save(data3)
db.blog.save(data2)
db.blog.save(data1)
接着就是针对'message'字段创建文本索引了

db.blog.ensureIndex(
{'message':'text'})
注意格式,{'message':'text'}中的'message'表示针对'message'字段创建索引,'text'表示创建的是文本索引

接下来可以使用

db.blog.getIndexes()
查看索引信息,如果出现这样的内容,表示索引创建成功了



重点是下面部分,至于'default_language':'french'是不小心被我玩坏了的,默认应该是english,可以在创建索引时指定

db.blog.ensureIndex(
	{message:'text'},
	{default_language:'french'}
)
接下来就是坑了我一早上的东西了,就是运行了如下命令


提示:no such command 'text'

然后就花了一个早上在搜解决方案,最终还是翻墙出去从谷歌上搜到了结果,text命令在不知道哪个的版本之后就被删除了

现在如果想要使用文本搜索可以使用如下形式

db.blog.find({
$text:{$search:'hello'}
})
可以看到从原来的runCommand()变成了find()函数,而且像$search一样的操作符还有如下这些

{
$text:{
$search:<String>,
$language:<String>,
$caseSensitive:<boolean>,
$diacriticSensitive:<boolean>}
}
一个一个来,$search表示搜索的文档内容,$language表示搜索文档时采用的语言,$caseSensitive,顾名思义,大小写敏感,即是否区分大小写,最后一个不用管,是发音。。。。。。。

上面的搜索结果如下


可以看到返回结果是标准的执行find()之后的结果,没有使用runCommand()的那么详细了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值