我们在百度搜索中,可以看到与自己搜索度内容越相关度,排在越前面,这个需求可以在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. 2017-10-24 NOIP模拟赛

    括号序列 (bracket) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一个括号序列,但这个序列不一定合法. 一个合法的括号序列如下: ()是合法 ...

  2. python 变量,输入,输出

    目录 2.0 注释 2.1 变量 2.2 变量名命名规范 2.3 常量 2.4 输入 input 2.5 输出 print 2.6 关于开发工具 2.0 注释 python的注释方法 "&q ...

  3. 将图片至于jsp页面上(层)

    <div style="position: relative"> <span style="position: relative; top: 1px; ...

  4. asddf

    https://docs.saltstack.com/en/getstarted/fundamentals/index.html https://pypi.org/simple/cherrypy/ 安 ...

  5. 简单使用phpspider采集本博客文章内容

    采集流程 根据链接获取页面内容(curl)->获取需要采集的内容(可以通过正则.xpath.css选择器等方法进行筛选) <?php require_once 'phpspider/aut ...

  6. Boost多线程

    一.概述     线程是在同一程序同一时间内允许执行不同函数的离散处理队列,这使得在一个长时间进行某种特殊运算的函数在执行时不阻碍其他的函数时变得十分重要.线程实际上允许同时执行两种函数,而这两者不必 ...

  7. java中静态代码块的用法 static用法详解和static静态导入

    (一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...

  8. sql数据库发布、订阅同步方式操作

    Sql数据库发布订阅分为两个步骤:1.发布.2.订阅.首先在数据源数据库服务器上对需要同步的数据进行发布,然后在目标数据库服务器上对上述发布进行订阅. 一.发布. 发布需要用实际的服务器名称,不能使用 ...

  9. jQuery-How to Create a Basic Plugin

    官方插件:http://learn.jquery.com/plugins/basic-plugin-creation/ $.extend方法和$.fn.extend方法都可以用来扩展jQuery功能. ...

  10. Oracle子查询和多表查询

    多表查询需要用到表的连接 连接可以分为:(自行百度) 交叉连接(数字逻辑的笛卡尔积,不做解释) 等值连接 例如:select * from t_a, t_b where t_a.xx = t_b.xx ...