我正在尝试使用Solrj和特定的EmbeddedSolrServer
连接到Solr索引。我的solr.xml
看起来像这样:
<solr>
<cores adminPath="/admin/cores" defaultCoreName="db">
<core default="true" instanceDir="../db/" name="db"/>
</cores>
</solr>
对服务器执行查询命令时
CoreContainer coreContainer = new CoreContainer("C:\\development\\solr-4.4.0\\example tasks\\solr");
EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, "db");
Collection<SolrCore> cores = coreContainer.getCores();
System.out.println(cores);
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
query.addFacetField("taskType", "taskName");
QueryResponse rsp = server.query(query);
我得到以下异常:
Exception in thread "main" org.apache.solr.common.SolrException: No such core: db
db
核心在那里,当我使用Jetty和相同的solr.xml
文件启动Solr时,一切正常。 最佳答案
评论后编辑:
在4.4.0版中,您需要使用load()
函数来加载内核。
CoreContainer coreContainer = new CoreContainer("C:\\development\\solr-4.4.0\\example tasks\\solr");
container.load();
如果您尚未看到solr wiki for EmbeddedSolrSever,请看看。
我希望它能解决您的问题。