如何合并两个或多个Solr搜索结果?

时间:2018-08-07 08:01:25

标签: search solr lucene ranking

我有多个应用程序实例。每个应用程序都指向其自己的Solr以进行文档索引。

我正在进行统一搜索,在该搜索中,用户点击了搜索栏中的查询,并且应根据相关性对所有实例中的相关文档进行排名。

现在,我已经实现了一种基于Round Robin时尚的解决方案。

例如,我有2个实例, Ins-1 solr-1 Ins-2 solr-2 。 Ins-1有1K文档,Ins-2有5K文档。当我遇到任何查询时,该查询将从solr-1中获取X份文档,并从solr-2中获取X份文档。 我正在以循环方式显示那些2X文档。但这不是显示搜索结果的最佳方法。 我正在寻找一种解决方案,可以根据与搜索的相关性来重新排序那些2X文档。

2 个答案:

答案 0 :(得分:0)

我认为您应该将两个实例合并为一个实例。您可以将数据从一个实例导入到另一个实例。 Solr Admin UI具有“数据导入”标签,用于将数据从一个集合导入到另一个集合。

答案 1 :(得分:0)

这里doc1和doc2是solr的两个独立响应,您可以在JAVA中完成

  SolrDocumentList appendResponse(SolrDocumentList doc1,SolrDocumentList doc2) {
    SolrDocumentList documentsList=new SolrDocumentList();
    for (SolrDocument solrDocument:doc1) 
    { 
            documentsList.add(solrDocument);
    }
    for (SolrDocument solrDocument:doc2) 
    { 
            documentsList.add(solrDocument);
    }

    return documentsList;
}