使用EmbeddedSolrServer“没有这样的核心”异常

时间:2013-09-20 13:16:35

标签: solr solrj

我正在尝试使用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时,一切都很完美。

3 个答案:

答案 0 :(得分:4)

评论后编辑:

在4.4.0版中,您需要使用load()函数来加载核心。

CoreContainer coreContainer = new CoreContainer("C:\\development\\solr-4.4.0\\example tasks\\solr");
container.load();

如果您还没有看过solr wiki for EmbeddedSolrSever,请查看。

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

答案 1 :(得分:0)

从Solr 4.4开始,有一个使用核心目录和core.properties文件发现的备用核心定义方法。从Solr 5.0开始,此方法是强制性的。

注意:您需要将solr.xml中的核心定义迁移到新方法。 有关详细信息,请参阅Solr.xml 4.4 and beyond

答案 2 :(得分:0)

这主要发生在 EmbeddedSolrServer 无法找到核心时。通常是因为 core.properties 文件丢失(查看 Solr configuration files)。

我编写了一个 Java 示例,帮助您编写自己的测试配置、加载数据和运行 junit 测试。

https://github.com/freedev/EmbeddedSolrServer-junit-example