Lucene或Mysql全文搜索

sma*_*777 10 lucene search solr full-text-search

现在,当开始一个网络/移动应用程序项目,其中搜索将是一个重要的变量.从一开始就使用Lucene或快速部署基于MySQL的解决方案并希望最好的解决方案是否更好?

The*_*ndr 24

我在2010年11月做了同样的决定.我是mysql的朋友,并试图首先在mysql上构建一个搜索应用程序 - 效果很好......而且速度很快(我觉得很快):在200.000个文档中搜索(不超过2-3秒)

我避免花时间去lucene/solr,因为我想利用这段时间来开发应用程序.并且:lucene对我来说是新的...我不知道,如果它足够好,我不知道它是什么......最后:你不能改变一生的习惯.

但是,我遇到了模糊搜索(很难在mysql中实现)或"更像这样"的不同问题(必须使用mysql或简单使用"更像这样"的solr-feature从应用程序中进行编码)盒子外面).最后,文档数量增加到一百万,而mysql现在需要超过15秒来搜索文档.

所以我决定从lucene开始,感觉就像我打开了通向新世界的大门.很多功能(我很难编写应用程序功能)现在由solr提供并开箱即用.全文搜索速度要快得多:在100万个文档中小于50毫秒,如果缓存则小于1毫秒.

因此投入的时间得到了回报.

因此,如果你想要进行全文搜索:如果你有一些数据,那就选择lucene.顺便说一下:我正在使用混合构造:将数据保存在mysql中,而lucene只是一个(几乎)没有存储数据的索引(以保持该索引小而快).


mar*_*log 5

一般来说,如果你要进行全文搜索,你肯定需要lucene或sphinx + mysql(或lucene + mysql,在lucene中存储可索引字段,并为mysql行返回一个id).其中任何一个都是很好的选择.

如果你要进行"正常"搜索(即:整数或字符列或日期),mysql partitoning就足够了.

你需要指定你要搜索的内容.你多久会重新编译你的数据库(如果你要重新编译索引,我会选择sphinx)