lucene(16)—lucene搜索之facet查询查询示例(2)
lucene(14)—lucene搜索之facet索引原理和facet查询实例,上篇主要是统计facet的dim和每个种类对应的数量,个人感觉这个跟lucene的group不同的在于facet的存储类似于hash(key-field-value)形式的,而group则是单一的map(key-value)形式的,虽然都可以统计某一品类的数量,显然facet更具扩展性。
key-field-value查询
facet可以对某一个维度的满足某个条件的结果进行统计,如下:
|
|
这里我们搜索的dim是filePath,查找的范围是ik相关联的数据,对应的查询结果就是所有包含在IK文件夹下的数据
|
|
range查询
facet还支持range查询,range查询的类型包括DoubleRange和LongRange;其对应的Facets为DoubleRangeFacets和LongRangeFacets;
以LongRangeFacetCounts为例,LongRangeFacetCounts可以对long类型的数值进行整理查询
这里我们对每个文档的单词数量进行区间的分组,range查询示例如下:
|
|
其执行结果为:
|
|
多个dim查询
facet里DrillSideways可以定义多个facetCount的查询,这时返回的结果为各个facet对应的统计数
|
|
程序运行结果如下:
|
|
对单个range的列表查询支持
facet支持单个range的区间查询,这样可以查询出此range对饮的TopDocs列表,等同于返回了document对象列表;
这里我们查询内容长度在0到100之间的数据
|
|
其运行结果如下:
|
|
本节内容都是示例,个人觉得这种会比较直观些,facet涉及的面比较广,这里没有facet的sort和其他相关操作,会在后续补上,希望大家持续关注。