2012-01-05 72 views
2

我正在试图决定如何分解我的逻辑。逻辑分离:搜索,数据库和应用程序

我把我的主要业务逻辑放在Node.js/Express中,而且我一直在使用Mongo来处理我的数据库。这很好,但现在我需要实现一个非常强大的搜索系统,因为搜索是我网站最重要的功能之一。起初,我非常惊讶于Mongo和Couch缺乏支持和整合,但后来我意识到我正试图让数据库做一些不适合的事情。

现在我正在研究使用Solr或ElasticSearch,但是它的开始似乎是这些程序甚至可以执行Mongo可以执行的一些或大部分查询,只要我能够正确索引我的文档(以及它们的自然,我将索引几乎所有文件的每一个属性)。所以说,我在想,也许我应该只使用一些简单的东西,比如Redis,并且依赖像Solr/ElasticSearch这样强大的搜索工具。

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

+0

我也刚刚发现[RedBackJS](http://redbackjs.com),它看起来对我来说可能是正确的解决方案,但我又对一些更有经验的建筑师的智慧感兴趣。 – cjroth 2012-01-05 20:04:54

+0

你大多只需要一个HTTP客户端库(最好能够连接池),你可以自己做一个solr查询类(不要忘记做URL和Solr char转义)。 – aitchnyu 2012-01-06 11:08:36

回答

4

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

MongoDB vs Redis?很难说没有任何要求指定。至少为了临时查询我会选择mongo。在任何情况下,请确保您学习了由Kyle Kingsbury所调用的jepsen系列博客文章,涵盖了mongodbredis

+0

MongoDB vs Redis,如果你意识到你需要在Mongo中使用id,并且代码连接(为了不复制记录并避免疯狂的更新),你会倾向哪种方式? – 2015-06-06 06:13:14

+0

@AgentZebra不确定你的意思是通过重复记录和疯狂的更新,猜测可能试图更新'单一交易'中的多个文件? – milan 2015-07-23 10:22:04

+0

嗨@米兰,是的。 – 2015-07-23 18:08:58