比如说,如果我想使用MongoDB的GridFS存储PDF或ePub文件,是否可以对数据文件进行全文搜索?
您目前无法在 mongo 中进行真正的全文搜索: http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo
请随时在这里投票:https://jira.mongodb.org/browse/SERVER-380
Mongo更像是一个通用的可扩展数据存储,到目前为止,它没有任何全文搜索支持。根据您的用例,您可以将标准 b 树索引与文本中所有单词的数组一起使用,但它不会进行词干提取或模糊匹配等。
但是,我建议将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附件支持,但我还没有使用它来确定(。也许你会成为构建它然后开源它的人?应该是一次有趣的冒险