最近遇到了一个问题,大数据量下的全文搜索,比较费时。
例如: 100W的数据下,想要搜索,使用where的话,有的时候耗时 20+ 秒。 无法忍受。
同时,100W 的数据,占用了至少1G的空间。 光是全盘扫描的话,也无法在1秒内完成。
所以,还得求助于索引(index)
记得在JAVA项目中,lucene 是个非常好的工具,貌似现在也是。不知道RAILS的世界中如何?
理想的工具应该是:
1. 有个针对中文的分词文件(现成的),就好像LUCENE的那样
2. 使用这个分词文件,对数据库的数据进行索引的生成
3. 每次查询时,先从索引中查,然后再根据索引的结果,找到数据库的记录
4. 显示结果。
或者(最理想的情况)
数据库本身就提供了一个索引的功能。我啥都不管,直接 ensureIndex(ooxx),然后就可以用了。仿佛不存在这个索引的中间层一样。直接操作数据库。
搜索了一下,进展如下:
Well, there's Ferret, which is a port of Lucene to Ruby. Also, Lucene is very easy to use from JRuby, if that's an option for you.
Depending on your needs, you might also want to take a look at Solr, which is a higher-level front-end built on Lucene. There is a Ruby interface, solr-ruby, that interacts with Solr via HTTP.
1. Lucene 在RUBY世界中的替代者是: Ferret. 不过
网站没打开。 github (
https://github.com/dbalmain/ferret) 则没问题。
2. Lucene 也有独立的server, 叫
Solr, 可以使用 solr-ruby 与之进行交互。
3. solr-ruby 已经过时了。对于Ruby, 使用 Rsolr, 对于Rails项目,使用 blacklight(
For the latest Ruby Solr library, use RSolr -
http://rubygems.org/gems/rsolr
For the latest Rails application plugin, use Blacklight -
http://projectblacklight.org 链接打不开. 给作者发了信,结果对方说短期内不会维护了。 ( Hi Shen,
The site won't be going back up any time soon I'm afraid. I just don't
have the time to work on it any more. If I do find the time, I'll be
sure to let you know.
King Regards,
Dave) 。 )
这个。。。看来使用lucene还是比较重量啊。
4. sphinx . 貌似是LUCENE 的竞争者。 sphinx 基本等同于 lucene + solr. sphinx 不但有lucene的功能,而且也提供了一个SERVER。 对MYSQL, POSTGRES集成的非常好,还有自身的 sphinx QL. 不过由于我用的是 mongo ,所以。。。
5. 不过,sphinx 在RAILS3中有工具:
thinking sphinx, 非常详细的文档。github上的关注度超过了1K, 而且最下面有很长的作者列表,粗略估算一下,估计有180人。看来就是它了。。。重点的candidate.
6. 非常棒!找到了中文分词库:
http://www.sphinx-search.com/ sphinx-for-chinese是一款专注于中文搜索的全文检索软件,在sphinx的基础上添加了中文处理模块并优化了中文搜索效果。
7. 其他选项:
ravendb ,内置支持了lucene。是开源的,不过也有商用版本。 用C# 写的。
GITHUB 关注度 700+ 不考虑了。。。
8. mongoid plugin:
mongoid_fulltext 上手非常快,文档看起来不错。可惜分词不支持中文。。。 只是很简单的 几个选项(用空格隔开,等等)
mongoid_search, 也是对mongoid的支持。可惜不支持中文。。。
分享到:
相关推荐
《InspiniaAdmin 2.6.1 Rails Full Version 深度解析》 InspiniaAdmin 2.6.1 Rails Full Version 是一个专为Web应用开发设计的全面的后台管理框架,它基于Ruby on Rails框架,为开发者提供了一整套强大的功能,帮助...
"inspinia admin - v2.5 Rails_Full_Version" 是一个基于Rails框架构建的后台管理系统的完整版本。这个系统采用流行的Inspinia Admin模板,提供了丰富的功能和自定义选项,旨在帮助开发者快速构建高效、现代且用户...
Rails3 是 Ruby on Rails 框架的一个版本,它提供了一系列强大的命令行工具,使得开发者可以快速地构建和管理Web应用。在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个...
Inspinia Admin Rails全版本正是在这样的背景下应运而生,它为Rails开发者提供了现成的前端资源,极大地提升了开发效率。 该模板包含的文件列表“inspinia_admin_v2.5_Rails_Full_Version”很可能包括以下组成部分...
### CentOS环境下Rails 3开发环境搭建详解 #### 一、准备工作与环境配置 在开始部署Rails 3开发环境之前,我们需要确保系统上已经安装了一些基本的软件包和工具。这一步骤对于后续的Ruby和Rails安装至关重要。 ##...
Ruby+on+Rails+3+Tutorial.pdf 应用Rails进行敏捷Web开发第4版.pdf (Agile Web Development with Rails) Rails.Recipes.Rails.3.Edition.pdf
1. **Ruby on Rails 3**:本文档主要针对 Rails 3 版本。 2. **Solr**:全文检索引擎,Sunspot 依赖于 Solr 来实现其功能。 3. **Sunspot gem**:Sunspot 的核心 gem,通过这个 gem 可以轻松配置和使用 Sunspot 功能...
《Rails 3 in Action》是2011年由Ryan Bigg撰写的一本关于Ruby on Rails框架的权威指南,专门针对当时最新的Rails 3.1版本进行了深入解析。这本书旨在帮助开发者充分利用Rails 3.1的强大功能,提升Web应用开发的效率...
标题与描述概述的知识点主要集中在Rails 2与Rails 3之间的关键差异,这些差异涉及到脚本命令、配置文件以及路由的处理方式。以下是对这些知识点的详细解释与扩展: ### 脚本命令的变化 在Rails 2中,开发者通过一...
《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...
InspiniaAdmin 2.5 Rails_full_version
在“Rails进行敏捷Web开发(所有版本的源码rails3.0-4.0)”中,包含了Rails从3.0到4.0各个主要版本的源代码,这些版本的变迁反映了Rails框架在不同阶段的发展和改进。 1. Rails 3.0: Rails 3是重大升级,引入了...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
Ruby on Rails 3 是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,极大地简化了Web开发过程。这个版本是在Ruby 1.9.2环境下发布的,带来了许多改进和新特性,旨在提高...
rails3的英文文档
描述中的 "ruby and rails 的框架rails-2.3.3.zip" 提到的是 Rails 的另一个版本 2.3.3,尽管与标题中的版本号不完全匹配,但我们可以推断这是关于 Rails 2.3.x 系列的讨论。这个压缩包很可能包含了 Rails 框架的源...
Rails3消息队列系统 Sidekiq