用于标签的查找表,区分大小写

时间:2012-08-16 08:49:01

标签: php mysql case-sensitive

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

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

这意味着已经使用了10次Foobar,5次FooBar和2次foobar。现在,我想把它标记为17,并在自动完成期间仅提议Foobar。

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

P.S。 这项工作每晚都会进行,所以没有必要超级快。我只是想确保我正确地做到了。 当然我可以在Db上添加更多表格,没问题。

1 个答案:

答案 0 :(得分:0)

更新您的查询:

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