Solr 5.0 Tika TikaEntityProcessor索引一个文档

时间:2015-02-26 17:08:15

标签: solr apache-tika dataimporthandler

我有一些文件存储在一个文件夹中,我正在使用tika定期将它们导入Solr。

data-import.xml文件是:

<dataSource name="tika" type="BinFileDataSource" />
    <document>
        <entity dataSource="tika" name="files" rootEntity="false"
            processor="FileListEntityProcessor"
            baseDir="/home/user/public_html/files" fileName=".*\.(doc)|(pdf)|(docx)"
            onError="skip"
            recursive="true">
                <field column="fileAbsolutePath" name="id" />
                <field column="fileSize" name="size_i" />
                <field column="fileLastModified" name="lastModified_s" />

                <entity
                    name="documentImport"
                    processor="TikaEntityProcessor"
                    url="${files.fileAbsolutePath}"
                    format="text"
                    dataSource="tika">
                    <field column="file" name="fileName_s"/>
                    <field column="Author" name="author_s" meta="true"/>
                    <field column="title" name="title_s" meta="true"/>
                    <field column="text" name="details_s"/>
                    <field column="text" name="_text"/>
                </entity>
        </entity>
    </document>
</dataSource>

当前正在发生的事情是solr正在读取所有文件,但它实际上只是处理第一个文件,看来一旦导入第一个文件,文档指针就会设置为#2并且在整个文件中保持为空其余的文件。这似乎只在填充的文档上增加。

这是solr在导入字段时的输出,正如您在第一个文件导入文档#1(D#1)和文档#2(D#2)上看到的那样,D#1有内容和D #2是空的。

在任何后续行中,不会创建D#1,但D#2仍为空。

  "----------- row #1-------------",
  "fileSize",
  2161971,
  "fileLastModified",
  "2013-06-27T15:40:17Z",
  "fileAbsolutePath",
  "/home/user/public_html/files/test1.pdf",
  "fileDir",
  "/home/user/public_html/files",
  "file",
  "test1.pdf",
  null,
  "---------------------------------------------",
  "entity:documentImport",
  [
    "document#1",
    [
      "query",
      "/home/user/public_html/files/test1.pdf",
      "time-taken",
      "0:0:0.0",
      null,
      "----------- row #1-------------",
      "text",
      "blah! testing.",
      "title",
      "testing",
      "Author",
      "user",
      null,
      "---------------------------------------------"
    ],
    "document#2",
    []
  ],
  null,
  "----------- row #2-------------",
  "fileSize",
  567396,
  "fileLastModified",
  "2014-02-17T14:46:55Z",
  "fileAbsolutePath",
  "/home/user/public_html/files/test2.pdf",
  "fileDir",
  "/home/user/public_html/files",
  "file",
  "test2.pdf",
  null,
  "---------------------------------------------",
  "entity:documentImport",
  [
    "document#2",
    []
  ],

任何人都可以告诉我如何重置documentImport上的指针,或者我如何让它导入所有文件而不只是一个?

非常感谢

更新#1: 我已经使用相同的配置安装了Solr 4.10.3并且它现在正在工作,我相信这个问题可能是由混合的东西造成的,但最引人注目的是从Tika 1.5升级 - &gt; Tika 1.7介于4.10.3和5.0.0之间

如果有人在我继续前进之前可以确认。

1 个答案:

答案 0 :(得分:0)

我使用过的Tika和Solr,以下是我的data-config.xml

<dataConfig>  
<dataSource name="bin" type="BinFileDataSource" />
    <document>
        <entity name="files" dataSource="null" rootEntity="false"
        processor="FileListEntityProcessor"
        baseDir="/home/user/public_html/files" fileName=".*\.(doc)|(pdf)|(docx)"
        onError="skip"
        recursive="true">
            <field column="fileAbsolutePath" name="id" />
            <field column="fileSize" name="size" />
            <field column="fileLastModified" name="lastModified" />

            <entity
                name="documentImport" dataSource="bin"
                processor="TikaEntityProcessor"
                url="${files.fileAbsolutePath}"
                format="text" onError="skip">
                <field column="file" name="fileName"/>
                <field column="Author" name="author" meta="true"/>
                <field column="title" name="title" meta="true"/>
                <field column="text" name="text"/>

            </entity>
    </entity>
    </document>