【发布时间】:2011-09-24 08:54:23
【问题描述】:
我建立了一个搜索索引(两列表),将单个关键字分配给其内容 ID。
现在可以搜索单个关键字,而且速度非常快。
但是,搜索多个关键字,例如
SELECT media_id, keyword FROM search_index WHERE keyword = 'b' OR keyword = 'a' 将按关键字的字母顺序返回结果(首先点击'a',然后是'b')。
我尝试在结果页面上使用 PHP 执行此操作,但这需要我从数据库加载比我想要显示的更多的数据,才能获得可接受的排序。使用这种技术,脚本甚至可能在分配更频繁的关键字上超时。
我还尝试了GROUP BY,它似乎将按字母顺序排列的结果组合到它们的单个 ID 中。
编辑:
最后我找到了类似SELECT DISTINCT media_id, keyword, COUNT(media_id) AS num FROM search_index GROUP BY media_id ORDER BY num DESC 的东西,效果不错,但速度真的很慢。
因此,如果我搜索“b”和“a”,我希望结果中首先出现带有“a”和“b”的 ID。
那么我怎样才能告诉 MySQL 按一个 ID 上的命中频率对输出进行排序,同时仍然非常快?
【问题讨论】: