我的订阅网站拥有一个包含数千种资源 Material 的库,该库是使用 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
如果这是示例数据,则 HitTest 门的搜索将是: “鸡饲料”和“孵蛋母鸡”。
最佳答案
Google 趋势表格有 2 列:搜索字词和搜索量指数。如果没有更多信息,编写索引超出了我可以向您展示的范围,但我怀疑“计数”表足以满足您的需求。
上面包含的表格提供了一些说明,但它不允许我展示“计算”搜索词的值(value)。因此,我提供了自己的示例数据库:
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
请注意,搜索词“啤酒”和“白 Wine ”被多次列出。我们可以调用一个简单的搜索查询:
返回所有不同(或唯一)的搜索词。
计算每个搜索词的出现次数。
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
搜索词“白 Wine ”似乎比“啤酒”更受欢迎,而“啤酒”比其他搜索词更受欢迎。当然,这是一个简化的示例,但相同的查询应该适用于更大的表。
编辑:我发现您已修改了您的要求并希望过滤掉停用词。正如其他人所建议的,这要复杂得多。但是,您可以定义要在排列结果时删除的停用词列表。然后可以修改上面提供的查询以删除这些单词并仅显示相关关键字。
作为最终建议,您可能不希望列与其表共享相同的名称(在本例中为“search_terms”)。这可能会导致困惑和问题。
关于php - 查询以创建有关用户站点搜索、MySQL 和 PDO 的趋势报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45514096/