我在Solr中使用了多个内核,在添加文档时,我使用方法查看对象并编写URL以匹配内核,如下所示:
SolrInputDocument solrDoc = getASolrInputDocumentFromSomewhere();
Object bean = request.getBean();
String core;
if (bean instanceof EntityOne)
core = "coreone";
else if (bean instanceof EntityTwo)
core = "coretwo";
[...]
SolrServer server = new HttpSolrServer("http://localhost:8983/solr/" + core);
server.add(solrDoc);
server.commit();
(这是不我实际使用的代码,它被缩短并挤压以仅提供想法。)
这是有效的,但这是一种正确的方法,还是提供了其他任何可能性,允许设置核心,甚至是Solr根据文档结构自动检测所需核心的方式?
答案 0 :(得分:3)
Spring Data Solr提供MulticoreSolrServerFactory
,可以处理和创建SolrServer
个实例。它基本上是这样的。
@SolrDocument(solrCoreName = "core1")
private static class Bean1 {
//..
}
factroy = new MulticoreSolrServerFactory(new HttpSolrServer("http://127.0.0.1:8983"));
SolrServer solrServer = factory.getSolrServer(Bean1.class);