MongoDB GridFS的全文搜索?

7

假设我想使用MongoDB的GridFS存储PDF或ePub文件,是否可能对数据文件进行全文搜索?

2个回答

3

目前在Mongo中你无法进行真正的全文搜索:http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo

欢迎在这里投票支持它: https://jira.mongodb.org/browse/SERVER-380

Mongo更像是一个通用的可扩展数据存储,目前还没有任何全文搜索支持。根据您的使用情况,您可以使用标准的B树索引和文本中所有单词的数组,但不会进行词干提取或模糊匹配等操作。

然而,我建议将mongodb与基于lucene的应用程序(elastic search很受欢迎)结合使用。您可以将所有数据存储在mongodb中(二进制数据、元数据等),然后在lucene中对文档的纯文本进行索引。或者,如果您的使用情况是纯全文搜索,则可以考虑使用elastic search而不是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/


1
MongoDB 2.4现在支持全文搜索。 - Sahat Yalkabov
1
MongoDB 2.6现在作为其常规查询运算符的一部分拥有全文搜索功能(在2.4之前,必须使用db.runCommand)。但是,您无法对gridfs文件中的任何类型的搜索进行操作。它们只是二进制块,如果它们是图像的一部分或文本书的章节,mongo也不会有任何区别对待。 - ffflabs

1

没有使用MongoDB API,至少我不知道。GridFS似乎是设计成更像简化的文件系统,具有提供直接键值语义的API。在他们的项目想法页面上,列出了两件事情,如果它们处于生产就绪状态,将会对您有所帮助:

  • GridFS FUSE,它允许您将GridFS挂载为本地文件系统,然后像索引磁盘上的内容一样对其进行索引
  • 与Lucene和Solr等工具实现实时全文搜索集成。在github和bitbucket上有一些项目,您可能需要查看。

还要看看ElasticSearch。我见过Mongo的一些集成,但我不确定有多少工作已经完成来利用GridFS(提到了GridFS附件支持,但我没有使用过它,无法确定)。也许你会成为那个构建它并将其开源的人?这应该是一个有趣的冒险


1
GridFS FUSE已经过时了。 - user2665694

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接