当我在第一个Rails应用程序中添加搜索功能时,在阅读到使用MySQL的内置全文搜索后,我使用了Sphinx.虽然Sphinx运作良好,但设置有点复杂,我觉得我的应用程序所需的简单搜索功能有太多的负担.

在我的网站上搜索不是很频繁(最多每3-4秒进行一次搜索),因此我不太担心负载.

我的问题:与Sphinx / Ferret / Solr / etc.相比,为什么使用MySQL的全文本搜索到底是一个坏主意?

解决方法:


MySQL是一个关系数据库,而不是搜索服务器,因此,我们正在谈论使用不是专门为该任务构建的东西.话虽这么说,MySQL的全文本搜索效果很好.但是,如果需要扩展就不好了.

您不希望数据库服务器做更多的事情,因为即使没有全文搜索之类的操作,这通常也是应用程序的瓶颈.
MySQL全文本搜索要求您使用MyISAM引擎,如果您关心数据的一致性,那么这将是一个问题.
MyISAM不支持InnoDB等引擎支持的许多增强的数据验证功能,因此从MyISAM开始通常会处于不利地位.

但是,YMMV以及如果您的应用程序在遭受MyISAM缺点的情况下仍然可以生存,则请务必使用它.只是知道,它不是用于MOST任务(不是ALL,而是大多数)的出色生产引擎.

标签: mysql, ruby-on-rails, search, full-text-search, sphinx

相关文章推荐

添加新评论,含*的栏目为必填