首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于MEDIUMTEXT的MySQL全文搜索

基于MEDIUMTEXT的MySQL全文搜索
EN

Stack Overflow用户
提问于 2015-03-22 18:33:49
回答 2查看 1.7K关注 0票数 1

我知道这个问题已经讨论过很多次了。总之,我想再想一次。

好吧,我有表中的“文章”包含以下字段:

  • 标题(varchar 255)
  • 关键词(varchar 255)
  • content_body_1 (中介文本)
  • content_body_2 (中介文本)

有一个关于“标题”和“关键字”的索引。但是,没有关于MEDIUMTEXT字段的索引。

我需要在所有这些字段上执行“整个单词”搜索。我现在使用REGEXP进行此操作:

代码语言:javascript
运行
复制
SELECT * FROM `articles` WHERE `content_body_1` REGEXP '[[:<:]]"keyword"[[:>:]]'

诸若此类。它可以写100篇文章,但是它在1000篇文章上非常慢(2-3秒)。REGEXP在MySQL中不使用索引。如果我有10000篇文章呢?有没有任何方法可以更快地搜索整体关键字?

我怎么能拿到呢?全文更快吗?如果是-我如何设计我的数据库?此外,我应该如何处理全文限制的最小字符搜索?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-03-31 00:48:36

当全文应用时,它比REGEXP快得多。作为一个测试,我在0.06秒内在173,979行中找到了4行中的一个单词。

你需要做ALTER TABLE tbl ADD FULLTEXT(content_body_1);来为这一列建立一个FT索引。

您可以将多列合并成一个FT索引--如果您想搜索所有这些列的话。如果还想搜索单个列,则添加单列FT索引.

研究细节;MyISAM有一组警告;InnoDB有一个不同的集合。

票数 1
EN

Stack Overflow用户

发布于 2015-03-22 21:14:21

为什么要使用regexp进行全文搜索?您可以很容易地使用%字符,而且它可能比执行正则表达式快得多。

articles中选择*,其中content_body_1喜欢‘%关键字%’

这将找到content_body_1在其中某个地方包含关键字的任何行。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29198226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档