`
greenmoon
  • 浏览: 48649 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用全文索引技术实现高效的like模糊查询功能

 
阅读更多

曾经在工作中遇到了一个难办的问题:我们有一个表大概有50万条数据,其中有一个字段是字符串类型需要实现like 模糊查询,我们使用的是mysql,虽然已经建立了索引,但是由于使用的是%a%模式匹配,很不给力,在大量并发下,数据库会挂掉,或者用户等到抓狂查询结果还不出来,后来想出了一个办法解决了这个问题,每次查询可以控制在15ms左右,效果很是不错。我们采用是全文索引技术:

1、使用lucene或者其他可以提供全文索引的nosql数据库,比如tt server或mongodb

2、把需要模糊查询的字段的字符串数据进行”全分词“,即把所有可能分词都枚举出来,比如abc,可以分成a,ab,abc,b,bc,c

3、把这些分好的term建立索引,如果使用lucene则需要建立一个分词器,能把传入的字符串分解成第2步描述的分词后建立索引,如果使用的是mongodb,则把分好的词存入一个字段并且建立索引,如果使用的tt server,那就简单了,直接建立qgram类型的索引即可,不需要自己去分词,我们最终就是使用tt server解决的问题

4、使用各自提供的查询语法进行查询,绝对高效

最终采用tt server的qgram方式实现,50多万条数据的模糊查询时间不超过15毫秒,有缓存的情况可能是0ms。

 

分享到:
评论

相关推荐

    Delphi数据库模糊查询功能的改进

    在进行模糊查询时,我们通常会使用SQL语句的LIKE操作符,配合通配符(% 和 _)来实现。 默认情况下,Delphi的模糊查询可能会遇到性能问题,尤其是在处理大量数据时。例如,使用“%”通配符在索引字段前可能导致全表...

    模糊查询在asp.net中的应用

    2. 全文搜索:更高级的模糊查询方法是利用数据库的全文索引功能,如SQL Server的Full-Text Search或Elasticsearch。全文索引可以对文本字段进行预处理,快速找到与查询词相关的记录。 二、ASP.NET中的模糊查询实现 ...

    基于SQL2005的全文索引技术.pdf

    全文索引技术与传统的索引技术(如关系数据查询、多维数据库查询以及基于XML的XQuery、XPath技术)存在显著不同,它处理的对象通常是超大数据量的文本数据,类似于结构化二进制数据上使用LIKE语句进行的模糊查询。...

    解决MySql大数据Like查询慢的问题

    7. **JAVA模拟LIKE**:如果在JAVA应用中遇到这个问题,可以使用JAVA代码实现预处理或模糊匹配算法,如Trie树、AC自动机等数据结构,先在应用程序层面进行过滤,减少传递到数据库的查询量。 在JAVA模拟LIKE方面,...

    sqlite 支持中文模糊查询

    对于大量数据和频繁的模糊查询,考虑创建全文索引或使用全文搜索引擎(如SQLite的FTS模块)可能会更高效。 总的来说,现代SQLite版本已经具备了支持中文模糊查询的能力,只要正确配置字符集并注意相关编码问题,就...

    分页+模糊查询(简单易学)

    为了提高模糊查询的效率,可以使用全文索引、前缀索引或者建立倒排索引等策略。 在实际应用中,分页与模糊查询经常结合使用。例如,在一个电商网站的搜索功能中,用户可能希望输入关键词(模糊查询)并按页查看结果...

    asp.net 模糊查询

    在ASP.NET开发中,模糊查询是一项重要的功能,它允许用户使用部分关键词来搜索数据库中的相关数据,提高了用户体验。本文将深入探讨如何在ASP.NET中实现C#编程的模糊查询技术。 首先,模糊查询通常涉及到SQL语句的...

    使用Mybatis框架的模糊查询

    在SQL中,模糊查询通常使用`LIKE`关键字来实现,允许我们在条件表达式中包含通配符,以匹配部分或全部字符串。常见的通配符有`%`(代表零个、一个或多个字符)和`_`(代表单个字符)。 在Mybatis中,实现模糊查询...

    参照工具数据库数据多列模糊查询

    例如,为`姓名`和`地址`创建全文索引后,可以使用`MATCH AGAINST`进行查询。 2. **使用索引**:确保用于模糊查询的列上有合适的索引,可以显著提高查询速度。但是,由于%通配符在前的模糊查询无法利用索引,因此应...

    模糊查询所需组件

    例如,对经常查询的字段建立全文索引,或者采用缓存策略减少数据库访问。 总的来说,模糊查询是IT领域不可或缺的技术,涉及前端用户交互、后端数据处理以及各种中间件的协同工作。理解并掌握模糊查询的实现原理和...

    Sql2008_全文索引详解

    与LIKE语句不同,全文索引不仅在速度上有显著优势,还能支持模糊匹配和同义词搜索,这对于处理新闻文章、报告或其他含有大量文本信息的数据库特别有用。 在全文索引中,有几个关键术语需要理解: 1. **全文索引**...

    MySQL Like模糊查询速度太慢如何解决

    - 全文索引:对于全文搜索需求,MySQL提供了全文索引功能,但不是所有情况都适用,且在某些版本或配置下可能受到限制。 - 使用正则表达式:`REGEXP`或`RLIKE`虽然不直接支持索引,但在某些场景下可能比`LIKE`更...

    Nhibernate的模糊查询

    在`IQueryOver`中,你可以使用`WhereRestriction.On()`方法配合`NHibernate.Criterion.Restrictions`类的`Like`方法来实现模糊查询。例如: ```csharp var query = session.QueryOver() .Where(Restrictions....

    分页、模糊查询

    为了优化性能,可以考虑使用全文搜索引擎如Elasticsearch,或者在数据库层面使用索引来加速模糊查询。 数据库方面,为了支持高效的分页和模糊查询,需要合理设计表结构,比如避免全表扫描,创建适当的索引,尤其是...

    页面传值 和模糊查询

    在实际应用中,可能需要考虑性能优化,如使用索引、全文搜索等技术,以提高模糊查询的效率。 结合这两个概念,比如在一个搜索功能中,用户在页面上输入模糊查询条件,通过表单或者Ajax提交到服务器,C#后端接收到...

    ssm分页及模糊查询源码下载

    总的来说,这个源码包可能包含了关于如何在SSM框架下实现高效、安全的分页和模糊查询功能的示例和改进。对于学习和理解SSM框架的开发实践,以及如何处理大数据量查询和防止SQL注入,都是非常有价值的参考资料。...

    SQL Server 2005 全文索引

    SQL Server 2005 的全文索引是其数据库管理系统中的一个重要特性,它允许用户对存储在text或ntext数据类型的列中的非结构化文本数据进行高效、灵活的搜索。全文索引通过创建一个预处理的索引,使得查询能够快速定位...

    分页模糊查询商品

    在数据库层面,可以利用全文索引、SQL的LIKE操作符或全文搜索引擎(如Elasticsearch)来支持模糊查询。 将分页和模糊查询结合到商品查询中,我们需要考虑以下几点: 1. **查询优化**:对于模糊查询,尤其是当查询...

    数据库实现 模糊版 jjkodada

    "模糊版"可能指的是数据库中的模糊查询功能,这是一种允许用户使用非精确匹配条件进行搜索的技术。本主题将深入探讨数据库实现的模糊查询及其在jjkodada项目中的应用。 数据库实现通常涉及到数据模型的设计、数据库...

    模糊查询代码

    1. **索引优化**:为提高模糊查询效率,可以创建特殊类型的索引,如全文索引、倒排索引等,支持高效的模糊匹配。 2. **查询语句优化**:避免全表扫描,合理使用索引,限制返回结果的数量,避免过度复杂的查询条件。...

Global site tag (gtag.js) - Google Analytics