data-config.xml потерян при редактировании solrconfig.xml

С solr, настроенным для многоядерности (что может иметь значение, а может и не иметь), у меня была работающая тестовая система. solrconfig.xml жил в /solr-4.4.0/example/multicore/expertise/conf и по сути выглядел как пример файла solrconfig для многоядерности, за исключением следующих строк:

<dataDir>/data/website_data/solr_cores/expertise</dataDir>

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">/data/website_data/solr_cores/expertise/data-config.xml</str>
  </lst>
</requestHandler>

Поскольку мне нужен solr с поддержкой языка, я обновил solrconfig.xml некоторыми обработчиками выбора (ранее handleSelect был true) и новым updateRequestProcessorChain. Изменения в solrconf.xml выглядят следующим образом:

<lib dir="${user.dir}/../contrib/analysis-extras/lucene-libs/" /><!-- relative to solrs 'example' directory -->
<lib dir="${user.dir}/../contrib/analysis-extras/lib/" />
<lib dir="${user.dir}/../dist/" regex="solr-langid-.*\.jar" />
<lib dir="${user.dir}/../contrib/langid/lib/" />    

<!-- required for language detection of input records -->
<updateRequestProcessorChain name="languages">
    <processor class="solr.LangDetectLanguageIdentifierUpdateProcessorFactory">
        <lst name="invariants">
            <str name="langid.fl">focus, expertise, platforms, partners, participation, additional</str>
            <str name="langid.whitelist">en,fr</str>
            <str name="langid.fallback">en</str>
            <str name="langid.langField">detectedlang</str>
            <bool name="langid.map">true</bool>
            <bool name="langid.map.keepOrig">false</bool>
        </lst>
    </processor>
    <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

<!-- uses language-detecting update.chain -->
<requestHandler name="/update" class="solr.UpdateRequestHandler">
    <lst name="invariants">
        <str name="update.chain">languages</str>
    </lst>
</requestHandler>

<requestDispatcher handleSelect="false"> <!-- ORIGINALLY FALSE -->
    <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" formdataUploadLimitInKB="2048" />
    <httpCaching never304="true" />
</requestDispatcher>

<requestHandler name="/select" class="solr.SearchHandler">
    <lst name="defaults">
        <str name="defType">edismax</str>
        <str name="qf">focus^2, expertise^2, platforms, partners, participation, additional</str><!-- default query looks in these fields, with these boosts -->
        <str name="f.focus.qf">focus_en focus_fr</str><!-- field alias 'focus' means en AND fr versions of focus -->
        <str name="f.expertise.qf">expertise_en expertise_fr</str>
        <str name="f.platforms.qf">platforms_en platforms_fr</str>
        <str name="f.partners.qf">partners_en partners_fr</str>
        <str name="f.participation.qf">participation_en participation_fr</str>
        <str name="f.additional.qf">additional_en additional_fr</str>
    </lst>
</requestHandler>
<requestHandler name="/selectEN" class="solr.SearchHandler">
    <lst name="defaults">
        <str name="defType">edismax</str>
        <str name="qf">focus^2, expertise^2, platforms, partners, participation, additional</str>
    </lst>
    <lst name="invariants">
        <str name="fq">detectedlang:en</str>
        <str name="f.focus.qf">focus_en</str>
        <str name="f.expertise.qf">expertise_en</str>
        <str name="f.platforms.qf">platforms_en</str>
        <str name="f.partners.qf">partners_en</str>
        <str name="f.participation.qf">participation_en</str>
        <str name="f.additional.qf">additional_en</str>
        <str name="uf">* -focus_* -expertise_* -platforms_* -partners_* -participation_* -additional_*</str><!-- direct query any field except language-defined ones -->
        <str name="fl">*,focus:focus_en, expertise:expertise_en, platforms:platforms_en, partners:partners_en,
            participation:participation_en, additional:additional_en</str><!-- return lang-defined field when asked for generic field -->
    </lst>
</requestHandler>
<requestHandler name="/selectFR" class="solr.SearchHandler">
    <lst name="defaults">
        <str name="defType">edismax</str>
        <str name="qf">focus^2, expertise^2, platforms, partners, participation, additional</str>
    </lst>
    <lst name="invariants">
        <str name="fq">detectedlang:fr</str>
        <str name="f.focus.qf">focus_fr</str>
        <str name="f.expertise.qf">expertise_fr</str>
        <str name="f.platforms.qf">platforms_fr</str>
        <str name="f.partners.qf">partners_fr</str>
        <str name="f.participation.qf">participation_fr</str>
        <str name="f.additional.qf">additional_fr</str>
        <str name="uf">* -focus_* -expertise_* -platforms_* -partners_* -participation_* -additional_*</str><!-- direct query any field except language-defined ones -->
        <str name="fl">*,focus:focus_fr, expertise:expertise_fr, platforms:platforms_fr, partners:partners_fr,
            participation:participation_fr, additional:additional_fr</str><!-- return lang-defined field when asked for generic field -->
    </lst>
</requestHandler>

Теперь я получаю сообщение об ошибке: Can't find resource '/data-config.xml' in classpath or 'multicore/expertise/conf/', cwd=/solr-4.4.0/example</str>

Путь данных не изменился. Файл data-config.xml существует там, где он должен быть, и его разрешения верны. Почему мой исходный solrconf.xml может найти data-config.xml, а мой новый — нет?


person dnagirl    schedule 20.09.2013    source источник


Ответы (1)


Похоже, что порядок операторов в solrconfig.xml может иметь значение. В этом случае любые объявления <lib/> должны следовать после одного (или, возможно, всех) из них: <luceneMatchVersion/>, <directoryFactory/ >, <dataDir>, <schemaFactory/> и <updateHandler/>.

Изначально мои строки <lib> располагались сразу после открывающего тега <config>. Это происходит там, где они помещаются в пример, над которым я работал. Так что, возможно, Java была просто не в духе, и с моим solrconfig.xml проблем не было.

Я надеюсь, что это поможет кому-то другому.

person dnagirl    schedule 20.09.2013