谁发送过最多关于给定文字的推文?

时间:2015-12-12 11:51:06

标签: mysql sql database twitter

StackOverflow中的第一个问题,所以请温柔地对待我。

情况:

我有一个mySQL表,其中包含大约14000行,其中包含Twitter上不同用户的推文。它包含列:

  • 用户名
  • USER_ID
  • time_of_tweet
  • tweet_text
  • geo_position

......以及其他信息,与此问题无关。

问题:

我想知道哪个用户写了一个不同的词(例如"大众")。也就是说:谁在给定的文本字符串上发了最多的推文?

我发现我需要以某种方式执行COUNT()SELECT DISTINCT,但无论我如何放置代码,都会出现SQL错误。我希望有人可以帮助我:)。

1 个答案:

答案 0 :(得分:1)

您可以使用WHERE tweet_text LIKE '%volkswagen%'来过滤使用volkswagen的推文:

SELECT user_id, COUNT(*) AS `count`
FROM your_table
WHERE tweet_text LIKE '%volkswagen%'
GROUP BY user_id
ORDER BY `count` DESC
LIMIT 1;              -- this will be nondeterministic if 2 users has the same number

SqlFiddleDemo

为了获得更好的性能,您应该考虑使用全文索引。

CREATE TABLE your_table(
    username VARCHAR(100),
    user_id INT,
    tweet_text VARCHAR(140)
    -- ...
    );

CREATE FULLTEXT INDEX idx ON your_table(tweet_text) ;  

SELECT user_id, COUNT(*) AS `count`
FROM your_table
WHERE MATCH(tweet_text) AGAINST('volkswagen')
GROUP BY user_id
ORDER BY `count` DESC
LIMIT 1;

SqlFiddleDemo2