我正在为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
我试着谷歌搜索答案,但我不确定我在这里谷歌搜索。我不认为方面是答案,分组似乎不会返回我需要的结果。
答案 0 :(得分:1)
您可以使用分组或collapse filter。根据我的经验,崩溃过滤器比分组快得多。以下是它应该如何用于您的情况:
fq={!collapse field=articleId max=version}