在一个新项目中,我需要大量使用 lucene 来实现搜索器。这个搜索器将是项目中非常重要(也是很大)的一部分。将关系数据库 + Lucene 替换为 MongoDb 是否有效或方便? ?
编辑:好的,我会澄清一下:我不是在问风险,我可以在这个项目中付出这个代价。我的观点是:MongoDB 是面向这种东西的吗?我可以制作一个与 Lucene 具有相同性能的完整搜索引擎吗?一位 friend 向我指出 MongoDB 作为替代方案,但我看不出 Lucene 性能是否与文档替代方案一起提供(然后,我也会在 MongoDB 中看到它),或者另一方面,倒排索引和优化是完整的与文档方向无关。
最佳答案
从技术上讲,您可以使用 MongoDB 进行全文搜索,但是您错过了全文搜索提供商必须提供的很多功能。我喜欢 MongoDB,但如果完全关心实现时间,我会将它与全文搜索提供程序(例如 Lucene 或 Sphinx)结合使用。我认为 MongoDB 索引单词数组的便捷能力最好留给基于标记的标记和搜索,而不是全文搜索。
搜索(信息检索)不仅仅是抓取任何匹配的文档,如果您希望搜索结果具有任何相关性,您将需要类似 TF-IDF、短语匹配(单词序列得分更高)或任何数量的其他 IR 技术来提高搜索精度。如果你使用 MongoDB,你需要从头开始实现它。
如果您真的想从头开始实现这一切,但又不想为事物的原始存储而烦恼,那么 MongoDB 非常接近您可以在其之上实现它的最佳数据库存储(想不出很多其他的) ,但这仍然不是一个很好的选择。
关于java - MongoDB 是关系 db + lucene 的有效替代品吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2546494/