Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于在用户站点搜索、MySQL和PDO上创建趋势报告的查询_Php_Mysql_Pdo - Fatal编程技术网

Php 用于在用户站点搜索、MySQL和PDO上创建趋势报告的查询

Php 用于在用户站点搜索、MySQL和PDO上创建趋势报告的查询,php,mysql,pdo,Php,Mysql,Pdo,我的订阅网站有一个包含数千种资源材料的库,它是基于使用PDO的MySQL数据库构建的 用户可以按主要类别和子类别访问资源。如果用户正在查找非常特定的内容,他们可以搜索库 我当前正在将所有订户搜索记录到一个表中: table - search_terms primary_key (primary_key) search_terms (tinytext) time_stamp (timestamp) 如何生成订阅者正在使用的顶级搜索列表 我正在寻找一个数据库查询的想法,它不仅仅是计算单个单词的出现

我的订阅网站有一个包含数千种资源材料的库,它是基于使用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
如果这是示例数据,则顶部搜索将是:
“鸡饲料”和“孵蛋鸡”。

谷歌趋势”表有两列:搜索词和搜索量索引。在没有更多信息的情况下,编写索引超出了我向您展示的范围,但我怀疑“计数”表足以满足您的需要

上面包含的表格提供了一些澄清,但它不允许我演示“计算”搜索词的价值。因此,我提供了自己的示例数据库:

   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
看起来搜索词“白葡萄酒”比“啤酒”更受欢迎,“啤酒”比其他搜索词更受欢迎。当然,这是一个简化的示例,但相同的查询应该适用于更大的表

编辑:我看到您修改了要求,希望过滤掉停止词。正如其他人所说,这要复杂得多。但是,您可以定义一个要在排列结果时删除的停止词列表。然后可以修改上面提供的查询,去掉这些单词,只显示相关的关键字


作为最后一项建议,您可能不希望列与其表共享相同的名称(在本例中为“搜索术语”)。这可能会导致今后的混乱和问题。

然后数一数短语?如果你想数一数,就数一数。我们看不到你的代码、数据库、结构和数据。除了唯一合乎逻辑的事情——数一数,还有谁能告诉你该做什么。现在,你将如何做到这一点-好吧,这是你要解决的问题。祝你好运。我不明白php代码如何与数据库问题相关。数据库信息已经包括在内,一个表有三个字段。我添加了一些示例数据和所需的结果。它没有包括在内,您在编辑中添加了它,并且它没有格式化,所以。。让我们看看有多少人会费心去读它。如果您不明白为什么需要代码或结构来提供编程问题的解决方案。。好吧,我想我会去下载一些心灵感应。可能有一个好的链接?如何格式化?单击编辑,突出显示文本,按
{}
图标。谢谢,我相信这足以满足我的需要。尽管现在我对创建搜索卷索引感兴趣。有没有办法增加查询的复杂性,以便将“白葡萄酒”和“白葡萄酒”作为同一搜索词计算?仅供参考-上述数据库结构与数据一起构成。在表和字段中使用相同的名称只需快速键入即可。如前所述,根据文档说明,MyISAM引擎上MySQL 5.7的自然语言全文搜索中包含了stopwords过滤。所以我相信我已经涵盖了这一部分。@Trialsman'white wine'='wine white'是可以完成的,但它需要创建一个更复杂的函数——特别是复杂的,如果你将维度增加到2个单词以上。例如,“美国有机鸡肉饲料”=“美国有机鸡肉饲料”=“美国有机鸡肉饲料”=。。。。。22其他组合