比如说,如果我想使用 MongoDB 的 GridFS 存储 PDF 或 ePub 文件,是否可以对数据文件执行全文搜索?
2 回答
您目前无法在 mongo 中进行真正的全文搜索:http ://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo
随意在这里投票: https ://jira.mongodb.org/browse/SERVER-380
Mongo 更像是一个通用的可扩展数据存储,到目前为止它还没有任何全文搜索支持。根据您的用例,您可以将标准 b-tree 索引与文本中所有单词的数组一起使用,但它不会进行词干或模糊匹配等。
但是,我建议将 mongodb 与基于 lucene 的应用程序结合使用(弹性搜索很流行)。您可以将所有数据存储在 mongodb 中(二进制数据、元数据等),然后在 lucene 中索引文档的纯文本。或者,如果您的用例是纯全文搜索,您可以考虑只使用弹性搜索而不是 mongodb。
更新(2013 年 4 月):MongoDB 2.4 现在支持基本的全文索引!下面是一些有用的资源。
http://docs.mongodb.org/manual/applications/text-search/
http://docs.mongodb.org/manual/reference/command/text/#dbcmd.text
http://blog.mongohq.com/blog/2013/01/22/first-week-with-mongodb-2-dot-4-development-release/
不使用 MongoDB API,我不知道。GridFS 似乎被设计成更像是一个简化的文件系统,其 API 提供了直接的键值语义。在他们的项目想法页面上,他们列出了两件事如果处于生产就绪状态会对您有所帮助:
- GridFS FUSE,允许您将 GridFS 挂载为本地文件系统,然后像索引磁盘上的内容一样对其进行索引
- 与 Lucene 和Solr等工具的实时全文搜索集成。您可能想查看github 和bitbucket上的一些项目。
另请查看ElasticSearch。我已经看到了与 Mongo 的一些集成,但我不确定为利用 GridFS做了多少工作(提到了 GridFS 附件支持,但我还没有使用它来确定)。也许您将成为构建它然后将其开源的人?应该是一次有趣的冒险