我正在使用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。