mongodb索引 全文索引之相似度查询

我们在百度搜索中,可以看到与自己搜索度内容越相关度,排在越前面,这个需求可以在mongodb中很简单度实现,mongodb的全文索引不仅可以返回相匹配的查询结果,而且可以告诉你查询结果与你的查询条件多么的匹配

 

全文索引 相似度
$meta操作符: {score:{$meta:'textScore'}}
写在查询条件后面可以返回返回结果的相似度,与sort一起使用,可以达到很好的实用效果。

 

查找
> db.test2.find()
{ "_id" : ObjectId("5b677bc820eccd3c60a316d9"), "article" : "aa bb cc dd ee" }
{ "_id" : ObjectId("5b677bcb20eccd3c60a316da"), "article" : "aa bb cc dd rr gg" }
{ "_id" : ObjectId("5b677bd220eccd3c60a316db"), "article" : "aa bb cc dd hh " }
{ "_id" : ObjectId("5b677bf320eccd3c60a316dc"), "article" : "aa bb cc" }
{ "_id" : ObjectId("5b677bf920eccd3c60a316dd"), "article" : "aa bb cc dd" }
有5条数据,用相似度匹配下
 
> db.test.find({$text:{$search:'aa bb'}},{score:{$meta:'textScore'}})
{ "_id" : ObjectId("5b677d6720eccd3c60a316e1"), "article" : "aa bb ff hh rr", "score" : 1.2 }
{ "_id" : ObjectId("5b677d5e20eccd3c60a316e0"), "article" : "aa bb dd ee", "score" : 1.25 }
{ "_id" : ObjectId("5b677d5a20eccd3c60a316df"), "article" : "aa bb cc", "score" : 1.3333333333333333 }
{ "_id" : ObjectId("5b677d4820eccd3c60a316de"), "article" : "aa bb", "score" : 1.5 }
后面返回个score,相似度最高的是1.5, aa bb,其他是1.25,1.2,这个结果不仅能够表明相似度,而且可以用来排序
> db.test.find({$text:{$search:'aa bb'}},{score:{$meta:'textScore'}}).sort({score:{$meta:'textScore'}})
{ "_id" : ObjectId("5b677d4820eccd3c60a316de"), "article" : "aa bb", "score" : 1.5 }
{ "_id" : ObjectId("5b677d5a20eccd3c60a316df"), "article" : "aa bb cc", "score" : 1.3333333333333333 }
{ "_id" : ObjectId("5b677d5e20eccd3c60a316e0"), "article" : "aa bb dd ee", "score" : 1.25 }
{ "_id" : ObjectId("5b677d6720eccd3c60a316e1"), "article" : "aa bb ff hh rr", "score" : 1.2 }

可以看到1.5排在最前面,运用这个,可以在自己的博客实现相似度查询
 
 

转载于:https://www.cnblogs.com/wzndkj/p/9428194.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值