关键字检索 - Mysql全文索引使用方法
Mysql全文索引使用方法
1. 设置全文索引:
全文索引的字段类型必须为: CHAR
、VARCHAR
和 TEXT
。
添加:
ALTER TABLE table_name ADD FULLTEXT (column);
删除:DROP INDEX index_name ON table_name;
注:mysql5.6
版本以下只有myisam存储引擎支持全文索引,mysql5.6以上版本myisam和innodb都支持全文索引。
- 搜索语句:
SELECT * FROM table_name WHERE MATCH(index_name) AGAINST(‘关键词’);
几个关键词查询请用逗号或空格分开:SELECT * FROM table_name WHERE MATCH(index_name) AGAINST(‘a,b’);
搜索单个字符时,可能会导致没有结果返回。这是因为大多数全文索引系统默认情况下会忽略或限制较短的关键词,以避免过于频繁的匹配和低效的查询。 注:当个别词的出现频率超过50%时,被认作无效词,可以改为 AGAINST (‘高频词’ IN BOOLEAN MODE)。- 查看和修改配置:
- 查看当前的最小关键词长度:查阅相关数据库系统的文档或配置文件,确定当前设置的最小关键词长度。
- 修改最小关键词长度:根据你的需求,将最小关键词长度调整为允许搜索单个字符或较短的关键词。请注意,减小最小关键词长度可能会导致更多的匹配结果和性能影响,请权衡利弊进行调整。
- 重新建立全文索引:在修改关键词长度之后,确保重新建立相应的全文索引,以使更改生效。 修改全文索引关键词长度设置可能需要对数据库进行操作,并且可能会对性能产生一定影响。
显示所有变量:show VARIABLES;
需要过滤特定变量: SHOW VARIABLES LIKE 'ft_%';
打开 MySQL 配置文件:
定位到[mysqld]
部分,并添加或修改以下行:
[mysqld]
ft_min_word_len = 1
重启mysql服务。
要创建全文索引,可以使用以下示例命令:
CREATE FULLTEXT INDEX ft_index_name ON table_name (column_name);
对于中文全文索引,必须先把字段值做好中文分词,每个关键词之间用“,”
或 “ ”
分开,中文的特点是没有明确的单词边界,因此在进行全文搜索时,需要将中文文本拆分成一个个词语或词组,以便建立索引和匹配。
通过使用专门的中文分词库或算法:
- 结巴分词:一种常用的开源中文分词库,具有高性能和准确性。
- IK 分词器:另一个常用的开源中文分词器,适用于支持 Lucene 的应用。
- THULAC:一种基于深度学习的中文词法分析工具,可以进行分词、词性标注等操作。 需要注意的是,在选择和使用中文分词工具时,根据具体的分词规则、准确性和适用场景选择,并根据自身需求进行合适的配置和调整,以及一些特殊情况