MongoDB是关系数据库+ lucene的有效替代品吗?

在一个新项目中,我需要使用lucene来实现搜索器。 这个搜索者将是这个项目中非常重要的一部分。 用MongoDb替换Relational Database + Lucene是否有效或方便?

编辑:好吧,我会澄清:我不是在问风险,我可以在这个项目中支付这个价格。 我的观点是:MongoDB面向这种事情吗? 我可以制作一个完整的搜索引擎,其性能与Lucene相同吗? 一位朋友指出我可以选择MongoDB作为替代方案,但我不知道Lucene性能是否与文档替代方案一起提供(然后,我也会在MongoDB中看到它),或者,另一方面,倒排索引和optimitizations是完整的独立于文件方向。


从技术上讲,您可以使用MongoDB进行全文搜索,但您错过了全文搜索提供商必须提供的许多内容。 我喜欢MongoDB,但是如果需要时间来执行,我会将它与全文搜索提供程序(如Lucene或Sphinx)结合使用。 我认为MongoDB对索引数组索引的方便能力最好留在基于标记的标记和搜索上,而不是全文搜索。

搜索(信息检索)不仅仅是抓取任何匹配的文档,如果您希望搜索结果具有任何相关性,您将需要沿着TF-IDF,短语匹配(序列中的单词)分数更高)或其他任何数量的IR技术来提高搜索精度。 如果你使用MongoDB,你需要从头开始实现它。

如果你真的想从零开始实现它,但是不用担心事物的原始存储方面的问题,MongoDB非常接近你可以在其上实现它的最好的数据库存储(无法想象许多其他存储),但是仍然没有成为一个很好的选择。


CouchDb似乎是通过couchdb-lucene项目使用Lucene的另一种可能的替代方案。


MongoDb是一个NOSQl,Lucene和SOLR是搜索引擎,并且在比较中增加了另一件事情,就像Terracota和EhCache一样。 所有人都有自己的目的。

如果需要使用全文搜索进行全文搜索,则相关性设置会显示结果,其中产品标题排名中的文本匹配度超过了desctription中的文本匹配度,以及许多此类基于文本的功能。 还有排名,相关性,声调相似,部分词匹配等。 所有这些事情最好通过像SOLR和Lucene这样基于搜索的存储系统来处理。

如果你的标准只是提取检索,你不需要你的演示文稿数据对象是持久的,那么只需使用一个缓存lke Terracota。

如果您需要更快的检索速度,并且需要在一个数据源中整合和聚合数据,并且还需要聚合的数据才能持久,那么可以使用像Mongodb这样的NOSQL。

链接地址: http://www.djcxy.com/p/86379.html

上一篇: Is MongoDB a valid alternative to relational db + lucene?

下一篇: Is spring data mongodb ready for production