mongodb索引---全文索引

文本索引能解决快速文本查找的需求,比如有一个博客文章集合,需要根据博客的内容来快速查找,则可以针对博客内容建立文本索引。
MongoDB支持在字符串内容上执行文本检索的查询操作。为了执行文本检索,它使用“text index”和“$text”操作符。
注意:一张表,只能有一个全文索引

1 准备测试数据

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

2 测试索引

//建全文索引
db.textIndexTest.createIndex( { title:"text",article: "text" } )

//精确检索
db.textIndexTest.find({$text:{$search:"床前明月光"}}).explain()

//词语排除
//使用横杠(- )字符,将该字符放在不要的词语前,查询时可排除该词语。
db.textIndexTest.find({$text:{$search:"床前明月光 -山寨"}}).explain()

//返回相关性分数,并按分数排序
db.textIndexTest.find(
    { $text: { $search: "床前明月光" } },
    { score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } })

参考博文
https://zhuanlan.zhihu.com/p/100820537

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值