深入搜索引擎--查询(Query)
程序员文章站
2022-07-14 21:50:29
...
1.Query的数据分析
Query即用户在搜索引擎输入查询条件。在通用搜索引擎中,一般是指输入的关键词。而在各类行业或者垂直搜索引擎,还可以输入类目,如优酷网站中可以选择“电影”、“电视剧”这样的类目。在电子商务网站中,各种产品品牌、型号、款式、价格等也是常见的查询条件。
要分析query中每个term的内容,分词是必不可少的工具。分词算法从最简单的最大正向、最大反向分词算法,到复杂的隐马尔科夫、CRF模型。CRF模型是一种序列标注的机器学习方法。分词算法最关键的是如何得到足够的标注准确的语料库,足够的训练语料是模型成功的基础条件。
Query按照PV从高到低排序之后。横坐标为query编号,纵坐标是query的PV。从下图可以明显看出,query的PV分布是一个长尾分布。
每种搜索引擎的query 都有自己的特点。根据query的特点来设计自己的算法和相应产品是非常必要的。例如:百度有很多查询“从A到B怎么走”,“××怎么样”。相信百度正是研究了这些查询,才力推百度“贴吧”和“知道”,“百科”等产品的。通用搜索引擎和电子商务网站的query区别一定很大。例如joyo当当一定有大量书籍名称的查询。而在电子商务网站,有大量类目+属性的查询方式。如何组合的输入条件,准确分析用户意图,保证搜索引擎结果的召回率和准确率是一个挑战。
20-80定律:query 和cache
我们发现20%的top query,占据了80%的PV流量。如果解决了这20%的query的分析和排序问题,我们就解决了绝大多数流量的问题。
针对20%的query,我们可以优化搜索引擎的索引结构,尽量直接返回用户需要的信息。在query分析的模块,我们可以存储query的分词、词性标注以及query分类等结果。总之高效利用内存,用内存换取性能的极大提升。
query的分类和“框计算”
query分类是目前通用搜索引擎必须解决的问题。当你在百度或者google上面输入“××市天气”,会显示天气状态图片、温度等;输入“中石油”直接显示出中石油的股价;输入“航班”直接从航班起点和终点的选择。这也是百度所谓的“框计算”,也就是直接在搜索框完成解析,直达具体的应用。
如何做分类呢?
假设搜索引擎已经对网页分类,那么统计每个query下点击的页面分类,把页面类别的概率按照从高到低排列,也就是query的分类。也就可以知道这个query的分类。但是这种只能用在当query的点击数量足够的时候。
另外一种办法是通过页面分类,用贝叶斯的方法,反推每个query可能属于那些类别。
query的导航
query的分类其实是导航的一个基本条件。只有当你对query的分类准确,对query中每个term的词性理解准确的时候,导航才真正开始。
在电子商务网站,如Amazon、京东等网站。准确的导航是非常必要的。
而准确的导航是第一步。根据用户输入,在导航中体现相关热门推荐,或者个性化推荐,是对导航的更进一步的要求。
在淘宝搜索产品上,当用户输入关键词,会自动提示相应的类目和属性,并且把热门的类目属性展示在前面,而把相对冷门的类目和属性折叠起来。最大利用网页有限的展示空间。
query suggestiong
关键词推荐见 http://poson.iteye.com/admin/blogs/1441075。
query与个性化
说到个性化,必然涉及到对用户数据的收集。根据用户的行为或者设置,分析用户的年龄、性别、偏好等。同样是搜索“咖啡馆”,你在北京和上海搜索得到结果可能差异很大。
而这些分析数据来源于对每个用户在搜索引擎的行为日志。搜索引擎都会分析每个用户的搜索和点击等行为。存储的时候存在在分布式key-value内存数据库中。
用户行为不仅仅对个别用户本身有用。大量用户的行为日志,被广泛用于推荐系统的数据挖掘。例如用户在当当joyo上面购买的书籍,就来自于大量用户的购买和浏览记录。推荐系统从常见的关联规则分析,已经进化到各种复杂的图关系分析算法。
Query即用户在搜索引擎输入查询条件。在通用搜索引擎中,一般是指输入的关键词。而在各类行业或者垂直搜索引擎,还可以输入类目,如优酷网站中可以选择“电影”、“电视剧”这样的类目。在电子商务网站中,各种产品品牌、型号、款式、价格等也是常见的查询条件。
要分析query中每个term的内容,分词是必不可少的工具。分词算法从最简单的最大正向、最大反向分词算法,到复杂的隐马尔科夫、CRF模型。CRF模型是一种序列标注的机器学习方法。分词算法最关键的是如何得到足够的标注准确的语料库,足够的训练语料是模型成功的基础条件。
Query按照PV从高到低排序之后。横坐标为query编号,纵坐标是query的PV。从下图可以明显看出,query的PV分布是一个长尾分布。
每种搜索引擎的query 都有自己的特点。根据query的特点来设计自己的算法和相应产品是非常必要的。例如:百度有很多查询“从A到B怎么走”,“××怎么样”。相信百度正是研究了这些查询,才力推百度“贴吧”和“知道”,“百科”等产品的。通用搜索引擎和电子商务网站的query区别一定很大。例如joyo当当一定有大量书籍名称的查询。而在电子商务网站,有大量类目+属性的查询方式。如何组合的输入条件,准确分析用户意图,保证搜索引擎结果的召回率和准确率是一个挑战。
20-80定律:query 和cache
我们发现20%的top query,占据了80%的PV流量。如果解决了这20%的query的分析和排序问题,我们就解决了绝大多数流量的问题。
针对20%的query,我们可以优化搜索引擎的索引结构,尽量直接返回用户需要的信息。在query分析的模块,我们可以存储query的分词、词性标注以及query分类等结果。总之高效利用内存,用内存换取性能的极大提升。
query的分类和“框计算”
query分类是目前通用搜索引擎必须解决的问题。当你在百度或者google上面输入“××市天气”,会显示天气状态图片、温度等;输入“中石油”直接显示出中石油的股价;输入“航班”直接从航班起点和终点的选择。这也是百度所谓的“框计算”,也就是直接在搜索框完成解析,直达具体的应用。
如何做分类呢?
假设搜索引擎已经对网页分类,那么统计每个query下点击的页面分类,把页面类别的概率按照从高到低排列,也就是query的分类。也就可以知道这个query的分类。但是这种只能用在当query的点击数量足够的时候。
另外一种办法是通过页面分类,用贝叶斯的方法,反推每个query可能属于那些类别。
query的导航
query的分类其实是导航的一个基本条件。只有当你对query的分类准确,对query中每个term的词性理解准确的时候,导航才真正开始。
在电子商务网站,如Amazon、京东等网站。准确的导航是非常必要的。
而准确的导航是第一步。根据用户输入,在导航中体现相关热门推荐,或者个性化推荐,是对导航的更进一步的要求。
在淘宝搜索产品上,当用户输入关键词,会自动提示相应的类目和属性,并且把热门的类目属性展示在前面,而把相对冷门的类目和属性折叠起来。最大利用网页有限的展示空间。
query suggestiong
关键词推荐见 http://poson.iteye.com/admin/blogs/1441075。
query与个性化
说到个性化,必然涉及到对用户数据的收集。根据用户的行为或者设置,分析用户的年龄、性别、偏好等。同样是搜索“咖啡馆”,你在北京和上海搜索得到结果可能差异很大。
而这些分析数据来源于对每个用户在搜索引擎的行为日志。搜索引擎都会分析每个用户的搜索和点击等行为。存储的时候存在在分布式key-value内存数据库中。
用户行为不仅仅对个别用户本身有用。大量用户的行为日志,被广泛用于推荐系统的数据挖掘。例如用户在当当joyo上面购买的书籍,就来自于大量用户的购买和浏览记录。推荐系统从常见的关联规则分析,已经进化到各种复杂的图关系分析算法。
上一篇: tomcat 源码学习
下一篇: jQuery 动画
推荐阅读
-
C#编写了一个基于Lucene.Net的搜索引擎查询通用工具类:SearchEngineUtil
-
MySQL慢查询之pt-query-digest分析慢查询日志
-
揭密首个面向IaaS的查询语言:ZStack Query Language(ZQL)
-
ElasticStack学习(十):深入ElasticSearch搜索之QueryFiltering、多/单字符串的多字段查询
-
深入探讨:Oracle中如何查询正锁表的用户以及释放被锁的表的方法
-
深入sql oracle递归查询
-
yii Query Builder (yii 查询构造器) 官方指南翻译
-
深入理解用mysql_fetch_row()以数组的形式返回查询结果
-
解决不能修改 Mysql 慢查询 long_query_time 值的问题
-
Laravel Query Builder 复杂查询案例:子查询实现分区查询 partition by