我需要在这里为我正在处理的项目做出架构决策。以下是要求:
文档摄取(.doc、.pdf、.csv,也许是视频)
实际的文档存储(我假设在服务器上的磁盘上,并参考了数据库中的文件) - 以及数据库中可搜索和可分面的某些字段?
全文文档搜索
分面(基于从文档摄取中收集的字段选择,每个文档可能不同 - 换句话说,可能有 200 个方面,但只有一些适用于每个文档)
我正在使用 rails 作为服务器,目前使用的是 mySQL。我相信我在这里至少有两个明显的选择:
- 索尔; 在 mySQL 中存储文档中的字段,并使用 Sunspot gem 进行 Solr 索引和方面定义。这里的好处似乎是快速搜索、分面、文档摄取实用程序。我不确定我对 200 个(也许更多 - 真正动态定义的)方面的问题。此外,考虑到文档有各种形状和大小,我想知道文档存储机制是否会更好。
- MongoDB;使用 mongoid gem 将文档内容存储在 MongoDB 中。我不熟悉这里的文档摄取实用程序,虽然文档存储明显胜出,但我相信 mongodb 在全文搜索方面做得很好,但对于分面,我需要使用多个查询进行聚合,这可能会很慢。
(我也知道我可以将 Solr 与 MongoDB 一起使用,但……不确定)。
老实说,我对 Solr 和 MongoDB 都很陌生,可以在这里使用一些建议,因为我确信我错过了一些优点和缺点。