Я хочу использовать обработчик SolR DataImport для индексации кандидатов, хранящихся в базе данных, вместе с содержимым файлов, связанных с этими кандидатами.
У меня есть одна таблица базы данных, содержащая список кандидатов, и другая таблица, содержащая список путей к файлам, связанных с кандидатом.
Что мне нужно, так это:
- проиндексировать данные-кандидаты - довольно просто...
- прокрутить список файлов - Мне тоже удалось это сделать...
- извлеките содержимое файла (в формате pdf, doc, xml, html и т. д.). Эта часть выполнена
- сгруппировать содержимое всех файлов в одном поле содержимого для индексации
Это на самом деле, где я застрял! Я пробовал разные варианты, но система индексирует только содержимое первого файла. Я пробовал играть с глобальной переменной javascript, хотя такая работа не кажется лучшим решением...
Найдите в дальнейшем мой файл dih.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<script><![CDATA[
var globalContent = '';
function processFile(row) {
var text = row.get('text');
if (text == null) text = '';
else globalContent += ' ' + text;
row.remove('text');
row.remove('content');
row.put('content', globalContent);
return row;
}
]]></script>
<dataSource type="JdbcDataSource" name="dbs" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/dbname" user="login" password="password" />
<dataSource type="BinFileDataSource" name="fds" />
<document name="ListOfCandidates">
<entity name="candidats" datasource="dbs" query="select * from candidates">
<field column="id_candidat" name="id_candidat" />
<field column="name" name="lastname" />
<field column="first_name" name="firstname" />
<entity name="ListOfFiles"
query="SELECT distinct cd.id_document, cd.filepath
FROM candidat_document cd
WHERE cd.id_candidat = '${candidats.id_candidat}'">
<entity name="file"
processor="TikaEntityProcessor"
url="/some/folder/${ListOfFiles.filepath}"
dataSource="fds"
format="text"
onError="skip"
transformer="script:processFile">
<field column="text" name="text" />
</entity>
</entity>
</entity>
</document>
Любая помощь приветствуется!