3

我正在使用 mongodb 和 mongomapper 来存储我的所有产品。每个产品都属于具有多个级别的多个类别,即类别、子类别等。每个产品都有许多搜索字段,这些字段是产品中的嵌入文档。

所有这些都有效,我现在想将搜索添加到应用程序中。

搜索系统需要文本搜索:多重、动态、分面搜索,包括最小/最大范围搜索。

我一直在研究 sunspot gem,但很难在 dev 上设置它,更不用说在生产中运行它了!我也看过狮身人面像。

但我想知道仅使用 mongomapper / mongodb 是否足够快和最好的方法,因为它是一个相当复杂的搜索系统?

任何有关此的帮助/建议/经验/教程和示例将不胜感激。

非常感谢,

瑞克

4

1 回答 1

1

我参与了一个非常大的由 Sphinx 驱动的搜索,我认为它很糟糕。如果您想要通过非常简单的全文搜索获得任何内容,则很难配置。另一方面,Solr\Lucene 非常灵活,并且非常容易设置和运行。

我没有将 Solr 与 MongoDB 结合使用来为全文搜索提供所有额外的好处,例如构面等。根据您配置 Solr 的方式,您甚至可能不需要点击 MongoDB 来获取数据。或者,您可以告诉 Solr 索引字段,但不存储它们,而是只存储与 MongoDB 内部数据对应的 ObjectId。

如果您的搜索确实是一个复杂的搜索系统,我强烈建议您不要使用 MongoDB 进行搜索,而使用 Solr。一个重要原因是 MongoDb 没有全文功能 - 相反,它有正则表达式匹配。正则表达式匹配工作得很好,但只会在某些情况下使用索引。

于 2011-03-24T00:52:50.913 回答