逻辑分离:搜索,数据库和&应用

时间:2012-01-05 19:54:53

标签: node.js mongodb solr full-text-search redis

我正在试图决定如何分解我的逻辑。

我将我的主要业务逻辑放在Node.js / Express中,我一直在使用Mongo作为我的数据库。这很好用,但现在我需要实现一个非常强大的搜索系统,因为搜索是我网站最重要的功能之一。起初,我对Mongo和Couch提供的缺乏支持和集成感到非常惊讶,但后来我意识到我正在尝试让数据库做一些不是为它做的事情。

现在我正在考虑使用Solr或ElasticSearch,但它开始看起来它们甚至能够执行Mongo可以执行的一些或大多数查询,只要我正确地索引我的文档(以及它们的性质) ,我将为每个文档的每个属性编制索引)。所以说,我想也许我应该使用简单的东西,比如Redis,并依赖强大的搜索工具,比如Solr / ElasticSearch。

这看起来是明智的选择吗?另外,为什么Solr,Lucene或ElasticSearch没有Nodejs模块?

1 个答案:

答案 0 :(得分:4)

MongoDB + Solr(甚至更好的ElasticSearch)对于将搜索作为最重要功能之一的应用来说听起来是一个合理的选择。 MongoDB不是用于全文搜索,Solr(Lucene)是。 Solr并不是一个记录系统(MongoDB)。

MongoDB与Redis?很难说没有指定任何要求。我至少为了临时查询而选择mongo。在任何情况下,请务必通过jepsen学习一系列名为Kyle Kingsbury的精彩博文,涵盖mongodbredis