MySQL 英文全文搜索实现步骤:

先建立一个数据库,采用utf8编码

CREATE DATABASE search DEFAULT CHARACTER SET utf8 COLLATE

utf8_general_ci;

建立一个表,并建立FULLTEXT索引

CREATE TABLE articles (

id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

title VARCHAR(200),

body TEXT,

FULLTEXT (title,body)

);

往表中插入一些数据

INSERT INTO articles (title,body) VALUES

('MySQL Tutorial','DBMS stands for DataBase ...'),

('How To Use MySQL Well','After you went through a ...'),

('Optimizing MySQL','In this tutorial we will show ...'),

('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),

('MySQL vs. YourSQL','In the following database comparison

...'),

('MySQL Security','When configured properly, MySQL ...');

使用MATCH进行搜索

SELECT * FROM articles WHERE MATCH (title,body) AGAINST

('database');

MATCH()函数对于一个字符串执行资料库内的自然语言搜索。一个资料库就是1套1个或2个包含在FULLTEXT内的列。搜索字符串作为对AGAINST()的参数而被给定。对于表中的每一行,

MATCH() 返回一个相关值,即, 搜索字符串和

MATCH()表中指定列中该行文字之间的一个相似性度量。

在默认状态下,

搜索的执行方式为不区分大小写方式。然而,你可以通过对编入索引的列使用二进制排序方式执行区分大小写的全文搜索。

停止词

MySQL全文搜索有一些停止词,如:the, this,

to等,像下面的这条语句将搜索不到东西:

SELECT * FROM articles WHERE MATCH (title,body) AGAINST

('the');

如果你一定要想搜索他们,你需要自定停止词,方法如下:

change your my.ini like this:

[mysqld]

ft_min_word_len=3

ft_stopword_file="C:\\MySQL\\stop.txt"

在MySQL5.0中,只能使用默认的或"IN BOOLEAN MODE"

的search_modifier.

在MySQL5.1中,可以使用"IN BOOLEAN MODE,IN NATURAL LANGUAGE

MODE,IN NATURAL LANGUAL MODE WITH QUERY EXPANSION,WITH QUERY

EXPANSION" 的search_modifier.

下面我们来看看MySQL的中文全文搜索

在上面的表中插入一些中文数据如下:

INSERT INTO articles (title,body) VALUES

('中华','中华人民共和国'),

('标题','你好,我是好人');

为确保你的客户端的编码设置正确,先使用like语句进行搜索

select * from articles where body like '%中华%';

这样应该能搜索到一条记录,否则请检查你的sql,尤其是编码。

然后使用全文搜索语句进行搜索

SELECT * FROM articles WHERE MATCH (title,body) AGAINST

('中华');

运行着条语句你看到什么呢?你没能找到任何一条记录。原因是MySQL不能对中文进行分词处理,诸如汉语和日语这样的表意语言没有自定界符,所以MySQL的FULLTEXT也就无能为力了。

是否MySQL的中文全文搜索就真的不能实现了呢,答案是否定的,不过你得付出一定的代价,提供一些解决思路供参考:

1.

将中文映射为汉语拼音,汉语拼音之间用空格分隔,这样每个拼音就相当于一个英文单词,就可以使用MySQL的全文搜索功能。

2. 进行中文分词处理,开发MySQL的全文检索分词插件。

中文分词可以采用“二元分词法”,“多层分词法”等,具体设计和实现我会在以后的开发中慢慢告诉大家。

mysql全文索引中英文混合_MySQL 英文全文搜索和中文全文搜索 (FULLTEXT)相关推荐

  1. MySQL全文索引模糊查询_mysql全文索引之模糊查询

    旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息大家可以随时关注官网, ...

  2. mysql 中文分词搜索_php中文分词搜索

    本篇文章主要介绍php中文分词搜索,感兴趣的朋友参考下,希望对大家有所帮助. 1.4个文件(本站下载地址.)解压后,放到一个地方 eg:E:/wamp/scws 2.php.ini 中配置 exten ...

  3. mysql 全文索引和索引_mysql 普通索引和全文索引的区别

    展开全部 全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文.缘由是他从来都使用空格来作为分词的分隔62616964757a686964616fe78988e69d833133343362 ...

  4. mysql忽略中英文括号_MySQL查询删除方括号之间的文本?

    让我们首先创建一个表-create table DemoTable -> ( -> Name text -> ); 使用插入命令在表中插入一些记录-insert into DemoT ...

  5. mysql字段中有问号_Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法...

    首先,我用的是zip包的Mysql,直接解压使用的,网上说修改my.ini或者my.cnf在我机器上根本就找不到.但是my.ini这个东西是可以自己添加的.将mysql目录中的my-default.i ...

  6. iOS- 本地文本容错搜索引擎2--如何实现英文(英文首字母,汉语拼音)对中文的搜索?...

    1.前言 先闲说几句,最近北京的雾霾真是大,呛的我这攻城师都抗不住了.各位攻城师们一定要爱护好自己的身体!空气好时,少坐多动. 如果条件好的话,最好让你们BOSS搞个室内空气净化器.因为那几天一般的室 ...

  7. PHP 实现中文分词搜索功能

    中文分词介绍 众所周知,英语是基于单词的,单词和单词之间用空格隔开,而中文是基于单词的.句子中的所有单词都可以连接起来以描述含义.例如,英文句子"我是学生"将用中文表示" ...

  8. mysql全文搜索数字against_Mysql全文搜索match…against的用法

    前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索.假定数据表名为post,有三列:id.title.content.id是自增长序号,title是varchar,content是te ...

  9. mysql全文索引 版本_MySQL 全文索引实现简单版搜索引擎

    如 +-------+ | value | +-------+ | a | | about | | an | | are | | as | | at | | be | | by | | com | | ...

最新文章

  1. 编写里Linux命令解释器,linux基础教程试卷及答案
  2. .NET业务实体类验证组件Fluent Validation
  3. Error: XML: Cacti version does not exist.
  4. sklearn之pipeline:sklearn.pipeline函数使用及其参数解释之详细攻略
  5. 黑白两客进入页面(1)
  6. 全套安全从业人员必备工具(建议大家收藏这个帖子)
  7. python function if yield_成为Python大牛必须要掌握的高端语法——yield!
  8. 可遇不可求的Question之error: Failed dependencies: MySQLconflicts 错误篇
  9. Win10 如何调整任务栏高度
  10. 计算机操作技能竞赛系列方案,2019 年上学期计算机文字录入操作技能竞赛
  11. R语言生存分析之COX比例风险模型构建及亚组森林图绘制示例
  12. 梦工厂动画CEO:不迷信大数据,只迷信耐心与好故事
  13. python安装以及插件安装
  14. 2022年Java应届生面试之Spring框架基础知识
  15. 计算机专业有必要考研吗?
  16. 使用KCP 加速游戏消息,让全球玩家流畅联网
  17. mysql 编程算法_十大编程算法助程序员走上高手之路
  18. 二次吐血整理的 MAYA教程 快捷键大全,别收藏,直接粘贴拿走!
  19. java 通联支付接口_allinpay 通联支付接口实例
  20. html工地项目管理,工程项目管理系统Demo 进行在线体验

热门文章

  1. 关于转行中医途径的一点思索
  2. 公共WiFi到底该不该连?黑客教父龚蔚这么说
  3. python常用的内置对象有哪些_#【Python】【基础知识】【内置对象常用方法】
  4. C语言进阶--万字讲解带你学会字符串函数
  5. 单调区间之239.滑动窗口最大值
  6. 什么是 RADIUS 服务器?
  7. 生产制造|销售管理实时在线,业务效率直线提升
  8. stm32f103zet6驱动超声波之 USART
  9. mac怎么设置桌面提醒|mac系统提醒事项设置闹钟方法
  10. 最后一次——时间序列分析