浏览 4057 次
精华帖 (0) :: 良好帖 (8) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-25
经过三四天的折腾,我终于完成了一个有基本功能的全文搜索,这一段时间的目标就是要做全文搜索,想实现的功能像:www.1718zx.cn ,这是我的一个网站,使用compass来完成的,本人在对RUBY语法不是很清楚的情况下开始上手的. 呵呵,操作步骤: 1),gem install几个东东: gem install ferret gem install acts_as_ferret gem install rmmseg 到此为止,所有安装步骤已经完成,不需要再下载什么软件. 2),创建rails项目,其中我有一个表:productinfos,在下文当中所有Productinfo.对象均是本表当中的字段.使用脚手架:ruby script/generate scaffold Productinfo Search完成一些功能. 3),在MODEL当中加入Ferret,请参考附件代码 4),加入分页,请参考附件代码 5),调整页面,请参考附件代码 6),为了显示中文,加入过滤器,请参考附件代码 说明,做为一个菜鸟一下子飞到RAILS世界,真的有点傻眼,代码说明一些,参考文章对于我来说简直是在折磨我的毅力,好歹也算做出点东西来. 参考一下结果图:
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-04
下了你的例子看。rubin推荐了一个rmmseg的C++库,据说性能更好,不知你看了没有,附上地址 http://robbin.iteye.com/blog/197263
|
|
返回顶楼 | |
发表时间:2008-10-04
我用的是sphinx + ultrasphinx, 速度效果都不错。就是文档有点少,很多东西都是自己试出来的。呵呵
|
|
返回顶楼 | |
发表时间:2008-10-05
我想请问一下在ProductInfo.rb里面的这两句:
analyzer = RMMSeg::Ferret::Analyzer.new { |tokenizer| Ferret::Analysis::LowerCaseFilter.new(tokenizer) } $index = Ferret::Index::Index.new(:analyzer => analyzer) 有什么用处呢?在ProductInfo.rb整个文件里都没有用到$index这个全局变量。 期待你的回复。 |
|
返回顶楼 | |
发表时间:2008-10-05
在SearchController里面调用的pages_for方法:
def search #s = Ferret::Search::SortField.new(:productname_for_sort, :reverse => false) @query =params[:query] @total, @members = Productinfo.full_text_search(@query, :page => (params[:page]||1)) @pages = pages_for(@total) end 它是调用applications.rb里面的pages_for方法: def pages_for(size, options = {}) default_options = {:per_page => 10} options = default_options.merge options pages = Paginator.new self, size, options[:per_page], (params[:page]||1) return pages end 我对这一句: pages = Paginator.new self, size, options[:per_page], (params[:page]||1) 不甚明了,实在想不出,它如何对@members进行公页,这里的self,我的理解是表示的是当前的controller。 期待你的回复 |
|
返回顶楼 | |
发表时间:2008-10-05
楼上不妨试试ultrasphinx, 跟will_paginate有完美整合。
|
|
返回顶楼 | |