This is my data-config.xml. I can't use Tika EntityProcessor. Is there any way I can do it with LineEntityProcessor?
我使用solr4.4来索引数百万个文档。我想要将文件名和修改时间编入索引。但是找不到办法。 在data-config.xml中,我使用filelistentityprocessor获取文件,然后使用lineentityprocessor解析每一行。
<dataConfig>
<dataSource encoding="UTF-8" type="FileDataSource" name="fds" />
<document>
<entity
name="files"
dataSource="null"
rootEntity="false"
processor="FileListEntityProcessor"
baseDir="C:/Softwares/PlafFiles/"
fileName=".*\.PLF"
recursive="true"
>
<field column="fileLastModified" name="last_modified" />
<entity name="na_04"
processor="LineEntityProcessor"
dataSource="fds"
url="${files.fileAbsolutePath}"
transformer="script:parseRow23">
<field column="url" name="Plaf_filename"/>
<field column="source" />
<field column="pict_id" name="pict_id" />
<field column="pict_type" name="pict_type" />
<field column="hierarchy_id" name="hierarchy_id" />
<field column="book_id" name="book_id" />
<field column="ciscode" name="ciscode" />
<field column="plaf_line" />
</entity>
</entity>
</document>
</dataConfig>
答案 0 :(得分:1)
来自FileListEntityProcessor的文档:
FileListEntityProcessor生成的隐式字段是fileDir,file,fileAbsolutePath,fileSize,fileLastModified,这些字段可在实体[..]中使用。
您可以通过引用它们将这些值移动到不同命名的字段中:
<field column="file" name="filenamefield" />
<field column="fileLastModified" name="last_modified" />
这将要求您拥有一个实际允许这两个名称的schema.xml。
如果你需要在另一个字符串中使用它们/在插入之前进一步操作它:
您已经在使用files.fileAbsolutePath
,因此使用${files.file}
和${files.fileLastModified}
,您应该可以提取所需的值。
您可以使用TemplateTransformer修改这些值并将其插入特定字段,并引用生成的字段:
<field column="filename" template="file:///${files.file}" />