mysql全文搜索实现方案及sql书写规则

本文详细介绍了英文全文搜索的实现方案,包括创建数据库表建立FULLTEXT索引及使用MATCH进行搜索,并提供了MySQL停止词的自定义解决方案。同时,阐述了中文全文搜索的两种实现方法:将中文映射为汉语拼音进行搜索和开发MySQL全文检索分词插件。此外,还分享了MySQL优化技巧,如避免使用特定函数、检测SQL语句、合理使用limit等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全文搜索分类: 英文全文搜索和中文全文搜索

 一、英文全文搜索的实现

  方案:

  创建数据库中的表时,对于需要进行搜索的字段建立FULLTEXT索引,查询过程中使用MATCH进行搜索。

备注:mysql停止词的解决方案,自定义mysql的停止词:

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"

二、中文全文搜索的实现

方案:

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

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

参考文献: http://blog.sina.com.cn/s/blog_4b3c9085010005hd.html

mysql书写规则:

1、利用mysql中频繁查询之缓存功能

      实现方案:书写sql语句时,不能使用NOW() RAND()等这种函数,其会导致频繁查询不缓存。

2、检测mysql语句:在执行sql前加上EXPLAIN关键字。

3、限定条件limit的实用性:当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。

4避免 SELECT*:会浪费不必要的资源。

5、把IP地址存成 UNSIGNED INT

6、垂直分割:是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。

7使用一个对象关系映射器(ObjectRelational Mapper)

8 、事务: 事物以 BEGIN 关键字开始, COMMIT 关键字结束。在这之间的一条 SQL 操作失败,那么, ROLLBACK 命令就可以把 数据库 恢复到 BEGIN 开始之前的状态。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值