嗨,我想使用filelistentityprocessor和lineentityprocessor文件名

时间:2014-11-17 12:24:27

标签: solr dih

  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>

1 个答案:

答案 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}" />
相关问题