我目前正在设计一个全文搜索系统,用户可以在其中对MS Office和PDF文档执行文本查询,结果将返回与查询最匹配的文档列表。然后,用户将选择返回的任何文档,并在MS Word,Excel或PDF查看器中查看该文档。
我可以使用ElasticSearch或Solr将原始二进制文档(即.docx,.xlsx,.pdf文件)导入其数据存储",然后将文档导出到用户&#39 ; s设备按命令查看。
以前,我使用MongoDB 2.6.6将原始文件导入GridFS,并将提取的文本导入单独的集合(该集合包含文本索引),并且工作正常。但是,MongoDB全文搜索是非常基础的,因此我现在正在寻找Solr或ElasticSearch来执行更复杂的文本搜索。
尼克
答案 0 :(得分:22)
Solr和Elasticsearch都将索引文档的内容。 Solr有内置功能,Elasticsearch需要一个插件。两种方式都很简单,两者都使用Tika。
他们都不会存储文件本身。你可以尝试让他们这样做,但他们不是为它设计的,你会受苦。
此外,Solr和Elasticsearch目前都不建议用作主存储。他们可以做到这一点,但对于他们而言,对于文件系统实现而言,它并不是关键任务。
因此,我建议将文件放在其他地方并使用Solr / Elasticsearch进行搜索。这就是他们发光的地方。
答案 1 :(得分:14)
我会尝试使用Elasticsearch附件插件。详情请见:
https://www.elastic.co/guide/en/elasticsearch/plugins/2.2/mapper-attachments.html
https://github.com/elasticsearch/elasticsearch-mapper-attachments
它建立在Apache Tika之上:
http://tika.apache.org/1.7/formats.html
附件类型
附件类型允许索引不同的"附件"类型字段 (编码为base64),例如,Microsoft Office格式,打开 文档格式,ePub,HTML等(完整列表可以在这里找到)。
附件类型作为插件扩展提供。该插件是一个 简单的zip文件,可以下载和下载 $ ES_HOME / plugins位置。它会被自动检测到 附件类型将被添加。
支持的文档格式
超文本标记语言
XML和派生格式
- Microsoft Office文档格式
- OpenDocument格式
- iWorks文档格式
- 可移植文档格式
- 电子出版物格式
- 富文本格式
- 压缩和包装格式
- 文字格式
- Feed和联合供稿格式
- 帮助格式
- 音频格式
- 图片格式
- 视频格式
- Java类文件和档案
- 源代码
- 邮件格式
- CAD格式
- 字体格式
- 科学格式
- 可执行程序和库
- 加密格式
答案 2 :(得分:0)
关于solr:
如果仅需要在元数据搜索上返回文档,Solr会提供BinaryField字段类型,您可以向其发送二进制数据base64编码。请记住,一般人建议不要这样做,因为它可能会增加您的索引( RAM要求/性能),如果可能的话,在外部存储文件的设置(以及solr中文件的路径)可能是更好的选择。
如果你想让solr自动索引pdf / doc中的文本 - 这可以通过extractrequesthandler来实现:https://wiki.apache.org/solr/ExtractingRequestHandler
答案 3 :(得分:0)
Elasticsearch会在_source
字段中存储文档(例如.pdfs,.docs)。它可以用作NoSQL数据存储区(与MongoDB相同)。
答案 4 :(得分:0)
参加聚会有点晚,但这可能会帮助某人:)
我遇到了类似的问题,一些研究使我想到了fscrawler。说明:
此搜寻器有助于索引二进制文档,例如PDF,Open Office,MS Office。
主要功能: