我正在我的网站上构建搜索,并且当您在搜索中输入多个单词时,我发现它无效。以下是查询的要点:
SELECT * FROM `blog` WHERE `content` LIKE '%$keyword%' OR `title` LIKE '%$keyword%' ORDER BY `id` DESC
奇怪的是,当我在phpMyAdmin中测试查询时,它会返回预期的结果。但是,在我的网站上,没有找到任何结果。
我尝试用%s替换关键字中的空格,但这并未改变任何内容。
答案 0 :(得分:1)
问题是LIKE
进行模式匹配而不是实际搜索关键字。您应该在数据库列上创建全文索引并使用WHERE MATCH keywords AGAINST column
。这将以任何顺序正确搜索所有关键字,并且无论如何都要快得多。
答案 1 :(得分:0)
我刚刚在我的数据库中尝试了这一点,并且在查询中使用LIKE
的速度比使用全文索引的MATCH
快66倍。我正在使用两个相互“连接”的桌子。一个是标签,另一个是产品。
所以我做的是我在tags表的tag列中添加了一个全文索引,并对该列执行了匹配。查询比加入产品然后吐出一些有关该项目的数据。用大约3000个产品和大约需要4秒钟~3000个标签。
然后我尝试通过首先用空格爆炸搜索字符串,然后使用%' OR tags.tag LIKE '%
对结果进行内爆。使用相同数量的产品和标签大约需要0.06秒。