2

我正在我的网站上构建搜索,我注意到当您在搜索中输入多个单词时它不起作用。这是查询的要点:

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

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

我尝试用 %s 替换关键字中的空格,但这并没有改变任何东西。

4

2 回答 2

1

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

于 2013-01-10T18:03:18.903 回答
0

我刚刚在我的数据库中尝试过,在查询中使用的速度是使用全文索引LIKE的 66 倍以上。MATCH我正在使用两个相互“连接”的表。一种是标签,另一种是产品。

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

然后我先用空格分解搜索字符串,然后用%' OR tags.tag LIKE '%. 对于相同数量的产品和标签,这需要大约 0.06 秒。

于 2013-01-10T18:46:39.573 回答