2011-03-15 48 views
3

我的数据库中的文档具有其他字段中的名称和说明。我希望允许用户通过提供一些关键字来搜索这些文档。应使用关键字在名称和说明字段中进行查找。我已阅读mongoDB documentation on full text search,如果要在文档的名称字段中搜索关键字,它看起来非常好,很容易。但是,说明字段包含自由格式的文本,最多可能需要2000个字符,因此每个文档可能会有几百个字。我可以像名称一样对待它们,只是将整个描述拆分为单独的单词,并将其另存为另一个类似标签的数组(按照Mongo示例),但它看起来像一个可怕的想法 - 每个文档的大小几乎可以翻倍,加上有点,逗号等字符。请建议在mongoDB中进行全文搜索的最佳解决方案

我知道有专门的解决方案,正是这种问题,我只是看着Lucene.Net,我也看到了Solr在这里和那里提到。

我应该在mongoDB中实现这个搜索功能还是应该使用专门的解决方案?目前我只有一个mongod实例和一个web服务器实例。我们可能需要稍后扩展,但现在这只是我使用的。我会很感激有关如何实现此功能的任何建议。

+0

由于简单和需要快速开发,我正在考虑MongoDB的一个新项目。我目前正在查看Sphinx http://sphinxsearch.com,它将提供一种方法来提取文档ID,然后使用它从MongoDB中提取结果文档。如果MongoDB将来添加全文搜索,我认为这会建立一条平稳的路径。任何人都有这方面的经验? – condiosluzverde 2011-05-07 15:13:18

回答

1

如果按照记录的方法将文本分割到数组中是不可行的(我可以理解你的担忧),那么我认为你应该研究一个专门的解决方案。从MongoDB的文档

报价:

MongoDB的具有有趣的功能 ,使得某些搜索功能 容易。也就是说,这不是专用的 全文搜索引擎。

因此,对于更高级的全文搜索功能,我认为专用引擎更适合。我没有这方面的经验,所以我不能提供很多来自这里的建议,除了我的想法会是,如果我在同一条船上:

  • 多少工作涉及使用专门的全文搜索引擎,而不是MongoDB的功能?
  • 确实增加了更多的复杂性/值得吗?
  • 使用MongoDB会更快更简单吗?只需要额外的磁盘空间?
  • 也许MongoDB的支持更好的全文功能在未来(它正在迅速演变毕竟)
+0

全文搜索支持计划在未来。但是现在你必须和Solr和朋友一起去。使用内置的“全文”功能并不适合真实世界的使用。 – 2011-03-15 12:09:00

+0

我已经开始整合[elasticsearch](http://elasticsearch.org/)全文搜索部分。并且还发现两者之间有很大的特征重叠。 :) Mongo成熟了,但我会坚持下去,但我想可以自己使用ES。看起来很有希望。 – 2011-05-09 07:52:11

1

全文搜索支持计划在未来THW。然而,现在你必须与Solr &朋友一起去。使用内置的“全文”功能并不适合真实世界的使用。