Solr聚合查询
1分组查询
概述:Solr常用的分组查询有两种,Facet分组和Group分组,分别以下列出这两种查询:
1.1 Facet分组solr种以导航为目的的查询结果成为facet,在用户查询的结果上根据分类增加了count信息,然后用户根据信息做进一步搜索, Facet是solr的高级搜索功能之一,可以给用户提供更友好的搜索体验.在搜索关键字的同时,能够按照Facet的字段进行分组并统计。 Solr Fact提供了4种类型的Fact <lstname="facet_counts"> <lstname="facet_queries"/> <lstname="facet_fields"/> <lstname="facet_dates"/> <lstname="facet_ranges"/> </lst> facet_queries:代表自定义条件查询facet,类似数据库的count函数 facet_fields :代表根据字段分组查询,类似数据库的groupby count的组合 facet_dates:根据日期区间分组查询 facet_ranges:当然了,日期有区间,数字也有,这个就是根据数字分组查询 说明: facet的基本功能就是对搜索结果中的数据进行分类。 facet用法 facet.field:指定要分类的字段 facet=on 或 facet=true表示功能开启 facet.prefix 表示字段前缀 facet.limit 表示返回的记录数 facet.offict 表示从第几条开始,主要用于分页 facet.query可以任意定义查询 Range Facet 一般用于date类型或数字类型的字段。 &facet=on &facet.query=date:[2009-1-1T0:0:0ZTO 2010-1-1T0:0:0Z] 参数说明 facet.range 需要做facet查询的字段 facet.range.start 设置起始点 facet.range.end 设置终止点 facet.range.gap 限定每一段范围的区间差值 facet.range.hardend 指定如何处理最后一个区间 facet.range.include 指定如何处理临界值 facet.range.other 指定如何处理限定范围以为的结果 facet.range.method 指定facet算法 如下查询: http://localhost:8983/solr/solr_select/query?q=*:*&facet=on&facet.field=name 根据name字段分组查询结果
1.2 Group分组Solr对结果的分组处理除了facet还可以使用group。Solr的group是根据某一字段对结果分组,将每一组内满足查询的结果按顺序返回。 Group对比Facet Group和Facet的概念很像,都是用来分组。Facet返回所有相关的结果并允许用户基于facet的目录重新定义结果集。Facet可以对分组数量进行过滤,以及排序,和日期范围,时间范围分组,但是如果你想得到具体的数据,还得需要查询一次或多次。group可以得到分组的组数量,一次请求,可以拿到所有的数据。 Group和Facet可以结合起来使用,但只能使用facet.field和facet.range,还不支持日期date和维度统计pivot faceting. 如下查询: http://localhost:8983/solr/solr_select/query?q=*:*&group=true&group.field=name 参数说明:
2 Stats Component聚合查询摘要:Solr可以利用StatsComponent实现对数字、字符串或日期字段的聚合统计查询,即:min、max、avg、count、sum的功能
Stats Component参数说明:
stats Component统计内容
如下查询: http://localhost:8983/solr/solr_select/select?q=*:*&stats=true&stats.field=id&rows=0&indent=true
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |