2012-12-16 31 views
1

我有一个测试环境的SolR 3.6,我试图迁移到4.0,但我得到以下错误。SolR 4.0测试与AbstractSolrTestCase

主要源代码如下:

public class SolrConfigTest extends AbstractSolrTestCase { 
    String container = "mycore"; 

    @Override 
    public String getSolrHome() { 
     return System.getProperty("user.dir") + "/resources/"; 
    } 

    @Override 
    public String getSchemaFile() { 
     return getSolrHome() + container + "/conf/schema.xml"; 
    } 

    @Override 
    public String getSolrConfigFile() { 
     return getSolrHome() + container + "/conf/solrconfig.xml"; 
    } 

    @Before 
    @Override 
    public void setUp() throws Exception { 
     super.setUp(); 
     CoreContainer.Initializer initializer = new CoreContainer.Initializer(); 
     coreContainer = initializer.initialize(); 
     server = new EmbeddedSolrServer(coreContainer, "mycore"); 
    } 
} 

Solr的文件夹结构:

+solr 
    +mycore 
     +conf 
     +data 
     +lib 

的solr.xml配置文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<solr persistent="false"> 
    <cores adminPath="/admin/cores" defaultCoreName="mycore" host="${host:}" hostPort="${jetty.port:}" hostContext="${hostContext:}" zkClientTimeout="${zkClientTimeout:15000}"> 
    <core name="mycore" instanceDir="mycore" /> 
    </cores> 
</solr> 

然而,当我执行此代码,我得到以下错误:

[java] 16-dic-2012 0:43:15 SolrConfig <init> 
[java] 16-dic-2012 0:43:15 org.apache.solr.util.AbstractSolrTestCase setUp 
[java] INFO: ####SETUP_START <unknown> 
[java] 16-dic-2012 0:43:15 org.apache.solr.core.SolrResourceLoader <init> 
[java] INFO: new SolrResourceLoader for directory: '/home/user/workspace/tech/SolrTest/resources//collection1/' 
[java] 16-dic-2012 0:43:16 org.apache.solr.core.SolrConfig initLibs 
[java] INFO: Adding specified lib dirs to ClassLoader 
[java] 16-dic-2012 0:43:16 org.apache.solr.core.SolrConfig <init> 
[java] INFO: Using Lucene MatchVersion: LUCENE_40 
[java] 16-dic-2012 0:43:16 org.apache.solr.core.SolrConfig <init> 
[java] INFO: Loaded SolrConfig: /home/user/workspace/tech/SolrTest/resources/mycore/conf/solrconfig.xml 
[java] 16-dic-2012 0:43:16 org.apache.solr.schema.IndexSchema readSchema 
[java] INFO: Reading Solr Schema 
[java] 16-dic-2012 0:43:16 org.apache.solr.schema.IndexSchema readSchema 
[java] INFO: Schema name=mycore 
[java] 16-dic-2012 0:43:17 org.apache.solr.schema.IndexSchema readSchema 
[java] INFO: unique key field: ID 
[java] java.lang.RuntimeException: java.io.IOException: Can't find resource 'stopwords.txt' in classpath or 

'/home/user/workspace/tech/SolrTest/resources//collection1/conf/', cwd=/home/user/workspace/tech/SolrTest [java] at org.apache.solr.schema.IndexSchema.(IndexSchema.java:116)

看起来像SolR无法找到solr.xml(但确实找到solrconfig.xml),这就是为什么要访问到collection1(我读过,如果solr没有找到solr.xml,设置核心为collection1),但getSolrHome()指向存储solr.xml的文件夹。

我在做什么错?

亲切的问候

回答

1

其实错误似乎是该文件stopwords.txt是从Solr中的conf文件夹中缺少。您是否可以确认目录中存在stopwords.txt文件

由于架构文件中fieldType的分析器/筛选器引用了stopwords.txt文件,因此会报告此错误。

+0

是的,它存在于该目录中。但是,您可以看到Solr正在/ home/user/workspace/tech/SolrTest/resources/collection1/conf中查找此类文件。我已经阅读了测试模式,核心硬编码为collection1。是对的吗? – asuka

+0

对不起,我还没有使用测试模式,所以我不知道在这种情况下核心是否硬编码为collection1。 –

2

您可能指定了错误的solr home。

尝试以下,

@Override 
    public String getSolrHome() { 
     return System.getProperty("user.dir") + "/resources/solr"; 
    }