在Spring Data Solr 3.0.6发布中,动态选择Solr Core



我正在使用Spring Data Solr 3.0.6和独立的Solr Server 7.0.0,并且我在Solr Server中有多个SOLR核心,我想动态选择其中一个,此处是我有

的配置
@Configuration
@EnableSolrRepositories(basePackages = "com.solr.repository")
public class SolrConfiguration
{

 @Bean
  public SolrOperations solrTemplate(SolrClient solr) {
    return new SolrTemplate(solr);
  }

  @Bean(name = "solrClient")
  public SolrClient createSolrClient()
  {
     HttpSolrClient.Builder builder = new HttpSolrClient.Builder().withBaseSolrUrl(solrInstanceUrl);
    return builder.build();
}

}

solrrepository

public interface SolrRepository extends SolrCrudRepository<SolrDocument, Integer>
{
 @Query("name:*?0* OR content:*?0*")
 @Highlight()
  public HighlightPage<SolrDocument> findByQueryAnnotation(String searchTerm, Pageable pageable);
}

solrdocument(Solr存储库的域类(

@SolrDocument
public class SolrDocument
{
}

ServicePojo(服务类(

 public class ServicePojo
    {
        @Autowired
        SolrRepository solrRepository;
        public void findData(int id)
        {
           solrRepository.findById(id);
         }
    }

现在,我想使用findById()等存储库接口的方法,但是如上所述,我有不同的内核,并且我想指向一个特定的核心以执行搜索,然后再调用方法solrrepository.findbyid((我需要提及应该指出的核心。那么,我们可以在哪里告诉Solr Server,要使用哪个核心?

如果我使用注释@SolrDocument(collectionName="core1"),则可以正常工作,并且指向" core1",但我希望这是动态的。请帮助

您无法使用存储库(SolrRepository(进行此操作。但是您可以使用SolrTemplate来执行此操作。

这是指向3.0.6 SolrTemplate API的链接。如果您查看某些诸如查询或getByid之类的方法,则使用参数CollectionName。您可以在这里通过Corename。

最新更新