Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MongoDB是关系数据库的有效替代品吗;卢森?_Java_Lucene_Mongodb_Relational Database - Fatal编程技术网

Java MongoDB是关系数据库的有效替代品吗;卢森?

Java MongoDB是关系数据库的有效替代品吗;卢森?,java,lucene,mongodb,relational-database,Java,Lucene,Mongodb,Relational Database,在一个新项目中,我需要一个搜索器实现的lucene硬使用。这个搜索者将是这个项目中非常重要的一部分。将关系数据库+Lucene替换为是有效的还是方便的 编辑:好的,我会澄清:我不是在问风险,我可以在这个项目中支付这个价格。我的观点是:MongoDB是面向这种事情的吗?我能做一个性能和Lucene一样的完整搜索引擎吗?。一位朋友指出MongoDB是替代方案,但我不知道Lucene性能是否与文档替代方案一起提供(然后,我也会在MongoDB中看到),或者,从另一方面来说,反向索引和优化完全不依赖于文

在一个新项目中,我需要一个搜索器实现的lucene硬使用。这个搜索者将是这个项目中非常重要的一部分。将关系数据库+Lucene替换为是有效的还是方便的


编辑:好的,我会澄清:我不是在问风险,我可以在这个项目中支付这个价格。我的观点是:MongoDB是面向这种事情的吗?我能做一个性能和Lucene一样的完整搜索引擎吗?。一位朋友指出MongoDB是替代方案,但我不知道Lucene性能是否与文档替代方案一起提供(然后,我也会在MongoDB中看到),或者,从另一方面来说,反向索引和优化完全不依赖于文档方向。

我不熟悉MongoDB,所以我不能直接回答这个问题,但我想指出的是,与Lucene(大约有十年历史)和关系数据库(已经存在了几十年)不同,MongoDB还不到三年

在游戏的这个阶段,它可能仍在成熟。它可能适合您的需要(我很好奇,是否有熟悉使用它的人会在这里插话),但您需要将其考虑到您的等式中。你愿意为使用尖端技术付出代价吗

即使它足够稳定和高效,您也可能会遇到网站/教程等形式的支持有限的问题(由于用户基数较小)。你也在冒险,它将被停产


抓住这个机会是值得的,但你需要睁大眼睛,不要被“哦,看看这个闪亮的新玩具”的效果蒙蔽。

不,不是,因为MongoDB不是关系型的。

Lucene是一个成熟而稳定的产品。唉,MongoDB的情况还不是这样。所以我认为Lucene加上RDBMS是一个风险小得多的选择


当然,在某种程度上,这取决于项目的性质:“非常重要(和重大)”到底有多重要?另一件事是,你以前有MongoDB的经验吗(我猜没有)?如果你能接触到一些有专业知识的人,那么这将降低风险

看起来可能,但速度较慢()

  • 你将不得不进行分词和词干分析
  • 查询排名“需要用户提供的代码”

从技术上讲,您可以使用MongoDB进行全文搜索,但您错过了全文搜索提供商必须提供的很多功能。我喜欢MongoDB,但如果需要考虑实现时间的话,我会将其与全文搜索提供商(如Lucene或Sphinx)结合使用。我认为MongoDB索引单词数组的便捷功能最好留给基于标记的标记和搜索,而不是全文搜索

搜索(信息检索)不仅仅是获取任何匹配的文档,如果你想让你的搜索结果有任何相关性,你将需要类似TF-IDF、短语匹配(单词序列分数更高)或任何其他IR技术的东西来提高搜索精度。如果您使用MongoDB,则需要从头开始实现它

如果您真的想从头开始实现它,但又不必担心原始存储方面的问题,那么MongoDB非常接近您可以实现它的最佳数据库存储(想不出还有多少其他的),但这仍然不是一个很好的选择。

似乎是一个(n其他)可能使用Lucene via的数据库存储
项目。

另一个选择是使用(以lucene为背景)width couchdb:

在参加了Devxx 2011和10Gen的演示之后,我写了一篇比较MongoDB和RDBMS数据库的博客。MongoDB是流行的Nosql数据库之一。正如在MongoDB之前的回复中所述,它是一个Nosql数据库,不同于现有的主流rdbms数据库


对于全文搜索解决方案,我在前面使用过Lucene和Sphinx,但它们不能很好地为提供的关键字获取最佳结果。所以我使用了mongodb全文搜索插件MongodAntern,它非常擅长。此外,在性能方面,它使用MongoDB作为后端引擎,因此根本没有性能问题。等待更多关于MongoLantern产品可用性的评论


MongoDb是一个NOSQl,Lucene和SOLR是搜索引擎,另外一个比较是Terracota和EhCache这样的缓存。都有自己的目的

如果使用词干分析需要搜索和全文搜索,则相关设置(如在产品标题排名中显示与文本匹配的结果,而不是在描述中显示与文本匹配的结果)以及许多此类基于文本的功能。还有排名、相关性、声音相似性、部分词语匹配等。所有这些事情最好由SOLR和Lucene等基于搜索的存储系统来处理

如果您的标准仅限于更高的检索,并且您不需要持久的表示数据对象,那么只需使用缓存lke Terracota即可


如果您需要更快的检索,还需要在一个数据源中合并和聚合数据,并且还需要聚合的数据是持久的,那么请使用NOSQL,如Mongodb。

当然,克里斯,我注意到,在这种特殊情况下,我可以为此付出代价。谢谢。如果玩具停产,他总是可以将数据移动到RDBMS:)我的2美分:我会采取组件化的方法,在这种方法中,你可以在以后更改基础数据源。好的,我会澄清:我不是在问风险,我可以在这个项目中支付这个价格。我的观点是:MongoDB是面向这种事情的吗?我能做一个性能和Lucene一样的完整搜索引擎吗?。一位朋友指出MongoDB是备选方案,但我不知道Lucene性能是否与文档备选方案一起提供(然后,我也会在MongoDB中看到),或者,另一方面,是inver