带有空格的MySQL搜索字符串使用LIKE

时间:2013-01-10 17:54:49

标签: php sql-like

我正在我的网站上构建搜索,并且当您在搜索中输入多个单词时,我发现它无效。以下是查询的要点:

SELECT * FROM `blog` WHERE `content` LIKE '%$keyword%' OR `title` LIKE '%$keyword%' ORDER BY `id` DESC

奇怪的是,当我在phpMyAdmin中测试查询时,它会返回预期的结果。但是,在我的网站上,没有找到任何结果。

我尝试用%s替换关键字中的空格,但这并未改变任何内容。

2 个答案:

答案 0 :(得分:1)

问题是LIKE进行模式匹配而不是实际搜索关键字。您应该在数据库列上创建全文索引并使用WHERE MATCH keywords AGAINST column。这将以任何顺序正确搜索所有关键字,并且无论如何都要快得多。

答案 1 :(得分:0)

我刚刚在我的数据库中尝试了这一点,并且在查询中使用LIKE的速度比使用全文索引的MATCH快66倍。我正在使用两个相互“连接”的桌子。一个是标签,另一个是产品。

所以我做的是我在tags表的tag列中添加了一个全文索引,并对该列执行了匹配。查询比加入产品然后吐出一些有关该项目的数据。用大约3000个产品和大约需要4秒钟~3000个标签。

然后我尝试通过首先用空格爆炸搜索字符串,然后使用%' OR tags.tag LIKE '%对结果进行内爆。使用相同数量的产品和标签大约需要0.06秒。