如何通过max字段获取所有唯一文档

时间:2016-01-10 14:17:58

标签: solr liferay solr4 liferay-solr

我正在为Liferay 6.2应用程序开发搜索功能,但我正在努力学习如何获取最新文章。

由于原因,客户希望在Solr中跟踪Liferay Journal文章的所有版本。这意味着每个“版本”都会作为单独的文档存储,并带有递增的version字段。出于搜索的目的,我需要抓住最新的一个。

例如,如果我在Solr中有这样的期刊文章: [{ articleId:"123456", title:"Sample Doc 1", content:"abc 123 xyz", version:"1.0" }, { articleId:"222111", title:"Sample Doc 2", content:"1111", version:"1.0" }, { articleId:"222111", title:"Sample Doc 2", content:"2222", version:"1.1" }, { articleId:"123456", title:"Sample Doc 1", content:"xxx xxx 1234556", version:"1.1" }, { articleId:"222111", title:"Sample Doc 2", content:"3333", version:"1.2" }]

我查询了我期望结果的所有文件: [{ articleId:"123456", title:"Sample Doc 1", content:"xxx xxx 1234556", version:"1.1" }, { articleId:"222111", title:"Sample Doc 2", content:"3333", version:"1.2" }]

注意到我只检索了具有最大articleId的每个唯一version

我正在处理的确切版本是:   Liferay 6.2.ee sp11(有一些补丁)   Tomcat 7.0.64下的Solr 4.10.4

我试着谷歌搜索答案,但我不确定我在这里谷歌搜索。我不认为方面是答案,分组似乎不会返回我需要的结果。

1 个答案:

答案 0 :(得分:1)

您可以使用分组或collapse filter。根据我的经验,崩溃过滤器比分组快得多。以下是它应该如何用于您的情况:

fq={!collapse field=articleId max=version}