solr DIH: генерировать идентификационное значение

#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. вы можете добавить его в список процессоров обновления … где указаны все процессоры обновления