1
  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>
4

1 回答 1

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}and${files.fileLastModified}您应该能够提取所需的值。

您可以使用TemplateTransformer并引用生成的字段来修改这些值并将它们插入到特定字段中:

<field column="filename" template="file:///${files.file}" />
于 2014-11-17T20:48:16.223 回答