#solr #dataimporthandler
#solr #dataimporthandler
Вопрос:
Мне нужно импортировать данные моей базы данных в solr.
Я использую это data-config.xml
:
<dataConfig>
<dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:sqlserver://192.168.122.1;databaseName=giac_txt" user="sa" password="StR0nGp4ss."/>
<document>
<entity name="item" query="select codi_unitat, titol from anc_uniciac>
<field column="codi_unitat" name="code_l_ns"/>
<field column="titol" name="title_txt_ca" />
</entity>
</document>
</dataConfig>
Проблема возникает, когда мне нужно сгенерировать идентификатор, поскольку моя схема нуждается и идентификатор:
<schema name="example-data-driven-schema" version="1.6">
<uniqueKey>id</uniqueKey>
...
Есть идеи?
Редактировать
Я проверил solrconfig.xml
:
<updateRequestProcessorChain name="files-update-processor">
<!-- UUIDUpdateProcessorFactory will generate an id if none is present in the incoming document -->
<processor class="solr.UUIDUpdateProcessorFactory" />
И он связан по умолчанию для любого update
:
<initParams path="/update/**">
<lst name="defaults">
<str name="update.chain">files-update-processor</str>
</lst>
</initParams>
Означает ли это, что uuid генерируется по умолчанию?
Комментарии:
1. Есть ли в данных из таблицы anc_uniciac какое-либо поле идентификатора? если да, сопоставьте то же самое с полем id. Если у вас нет поля id в таблице базы данных, вы можете сгенерировать его, настроив его с помощью UUIDUpdateProcessorFactory в solrconfig.xml
Ответ №1:
UUID
это сокращение от универсального уникального идентификатора. Вы можете использовать его, если у вас нет идентификатора для документов, вставленных в solr.
unique id
Поле полезно, когда вам нужно обновить или удалить документ, поскольку обычный поиск в Solr не может однозначно идентифицировать документ.
Добавьте приведенную ниже конфигурацию в solrconfig.xml
.
<updateRequestProcessorChain>
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">id</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
Комментарии:
1. Должен ли я связать эту цепочку с моим обработчиком обновлений?
2. вы можете добавить его в список процессоров обновления … где указаны все процессоры обновления