如何在Lucene搜索结果中进行分组?

如何在Lucene搜索结果中进行分组?,lucene,Lucene,如何将Lucene返回的搜索结果按字段分组(类似于SQL Server) 看来你不能。不过,可能有一个解决办法: 这里有一个线程概述了其他人是如何做到这一点的:不清楚您是想要一个真正的SQL式的“分组方式”行为,还是仅仅想要一个“订单方式”行为。Lucene中没有类似于聚合函数的功能,因此必须在Lucene之上的应用程序中实现“groupby” 但是,按字段排序相当容易。确保所需字段已编制索引,并创建一个org.apache.lucene.search.Sort对象作为搜索条件的一部分传递;大多

如何将Lucene返回的搜索结果按字段分组(类似于SQL Server)

看来你不能。不过,可能有一个解决办法:
这里有一个线程概述了其他人是如何做到这一点的:

不清楚您是想要一个真正的SQL式的“分组方式”行为,还是仅仅想要一个“订单方式”行为。Lucene中没有类似于聚合函数的功能,因此必须在Lucene之上的应用程序中实现“groupby”

但是,按字段排序相当容易。确保所需字段已编制索引,并创建一个
org.apache.lucene.search.Sort
对象作为搜索条件的一部分传递;大多数搜索方法都有一个重载,它接受
排序
实例


如果您要实现自己的“分组依据”逻辑,那么将结果“按顺序排列”到正确的字段是很有帮助的第一步。

Lucene有一些辅助库,其中一个是您需要的:

您不能按函数查询值分组,也不能按任意查询分组(就像Solr一样),但可以按单值字段分组


Lucene 4.0将实现类似的功能(分面搜索),Lucene 3.4现在支持分面搜索。在编制索引时,您可以指定一些补充内容,在搜索时,您可以按查询和组进行搜索

对于接下来的3个文档,使用这些组编制索引

doc1: monday, 1pm,  3min    
doc2: monday, 1pm,  4min    
doc3: monday, 2pm,  3min
您只能搜索第一个参数:monday,并获取值:3, 或者您可以深入搜索星期一/下午1点,并获得值:2 或设置搜索深度3并获取

monday :3
monday/1pm :2
monday/1pm/3min :1
monday/1pm/4min :1
monday/2pm :1
monday/2pm/3min :1
以下是:


但最重要的是,read

链接已断开。也许新的地点是:是的,泰。更新了断开的链接。