我无法运行EmbeddedSolrServer
。 CoreContainer
的JavaDoc至少可以说是稀疏的。我看过“MergeIndexesEmbeddedTest”,我的代码看起来应该可行。 (这是一个Maven项目)我在src/main/resources
文件夹的根目录中都有“Schema.xml”和“solr.xml”。我可以实例化服务器,但是当我尝试向服务器添加SolrInputDocument
时,我得到了:
org.apache.solr.common.SolrException: 'No such core: butterfly'
at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:104)
at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105)
at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:64)
设置服务器的代码是:
final File solrConfigXml = new File( "C:/code/butterfly/src/main/resources/solr.xml" );
final String solrHome = "C:/code/butterfly/src/main/resources/";
CoreContainer coreContainer;
try{
coreContainer = new CoreContainer( solrHome, solrConfigXml );
}catch( Exception e ){
e.printStackTrace( System.err );
throw new RuntimeException( e );
}
solrServer = new EmbeddedSolrServer( coreContainer, "butterfly" );
和我的solr.xml
文件是:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores" defaultCoreName="butterfly1">
<core name="butterfly" instanceDir="." />
</cores>
</solr>
我没有发布我的Schema.xml
文件,因为它只是具有不同字段名称的示例的修剪版本。我正在使用绝对文件路径,因为它似乎更容易上手。
答案 0 :(得分:1)
在solr.xml片段中,defaultCoreName为butterfly1。模式中没有name = butterfly1的核心。
您使用的是什么版本的solr服务器?
答案 1 :(得分:1)
这主要发生在 EmbeddedSolrServer
无法找到核心时。通常是因为 core.properties
文件丢失(查看 Solr configuration files)。
鉴于有很多事情可能会出错,最近我写了一个 Java 示例,帮助您编写自己的测试配置、加载数据和运行 junit 测试。