我建立了一个搜索索引(两列表),将单个关键字分配给他们的内容 ID。
现在搜索单个关键字可以工作,而且速度非常快。
但是,搜索多个关键字 like
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 上的命中频率对输出进行排序,同时仍然非常快呢?