CN104951467B - 统计方法及装置 - Google Patents

统计方法及装置 Download PDF

Info

Publication number
CN104951467B
CN104951467B CN201410123667.0A CN201410123667A CN104951467B CN 104951467 B CN104951467 B CN 104951467B CN 201410123667 A CN201410123667 A CN 201410123667A CN 104951467 B CN104951467 B CN 104951467B
Authority
CN
China
Prior art keywords
value
statistical
combined field
target object
field
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410123667.0A
Other languages
English (en)
Other versions
CN104951467A (zh
Inventor
熊水林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Network Technology Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201410123667.0A priority Critical patent/CN104951467B/zh
Publication of CN104951467A publication Critical patent/CN104951467A/zh
Application granted granted Critical
Publication of CN104951467B publication Critical patent/CN104951467B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本申请提供一种统计方法及装置。本申请实施例通过获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段,进而根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值,以及根据所述至少两个分组字段的值,获得所述每个目标对象的组合字段的值,使得能够根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值,实现了对多个指定域的组合进行统计操作,从而提高了SOLR的统计灵活性。

Description

统计方法及装置
【技术领域】
本申请涉及统计技术,尤其涉及一种统计方法及装置。
【背景技术】
SOLR是一个开源的搜索引擎,不仅提供了比Lucene更好的全文搜索服务,还可以作为海量数据的统计工具。SOLR的底层数据结构,仍然是Lucene的列式文件存储,各个列值在文件中是以数组或链表的形式存在。SOLR的统计组件(StatsComponent)可以分别对这些文件的多个指定域即分组,进行统计操作。
然而,SOLR的统计组件只能对每个指定域单独的进行统计操作,无法对多个指定域的组合进行统计操作,从而导致了SOLR的统计灵活性的降低。
【发明内容】
本申请的多个方面提供一种统计方法及装置,用以提高SOLR的统计灵活性。
本申请的一方面,提供一种统计方法,应用于SOLR中,包括:
获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段;
根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值;
根据所述至少两个分组字段的值,获得所述每个目标对象的组合字段的值;
根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值,包括:
根据所述过滤条件,执行查询流程,以获得所述目标对象;其中,所述查询流程包括过滤操作;
根据所述统计字段和所述至少两个分组字段,获得所述目标对象的统计字段的值和至少两个分组字段的值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述查询流程还包括评分操作和排序操作。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述统计信息中还包括所述统计操作的操作标识;所述根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值,包括:
根据每个组合字段的值和所述操作标识,对所述每个目标对象的统计字段的值进行所述统计操作,以获得所述每个组合字段的值所对应的统计值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值之后,还包括:
根据所述每个组合字段的值,获得所述至少两个分组字段的值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值之后,还包括:
对每个统计值进行所述统计操作,获得统计汇总值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值之后,还包括:
将所述统计信息、所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,
所述获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段之后,还包括:
根据所述统计信息,在所述缓存中进行查找,以获得所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值;
所述根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值,包括:
若没有获得所述缓存中所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值。
本申请的一方面,提供一种统计装置,应用于SOLR中,包括:
获取单元,用于获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段;
维度分析单元,用于根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值;
维度变换单元,用于根据所述至少两个分组字段的值,获得所述每个目标对象的组合字段的值;
统计单元,用于根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述维度分析单元,具体用于
根据所述过滤条件,执行查询流程,以获得所述目标对象;其中,所述查询流程包括过滤操作;以及
根据所述统计字段和所述至少两个分组字段,获得所述目标对象的统计字段的值和至少两个分组字段的值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述查询流程还包括评分操作和排序操作。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述统计信息中还包括所述统计操作的操作标识;所述统计单元,具体用于
根据每个组合字段的值和所述操作标识,对所述每个目标对象的统计字段的值进行所述统计操作,以获得所述每个组合字段的值所对应的统计值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述维度变换单元,还用于
根据所述每个组合字段的值,获得所述至少两个分组字段的值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述统计单元,还用于
对每个统计值进行所述统计操作,获得统计汇总值。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述装置还包括缓存单元,用于
将所述统计信息、所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中。
如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,
所述获取单元,还用于
根据所述统计信息,在所述缓存中进行查找,以获得所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值;
所述维度分析单元,具体用于
若所述获取单元没有获得所述缓存中所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值。
由上述技术方案可知,本申请实施例通过获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段,进而根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值,以及根据所述至少两个分组字段的值,获得所述每个目标对象的组合字段的值,使得能够根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值,实现了对多个指定域的组合进行统计操作,从而提高了SOLR的统计灵活性。
另外,采用本申请提供的技术方案,由于简化了查询流程中所包括的操作,即查询操作中只包括过滤操作,而不包括评分操作和排序操作,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
另外,采用本申请提供的技术方案,由于直接对每个组合字段的值所对应的统计值进行统计操作,获得本次统计的统计汇总值,而不再反复对每个目标对象的统计字段的值执行统计操作,获得本次统计的统计汇总值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
另外,采用本申请提供的技术方案,由于将统计信息、每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中,使得在所获取的统计信息完全一致的情况下,可以直接从缓存中获取每个组合字段的值所对应的统计值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的统计方法的流程示意图;
图2为本申请另一实施例提供的统计装置的结构示意图;
图3为本申请另一实施例提供的统计装置的结构示意图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1为本申请一实施例提供的统计方法的流程示意图,应用于SOLR中,如图1所示。
101、获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段。
可选地,在本实施例的一个可能的实现方式中,在101中,具体可以接收客户端发送的所述统计信息。
例如,由SOLR现有的请求处理容器(SolrDispatchFilter)负责接收客户端发送的所述统计信息。
102、根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值。
可选地,在本实施例的一个可能的实现方式中,在102中,具体可以根据所述过滤条件,执行查询流程,以获得所述目标对象;其中,所述查询流程包括过滤操作。然后,根据所述统计字段和所述至少两个分组字段,获得所述目标对象的统计字段的值和至少两个分组字段的值。
例如,所述查询流程除了包括过滤操作之外,还可以进一步包括评分操作和排序操作。也就是说,具体可以由SOLR现有的查询组件(QueryComponent)执行完整的查询流程,然后,再由SOLR的结果收集器(StatsDocCollector)执行相应的统计流程。
或者,再例如,所述查询流程可以只包括过滤操作。也就是说,具体可以由SOLR现有的查询组件(QueryComponent)执行简化的查询流程,然后,进而自定义一个用于统计的结果收集器(StatsDocCollector)执行相应的统计流程。这样,由于简化了查询流程中所包括的操作,即查询操作中只包括过滤操作,而不包括评分操作和排序操作,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
103、根据所述至少两个分组字段的值,获得所述每个目标对象的组合字段的值。
可选地,在本实施例的一个可能的实现方式中,在103中,具体可以利用一个自定义的多参数的函数(Multifunction)的具体实例,例如,ConcatFunction操作,将至少两个分组字段的值,转换为一个组合字段的值。其中,转换方法可以采用任何方法,例如,特定字符串的拼接方法,本实施例对此不进行特别限定。
104、根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值。
可选地,在本实施例的一个可能的实现方式中,在104中,具体可以根据每个组合字段的值,对所述每个目标对象的统计字段的值进行预先指定的至少一种统计操作,以获得所述每个组合字段的值所对应的统计值。
例如,可以进行SOLR所支持的全部统计操作,即max函数、min函数、count函数、missing函数、sum函数、avg函数、sqr函数和stddev函数所对应的运算。
或者,再例如,可以进行SOLR所支持的常用的部分统计操作,即max函数、min函数、count函数和sum函数所对应的运算。
可选地,在本实施例的一个可能的实现方式中,在101中,所获取的所述统计信息中还可以进一步包括所述统计操作的操作标识。相应地,在104中,具体可以根据每个组合字段的值和所述操作标识,对所述每个目标对象的统计字段的值进行所述统计操作,以获得所述每个组合字段的值所对应的统计值。这样,通过在统计信息中增加统计操作的操作标识,使得能够根据本次统计的统计需求,有目的的进行统计操作,从而提高了SOLR的统计有效性。
可选地,在本实施例的一个可能的实现方式中,在104之后,还可以进一步根据所述每个组合字段的值,获得所述至少两个分组字段的值。具体地,具体可以执行ConcatFunction操作的逆操作,将一个组合字段的值,转换为至少两个分组字段的值。其中,ConcatFunction操作的逆操作的转换方法可以采用与ConcatFunction操作的转换方法对应的还原方法。这样,就可以根据所述至少两个分组字段的值,以及所述至少两个分组字段的值所对应的统计值,生成统计结果,提供给客户端。
可选地,在本实施例的一个可能的实现方式中,在104之后,还可以进一步对每个统计值进行所述统计操作,获得统计汇总值。这样,由于直接对每个组合字段的值所对应的统计值进行统计操作,获得本次统计的统计汇总值,而不再反复对每个目标对象的统计字段的值执行统计操作,获得本次统计的统计汇总值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
可选地,在本实施例的一个可能的实现方式中,在104之后,还可以进一步将所述统计信息、所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中。
相应地,在101之后,还可以进一步根据所述统计信息,在所述缓存中进行查找,以获得所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值。
那么,在102中,若没有获得所述缓存中所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,则可以继续执行101之后的操作,即根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值。
这样,由于将统计信息、每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中,使得在所获取的统计信息完全一致的情况下,可以直接从缓存中获取每个组合字段的值所对应的统计值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
为使得本发明实施例提供的方法更加清楚,下面将以SOLR接收客户端发送的超文本传输协议(Hyper Text Transfer Protocol,HTTP)请求即http://localhost:8983/tigo/select?stats=on&q=sku:sku_1*&wt=xml&stats.fiel d=price&f.price.stats.func=sum_max&stats.field=weight&f.weight.stats.func=avg_sqr&stats.pivot=sku,category作为举例。该HTTP请求中包含统计信息,即
过滤条件为sku字段的值为“sku_1*”;
统计字段为price字段和weight字段;
统计操作为price字段为sum函数所对应的运算和max函数所对应的运算,以及weight字段的操作标识为avg函数所对应的运算和sqr函数所对应的运算;
分组字段为sku字段和category字段。
其中,stats=on:表示执行查询流程中所包含的过滤操作之后,立即执行统计流程,即调用SOLR的统计组件(StatsComponent),无需再执行评分操作和排序操作。
SOLR的查询组件(QueryComponent)接收客户端发送的HTTP请求之后,根据统计信息,生成一个带有统计信息的缓存Key对象QueryResultKey,进而判断缓存中是否存在该统计对象。若缓存中存在该统计对象,则可以直接从缓存中取出该统计对象对应的结果对象(StatsValues);若缓存中不存在该统计对象,则可以根据过滤条件,执行查询流程,以获得目标对象,以及调用SOLR的统计组件(StatsComponent)。
自定义的结果收集器(StatsDocCollector)收集查询组件(QueryComponent)所获得的目标对象即文档标识(ID)的集合,初始化统计字段的域缓存(FieldCache),以将统计字段的值放入统计字段的域缓存(FieldCache),以及初始化分组字段的域缓存(FieldCache),以将分组字段的值放入分组字段的域缓存(FieldCache),进而构建由分组字段作为参数的ConcatFunction操作。
结果收集器(StatsDocCollector)利用ConcatFunction操作,获得每个目标对象所对应的唯一的组合字段的值。其中,ConcatFunction操作中所涉及的转换方法可以采用任何方法,例如,特定字符串的拼接方法,本实施例对此不进行特别限定。该值可以作为统计值的Key,目标对象与Key是多对一的关系,即对应每一个Key,会有多条记录。
结果收集器(StatsDocCollector)中的分组统计对象(StatsValueFacet)保存有一个结果对象(StatsValues)的映射关系Map<K,V>。其中,K是所述Key,V是对应于Key的多条记录的某些统计操作的统计值,例如,sum函数所对应的运算等。具体地,当结果收集器(StatsDocCollector)遍历每个目标对象时,分组统计对象(StatsValueFacet)从每个统计字段的域缓存(FieldCache)中取出一个值,与Map中对应该目标对象的K对应的值进行统计操作,以获得统计值V。
结果收集器(StatsDocCollector)遍历每个目标对象完毕之后,可以进一步对每个统计值进行统计操作,获得统计汇总值。
结果收集器(StatsDocCollector)将Map<K,V>存储在缓存中。这样,
下一次有同样的HTTP请求时,直接将其取出。
以上的统计值,或者从缓存中取出的统计值,都是单个组合域(组合维度)的结果对象(StatsValues)即Map<K,V>,还需要进一步执行ConcatFunction操作的逆操作,以实现从组合域K到多个域即k1(sku字段)和k2(category字段)的转换,以获得Map<(k1=v1,k2=v2),V>对象。
至此,单个统计字段的多个域的统计操作执行完毕。
可以理解的是,如果是多个统计字段,那么,最后的统计结果可以为如下二维表格形式的“行式结构”
至此,多个统计字段的多个域组合的统计操作全部执行完毕。
本实施例中,通过获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段,进而根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值,以及根据所述至少两个分组字段的值,获得所述每个目标对象的组合字段的值,使得能够根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值,实现了对多个指定域的组合进行统计操作,从而提高了SOLR的统计灵活性。
另外,采用本申请提供的技术方案,由于简化了查询流程中所包括的操作,即查询操作中只包括过滤操作,而不包括评分操作和排序操作,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
另外,采用本申请提供的技术方案,由于直接对每个组合字段的值所对应的统计值进行统计操作,获得本次统计的统计汇总值,而不再反复对每个目标对象的统计字段的值执行统计操作,获得本次统计的统计汇总值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
另外,采用本申请提供的技术方案,由于将统计信息、每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中,使得在所获取的统计信息完全一致的情况下,可以直接从缓存中获取每个组合字段的值所对应的统计值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图2为本申请另一实施例提供的统计装置的结构示意图,应用于SOLR,如图2所示。本实施例的统计装置可以包括获取单元21、维度分析单元22、维度变换单元23和统计单元24。其中,
获取单元21,用于获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段。
可选地,在本实施例的一个可能的实现方式中,获取单元21具体可以接收客户端发送的所述统计信息。
例如,由SOLR现有的请求处理容器(SolrDispatchFilter)负责接收客户端发送的所述统计信息。
维度分析单元22,用于根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值。
可选地,在本实施例的一个可能的实现方式中,所述维度分析单元22,具体可以用于根据所述过滤条件,执行查询流程,以获得所述目标对象;其中,所述查询流程包括过滤操作;以及根据所述统计字段和所述至少两个分组字段,获得所述目标对象的统计字段的值和至少两个分组字段的值。
例如,所述查询流程除了包括过滤操作之外,还可以进一步包括评分操作和排序操作。也就是说,具体可以由SOLR现有的查询组件(QueryComponent)执行完整的查询流程,然后,再由SOLR的结果收集器(StatsDocCollector)执行相应的统计流程。
或者,再例如,所述查询流程可以只包括过滤操作。也就是说,具体可以由SOLR现有的查询组件(QueryComponent)执行简化的查询流程,然后,进而由自定义一个用于统计的结果收集器(StatsDocCollector)执行相应的统计流程。这样,由于简化了查询流程中所包括的操作,即查询操作中只包括过滤操作,而不包括评分操作和排序操作,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
维度变换单元23,用于根据所述至少两个分组字段的值,获得所述每个目标对象的组合字段的值。
可选地,在本实施例的一个可能的实现方式中,维度变换单元23具体可以利用一个自定义的多参数的函数(Multifunction)的具体实例,例如,ConcatFunction操作,将至少两个分组字段的值,转换为一个组合字段的值。其中,转换方法可以采用任何方法,例如,特定字符串的拼接方法,本实施例对此不进行特别限定。
统计单元24,用于根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值。
可选地,在本实施例的一个可能的实现方式中,所述统计单元24,具体可以用于根据每个组合字段的值,对所述每个目标对象的统计字段的值进行预先指定的至少一种统计操作,以获得所述每个组合字段的值所对应的统计值。
例如,所述统计单元24可以进行SOLR所支持的全部统计操作,即max函数、min函数、count函数、missing函数、sum函数、avg函数、sqr函数和stddev函数所对应的运算。
或者,再例如,所述统计单元24可以进行SOLR所支持的常用的部分统计操作,即max函数、min函数、count函数和sum函数所对应的运算。
可选地,在本实施例的一个可能的实现方式中,获取单元21所获取的所述统计信息中还可以进一步包括所述统计操作的操作标识。相应地,所述统计单元24,具体可以用于根据每个组合字段的值和所述操作标识,对所述每个目标对象的统计字段的值进行所述统计操作,以获得所述每个组合字段的值所对应的统计值。这样,通过在统计信息中增加统计操作的操作标识,使得能够根据本次统计的统计需求,有目的的进行统计操作,从而提高了SOLR的统计有效性。
可选地,在本实施例的一个可能的实现方式中,所述维度变换单元23,还可以进一步用于根据所述每个组合字段的值,获得所述至少两个分组字段的值。具体地,所述维度变换单元23具体可以执行ConcatFunction操作的逆操作,将一个组合字段的值,转换为至少两个分组字段的值。其中,ConcatFunction操作的逆操作的转换方法可以采用与ConcatFunction操作的转换方法对应的还原方法。这样,就可以根据所述至少两个分组字段的值,以及所述至少两个分组字段的值所对应的统计值,生成统计结果,提供给客户端。
可选地,在本实施例的一个可能的实现方式中,所述统计单元24,还可以进一步用于对每个统计值进行所述统计操作,获得统计汇总值。这样,由于直接对每个组合字段的值所对应的统计值进行统计操作,获得本次统计的统计汇总值,而不再反复对每个目标对象的统计字段的值执行统计操作,获得本次统计的统计汇总值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
可选地,在本实施例的一个可能的实现方式中,如图3所示,本实施例提供的统计装置还可以进一步包括缓存单元31,用于将所述统计信息、所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中。
相应地,所述获取单元21,还可以进一步用于根据所述统计信息,在所述缓存中进行查找,以获得所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值。
那么,所述维度分析单元22,具体用于若所述获取单元21没有获得所述缓存中所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,则可以执行对应的操作,即根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值。
这样,由于将统计信息、每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中,使得在所获取的统计信息完全一致的情况下,可以直接从缓存中获取每个组合字段的值所对应的统计值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
本实施例中,通过获取单元获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段,进而由维度分析单元根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值,以及维度变换单元根据所述至少两个分组字段的值,获得所述每个目标对象的组合字段的值,使得统计单元能够根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值,实现了对多个指定域的组合进行统计操作,从而提高了SOLR的统计灵活性。
另外,采用本申请提供的技术方案,由于简化了查询流程中所包括的操作,即查询操作中只包括过滤操作,而不包括评分操作和排序操作,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
另外,采用本申请提供的技术方案,由于直接对每个组合字段的值所对应的统计值进行统计操作,获得本次统计的统计汇总值,而不再反复对每个目标对象的统计字段的值执行统计操作,获得本次统计的统计汇总值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
另外,采用本申请提供的技术方案,由于将统计信息、每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中,使得在所获取的统计信息完全一致的情况下,可以直接从缓存中获取每个组合字段的值所对应的统计值,因此,能够有效提供SOLR的统计效率,降低SOLR的统计性能消耗。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或页面组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一个计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (14)

1.一种统计方法,应用于SOLR中,其特征在于,包括:
获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段;
根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值;
根据所述至少两个分组字段的值,获得每个目标对象的组合字段的值;
根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值;
对每个统计值进行所述统计操作,获得统计汇总值。
2.根据权利要求1所述的方法,其特征在于,所述根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值,包括:
根据所述过滤条件,执行查询流程,以获得所述目标对象;其中,所述查询流程包括过滤操作;
根据所述统计字段和所述至少两个分组字段,获得所述目标对象的统计字段的值和至少两个分组字段的值。
3.根据权利要求2所述的方法,其特征在于,所述查询流程还包括评分操作和排序操作。
4.根据权利要求1所述的方法,其特征在于,所述统计信息中还包括所述统计操作的操作标识;所述根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值,包括:
根据每个组合字段的值和所述操作标识,对所述每个目标对象的统计字段的值进行所述统计操作,以获得所述每个组合字段的值所对应的统计值。
5.根据权利要求1所述的方法,其特征在于,所述根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值之后,还包括:
根据所述每个组合字段的值,获得所述至少两个分组字段的值。
6.根据权利要求1~5任一权利要求所述的方法,其特征在于,所述根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值之后,还包括:
将所述统计信息、所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中。
7.根据权利要求6所述的方法,其特征在于,
所述获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段之后,还包括:
根据所述统计信息,在所述缓存中进行查找,以获得所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值;
所述根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值,包括:
若没有获得所述缓存中所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值。
8.一种统计装置,应用于SOLR中,其特征在于,包括:
获取单元,用于获取统计信息,所述统计信息中包括过滤条件、统计字段和至少两个分组字段;
维度分析单元,用于根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值;
维度变换单元,用于根据所述至少两个分组字段的值,获得每个目标对象的组合字段的值;
统计单元,用于根据每个组合字段的值,对所述每个目标对象的统计字段的值进行统计操作,以获得所述每个组合字段的值所对应的统计值;
对每个统计值进行所述统计操作,获得统计汇总值。
9.根据权利要求8所述的装置,其特征在于,所述维度分析单元,具体用于
根据所述过滤条件,执行查询流程,以获得所述目标对象;其中,所述查询流程包括过滤操作;以及
根据所述统计字段和所述至少两个分组字段,获得所述目标对象的统计字段的值和至少两个分组字段的值。
10.根据权利要求9所述的装置,其特征在于,所述查询流程还包括评分操作和排序操作。
11.根据权利要求8所述的装置,其特征在于,所述统计信息中还包括所述统计操作的操作标识;所述统计单元,具体用于
根据每个组合字段的值和所述操作标识,对所述每个目标对象的统计字段的值进行所述统计操作,以获得所述每个组合字段的值所对应的统计值。
12.根据权利要求8所述的装置,其特征在于,所述维度变换单元,还用于
根据所述每个组合字段的值,获得所述至少两个分组字段的值。
13.根据权利要求8~12任一权利要求所述的装置,其特征在于,所述装置还包括缓存单元,用于
将所述统计信息、所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,存储在缓存中。
14.根据权利要求13所述的装置,其特征在于,
所述获取单元,还用于
根据所述统计信息,在所述缓存中进行查找,以获得所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值;
所述维度分析单元,具体用于
若所述获取单元没有获得所述缓存中所存储的所述每个组合字段的值、以及所述每个组合字段的值所对应的统计值,根据所述统计信息,获得目标对象的统计字段的值和至少两个分组字段的值。
CN201410123667.0A 2014-03-28 2014-03-28 统计方法及装置 Active CN104951467B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410123667.0A CN104951467B (zh) 2014-03-28 2014-03-28 统计方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410123667.0A CN104951467B (zh) 2014-03-28 2014-03-28 统计方法及装置

Publications (2)

Publication Number Publication Date
CN104951467A CN104951467A (zh) 2015-09-30
CN104951467B true CN104951467B (zh) 2019-04-30

Family

ID=54166130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410123667.0A Active CN104951467B (zh) 2014-03-28 2014-03-28 统计方法及装置

Country Status (1)

Country Link
CN (1) CN104951467B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897280B (zh) * 2015-12-17 2020-07-14 菜鸟智能物流控股有限公司 数据查询方法及装置
CN106933923B (zh) * 2015-12-31 2020-04-21 北京国双科技有限公司 筛选会话的方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049296A (zh) * 2012-12-28 2013-04-17 北界创想(北京)软件有限公司 为下载设备自动匹配目标应用的方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120304247A1 (en) * 2011-05-25 2012-11-29 John Badger System and process for hierarchical tagging with permissions
US20140025626A1 (en) * 2012-04-19 2014-01-23 Avalon Consulting, LLC Method of using search engine facet indexes to enable search-enhanced business intelligence analysis

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049296A (zh) * 2012-12-28 2013-04-17 北界创想(北京)软件有限公司 为下载设备自动匹配目标应用的方法和装置

Also Published As

Publication number Publication date
CN104951467A (zh) 2015-09-30

Similar Documents

Publication Publication Date Title
CN105721629B (zh) 用户标识匹配方法和装置
US9256686B2 (en) Using a bloom filter in a web analytics application
JP5635691B2 (ja) 複数のシステムを用いたデータ解析
CN106557498A (zh) 数据存储方法和装置以及数据查询方法和装置
CN103942221B (zh) 检索方法及设备
CN102915373A (zh) 一种数据存储方法和装置
CN104050235B (zh) 基于集合选择的分布式信息检索方法
CN104077415B (zh) 搜索方法及装置
CN105493085B (zh) 创建数据库表的样本的方法、系统和计算机可读存储介质
WO2012030411A1 (en) Method for classification of objects in a graph data stream
CN106156070B (zh) 一种查询方法、文件合并方法与相关装置
CN109710611B (zh) 存储表数据的方法、查询表数据的方法、装置及存储介质
CN110390584A (zh) 一种异常用户的识别方法、识别装置及可读存储介质
CN109271793A (zh) 物联网云平台设备类别识别方法及系统
CN105302815B (zh) 网页的统一资源定位符url的过滤方法和装置
Cho et al. Latent space model for multi-modal social data
CN110795471B (zh) 数据匹配的方法及装置、计算机可读存储介质、电子设备
CN109409964A (zh) 优质品牌的识别方法及装置
CN105991620B (zh) 恶意账户识别方法及装置
CN103559205A (zh) 基于MapReduce的并行特征选择方法
CN104951467B (zh) 统计方法及装置
CN103905482A (zh) 推送信息的方法、推送服务器和系统
CN106534303B (zh) 一种应用于对账系统的负载均衡方法和装置
CN110245155A (zh) 数据处理方法、装置、计算机可读存储介质及终端设备
CN105827780B (zh) 一种来电显示方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211126

Address after: No. 699, Wangshang Road, Binjiang District, Hangzhou, Zhejiang

Patentee after: Alibaba (China) Network Technology Co.,Ltd.

Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK

Patentee before: ALIBABA GROUP HOLDING Ltd.

TR01 Transfer of patent right