Тест SolR 4.0 с помощью AbstractSorrTestCase

У меня была тестовая среда для SolR 3.6, и я пытаюсь перенести ее на 4.0, но получаю следующую ошибку.

Основной исходный код выглядит следующим образом:

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] в org.apache.solr.schema.IndexSchema.(IndexSchema. ява: 116)

Похоже, что SolR не может найти solr.xml (но находит solrconfig.xml), и поэтому пытается получить доступ к collection1 (я читал, что если solr не находит solr.xml, устанавливает ядро ​​в collection1) , но getSolrHome() указывает на папку, в которой хранится solr.xml.

Что я делаю неправильно?

С уважением


person asuka    schedule 16.12.2012    source источник


Ответы (2)


Вероятно, вы указали неправильный solr home.

Попробуйте ниже,

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

На самом деле ошибки заключаются в том, что файл stopwords.txt отсутствует в папке conf для Solr. Можете ли вы подтвердить, что файл stopwords.txt существует в каталоге /home/user/workspace/tech/SolrTest/resources/mycore/conf/

Об этой ошибке сообщается, потому что анализатор/фильтр для fieldType в вашем файле схемы ссылается на файл stopwords.txt.

person Paige Cook    schedule 16.12.2012
comment
Да, он существует в этом каталоге. Однако вы можете видеть, что Solr ищет такой файл в /home/user/workspace/tech/SolrTest/resources/collection1/conf. Я читал, что в тестовом режиме ядро ​​жестко привязано к collection1. Это правильно? - person asuka; 16.12.2012
comment
Извините, я никогда не использовал тестовый режим, поэтому я не знаю, в этом случае ядро ​​жестко запрограммировано на collection1. - person Paige Cook; 17.12.2012