Rails 中的高性能搜索与技术集成
1. 独立且高性能的搜索
1.1 使用 Ferret 和 Solr 对 Rails 数据进行索引和搜索
在使用 Rails 进行搜索时,你可能会问:“为什么要从 Rails 中使用 Ferret、Solr 或 Sphinx 呢?我不能使用数据库和 ActiveRecord 进行搜索吗?”
Rails 和 ActiveRecord 在类、对象和存储在数据库中的数据之间提供了抽象。Rails 支持多种不同的数据库系统,如 MySQL、PostgreSQL、Microsoft SQL Server 和 Oracle。然而,这些数据库系统的工作方式各不相同。
Rails 支持的一些数据库引擎包含高级全文搜索功能,而其他的则没有。此外,每个引擎中的不同数据和表类型可能具有不同的搜索特性。这意味着 Rails 和 ActiveRecord 无法为 Rails 应用程序中的表提供通用、简单的全文搜索方法,而是让用户进行一些不严谨、不可移植的 SQL 操作,例如(针对 MySQL):
results = Post.find(:all, :conditions => "title LIKE '%search phrase%'")
上述代码的缺点是,它会迫使数据库遍历 posts 表中的每一行,以查找标题中包含所需单词或短语的条目。这种搜索方式在没有任何索引过程的情况下效率极低且速度缓慢,尤其是在处理大型数据集时。
为了解决性能问题,可以使用受 Lucene 启发的 Ferret 库对数据库中的数据
Rails中的高性能搜索集成
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



