如何使用TikaEntityProcessor时,存储在Solr的文件路径(how to store

2019-10-16 13:45发布

我使用谛索引本地文件系统。 但是,文件路径,大小和上次更改时间字段不保存。 在schema.xml中,我定义:

 <fields>
   <field name="title" type="string" indexed="true" stored="true"/>
   <field name="author" type="string" indexed="true" stored="true" />
   <!--<field name="text" type="text" indexed="true" stored="true" />
    liang added-->
   <field name="path" type="string" indexed="true" stored="true" />
   <field name="size" type="long" indexed="true" stored="true" />
   <field name="lastmodified" type="date" indexed="true" stored="true" />
 </fields>

而且还定义蒂卡数据-config.xml文件:

<dataConfig>
    <dataSource name="bin" type="BinFileDataSource" />
    <document>
        <entity name="f" dataSource="null" rootEntity="false"
            processor="FileListEntityProcessor"
            baseDir="E:/my_project/ecmkit/infotouch" 
            fileName=".*\.(DOC)|(PDF)|(pdf)|(doc)|(docx)|(ppt)" onError="skip"
            recursive="true">
            <entity name="tika-test" dataSource="bin" processor="TikaEntityProcessor"
            url="${f.fileAbsolutePath}" format="text" onError="skip">
                <field column="Author" name="author" meta="true"/>
                <field column="title" name="title" meta="true"/>
                <!--
                <field column="text" name="text"/> -->
                <field column="fileAbsolutePath" name="path" />
                <field column="fileSize" name="size" />
                <field column="fileLastModified" name="lastmodified" />
            </entity>
        </entity>
    </document>
</dataConfig>

Solr的版本是3.5。 任何想法?

提前致谢。

Answer 1:

这些数据不来自蒂卡元数据,所以你应该将它们移到FileListEntityProcessor这样的实体:

<dataConfig>
    <dataSource name="bin" type="BinFileDataSource" />
    <document>
        <entity name="f" dataSource="null" rootEntity="false"
            processor="FileListEntityProcessor"
            baseDir="/home/luca/Documents" 
            fileName=".*\.(DOC)|(PDF)|(pdf)|(doc)|(docx)|(ppt)" onError="skip"
            recursive="true">

            <field column="fileAbsolutePath" name="path" />
            <field column="fileSize" name="size" />
            <field column="fileLastModified" name="lastmodified" />

            <entity name="tika-test" dataSource="bin" processor="TikaEntityProcessor"
            url="${f.fileAbsolutePath}" format="text" onError="skip">
                <field column="Author" name="author" meta="true"/>
                <field column="title" name="title" meta="true"/>
                <!--<field column="text" />-->          
            </entity>
        </entity>
    </document>
</dataConfig>


Answer 2:

你并不需要声明在DIH配置这个领域,只是在schema.xml中定义它们:

<field name="fileAbsolutePath" type="string" indexed="true"  stored="true"  multiValued="false" />
<field name="file"             type="string" indexed="true"  stored="true"  multiValued="false" />
<field name="fileLastModified" type="string" indexed="true"  stored="true"  multiValued="false" />

它们是基于自动填写(Solr中4.6测试) FileListEntityProcessor



文章来源: how to store file path in Solr when using TikaEntityProcessor