在一个新项目中,我需要努力使用lucene来实现搜索器.这个搜索者将是该项目的一个非常重要(和大)的部分.用MongoDb替换Relational Database + Lucene是有效还是方便?
编辑:好的,我会澄清:我不是在询问风险,我可以在这个项目中支付这个价格.我的观点是:MongoDB是否面向这种事情?我可以制作一个完整的搜索引擎,具有与Lucene相同的性能吗?一位朋友指出MongoDB是另一种选择,但我不知道Lucene性能是否带有文档备选(然后,我也会在MongoDB中看到它),或者,另一方面,反向索引和优化是完全的独立的文件导向.
从技术上讲,您可以使用MongoDB进行全文搜索,但是您错过了全文搜索提供商必须提供的功能.我喜欢MongoDB,但如果时间紧迫,我会将它与全文搜索提供商(如Lucene或Sphinx)结合起来.我认为MongoDB对单词数组进行索引的便捷能力最好留给基于标记的标记和搜索,而不是全文搜索.
搜索(信息检索)不只是抓取任何匹配的文档,如果您希望搜索结果具有任何相关性,那么您将需要TF-IDF,短语匹配(序列中的单词)得分更高)或任何数量的其他红外技术,以提高搜索精度.如果你使用MongoDB,你需要从头开始实现它.
如果你真的想从头开始实现它,而不是原始存储方面的麻烦,MongoDB非常接近最好的数据库存储,你可以在它上面实现它(不能想到很多其他的),但是仍然没有成为一个很好的选择.