我正在使用Solr进行一些分析,特别是使用faceting和pivot功能来处理大量日志文件 . 我有一个大型日志文件,我已经在Solr中索引了 .
Keyword Visits log_date_ISO
1 red 1,938 2013-01-01
2 blue 435 2013-02-01
3 green 318 2013-04-01
4 red blue 279 2013-01-01
然后我通过'log_date_ISO'运行查询和方面,按日期包含查询字词的 keyword 计数 . 两个问题:
(1)有没有办法对每个日期的每个关键字求和 visits - 因为我真正想要的是对包含查询的关键字的访问量进行求和:
-
例如如果我为上面的内容运行查询'red' - 我希望日期2013-01-01的计数为1938 279 = 2217(即与包含查询'red'的关键字相关联的访问总和)而不是'2'(即包含查询的关键字的计数) .
(2)有没有办法按月查询量进行标准化?
-
例如如果'2013-01-01'的查询量为10,000,则查询'red'的标准化量将为2217/10000 = 0.2217
最后一个调度:如果这些不可能,我将使用pandas / python预处理日志文件按日期分组,然后按关键字然后规范化 - 但是想知道它是否可能在Solr中 .
提前致谢 .
2 回答
可以使用solr按记录中的一个字段进行分组,并使用分组对记录中的另一个字段进行求和
我做的调用是(与问题中的名称不同,'关键字'字段称为'q_string','上面的'访问'称为'q_visits','log_date_ISO'在下面称为'q_date'):
这提供了基于日期的* q_visits *字段的基本统计数据 - 包括总和 - 我感兴趣的具体值是总和:
收集静态的字段在schema.xml中声明为float类型(如果声明为字符串,则sum,sd,mean将不会显示) .
这是一种方式(类似于Dan Allen's answer here):
然后你可以做相关的组:
为了获得百分比的访问(以避免重复计算),我会做一个transform first :