我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

全文搜索是 MySQL 中的一种索引。索引用于表,可以在创建表时或稍后使用 ALTER TABLE 或 INDEX 在 CHAR 或 TEXT 列上创建。对于大型数据库,将数据加载到没有索引的表中,然后使用 ALTER TABLE(或 INDEX)创建索引将非常快。将数据加载到已有索引的表中将非常慢。

1. 使用 MySQL 全文搜索的前提条件

表类型必须是

全文搜索的字段类型必须是char,text

2.建立全文搜索初步配置

由于MySQL默认配置是索引单词的长度为4,如果要支持汉字,首先要改掉这个。

*Unix 用户需要修改 f,通常这个文件在 /etc/f 中,如果找不到,先用 find / -name 'f' 搜索

在 [] 空格内添加:

= 2

其他属性包括

=gbk

= /home/soft/mysql/share/mysql/-gbk.txt

= /home/soft/mysql/share/mysql/-gbk.txt

稍微解释一下:

代表字典的字符集,目前支持较好的有(UT​​F-8、gbk、big5)

它是一个单词列表文件,每行包含一个单词及其频率(由几个制表符或空格分隔,用于消除歧义)

表示过滤掉未索引的词汇,每行一个。

添加到索引中的单词的最小长度,默认为4,为了支持中文字符改为2

3.建立全文搜索

创建表时使用关键字标识字段,使用ALTER TABLE(或INDEX)为现有表创建索引。

索引在();

4. 使用全文搜索

在WHERE子句中使用MATCH函数,使用标识符为索引关键字,而IN MODE只需要包含关键字,不管其位置或者是否是起始位置。

* 来自匹配(标签)('旅游' IN MODE);

5.详细说明请访问MySQL官方网站

这是针对 MySQL 5.1 的,不过 4.X 也可以作为参考,基本一样。我使用的是 MySQL 4.1。

MySQL很早就支持全文索引了,目前它是一种只适用于表的索引类型,而且对索引列的数据类型有限制,只能是char、、、text这三种类型的组合。你可以在创建表的时候定义它,也可以在表创建之后通过语句alter table或者index来添加索引。总之,第一种和第二种的效果是一样的,但是两者的效率是有很大差别的。大量的实验证明,对于大量的表来说,先加载数据再定义全文索引的速度,要比向已经定义全文索引的表中插入大量数据的速度好得多。你一定会问:这问什么?其实原因很简单,前者只需要操作你的索引表一次,排序和比较都是在内存中完成然后写入硬盘;而后者则需要从硬盘一个一个的读取索引表,然后再进行比较、写入,速度自然会很慢。 MySQL 通过 match() 和 () 两个函数来实现全文索引查询功能。match() 中的字段名必须与 中定义的字段一致,如果使用模式搜索,也允许 中只包含某个字段,而不用全部列出。 () 定义了需要搜索的字符串,以及要求数据库以何种模式进行全文索引搜索查询。下面的示例介绍了支持的三种搜索模式。

MySQL全文索引与中文分词总结及一般关键词搜索流程

MySQL全文检索中文分词

MySQL 5.1+支持中文的全文搜索及分词插件

如果你在家里用搜索引擎的话,你会发现,只有当整词命中率为0的时候,才会发生分词。

至于如何分词,可以参考百度搜索的测试结果:

如搜索“徐祖宁宁”,结果为“徐祖”+“宁宁”。(搜索姓名时,可能有100个姓氏的词典,自动将姓氏后的第一个字符放在前面。)

·搜索“徐願願”(Xu ),结果为“徐願願”(Xu )。(这意味着“婉願”属于“徐”。同上,因为徐是姓氏。)

·搜索“徐祖誓言宁”,结果为“徐祖”+“誓言宁”。 (因为“愿宁”是一个字,“徐”只有“祖”。)

·搜索“徐祖宁高”,结果为“徐祖宁”。(由于“宁高”不是关键词,“宁”属于首字。而“高”是单个单词,为了提高首字搜索效率,可以省略“高”)

二维码
扫一扫在手机端查看

本文链接:https://by928.com/3232.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线