我正在为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"
}]
注意到我只检索了每个具有最大version
的唯一articleId
。
我正在研究的确切版本是:Liferay 6.2.ee sp11(带有一些补丁)Tomcat 7.0.64 下的Solr 4.10.4
我试着在谷歌上搜索答案,但我不确定我在这里搜索的是什么。我不认为分方面是答案,分组似乎并没有得到我需要的结果。
您可以使用分组或折叠过滤器。根据我的经验,折叠过滤器比分组快得多。以下是它应该如何用于您的案例:
fq={!collapse field=articleId max=version}