Solr/Lucene日志分析-查询热点词-脚本工具

solr/lucene 在中文搜索使用中,会输出非常多的类似下面的内容:

2012-04-24 00:00:01,396 INFO
[org.apache.solr.core.SolrCore] - [XXXX-0] webapp=null path=/select
params={q=status:0+AND+(img_file_id:(++12333018751568476))&timeAllowed=2000sort=gmtcreate+desc&rows=60&start=0}
hits=44 status=0 QTime=0

这部分log 包含了查询条件,其中最有价值之一的就是中文词,大量的查询聚集出用户的查询喜好。

对这些log的快速、低成本分析非常有助于应用中运营活动的推广。体现搜索引擎的数据密集价值之一!

更深入的挖掘比如,带上性别信息、行业信息,就可以深入掌握用户关注什么、行业动态是什么等商业信息。

这也是很多搜索引擎在广告之外的另一项收入。

下面提供一种基于脚本的针对solr/luene log中。查询条件中的中文词提取并总计排序。

针对单个文件的统计输出,批量处理,添加一个find,然后循环文件即可。

注意事项:

   
这个脚本在1G左右单个log文件解析时,时间大约2分钟。

   
在解析期间,服务器load明显增多,在线解析log需要避开服务器高峰期

   
解析调试需要注意编码

   
中英文混合时,英文部分会被忽略

   
有些标点符号以及一些特殊字符在不同版本、不同环境下会有所不同,不影响总体统计分析结果

    grep (GNU
grep) 2.5.1

脚本解释

    grep ‘webapp’ $1  //接受参数
在命令行下 执行  ./jiaobenName.sh 
query.log

   | awk ‘{print $9}’ // 提取patch
之后的内容

   | awk -F “&”
‘{print $1}’ // 提取patch中查询串,去掉其他条件信息

   | echo -e “$(sed ‘s/+/ /g;
s/%/\x/g’)”  // decode log

   | sed
‘s/[!-~a-zA-Z0-9=:|-]/ /g’  //英文部分用空格替换

   | sed ‘s/ /n/g’ | grep -v
‘^$’  //空格用n 替换,并去掉重复n

   | awk ‘{count[$0]++} END
{for(k in count) print count[k],k}’ 
//统计单词词频

   | sort -k1
-nr  //按照词频降序

   >
“/home/yingyuan.lyq/tw$1” //最终结果保存路径

#! /bin/sh

if [ -z “$1” ]

then

       
echo “need file”

       
exit 1

fi

 

grep ‘webapp’ $1 | awk ‘{print
$9}’ | awk -F “&” ‘{print $1}’ | echo -e “$(sed
‘s/+/ /g; s/%/\x/g’)” | sed ‘s/[!-~a-zA-Z0-9=:|-]/ /g’ | sed
‘s/ /n/g’ | grep -v ‘^$’ | awk ‘{count[$0]++} END {for(k in count)
print count[k],k}’ | sort -k1 -nr >
“/home/yingyuan.lyq/tw_$1”

本文来源于"阿里中间件团队播客",原文发表时间"  2012-05-01 "

时间: 2024-09-19 09:22:11

Solr/Lucene日志分析-查询热点词-脚本工具的相关文章

日志分析工具:数据中心管理的新装备

一种新型管理工具正在IT组织中成为主流.和繁琐的测试或评估方法不同,这些新兴工具关注的是系统和应用程序最常见的共同点:日志文件.   在复杂而严苛的数据中心环境中,通常会使用一些成熟的管理工具来查找隐患,但是这些工具无法感知细微的因果关联,数据中心的日常排错和优化目标难以实现.日志分析工具可以填补这些空缺,让IT专业人员在面对复杂的数据中心基础架构时能做出更有效和正确的决策. 几乎所有的系统和应用程序都会产生日志文件.日志是带时间标记的足迹,记录行为.条件和事件.在实际环境中,单独的日志文件价值

MySQL慢查询优化之慢查询日志分析的实例教程_Mysql

数据库响应慢问题最多的就是查询了.现在大部分数据库都提供了性能分析的帮助手段.例如Oracle中会帮你直接找出慢的语句,并且提供优化方案.在MySQL中就要自己开启慢日志记录加以分析(记录可以保存在表或者文件中,默认是保存在文件中,我们系统使用的就是默认方式). 先看看MySQL慢查询日志里面的记录长什么样的: Time Id Command Argument # Time: 141010 9:33:57 # User@Host: root[root] @ localhost [] Id: 1

nginx实用的日志分析脚本

nginx日志分析脚本:  代码如下 复制代码 vi /mnt/logs/checklog.sh #!/bin/bash echo -e  "####################`date +%F`" >> /mnt/logs/400.txt echo -e  "####################`date +%F`" >> /mnt/logs/URL.txt echo -e  "####################`

mysql慢查询日志分析实例

1.MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest –report slow.log 报告最近半个小时的慢查询: pt-query-digest –report –since 1800s slow.log 报告一个时间段的慢查询: pt-query-digest –report –since '2013-02-10 21:48:59′ –until '2013-02-16 02:33:50′ slow.log 报告只含select语句的慢

mysql慢查询日志分析

第一步应该做的就是排查问题,找出瓶颈,所以,先从日志入手 开启慢查询日志 mysql>show variables like "%slow%"; 查看慢查询配置,没有则在my.cnf中添加,如下 log-slow-queries = /data/mysqldata/slowquery.log    #日志目录 long_query_time = 1                          #记录下查询时间查过1秒 log-queries-not-using-indexe

linux中nginx日志分析shell脚本

以前使用虚拟主机的时候,查看网站运行日志,就发现了很多异常的恶意的访问.当时因为自己并没有系统权限没办法对这些行为进行屏蔽.现在有了自己的云主机,前端时间查看日志,又发现了很多恶意访问.正好可以通过最近对shell的学习,来做一个简单的日志分析工具,来屏蔽一些这样的操作. 首先,所谓的分析工具,肯定是建立在人为的分析的基础上的.我们来看一点我的域名运行日志:  代码如下 复制代码 78.56.78.115 - - [21/May/2014:16:54:27 +0800] "POST /wp-lo

nginx日志分析shell脚本

先基本了解一几条命令 一下脚本都是基于上面日志格式的,如果你的日志格式不同需要调整awk后面的参数. 分析日志中的UserAgent  代码如下 复制代码 cat access_20130704.log | awk -F """ '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -20 上面的脚本将分析出日志文件中最多的20个UserAgent 分析日志中那些IP访问最多  代码如下 复制代码 cat access_20

MySQL 慢查询日志分析及可视化结果

MySQL 慢查询日志分析及可视化结果 MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest --report slow.log 报告最近半个小时的慢查询: pt-query-digest --report --since 1800s slow.log 报告一个时间段的慢查询: pt-query-digest --report --since '2013-02-10 21:48:59' --until '2013-02-16 02:33:50'

日志分析方法概述

日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核.各种应用服务器等等.日志的内容.规模和用途也各不相同,很难一概而论. 本文讨论的日志处理方法中的日志,仅指Web日志.其实并没有精确的定义,可能包括但不限于各种前端Web服务器--apache.lighttpd.tomcat等产生的用户访问日志,以及各种Web应用程序自己输出的日志. 在Web日志中,每条日志通常代表着用户的一次访问行为,例如下面就是一条典型的apache日志: 211.87.152.44 – - [