apachesolr-index zip文件

icomxhvb  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(440)

我的web应用程序是电子邮件服务。它在mysql数据库中存储电子邮件,电子邮件附件在磁盘上。
数据库类似于:

  1. ----------------------------------------------------------------------
  2. | id | sender | receiver | subject | body | attach_dir | attachments |
  3. ----------------------------------------------------------------------
  4. | 2 | 444 | 555 | Apples | Hey! | /mnt/emails| att1.doc\r\n|
  5. | | | | | | | att2.doc\r\n|
  6. ----------------------------------------------------------------------
  7. | 3 | 77 | 22 | Pears | Hola!| /mnt/emails| att1.zip\r\n|
  8. ----------------------------------------------------------------------

我使用以下data-config.xml对其进行索引:

  1. <dataConfig>
  2. <dataSource name="mysql"
  3. type="JdbcDataSource"
  4. driver="com.mysql.jdbc.Driver"
  5. url="jdbc:mysql://localhost:3306/email?
  6. useUnicode=true&#038;
  7. characterEncoding=UTF-8&#038;
  8. useTimezone=true&#038;
  9. serverTimezone=UTC"
  10. user="user"
  11. password="pass"/>
  12. <dataSource name="files"
  13. type="BinFileDataSource" />
  14. <document>
  15. <entity name="email" dataSource="mysql"
  16. query="SELECT id, subject, body, date, attach, attach_dir FROM email"
  17. transformer="RegexTransformer"
  18. >
  19. <field column="id" name="id"/>
  20. <field column="subject" name="subject"/>
  21. <field column="body" name="content"/>
  22. <field column="date" name="last_modified"/>
  23. <field column="attach" name="attach" splitBy="\r\n" />
  24. <field column="attach_dir" name="attach_dir"/>
  25. <entity name="attach_glob" dataSource="null"
  26. processor="FileListEntityProcessor"
  27. baseDir="/mnt/attach/${email.attach_dir}" fileName=".*"
  28. recursive="false" onError="skip">
  29. <entity name="email_attachment" dataSource="files"
  30. processor="TikaEntityProcessor"
  31. url="${attach_glob.fileAbsolutePath}">
  32. <field column="text" name="attach_content"/>
  33. </entity>
  34. </entity>
  35. </entity>
  36. </document>
  37. </dataConfig>

这对于除压缩文件以外的所有文件都很有效,例如 .zip . 为了 .zip 文件 attach_content 字段只填充zip存档中的文件名,而不是从zip存档中提取的文件的内容。
但是如果我使用 SimplePostTool 这样地:

  1. /opt/solr/bin/post -c mycollection /mnt/attach/message3/att1.zip

然后我从zip存档中的所有文件中提取所有内容,这就是我所需要的。但我需要这些内容成为数据导入处理程序使用上面的data-config.xml添加的文档的一部分。
这可能吗?

lxkprmvk

lxkprmvk1#

您需要在tikaentityprocessor配置上将extractedembedded设置为true,以便在apachetika parsecontext中为它设置适当的解析器来解析嵌入的文档。
例如,您可以将问题中的配置更改为如下所示的设置:

  1. <entity name="email_attachment" dataSource="files"
  2. processor="TikaEntityProcessor"
  3. url="${attach_glob.fileAbsolutePath}" extractEmbedded="true">
  4. <field column="text" name="attach_content"/>
  5. </entity>

请参阅此处了解更多详细信息。

相关问题