主题标签的查找表,区分大小写


lookup table for hashtags, case sensitive

我正在尝试在用户键入时实现主题标签建议,所以我正在构建一个这样的主题标签表:

CREATE TABLE IF NOT EXISTS `hashtags_weight` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `hashtag` varchar(140) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
  `tot` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `hashtag` (`hashtag`,`tot`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1

我稍后会查询:

SELECT hashtag  FROM hashtags_weight WHERE hashtag LIKE 'foob%' ORDER BY tot DESC

我从中获取主题标签的来源来自以前插入的主题标签。现在,虽然这些都是非常基本的东西,但我认为建议使用最多用例的主题标签是可取的。假设我有一张桌子:

10 Foobar
5 FooBar
2 foobar

这意味着 Foobar 使用了 10 次,5 次 FooBar 和 2 次 Foobar。 现在,我想将主题标签数为 17 个,并在自动完成期间仅建议 Foobar。

当然,我可以通过一些数组排序来完成,但我已经看到这需要很多时间(有很多行)。我想听听对此事的一些不同方法。

附言此作业将在夜间运行,因此无需超快。我只是想确保我做得正确。当然,我可以向 DB 添加更多表,没问题。

更新查询:

SELECT count(*) as count,hashtag  FROM hashtags_weight WHERE hashtag LIKE 'foob%' GROUP BY hashtag ORDER BY tot DESC

添加一个计数和一个组,它应该可以工作,因为你的表已经不区分大小写了。

不确定你是如何到达 10,5 和 2 已经购买的,我假设你用 PHP 做了这个

编辑:

我看到你用"tot"。这是否保持总数?在这种情况下:

SELECT hashtag,sum(tot) as total FROM hashtags_weight WHERE hashtag LIKE 'foob%' GROUP BY hashtag ORDER BY tot DESC