Solr добавляет и обновляет файлы pdf - PullRequest
0 голосов
/ 28 мая 2020

Я хочу добавлять и обновлять файлы pdf в индексе solrs. Мой сценарий: у меня есть каталог (mainDir), который нужно проиндексировать. Этот каталог содержит множество подкаталогов с файлами pdf. Новые файлы PDF и подкаталоги можно создавать, обновлять или удалять.

Я уже создал обработчик импорта данных, который рекурсивно индексирует все файлы в моем каталоге. Вот моя конфигурация:

<dataConfig>
  <dataSource type="BinFileDataSource"/>
  <document>  
    <entity name="file" 
            processor="FileListEntityProcessor" 
            dataSource="null" 
            fileName=".*pdf" 
            rootEntity="false" 
            baseDir="/mainDir" 
            recursive="true" >

            <field column="file" name="fileName"/>
            <field column="fileAbsolutePath" name="fileAbsolutePath"/>
            <field column="fileDir" name="fileDir"/>            

        <entity name="pdf" processor="TikaEntityProcessor" url="${file.fileAbsolutePath}" format="text">

            <field column="title" name="title"/>
            <field column="text" name="_text_"/>

        </entity>     
    </entity>   
  </document>
</dataConfig>

Я запустил DIH, он сработал, но я понятия не имею, как добавить / обновить один файл pdf. Как лучше всего зафиксировать изменения в index. Позже node.js API должен уведомить solr об изменениях.

1 Ответ

0 голосов
/ 28 мая 2020

индексирование одного ducument

просто вызовите http://localhost: 8983 / solr / my_collection / dataimport? Command = full-import

или используйте curl

curl http://localhost: 8983 / solr / my_collection / update -H "Content-Type: text / xml" -T "myfile.pdf" -X POST

см. to: https://lucene.apache.org/solr/guide/8_5/uploading-data-with-index-handlers.html#using -curl-to-perform-updates

Предотвращение дублирования

https://lucene.apache.org/solr/guide/8_5/de-duplication.html#de -дупликация

вы можете использовать что-то вроде этого, где вы сопоставляете идентификатор, автоматически сгенерированный на основе содержимого документа, который предотвращает дублирование файлов в вашем индексе

<updateRequestProcessorChain name="dedupe">
        <processor class="solr.processor.SignatureUpdateProcessorFactory">
            <bool name="enabled">true</bool>
            <str name="signatureField">id</str>
            <bool name="overwriteDupes">true</bool>
            <str name="fields">text</str>
            <str name="signatureClass">solr.processor.Lookup3Signature</str>
        </processor>
        <processor class="solr.LogUpdateProcessorFactory" />
        <processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

и в requestHandler для name = "/ update / extract" и name = "/ dataimport" name = "/ update" добавьте это

<str name="update.chain">dedupe</str>

и это тоже поможет

<initParams path="/update/**">
        <lst name="defaults">
            <str name="update.chain">dedupe</str>
        </lst>
</initParams>

last_index_time

можно поставить <field name="updated" type="date" default="NOW"/> в вашей схеме. xml

, и если вы хотите использовать значение в вашем dataconfig, используйте эту переменную: '${dataimporter.last_index_time}' время последнего индекса сохраняется в data.import.properties

для node.js с солью r

см .: https://www.npmjs.com/package/solr-node

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...