Solr分组聚合查询之Facet
Posted cuihongyu3503319
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr分组聚合查询之Facet相关的知识,希望对你有一定的参考价值。
摘要: Solr的分组聚合是一个笼统的概念,目的就是把查询结果做分类,有多种方式可以做到很类似的结果。也正是由于它们的不同表现,可以适合于多种场景。
何为Facet
Facet是一种手段,用来将搜索结果分类,它并不会修改查询结果信息,只是给分类后的结果加上了每一项的数量值。我们可以用facet来做导航栏,引导用户更精确地查找信息。
一般参数
参数 | 说明 |
---|---|
facet | 布尔值,设置为true,表示开启facet |
facet.query | 指定查询语句 |
facet
布尔值,默认为空,只有设置为true,其他的facet参数才能生效。
facet.query
该参数允许你指定任意一个满足Luence语法的查询语句。默认情况下,Solr会自动判断如何分类。通过facet.query可以覆盖默认行为并指定分类策略。可以使用facet.query多次,以指定不同的查询语句。
Facet种类
Solr的Facet有多种形式,它们的参数不尽相同。
Filed-Value Facet
可以用于Text或者String类型的字段。
参数 | 说明 |
---|---|
facet.field | 需要做facet查询的字段,必须指定,否则其他参数无效 |
facet.sort | 排序规则,可以是count(默认值,由大到小)或index(字典顺序) |
facet.limit | 控制返回的数量,默认100 |
facet.missing | 控制是否考虑没有facet字段,默认false |
Range Facet
一般用于date类型或数字类型的字段。
参数 | 说明 |
---|---|
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算法 |
Pivot Facet /Decision Tree Facet
Pivot可以理解为维度,Pivot Facet用来对表中的数据排序,求和,平均等一系列操作,可以呈现出对facet结果的总结。此外,可以利用这一功能生成决策树,告知你如何更好地利用生成的facet。
以上是关于Solr分组聚合查询之Facet的主要内容,如果未能解决你的问题,请参考以下文章
solrcloud jsonfacet分组聚合 unique计数不准确