我的订阅网站拥有一个包含数千种资源资料的库,这些资料基于使用PDO的MySQL数据库构建。
用户可以按主要类别和子类别访问资源。 如果用户正在寻找非常具体的内容,他们可以搜索库。
我目前正在将所有订阅者搜索记录到一个表中:
table - search_terms
primary_key (primary_key)
search_terms (tinytext)
time_stamp (timestamp)
如何生成订阅者正在使用的热门搜索列表?
我正在寻找有关数据库查询的想法,而不仅仅是计算单个单词的出现次数,因为我想要这些短语。 示例数据:
primary_key search_terms time_stamp
1 what kind of chicken feed should I use 12:01:01 mm/dd/yy
2 what makes a good chicken feed 13:01:23 mm/dd/yy
3 when should I feed my chickens 09:23:15 mm/dd/yy
4 how to build a chicken house 18:29:10 mm/dd/yy
5 good breed for laying eggs 22:14:01 mm/dd/yy
6 best chicken feed 01:10:00 mm/dd/yy
7 how do I get blue eggs 18:42:48 mm/dd/yy
8 what do I do with a broody hen etc etc
9 what is a broody hen etc etc
10 stop a hen being broody etc etc
如果这是示例数据,则排名靠前的搜索量将是: "鸡饲料"和"育雏母鸡"。
Google 趋势的表格有 2 列:搜索字词和搜索量索引。 在没有更多信息的情况下,编写索引超出了我可以向您展示的范围,但我怀疑"计数"表足以满足您的需求。
您上面包含的表格提供了一些澄清,但它不允许我演示"计数"搜索词的价值。 因此,我提供了自己的示例数据库:
primary_key search_terms time_stamp
1 1 beer 2017-07-01 13:07:31
2 2 white wine 2017-07-04 13:39:28
3 3 whiskey 2017-07-05 01:06:23
4 4 whiskey for gifts 2017-07-05 04:17:22
5 5 craft beer denver 2017-07-05 14:48:03
6 6 beer 2017-07-10 07:33:13
7 7 white wine 2017-07-14 02:13:00
8 8 pinot grigio wine 2017-08-22 03:16:18
9 9 whiskey from japan 2017-08-23 07:30:59
10 10 white wine rare 2017-08-01 15:03:25
11 11 white wine 2017-08-02 14:15:24
12 12 craft beer dallas 2017-08-02 22:03:44
13 13 new york whiskey 2017-08-03 05:45:09
14 14 white wine 2017-08-03 16:06:18
15 15 beer ipa michigan 2017-08-04 20:15:50
请注意,搜索词"啤酒"和"白葡萄酒"被多次列出。 我们可以调用一个简单的搜索查询:
返回所有不同(或唯一(搜索词。
计算每个搜索词的出现次数。
SELECT
DISTINCT search_terms AS 'Unique Search Terms',
COUNT(search_terms) AS 'Occurrence'
FROM search_terms
GROUP BY search_terms
ORDER BY Occurrence DESC
生成的输出为:
Unique Search Terms Occurence
1 white wine 4
2 beer 2
3 whiskey 1
4 whiskey for gifts 1
5 craft beer denver 1
6 pinot grigio wine 1
7 whiskey from japan 1
8 white wine rare 1
9 craft beer dallas 1
10 new york whiskey 1
11 beer ipa michigan 1
搜索词">白葡萄酒"似乎比"啤酒"更受欢迎,而"啤酒"比其他搜索词更受欢迎。 当然,这是一个简化的示例,但相同的查询应该适用于更大的表。
编辑:我看到您已经修改了您的要求,并希望过滤掉停用词。正如其他人所建议的那样,这要复杂得多。 但是,您可以定义一个非索引字列表,以便在排列结果时删除。 然后可以修改上面提供的查询以去除这些单词并仅显示相关关键字。
作为最后一个建议,您可能不希望列与其表共享相同的名称(在本例中为"search_terms"(。这可能会导致混乱和问题。