MongoDB 中文的全文索引

MongoDB 从3.2 版本以后添加了对中文索引的支持: 
官网链接:https://docs.mongodb.com/manual/reference/text-search-languages/ 
下面就举例来看一下MongoDB 的中文索引是怎么样的? 
创建一个集合textIndexTest: 
插入下面四条数据:

db.textIndexTest.insert({author:"杜甫",title:"绝句",article:"两个黄鹂鸣翠柳,   一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船。"})
1
db.textIndexTest.insert({author:"李白",title:"静夜思",article:"床前明月光,疑是地上霜。 举头望明月,低头思故乡。"})
1
db.textIndexTest.insert({author:"张 王",title:"你好",article:"测试数据"})
1
db.textIndexTest.insert({author:"李贺",title:"李凭箜篌引",article:"吴丝蜀桐张高秋,空山凝云颓不流。 江娥啼竹素女愁,李凭中国弹箜篌。 昆山玉碎凤凰叫,芙蓉泣露香兰笑。 十二门前融冷光,二十三丝动紫皇。 女娲炼石补天处,石破天惊逗秋雨。 梦入神山教神妪,老鱼跳波瘦蛟舞。 吴质不眠倚桂树,露脚斜飞湿寒兔。"})```
1
对textIndexTest 的作者创建索引:

db.textIndexTest.createIndex( { author: "text", description: "text" } )
1
注释:

db.collection.ensureIndex(keys, options) 这个语句在3.0被废弃掉, db.collection.ensureIndex() 现在是db.collection.createIndex()的一个别名 
都是创建一个索引 如果索引不存在。

查看一下索引

db.textIndexTest.getIndexes()
1
接下来用索引搜索: 
搜索李白的db.textIndexTest.find({text:{text:{search:”李白”}}) 果: 
{ “_id” : ObjectId(“5ae13997ae983fb3f92c9f5b”), “author” : “李白”, “title” : “静夜思”, “article” : “床前明月光,疑是地上霜。 举头望明月,低头思故乡。” } 
单搜李白的“李”字

db.textIndexTest.find({$text:{$search:"李"}}) 
1
运行无结果。 
单搜一个“王”字

db.textIndexTest.find({$text:{$search:"王"}}) 
1
出来了: 
{ “_id” : ObjectId(“5ae14037ae983fb3f92c9f5d”), “author” : “张 王”, “title” : “你好”, “article” : “测试数据” } 
不难看出: 
MongoDB中文全文索引建立方式与英文的简历几乎相同 是根据词(英文单词)的方式建立的。 
如果一个值里面有多个值 则需要按空格方式隔开,”张 王” 系统则认为是两个词。 
感觉MongodB的中文全文索引沒有想象中的强大。想要实现中文模糊搜素 
可以用elasticsearch或者Sphinx,或者lucene
--------------------- 
作者:中国流浪猫 
来源:CSDN 
原文:https://blog.csdn.net/a41888313/article/details/80091935 
版权声明:本文为博主原创文章,转载请附上博文链接!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值