【发布时间】:2015-08-14 06:26:57
【问题描述】:
我有一个使用 MySQL 用 PHP 编写的论坛,我想让论坛搜索可用。它将允许用户搜索特定的字符串,以及过滤发布日期和主题等元数据。可以有效地搜索元数据,因为这些字段中的大多数都已编入索引,但我认为主要用例当然是普通的文本搜索,并且不使用可能修剪结果的元数据过滤器。
经过一些测试,我发现,与大多数人的设置相反,SQL_CALC_FOUND_ROWS 比查询两次以获得结果数量要快得多(大约 1.5 倍),所以我最好的查询是:
SQL_CALC_FOUND_ROWS * from blahblah where content like '%term%' limit whatever whatever;
不出所料,这确实很慢,因为它必须对数据库中的每个论坛帖子进行文本匹配。我能做些什么来改善这一点吗?使用 LIKE 运算符时,在内容 (TEXT) 字段上放置索引是否会有所帮助?一般人是怎么做到的?
【问题讨论】:
-
您是否研究过全文搜索? dev.mysql.com/doc/refman/5.5/en/…