【发布时间】:2023-03-11 11:23:02
【问题描述】:
我知道这个问题已经讨论过很多次了。 无论如何,我想再弄清楚。
嗯,我的表“文章”包含这些字段:
- 标题(varchar 255)
- 关键字(varchar 255)
- content_body_1(中文本)
- content_body_2(中文本)
有一个关于“标题”和“关键词”的索引。但是,MEDIUMTEXT 字段上没有索引。
我需要对所有这些字段执行“全词”搜索。我现在正在使用 REGEXP 执行此操作:
SELECT * FROM `articles` WHERE `content_body_1` REGEXP '[[:<:]]"keyword"[[:>:]]'
等等。 100 篇文章没问题,但 1000 篇文章非常慢(2-3 秒)。 REGEXP 在 MySQL 中不使用索引。如果我有 10000 篇文章怎么办?有什么方法可以更快地按整个关键字进行搜索?
我怎样才能得到它? FULLTEXT 更快吗?如果是 - 我该如何设计我的数据库?还有我应该如何处理 FULLTEXT 搜索的最小字符数限制?
谢谢。
【问题讨论】:
-
全文搜索是执行这些操作的更好方法,而且速度更快。您可以在
my.cnf中限制ft_word_min_len中的最小字符数
标签: php mysql regex full-text-search