Загрузка данных в Solr с помощью обработчика импорта данных - PullRequest
0 голосов
/ 05 марта 2019

Привет. Я пытаюсь загрузить свои данные в solr с помощью обработчика импорта данных.Что я делаю, так это запускаю сервер solr с помощью команды в папке сервера

solr start

Это позволяет мне открыть локальный хост на моем компьютере, где отображается ядро, которое я ранее настроил.

Screenshot of solr running on computer

Затем я отредактировал файлы solrconfig.xml и schema.xml

В solrconfig.xml я поместил следующие строкикода в

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*.jar" /> 

<schemaFactory class="ClassicIndexSchemaFactory"/>

и

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

В schema.xml (переименованный из файла управляемой схемы) я добавил

<field name="_version_" type="plong" indexed="true" stored="true"/>
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="title" type="string" indexed="true" stored="true"/>
<field name="revision" type="pint" indexed="true" stored="false"/>
<field name="user" type="string" indexed="true" stored="false"/>
<field name="userId" type="pint" indexed="true" stored="false"/>
<field name="text" type="text_en" indexed="true" stored="false"/>
<uniqueKey>id</uniqueKey>

Затем я создал файл data-config.xml со следующим кодом

<dataConfig>
<dataSource type="FileDataSource" encoding="UTF-8"/>
<document>
    <entity name="page"
            processor="XPathEntityProcessor"
            stream="true"
            forEach="/mediawiki/page"
            url="/Volumes/BACKUP/enwiki-latest-pages-articles.xml"
            transformer="RegexTransformer,DateFormatTransformer"
            >
        <field column="id" xpath="/mediawiki/page/id" />
        <field column="title" xpath="/mediawiki/page/title" />
        <field column="revision" xpath="/mediawiki/page/revision/id" />
        <field column="user" xpath="/mediawiki/page/revision/contributor/username" />
        <field column="userId" xpath="/mediawiki/page/revision/contributor/id" />
        <field column="text" xpath="/mediawiki/page/revision/text" />
        <field column="timestamp" xpath="/mediawiki/page/revision/timestamp" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'" />
        <field column="$skipDoc" regex="^#REDIRECT .*" replaceWith="true" souceColName="text"/>
    </entity>
</document>

Здесь XML-файл, который я хочу проиндексировать, хранится на внешнем жестком диске моего компьютера.Кажется, что все работает хорошо, пока я не наберу в своем браузере следующее:

http://localhost:8983/solr/wiki/dataimport?command=full-import

и покажется следующее

full-import logging

Кто-нибудь знает, как это исправить?Я использую Solr 7.7 и все вопросы о Stackoverflow, кажется, для более ранних версий.Урок, которому я пытаюсь следовать, это https://www.youtube.com/watch?v=2VkFQTqrRYo&t=310s, который устарел, поэтому я думаю, что именно поэтому я получаю эту ошибку.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Оказывается, все, что мне нужно было сделать, это изменить в solrconfig.xml:

<updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:false}"

(ложь вместо истины)

0 голосов
/ 06 марта 2019

Ошибка говорит само за себя ... clasNotFoundException ... Проверьте ваш путь к классу, похоже, DataImportHandler не находится на вашем пути к классам ...

<lib dir="../../../dist/" regex="apache-solr-dataimporthandler-.*\.jar" />

После изменения конфигурации перезапустите сервер Jetty.

...