`
sqj820123
  • 浏览: 48815 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

数据库模糊搜索你用对了吗之探索百度搜索实现

阅读更多
  我记得我在上大学的第一堂数据库的时候,老师告诉我们,索引在数据库里面是一个非常重要的东西,用好了数据库索引,会让觉得事半功倍的效果,用不好数据索引,往往是吃力不讨好。所以在出来工作的三四年的时间里面,一直都在关键的字段上面建索引来提高查找速度,当然这个也得看情况,如果是需要快速插入的地方,建立索引的过程又往往是性能消耗很大。但是又一次的一个项目,确让引发了我对索引的重新理解。
具体的要求是这样,对某个字段进行模糊查询,数据类型为vchar2(100),数据量在100W左右,要求查询相关记录的时间为1秒左右,当时我觉得这个是一个很好做的事情,我就想提高速度那我就在这个字段上面建立索引吧,这样速度应该就会很快的。很快索引建立起来,程序写好了,当时当真正测试的时候,发现速度根本就没有我想象的那么快,是不是索引用的不对,按照常理,100W的数据,用索引查找应该就在1秒之内完成呀。后来查看了mysql的官网才知道 ,在对整形数据建立索引,速度是超快的,对vchar2建立索引,如果你采用%##%来进行查询,索引是不起作用的,也就是全表遍历。只是在##%的查询的时候,索引才有效的。 后来把搜索条件该为##%,果然速度超快。
   在这里突然想到,百度的搜索提示框,当你在百度搜索框里面输入某个字符的时候,你可以看到出来的下拉框提示信息都是以你输入的这个字符开头的,为什么会这样,这样符合逻辑吗? 其实不然。但是没有办法,如果出现不是这个字符开头的话,那么你必须采用%##%来进行查找,这样相当于全表扫描,速度肯定是无法接接受,所你看百度的提示搜索框都是以你输入的那个字符为开头的提示信息,就是可以用##%为搜索条件,来进行索引查询的。
    那么有没有%##%这样查找的解决方案呢?Lucene就是专门应对这样的情况,我在建立自己的网站 bushere.com的时候,开始的时候也是采用mysq4.0l的%##%来进行搜索条件,发现速度根本就没有办法接受,因为有100W的数据,你在里这么多数据集查找某个线路的信息,速度肯定无法接受,后来采用lucene来改进,当然也花费了不少的时间来学习,效果不错。100W的数据 在查找起点和终点的线路信息时候,基本是在1秒之内,速度很快。当然用户体验也就自然上去了。
所以我想说。有的时候,正理也会有不适合的场景,是自己的理解错误还是其他的,需要自己实践才能知晓。困难时时都会遇到,但是肯定有解决之道。
4
2
分享到:
评论

相关推荐

    Jquery 仿百度搜索引擎自动完成功能

    **jQuery 仿百度搜索引擎自动完成功能** 在Web开发中,提供高效的搜索体验是至关重要的。百度搜索引擎的自动完成功能就是一个很好的例子,它能够帮助用户快速找到他们想要搜索的内容,提高了用户体验。本文将深入...

    水箱液面模糊控制及Matlab仿真实现

    ### 水箱液面模糊控制及Matlab仿真实现 #### 一、引言 在工业生产和日常生活中,维持水箱液面高度的恒定是一项重要的技术需求。例如,在汽车散热器供水系统、给排水系统中的水箱,通常需要保持液面高度的稳定或者...

    最新版linux elasticsearch-7.12.0-linux-x86_64.tar.gz

    在搜索方面,Elasticsearch提供了全文检索、短语匹配、模糊搜索、多字段搜索等多种功能。此外,它的聚合功能允许你对数据进行统计分析,如求和、平均值、最大值、最小值,甚至复杂的桶聚合和过滤聚合。 最后,...

    Python3源码AI智能联系人管理程序

    2. **智能搜索**:支持模糊搜索、关键词搜索等多种搜索方式,提高搜索效率。 3. **智能分组**:根据联系人特征自动将联系人分配到不同的组别中,便于管理和查找。 4. **智能推荐**:通过分析用户的使用习惯,为用户...

    信息检索的很好的教案课件

    这个过程不仅包括搜索引擎的使用,还涉及对数据库、学术期刊、电子图书等多元信息源的理解和利用。 在课件中,你将学习到以下核心知识点: 1. **信息检索的基本概念**:了解信息、情报、数据之间的区别,以及什么...

    信息架构 超越Web设计(第4版).pdf

    你的产品需要搜索吗 169 搜索引擎详解 173 选择要索引什么 174 确定搜索区域 174 选择要建立索引的内容组件 179 搜索算法 182 模式匹配算法 182 其他方法 183 查询生成器 185 显示结果 186 要显示哪些内容组件 187 ...

    10套小程序带后端(供大家学习参考).zip

    小程序的优势在于其“即用即走”的理念,减少了用户对手机存储空间的需求,同时提供了一种快速触达服务的方式。开发者可以通过微信提供的开发工具,利用JavaScript、WXML(微信小程序标记语言)和WXSS(微信小程序...

    程序员面试秘籍.docx

    比如,模糊查询like语句的写法,以及分页查询的实现,MyBatis的分页插件原理等。 4. **ORM框架**:MyBatis的映射方式包括Map映射、注解映射和XML映射,面试中可能会要求解释它们是如何将SQL结果封装为目标对象并...

    数据挖掘在针灸临床治疗方案决策中的应用研究.pdf

    数据挖掘是一门计算机领域中的新兴学科,其核心是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但潜在有用的信息和知识的过程。数据挖掘技术在针灸临床治疗方案决策中的...

    云计算厂家分类.docx

    在云计算市场,很多厂家也开始探索新的商业模式和服务形态,比如通过开放平台吸引开发者构建生态系统,如腾讯开放平台、360开放平台等。同时,一些专注于特定领域的云服务提供商也崭露头角,如九洲云利用OpenStack...

    计算机人工智能技术研究进展与应用分析.pdf

    在人工智能技术的研究进展方面,当前的发展趋势包括对神经网络、并行网络、模糊处理等关键技术的探索。这些技术的发展是人工智能技术研究的重要方向。智能界面的研究目的是实现人机之间的高效沟通,而数据挖掘则关注...

    Mysql必知必会

    MySQL是世界上最流行的关系型数据库管理系统之一,掌握其基本操作对于任何IT从业者来说都是至关重要的。在本篇文章中,我们将深入探讨MySQL的一些核心概念和常用命令,帮助你更好地理解和使用这个强大的数据库工具。...

    高职信息化课程开发团队建设与项目管理策略研究.docx

    近年来,随着国家对教育信息化的高度重视,《国家中长期教育改革和发展规划纲要(2010-2020年)》明确提出要在2020年基本实现教育现代化的目标。在此背景下,高职院校的信息化课程建设显得尤为重要。然而,实践中...

    OpenCV快速入门

    对于人脸识别,可以先用`cv2.face`模块提取人脸特征,然后建立一个数据库存储不同人的特征向量,最后通过计算新图像中人脸特征与数据库中特征的相似度来判断是否为已知人物。 总的来说,OpenCV是一个强大的工具,它...

    EXCEL教学课件

    - **使用SUMIFS**: 对满足多个条件的单元格进行求和。 - **使用SUMPRODUCT**: 进行更复杂的条件求和操作。 ##### 2.9. 报表保护 - **单元格区域的保护**: 仅允许编辑某些单元格,其他单元格保持锁定状态。 - **隐藏...

    淘宝技术嘉年华峰会上的7月10日全部PPT下载

    【14:45 - 15:45】 高性能模糊查询内存数据库介绍 罗立刚(百度) 【15:45 - 16:45】 MySQL新技术探索与实践 彭立勋(阿里巴巴) 【17:00 - 18:00】 MySQL高可用圆桌讨论 主持人+嘉宾() iDataForum --- 分论坛二 ...

    财务大数据基础-技能训课后习题章节练习题带答案章末测试题复习题题库1-10章全.docx

    Baidu**:类似于Google,百度提供搜索等服务,但不是大数据处理工具。 - **D. Windows**:Windows操作系统也不是用于大数据处理的专用工具。 #### 二、简答题解析 **1. 大数据的4个V特征分别是什么?请举例说明和...

Global site tag (gtag.js) - Google Analytics