Ich verwende DIH und Tika, um Dokumente in verschiedenen Sprachen zu indizieren.Dynamisches Feld basierend auf Dateipfad hinzufügen
Es gibt einen Ordner für jede Sprache (z. B. /de/file001.pdf), und ich möchte die Sprache aus dem Pfad extrahieren und dann das sprachspezifische solr-Feld dynamisch hinzufügen (z. B. text_de).
Hier ist meine versuchte Lösung:
<dataConfig>
<script><![CDATA[
function addField(row) {
row.put('text_' + row.get('lang'), row.get('text'));
return row;
}
]]></script>
<dataSource type="BinFileDataSource" />
<document>
<entity name="files" dataSource="null" rootEntity="false"
processor="FileListEntityProcessor"
baseDir="/tmp/documents" fileName=".*\.(doc)|(pdf)|(docx)"
onError="skip"
recursive="true"
transformer="RegexTransformer" query="select * from files">
<field column="fileAbsolutePath" name="id" />
<field column="lang" regex=".*/(\w*)/.*" sourceColName="fileAbsolutePath"/>
<entity name="documentImport"
processor="TikaEntityProcessor"
url="${files.fileAbsolutePath}"
format="text"
transformer="script:addField">
<field column="date" name="date" meta="true"/>
<field column="title" name="title" meta="true"/>
</entity>
</entity>
</document>
Dies funktioniert nicht, weil Zeile mit dem 'Text' Feld enthält aber nicht das 'lang' Feld.