2016-03-08 96 views
1

民间,Solr合并两个查询,然后做分页

我们有一个需求solr我们想合并两个查询的结果。


查询一个返回[文档1,文件2,文件3,document4]

二查询返回[文件3,document4,document5,document6]

我们想要的结果按照以下顺序[文档1,书2 ,document3,document4,document5,document6]

基本上来自第一个查询的结果应该优先,而从第二个查询应该删除重复。

我们还希望在solr级别进行分页,因为它为每个查询返回100万个文档。

查询:

1)如何创建执行多个查询一起,为了获得满意的结果。 (第一个查询结果应该先出现,从第二个查询重复应该被删除)

2)我们想分页整个结果集的数据,因此我们不能一个接一个地执行。有什么办法可以做到这一点?

回答

0

1)你不能在Solr中做到这一点。您必须在应用程序级别添加此逻辑。
因此,像你一样正常执行两个solr查询,然后相交这两组。

2)使用参数&rows=<no. of rows>执行两个查询,因此每个查询最终只能得到5-10行(或者如您所愿),然后与这些较小的集合相交。

+0

Binoy感谢您的回复。我们也希望做分页,所以在手之前,我们应该知道这两个查询中有多少条记录(例如,我们需要投影的记录有1000条,就像有10个页面,每条记录有100个条目)。我觉得它应该可以通过一些解决方法 –

+0

有人对此有任何想法 –

+0

@MihirkumarJoshi Binoy说,如果你想为每一页100个项目,你应该只添加一个参数rows = 100&start = 0。 --- 然后,当用户询问下一页时,您只需运行相同的查询,将100添加到启动参数(行= 100&开始= 100;行= 100&开始= 200); ... 如果要显示用户有多少页在第一次查询之后,你只需计算numFound/rows四舍五入(numFound在solr响应中)。 --- 这是1查询,因为你想合并两个查询,你应该分行和2开始(行= 50&开始= 0/50/100 ...) – magnum87