Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 如何合并两个或多个solr搜索结果?_Search_Solr_Lucene_Ranking - Fatal编程技术网

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

Search 如何合并两个或多个solr搜索结果?,search,solr,lucene,ranking,Search,Solr,Lucene,Ranking,我有多个应用程序实例。每个应用程序都指向自己的solr以进行文档索引 我正在进行一个统一搜索,用户在搜索栏中点击一个查询,所有实例中的相关文档都应该根据相关性进行排序 现在我已经实现了一个基于循环方式的解决方案 例如,我有两个实例,Ins-1与solr-1和Ins-2与solr-2。 Ins-1有1K个文档,Ins-2有5K个文档。当我点击任何查询时,查询将从solr-1获取X个文档数,从solr-2获取X个文档数。 我正在以循环方式显示那些2X文档。但这并不是显示搜索结果的最佳方式。 我正在寻

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

我正在进行一个统一搜索,用户在搜索栏中点击一个查询,所有实例中的相关文档都应该根据相关性进行排序

现在我已经实现了一个基于循环方式的解决方案

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

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

这里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;
}

两个实例上的模式是否相同?它们是单核,还是具有集合的云实例?是的,两个实例上的模式相同。它们是单核心,是具有集合的云实例。@MatsLindh:有什么建议吗?通常的方法是创建一个具有相同架构的虚拟核心,然后使用它作为统一的结果集同时搜索两个核心。但是,如果您使用的是云模式,随着节点数量的增长,这可能很难协调。@MatsLindh:在从不同的Solr获取后,我们是否可以使用Lucene API/Solr API或其他算法对这2个文档重新排序?我不想将两个实例合并到一个实例中,这是一项业务需求。