我们在百度搜索中,可以看到与自己搜索度内容越相关度,排在越前面,这个需求可以在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排在最前面,运用这个,可以在自己的博客实现相似度查询
 
 

mongodb索引 全文索引之相似度查询的更多相关文章

  1. mongodb索引 全文索引使用限制

    全文索引非常强大,但是同样存在很多限制,我们来看以下去全文索引的使用限制: 1.每次查询,只能指定一个$text查询 2.$text查询不能出现在$nor查询中 之前没有接触过$nor查询,$nor查 ...

  2. mongodb索引 全文索引

    全文索引,也叫文本索引,平时,我们百度的搜索,比如api文档的搜索,这种全局的索引就可以使用全文索引实现 全文索引:对字符串与字符串数组创建全文可搜索对索引 使用情况:比如有一个数据集合,存储了用户的 ...

  3. MongoDB 索引 explain 分析查询速度

    一.索引基础索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快.MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧.下面是创建索引 ...

  4. mongodb索引--1亿条记录的查询从55.7秒到毫秒级别<补充版>

    从头开始,验证mongodb的索引的好处.(window7环境下) 下载mongodb服务器,并解压到d盘,并使用以下命令启动 mongod --dbpath D:\mongodb\data mong ...

  5. Mongodb索引和执行计划 hint 慢查询

    查询索引 索引存放在system.indexes集合中 > show tables address data person system.indexes 默认会为所有的ID建上索引 而且无法删除 ...

  6. MongoDB索引的种类与使用

    一:索引的种类 1:_id索引:是绝大多数集合默认建立的索引,对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段2:单键索引: 1.单键索引是最普通的索引 2.与_id索引不同,单键索 ...

  7. 3、mongoDB索引

    创建索引: db.imooc_collection.getIndexes() 查看索引情况 db.imooc_collection.ensureIndex({x:1}) 创建索引,x:1代表正向排序, ...

  8. MongoDB索引介绍

    MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索 ...

  9. mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)

    mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...

随机推荐

  1. Spring MVC 基于URL的映射规则(注解版)

    好几天没有跟进Spring MVC的学习了,之前看了点源码都忘的差不多了.这次就跟着之前的问题,继续总结下Spring MVC中的小知识. 关于SpringMVC的小demo可以参考这里! url-p ...

  2. 解决LINUX下SQLPLUS时上下左右键乱码问题

    window下的sqlplus可以通过箭头键,来回看历史命令,用起来非常的方便. 但是在linux里就没有这么方面了,错了一个命令,我们必须重新敲一次,辛苦了手指头叻. 看到一个文章,很方便的一招,给 ...

  3. ssh-ssh整合(Struts2+Sprinig+hibernate)

    在之前呢我们已经讲解过ssm以及ssm2的整合开发,今天我们进行ssh的整合,在之前已经有一篇整合ssh的文章,那是基于注解开发的,今天讲解的为基于配置文件注入方式进行开发.思路:spring管理hi ...

  4. EOS 数据签名与公匙验证代码用例

    本文编写了一个小例子诠释了EOS是如何对数据签名与校验的,通过本文可以理解了签名的重要性和数据的不可篡改性. 系统: ubuntu  版本为EOS1.1.1 注:因为本文的程序是把EOS里面的钱包和f ...

  5. CoinEye PRIVACY POLICY

    PRIVACY POLICY First, welcome to use the app Thank you for using our products and services ("Se ...

  6. 小程序外部向组件内部传递externalClasses -- 传入样式wxss

    1.组件的JS添加配置 // 外部传入class类 externalClasses:['my-class'], 2.组件的wxml写法: 3.调用的页面 4.调用页面的wxss: 由于小程序的限制必须 ...

  7. jmeter 正则获取参数集合和ForEach控制器结合使用(转)

    怎么把第一个请求获取的返回的多个id,在第二个请求中逐个以单个id作为请求参数来请求? 为了解决这个问题,模拟下该场景 1.请求www.163.com 主页,获取响应中的所有数字,这个获取的数字集合暂 ...

  8. BZOJ 4892 [Tjoi2017]dna 哈希+二分

    自己简直是傻死了...对于位置想错了... 二分出来的是LCP长度$+1$,即每一次二分出来的最后一个点都是失配的,而就算失配也会跳过这个点:所以当$k<=3$且模式串$s2$的指针$>l ...

  9. POJ2758 Checking the Text 哈希

    注意到插入次数挺少的,于是每次暴力重构,然后哈希+二分 #include<cstdio> #include<iostream> #include<algorithm> ...

  10. 11 Lists

    1       Lists 1.1  定义并访问Lists List list = new List[].也可以使用泛型.访问list中的元素,可以使用list.get(i) or list[i]. ...