Search 如何合并两个或多个solr搜索结果?
我有多个应用程序实例。每个应用程序都指向自己的solr以进行文档索引 我正在进行一个统一搜索,用户在搜索栏中点击一个查询,所有实例中的相关文档都应该根据相关性进行排序 现在我已经实现了一个基于循环方式的解决方案 例如,我有两个实例,Ins-1与solr-1和Ins-2与solr-2。 Ins-1有1K个文档,Ins-2有5K个文档。当我点击任何查询时,查询将从solr-1获取X个文档数,从solr-2获取X个文档数。 我正在以循环方式显示那些2X文档。但这并不是显示搜索结果的最佳方式。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文档。但这并不是显示搜索结果的最佳方式。 我正在寻
我正在寻找一种解决方案,可以根据与搜索的相关性对这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个文档重新排序?我不想将两个实例合并到一个实例中,这是一项业务需求。