当前位置: 首页 > wzjs >正文

网站快速优化排名软件域名查询

网站快速优化排名软件,域名查询,网站建设公司小猫建站,我做的网站不知道网站怎么办MySQL 的 FULLTEXT 配合 ngram 分词器,是一种 轻量但强大 的解决方案,适合处理中文、带符号文本(如 N3-2016-7语法7)的全文搜索。 本文将介绍 MySQL ngram 的最佳使用方式,包括: ✅ 配置环境 ✅ 建立索引…

MySQL 的 FULLTEXT 配合 ngram 分词器,是一种 轻量但强大 的解决方案,适合处理中文、带符号文本(如 N3-2016-7语法7)的全文搜索。

本文将介绍 MySQL + ngram 的最佳使用方式,包括:

✅ 配置环境
✅ 建立索引
✅ 查询语法
✅ 性能优化
✅ 常见问题


🧠 一、ngram 分词器简介

ngram(N-Gram)分词 是一种固定长度切词的方式。
例如对词语 N3-2016

  • ngram_token_size = 2 → 分为:N33--2200116

  • ngram_token_size = 3 → 分为:N3-3-2-20201016

适合处理:

  • 无自然分隔符的语言(如中文)

  • 编码、编号、短词(如 SKU、题号、文章编号)


🛠️ 二、环境要求

  • ✅ MySQL 5.7.6+(推荐 8.0+)

  • ✅ 表引擎必须是 InnoDB

  • ✅ 字符集推荐使用 utf8mb4


⚙️ 三、开启 ngram 分词功能

1. 查看当前系统设置

SHOW VARIABLES LIKE 'ngram_token_size';

默认值是 2,你也可以全局修改:

SET GLOBAL ngram_token_size = 2;  -- 修改为 2-gram

⚠️ 注意:修改后需 重启 MySQL 服务生效,且需 重建全文索引


📑 四、表结构与索引设计

示例表:

CREATE TABLE t_question (id INT PRIMARY KEY AUTO_INCREMENT,question_content TEXT,FULLTEXT (question_content) WITH PARSER ngram
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

WITH PARSER ngram 是关键
✅ 推荐为 TEXT 字段创建全文索引


若已有表:

ALTER TABLE t_question
ADD FULLTEXT(question_content) WITH PARSER ngram;

🔍 五、查询语法示例

1. 普通全文搜索(自动分词)

SELECT * FROM t_question
WHERE MATCH(question_content)
AGAINST('N3 2016' IN BOOLEAN MODE);

✅ 空格隔开多个关键词
✅ 可匹配如 N3-2016-7语法7


2. 精准匹配(AND)

SELECT * FROM t_question
WHERE MATCH(question_content)
AGAINST('+N3 +2016' IN BOOLEAN MODE);

+ 表示必须包含


3. 模糊匹配(带通配符)

SELECT * FROM t_question
WHERE MATCH(question_content)
AGAINST('N3* 2016*' IN BOOLEAN MODE);

⚠️ 通配符仅在 BOOLEAN MODE 下部分生效,ngram 本身已实现了前缀模糊能力。


4. 预处理数据以提高匹配率

将符号(如 -/)替换为空格以便更好分词:

UPDATE t_question
SET question_content = REPLACE(question_content, '-', ' ');

也可以在搜索时处理关键词:

SELECT * FROM t_question
WHERE MATCH(question_content)
AGAINST(REPLACE('N3-2016-7', '-', ' ') IN BOOLEAN MODE);

🚀 六、性能优化建议

优化项建议
✅ 字段类型使用 TEXT 类型,不建议用 VARCHAR 超过 767 字节
✅ 字符集使用 utf8mb4,兼容所有字符
✅ 查询语法使用 BOOLEAN MODE 支持更多操作符
✅ 排序限制查询加 LIMIT、避免 ORDER BY MATCH() 造成排序慢
✅ 表数据变更更新/删除后需注意索引同步,定期优化表(OPTIMIZE TABLE

🧱 七、MySQL ngram 与其他方案对比

方案优点缺点适用场景
LIKE %keyword%简单性能差小数据量
FULLTEXT(默认)快、支持英文不支持中文英文搜索
FULLTEXT + ngram支持中文和符号、轻量精度略低于 NLP 分词中小项目、编码类内容搜索
Elasticsearch强大、支持复杂分析运维成本高搜索引擎、大数据量
Jieba / HanLP可控性强、精度高不支持数据库原生索引NLP 应用、离线分析

🧩 八、常见问题 FAQ

❓1. 中文搜索无结果?

请确认是否:

  • 使用了 WITH PARSER ngram

  • 字符集为 utf8mb4

  • 数据和查询内容一致

  • ngram_token_size 合适


❓2. 如何支持带符号内容(如 N3-2016)?

使用 ngram 可将其切割为 N33--2 等小词组,实现模糊匹配。


❓3. 索引是否生效?

可用以下命令查看全文索引:

SHOW INDEX FROM t_question;

也可 EXPLAIN 查询看是否使用了 FULLTEXT 索引。


✅ 九、最佳实践总结

项目推荐做法
✅ 字段TEXT 类型字段建全文索引
✅ 索引使用 WITH PARSER ngram
✅ 查询使用 AGAINST + BOOLEAN MODE + 空格关键词
✅ 兼容性使用 MySQL 8.0+,InnoDB 引擎
✅ 性能合理使用 LIMIT,避免排序瓶颈
✅ 文本规范化去除无意义符号、统一大小写,提升匹配率

用 MySQL 做中文和混合搜索?别忘了加上 ngram,轻量、原生、好用!

http://www.dtcms.com/wzjs/138979.html

相关文章:

  • 南昌网站建设方案推广2024年小学生简短小新闻
  • 隆昌住房和城乡建设官方网站建立网站的步骤
  • wordpress做过的大型网站附近成人电脑培训班
  • 校园网络设计报告北京网站优化指导
  • 网站建设推荐网seo的中文含义是
  • 网站建设的相关技术方案百度秒收录技术
  • php 建设网站网络公司经营范围
  • 吴江市建设局网站sem和seo是什么职业岗位
  • 个人博客网页模板图片百度怎么做关键词优化
  • 网站空间哪个比较好广州 竞价托管
  • 网站推广公司就去柚米网络服务投诉平台
  • 做防腐木花架的网站搜索引擎营销怎么做
  • 邢台地区网站建设独立网络推广网络营销和网站推广的区别
  • 淄博网站建设团队百度seo关键词排名优化
  • 长兴做网站免费收录平台
  • 自己可以做网站吗百度在线识图查图片
  • 安卓盒子+做网站网站运营主要做什么工作
  • 福州营销网站建设技术手机优化大师下载
  • 网站建设制作网络营销公司重庆百度推广的代理商
  • 南昌网站建设在哪里百度热搜榜排名今日第一
  • 公司网站功能性建设有哪些网站优化外包找谁
  • 做贸易要看什么网站营销软文是什么
  • 印尼做网站的教学 中文张家界网站seo
  • 我是怎么做网站架构的线上营销推广方式都有哪些
  • 网站后台 搜索1+x网店运营推广
  • 国外优秀网站设计欣赏创建一个网站需要什么
  • 域名直卖网青岛seo用户体验
  • 网站建制作公司湖北百度seo排名
  • 网站建设及网络推广企业建站公司热线电话
  • 阳江网站建设推广公司电话google推广