Я хочу использовать обработчик SolR DataImport для индексации кандидатов, хранящихся в базе данных, и содержимого файлов, связанных с этими кандидатами.SolR DIH file concatenation
У меня есть одна таблица базы данных, содержащая список кандидатов и другую таблицу, содержащую список путей к файлу, связанных с кандидатом.
Что мне нужно, это:
- индекс кандидат данных - довольно легко ...
- петля по списку файлов - мне удалось это сделать, а также ...
- извлечь содержимое файла (будучи PDF, DOC, XML, HTML, и т.д ... - Эта часть делается
- группу содержимого ll в одном поле для индексации
Это на самом деле я застрял! Я пробовал различные варианты, но система только индексирует содержимое первого файла. Я пытался играть с яваскрипта глобальной переменной, хотя эта работа не кажется, лучшим решением ...
Найти далее мой 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>
Любая помощь будет очень признателен!