mysql 全文查找fulltext

从 Mysql 4.0 开始就支持全文索引功能,但是 Mysql 默认的最小索引长度是 4。如果是英文默认值是比较合理的,但是中文绝大部分词都是2个字符,这就导致小于4个字的词都不能被索引,全文索引功能就形同虚设了。国内的空间商大部分可能并没有注意到这个问题,没有修改 Mysql 的默认设置。

为什么要用全文索引呢?

一般的数据库搜索都是用的SQL的 like 语句,like 语句是不能利用索引的,每次查询都是从第一条遍历至最后一条,查询效率极其低下。一般数据超过10万或者在线人数过多,like查询都会导致数据库崩溃。这也就是为什么很多程序都只提供标题搜索的原因了,因为如果搜索内容,那就更慢了,几万数据就跑不动了。

Mysql 全文索引是专门为了解决模糊查询提供的,可以对整篇文章预先按照词进行索引,搜索效率高,能够支持百万级的数据检索。

如果您使用的是自己的服务器,请马上进行设置,不要浪费了这个功能。

如果您使用的是虚拟主机,请马上联系空间商修改配置。首先,Mysql 的这个默认值对于中文来说就是一个错误的设置,修改设置等于纠正了错误。其次,这个配置修改很简单,也就是几分钟的事情,而且搜索效率提高也降低了空间商数据库宕掉的几率。如果你把本篇文章发给空间商,我相信绝大部分都会愿意改的。

    设置方法:

    请联系服务器管理员修改 my.ini (Linux 下是 my.cnf ) ,在 [mysqld] 后面加入一行“ft_min_word_len=1”,然后重启Mysql,再登录网站后台(模块管理->全站搜索)重建全文索引,否则将无法使用全站搜索功能。

For 5.5

# MySQL全文索引查询关键词最小长度限制

ft_min_word_len

影响索引的全文变量 (ft_min_word_len、 ft_max_word_len或ft_stopword_file),或假如你改变了禁用词文件本身,则你必须在改变和重新启动服务器后重建你的 FULLTEXT索引。这时,要重建索引, 只需进行一个QUICK 修理操作:

mysql> REPAIR TABLE tbl_name QUICK;  #重建索引

# MySQL全文索引查询关键词最小长度限制

For 5.6

innodb_ft_min_token_size

时间: 2024-10-05 18:56:57

mysql 全文查找fulltext的相关文章

Mysql全文搜索match against的用法

全文检索在 MySQL 中就是一个 FULLTEXT 类型索引.FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR. VARCHAR 或 TEXT 列上创建 对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE   (或 CREATE INDEX) 创建索引,这将是非常快的.将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢

MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持

背景:搞个个人博客的全文搜索得用like啥的,现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了,刚查了下目前版本号都到MySQL Community Server 5.6.19 了,所以,一些小的应用可以用它做全文搜索了,像sphinx和Lucene这样偏重的.需要配置或开发的,节省了成本. 这儿有一个原创的Mysql全文搜索的文章, mysql的全文搜索功能:http://blog.csdn.net/bravekingzhang/article/details/672

【转】 Mysql全文搜索match...against的用法

原文链接 http://blog.csdn.net/manbujingxin/article/details/6656992 前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索. 假定数据表名为post,有三列:id.title.content.id是自增长序号, title是varchar,content是text,给content添加全文索引.mysql全文搜索有三种模式:一.自然语言查找.这是mysql默认的全文搜索方式,sql示例: 1 select  id,title 

mysql 全文搜索(转载http://blog.csdn.net/manbujingxin/article/details/6656992)

前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索.假定数据表名为post,有三列:id.title.content.id是自增长序号,title是varchar,content是text,给content添加全文索引. mysql全文搜索有三种模式: 一.自然语言查找.这是mysql默认的全文搜索方式,sql示例: 1 select  id,title FROM post WHERE MATCH(content) AGAINST ('search keyword') 或者显式声

MySQL 全文搜索支持

MySQL 全文搜索支持 从MySQL 4.0以上 myisam引擎就支持了full text search 全文搜索,在一般的小网站或者blog上可以使用这个特性支持搜索. 那么怎么使用了,简单看看: 1.创建一个表,指定支持fulltext的列 CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,b

使用Lucene.net进行全文查找多关键字匹配

Lucene是一个开源的搜索引擎,开发语言是Java,Lucene.net是它的.NET版本.可以在C#中方便的调用. Lucene.net目前最新版本是3.0.3,你可以从官方网站下载到最新版本:http://lucenenet.apache.org/ 使用Lucene.net进行全文查找首先要根据数据创建索引,然后再根据索引来查找关键字.本文不做任何原理性的解释,需要深入研究的请自行Google之. 创建索引 还是直接上代码的比较好: IndexWriter writer = new Ind

mysql 全文搜索的FULLTEXT

FULLTEXT索引 创建FULLTEXT索引语法 创建table的时候创建fullText索引 CREATE TABLE table_name( column1 data_type, column2 data_type, column3 data_type, - PRIMARY_KEY(key_column), FULLTEXT key key_name (column1,column2,..) ); 在已存在的table上面创建fullText索引 ALTER TABLE table_nam

mysql 日志查找和解析

早上碰到服务器数据异常,查找日志没有发现.当前数据在db中,无解.好在mysql有记录,不多就1天. 操作步骤: mysql --help |grep mysql.cnf 显示如下 /etc/my.cnf /var/lib/mysql/my.cnf ~/.my.cnf 因mysql日志需要转换: 命令如下: 1 /usr/local/mysql/bin/mysqlbinlog --start-position=717149534 --stop-position=818000316 mysql-b

mysql中查找包含特定字段的表

for table in `mysql -uuser -p'pwd' database -e "show tables"|sed '1d'`; do mysql -uroot -p'pwd' database -N -s -e "desc ${table};"|grep "your Field" && echo ${table} || continue; done