热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB中文的全文索引

MongoDB从3.2版本以后添加了对中文索引的支持:官网链接:https:docs.mongodb.commanualreferencetext-se

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 
版权声明:本文为博主原创文章,转载请附上博文链接!


推荐阅读
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • 在使用 Ant Design 的 SubMenu 组件时,遇到无法读取 'isRootMenu' 属性的 TypeError。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 本文旨在探讨如何撰写高效且全面的工作总结,特别是针对数据库管理、Java编程及Spring框架的学习与应用。文章通过实例分析,帮助读者掌握工作总结的写作技巧,提高个人工作汇报的质量。 ... [详细]
  • 字符、字符串和文本的处理之Char类型
    .NetFramework中处理字符和字符串的主要有以下这么几个类:(1)、System.Char类一基础字符串处理类(2)、System.String类一处理不可变的字符串(一经 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 在学习了Splay树的基本查找功能后,可能会觉得它与普通的二叉查找树没有太大的区别,仅仅是通过splay操作减少了时间开销。然而,Splay树之所以被誉为“序列之王”,主要在于其强大的区间操作能力。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
author-avatar
1hhhhhhhhhhh0_196_217
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有