当我在第一个Rails应用程序中添加搜索功能时,在阅读到使用MySQL的内置全文搜索后,我使用了Sphinx.虽然Sphinx运作良好,但设置有点复杂,我觉得我的应用程序所需的简单搜索功能有太多的负担.
在我的网站上搜索不是很频繁(最多每3-4秒进行一次搜索),因此我不太担心负载.
我的问题:与Sphinx / Ferret / Solr / etc.相比,为什么使用MySQL的全文本搜索到底是一个坏主意?
解决方法:
MySQL是一个关系数据库,而不是搜索服务器,因此,我们正在谈论使用不是专门为该任务构建的东西.话虽这么说,MySQL的全文本搜索效果很好.但是,如果需要扩展就不好了.
>您不希望数据库服务器做更多的事情,因为即使没有全文搜索之类的操作,这通常也是应用程序的瓶颈.
> MySQL全文本搜索要求您使用MyISAM引擎,如果您关心数据的一致性,那么这将是一个问题.
> MyISAM不支持InnoDB等引擎支持的许多增强的数据验证功能,因此从MyISAM开始通常会处于不利地位.
但是,YMMV以及如果您的应用程序在遭受MyISAM缺点的情况下仍然可以生存,则请务必使用它.只是知道,它不是用于MOST任务(不是ALL,而是大多数)的出色生产引擎.