我正在尝试使用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,请看看。

我希望它能解决您的问题。

10-08 20:08