mysql全文索引不支持中文的解决方案
时间:2016-09-03
前面我们已经知道了mysql全文检索的原理以及分词技巧,同时也知道mysql全文检索只支持英文,那么中文该如何来检索呢?其基本思路是把中文转换为英文,具体实现请看下面更多内容。
前面我们已经知道了mysql全文检索的原理以及分词技巧,同时也知道mysql全文检索只支持英文,那么中文该如何来检索呢?
其基本思路是把中文转换为英文,这里要用到两个表,一个是原始内容表,一个是原始内容转换为英文后的表(也叫索引表),它的搜索过程是这样的:先对 用户输入的信息进行分词,然后把这些词转换为英文,这样就可以利用mysql的全文检索对检索表进行匹配,得出id再从原始内容表查询。
下面来说下两种mysql中文检索的方案:
分别建一个内容表、一个内容索引表
CREATE TABLE IF NOT EXISTS `news` (
`id` int(8) NOT NULL auto_increment,
`content` varchar(100) default NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
/* http://www.manongjc.com/article/1444.html */
CREATE TABLE IF NOT EXISTS `news_index` (
`id` int(8) NOT NULL auto_increment,
`nid` int(8) NOT NULL,
`key` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
1、将中文转换为base64编码
$data = '我要坚持学php';
$data = base64_encode($data); //返回的结果就是编码后的字符串,这里省略了分词这个步骤
但是这种方式有个缺点,当用户搜索拼音的时候检索不出结果;
2、将中文转换为拼音
网上有很多将中文转换为拼音的源码,具体如何实现大家可以网上搜索《php中文转换成拼音代码》
- 【Java学习笔记之一】java关键字及作用
- 如何让所有实体类用相同名称的主键(很有力的问题,比如所有表实体主键都用ID)
- Codeforces 834D The Bakery【dp+线段树维护+lazy】
- memcached安装及.NET中的Memcached.ClientLibrary使用详解
- AtCoder Beginner Contest 069【A,水,B,水,C,数学,D,暴力】
- 2017"百度之星"程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】
- 洛谷 2634&&BZOJ 2152: 聪聪可可【点分治学习+超详细注释】
- 【经验总结】Java在ACM算法竞赛编程中易错点
- 【Java学习笔记之六】java三种循环(for,while,do......while)的使用方法及区别
- 类A是公共的,应在名为A.java的文件中声明错误
- 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])
- 【Java学习笔记之七】java函数的语法规则总结
- BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】
- BZOJ 3211: 花神游历各国【线段树区间开方问题】
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Educational Codeforces Round 81 (Rated for Div. 2) A. Display The Number
- Cypress系列(55)- 设置全局 URL
- Linux不同共享库中同名函数的处理
- Cypress系列(56)- 避免访问多个站点
- Cypress系列(57)- 删除等待代码
- DOM 又是个什么鬼?
- Cypress系列(58)- 停用条件测试
- 会python真的可以为所欲为——爆破前端加密登录
- XML 出来接客了!
- Cypress系列(59)- 实时调试和中断
- Python基础实战之猜年龄游戏
- 你以为 Servlet 过时了?
- 简述 Tomcat
- Python网络爬虫(实践篇)
- Python网络爬虫(浏览器伪装技术)