`

mysql 全文模糊查找 便捷解决方案

阅读更多
mysql 全文模糊查找 便捷解决方案
2013/6/14 by 半仙 alxw4616@Msn.com

目的: 项目需求实现模糊查找.
原则: 查询不能超过 1秒.

问题: 目标表中有超过1千万条记录. 使用like '%str%' 进行模糊查询无法达到性能需求.
解决方案: 使用mysql全文索引.
1.全文索引 : MySQL支持全文索引和搜索功能。MySQL中的全文索引类型FULLTEXT的索引。  FULLTEXT 索引仅可用于 MyISAM 表;他们可以从CHAR、 VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或 CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引, 其速度比把资料输入现有FULLTEXT索引的速度更为快。
2.语法     :  select * from test where match(content) against('"iphone"' IN BOOLEAN MODE)
IN BOOLEAN MODE  布尔全文搜索(详细说明见:http://dev.mysql.com/doc/refman/5.1/zh/functions.html#fulltext-search);

新的问题: 1. 在mysql 中全文索引 不支持中文分词.
2. 在使用全文索引时 不支持模糊查找.
//table
id content
1 iphone
2 iphone5
3 wphone5
select * from test where match(content) against('"iphone"' IN BOOLEAN MODE)
//只能得到
1 iphone
//不能模糊找到
2 iphone5
3 wphone5

解决方案:
1.微调MySQL全文搜索 : 修改my.cnf () (linux下使用 whereis my.cnf 查找该文件 )
[mysqld]
# 不使用停止词
ft_stopword_file = ''
# 最少单词 为1个字的英文
ft_min_word_len = 1

重启mysql(linux:service mysql restart)
重建索引 REPAIR TABLE tableName QUICK (tableName 表名)
2. 入库时使用 unicode 编码 将所有字符编码
// 将 phone 编码 >> \u0070\u0068\u006f\u006e\u0065
//table
id content
1 \u0069\u0070\u0068\u006f\u006e\u0065
2 \u0069\u0070\u0068\u006f\u006e\u0065\u0035
3 \u0077\u0070\u0068\u006f\u006e\u0065\u0035

select * from test where match(content) against('"\\u0070\\u0068\\u006f\\u006e\\u0065"' IN BOOLEAN MODE)
输出
1 \u0069\u0070\u0068\u006f\u006e\u0065
2 \u0069\u0070\u0068\u006f\u006e\u0065\u0035
3 \u0077\u0070\u0068\u006f\u006e\u0065\u0035
再次 解决 即可得到想要的结果
1 iphone
2 iphone5
3 wphone5

最终问题:
1. 数据在入库时 相当示扩容了6位.
2. 当 字段长度不够被截断后,所存储的信息输出时会无法转码
  • unicode.rar (1.8 KB)
  • 描述: php unicode 工具类
  • 下载次数: 4
分享到:
评论

相关推荐

    java+mysql图书馆管理系统

    《Java + MySQL 图书馆管理系统详解》 在信息化时代,图书馆管理系统的存在为图书的借阅、归还、查询提供了极大的便利。...无论是对于小型图书馆还是大型学术机构,都能提供高效、便捷的图书管理解决方案。

    基于Java+MySQL设计的(GUI)班级信息管理系统【100011101】

    本项目“基于Java+MySQL设计的GUI班级信息管理系统”是一个典型的信息管理系统的实例,它结合了Java编程语言、MySQL数据库以及图形化的用户交互界面,为班级信息管理提供了高效、便捷的解决方案。 首先,让我们来...

    基于ssm+mysql智能图书馆导航系统源码数据库.doc

    该系统旨在利用先进的信息技术手段,如SSM框架和MySQL数据库等,实现图书资源的有效管理和便捷检索。 ### SSM框架 SSM框架是由Spring、Spring MVC和MyBatis三个开源框架组合而成,被广泛应用于Java Web应用开发中...

    Coreseek 全文搜索服务器2.5

    **Coreseek 全文搜索服务器2.5**是一款基于开源全文搜索引擎Sphinx进行修改和增强的产品,它在原生Sphinx的基础上提供了更多的功能和优化,旨在为企业和开发者提供更高效、更灵活的全文检索解决方案。在GPL协议下,...

    网页版查找文件

    网页版查找文件是一种在网页环境中实现文件搜索的功能,它允许用户在互联网上或者特定的网站平台上快速找到所需的内容。...通过不断优化和创新,我们可以创建出更智能、更便捷的文件搜索解决方案。

    基于PHP的excel 通用图书信息模糊检索系统 PC网页版.zip

    总的来说,这个项目为图书管理提供了一个便捷的解决方案,特别是对于那些拥有大量Excel格式图书数据的机构或个人。通过理解和定制这个系统,用户可以根据自己的需求扩展功能,例如添加图书分类、借阅管理、用户登录...

    图书管理系统

    综上所述,《图书管理系统》是一个采用Java Web技术和MySQL数据库的实用工具,其功能全面、架构清晰,为图书管理提供了有效的数字化解决方案。在实际应用中,可以根据具体需求进行定制和优化,以满足不同规模图书馆...

    企业图书管理系统

    系统采用了C#作为主要开发语言,结合MySql数据库进行数据存储,旨在提供全面的图书管理解决方案,包括权限控制、用户管理、图书资料录入、借阅与归还等功能。 在C#编程环境下,开发者可以利用.NET Framework提供的...

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

    - 解决方案:采用响应式设计,确保在不同设备上都能有良好的显示效果;同时,简化操作流程,降低用户的学习成本。 #### 总结 Python3源码AI智能联系人管理程序是一款集成了多种先进技术和算法的应用程序,它不仅...

    PHP图书管理系统.rar

    - **查询功能**:按书名、作者、出版社等条件快速查找图书,支持模糊搜索。 - **报表统计**:生成各类统计报表,如借阅量、热门图书等,辅助决策。 4. **核心技术** - **PHP**:作为服务器端脚本语言,PHP负责...

    基于python模板的药品名称识别系统源码数据库论文.doc

    综上所述,基于Python的药品名称识别系统结合了计算机科学、数据库技术和医学知识,为公众提供了一个便捷、高效的购药解决方案。这一创新设计不仅在疫情期间发挥了重要作用,而且具有长远的社会价值,体现了Python在...

    图书管理系统 C# 源代码

    总的来说,这个图书管理系统结合了C#的编程优势和SQL数据库的强大数据管理能力,提供了全面的图书信息解决方案。对于学习和理解C#编程、SQL数据库设计以及实际项目开发流程,这个源代码是一个非常有价值的参考资料。

    学生信息管理系统(SQL2000+VS2005平台),C#

    本系统采用C#编程语言,并结合SQL Server 2000数据库管理系统,旨在提供一套高效、便捷的学生信息管理解决方案。以下是关于这个项目的一些关键知识点和实现细节。 首先,C#是微软公司推出的一种面向对象的编程语言...

    SpringBoot+Vue房产销售系统开题报告.doc

    2. 数据库:选择MySQL作为数据存储解决方案,因其开源、速度快、可靠性高,适用于非事务化处理场景。 3. 前端技术:采用Vue.js进行界面设计和交互实现,Vue.js是轻量级的前端框架,易于学习和使用,能有效提高开发...

    超市收银系统(毕业设计) 1.0.rar

    首先,该系统的核心目标是为小型超市提供一个便捷、高效的收银解决方案。系统分为四大模块,每个模块都对应着日常收银操作的关键环节: 1. 添加商品:这是收银系统的基础,管理员可以通过这个功能录入商品的基本...

    基于HTML5的O2O超市系统的设计与实现.doc

    【基于HTML5的O2O超市系统的设计与实现】是一个专为中小型超市打造的电子商务解决方案,它融合了线上购买和线下配送服务,旨在为商家和消费者提供便捷的交易体验。系统充分利用HTML5技术,确保在PC端和移动端的兼容...

    PHPmyCDMouse-开源

    综上所述,PHPmyCDMouse是针对CD/DVD管理的开源解决方案,结合了PHP、Apache和MySQL的优势,为用户提供了高效、便捷的离线文件检索服务。无论是个人还是组织,都能从中受益,提升数据管理的效率。

Global site tag (gtag.js) - Google Analytics