我目前正在设计一个全文搜索系统,用户可以在其中搜索MS Office和PDF文档的文本,结果将返回与查询最匹配的文档列表。然后,用户将选择返回的任何文档,并在MS Word,Excel或PDF查看器中查看该文档。
我可以使用ElasticSearch或Solr将原始二进制文档(即.docx,.xlsx,.pdf文件)导入其“数据存储区”,然后根据命令将文档导出到用户的设备以进行查看。
以前,我使用MongoDB 2.6.6将原始文件导入GridFS,然后将提取的文本导入一个单独的集合(该集合包含文本索引),并且工作正常。但是,MongoDB全文搜索是非常基本的,因此我现在正在研究Solr或ElasticSearch来执行更复杂的文本搜索。
缺口
Solr和Elasticsearch都将为文档的 内容 建立索引。Solr具有内置功能,Elasticsearch需要一个插件。两种方法都很容易,都可以在底下使用Tika。
他们俩都不会存储文档本身。您可以尝试让他们这样做,但是它们不是为此而设计的,因此您会遭受痛苦。
此外,目前不建议将Solr和Elasticsearch都用作主存储。他们可以做到,但是对于他们来说,任务并不像文件系统实现那样重要。
因此,我建议将文件放在其他位置,并仅使用Solr / Elasticsearch进行搜索。那是他们发光的地方。