我正在为我的webapp使用MySQL数据库。 我需要搜索多个表格和多列,非常类似于在这些列中进行全文搜索。
我需要知道您使用任何全文搜索API(例如solr / lucene / mapReduce / hadoop等等)的经验,而不是使用简单的SQL:
非常感谢!
答案 0 :(得分:8)
回答你的问题
1。)我有一个包含大约500万个文档的数据库。 MySQL Fulltextsearch需要2-3分钟。 Solr / Lucene需要进行相同的搜索,大约200-400毫秒。
2.。)您需要的空间取决于您的配置,复制域的数量以及是否存储数据,或者您只索引数据。在我的配置中,完整数据库被编入索引,但只有元数据被存储。所以一个30GB的DB需要40 GB的Solr / Lucene。请记住,如果您希望(重新)优化索引,则需要再次临时100%的索引大小。
3.如果从MySQL fulltext-Index迁移到Lucene / Solr,则可以节省CPU功耗。使用MySQL全文需要比Solr全文搜索更多的CPU功率 - >看看答案1。)
4.。)取决于文档的数量,文档的大小和磁盘速度。当然CPU性能非常重要。在索引时间内,多个CPU没有很好的扩展。 2个大核心比8个小核心快得多。 在我的环境中索引500万个文档(44GB)需要2-3个小时才能在双核VM服务器上运行。
5.从MySQL Fulltext-Index迁移到Lucene / Solr Fulltextindex是有史以来最好的想法。 ;-)但是你可能需要重新设计你的应用程序。
//编辑以回答问题" Lucene索引是否会在一些Insert语句后立即更新"
这取决于您的SOlR配置,但可能
答案 1 :(得分:3)
Q1:Lucene在功能方面通常更快,更强大(如果正确实施)
Q2:如果您不存储原始内容,通常是原始(索引)内容的20-30%
问题4:取决于您要编制索引的内容的大小,您要处理的处理量(您可以拥有自己的分析器等),然后是您的硬件......您将不得不做一个基准。对于我的一个项目,上一次花了15分钟构建一个500MB的索引(开箱即用的性能,没有尝试调整),另一个,花了3天来构建一个巨大的17GB索引。