`

备忘:使用RMMSeg+Ferret完成全文搜索

    博客分类:
  • ROR
阅读更多

  经过三四天的折腾,我终于完成了一个有基本功能的全文搜索,这一段时间的目标就是要做全文搜索,想实现的功能像: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世界,真的有点傻眼,代码说明一些,参考文章对于我来说简直是在折磨我的毅力,好歹也算做出点东西来.

      参考一下结果图:

使用ferret完成的搜索结果

 

  • productinfo.rb.rar (839 Bytes)
  • 描述: 静态模型,加入了ferret索引
  • 下载次数: 132
  • application.rb.rar (565 Bytes)
  • 描述: 主程序,加入了编码过滤功能
  • 下载次数: 119
分享到:
评论
5 楼 playcase 2008-10-05  
楼上不妨试试ultrasphinx, 跟will_paginate有完美整合。
4 楼 yangzhihuan 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。

期待你的回复


3 楼 yangzhihuan 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这个全局变量。
期待你的回复。
2 楼 playcase 2008-10-04  
我用的是sphinx + ultrasphinx, 速度效果都不错。就是文档有点少,很多东西都是自己试出来的。呵呵
1 楼 yangzhihuan 2008-10-04  
下了你的例子看。rubin推荐了一个rmmseg的C++库,据说性能更好,不知你看了没有,附上地址 http://robbin.iteye.com/blog/197263

相关推荐

    Go-Ferret一种声明式Web爬虫系统

    在Web爬虫领域,Go-Ferret提供了一种高效且易于使用的解决方案,尤其适合于UI测试、机器学习以及数据分析等场景。 1. **声明式编程**:Go-Ferret的核心特性是其声明式的API设计。这意味着用户可以明确地指定想要...

    E022-渗透测试常用工具-使用ferret进行Cookie劫持.pdf

    在这个过程中,使用了ferret工具来执行Cookie劫持,这是一种常见的攻击手段,用于获取用户的登录凭据,特别是那些存储在Cookie中的会话ID。以下是整个过程的详细解释: 1. **环境准备**: 在这个场景中,我们有两...

    ferret简明手册

    ### FERRET简明手册知识点概述 #### 一、FERRET简介与基本操作 - **Commandline模式**:启动FERRET时,默认进入命令行模式,提示符为“yes?”,用户可以通过此模式输入命令。 - **FERRET-GUI**:通过`ferret-gui`...

    Ruby搜索引擎Ferret.zip

    Ferret 是 Java 全文搜索引擎 Lucene 的 Ruby 移植版本。 标签:Ferret

    LTspice快捷键官方

    * FERRET:download a file from URL * GLOBAL:declare global nodes * IC:set initial conditions * INCLUDE:include file * LIB:include library * LOADBIAS:load a previously solved DC solution * MACHINE...

    Ferret ruby下的搜索引擎技术

    ruby下的搜索引擎。With the introduction of Ferret, Ruby users now have one of the fastest and most flexible search libraries available. And it's surprisingly easy to use.

    工具Ferret(含代码)

    工具Ferret是一款在黑帽子大会上亮相的安全工具,主要用于研究目的,其功能是截获邮箱登录过程中的Cookie信息。在网络安全领域,理解这样的工具是非常重要的,因为它揭示了网络攻击者可能使用的手段,同时也为安全...

    JavaEye3.0开发手记

    - **插件**:`ferret`, `acts_as_ferret`, `multilingual_ferret_tools` - **用途**:实现全文检索功能。 - **特点**:可根据具体需求调整和优化。 **3. Attachment_fu** - **用途**:处理附件存储,利用 ...

    ferret 6.84 for win7 64

    FERRET 绘图软件 6.84 for win64 安装方式,解压到任意目录,直接执行bin\bash.exe或bin\mintty.exe原方式操作,直接执行bin\ferret_v6.84.exe 直接进入FERRET

    Ferret工具源代码

    几年前的黑帽子大会后传出的一个工具Ferret。作者声称可以利用他截获邮箱登录过程中的cookie信息。进而可以随意侵入他人的信箱。曾在黑帽子大会上当场演示如何破解gmail,hotmail等信箱。终于等到作者把代码和工具都...

    Ferret-crx插件

    【Ferret-crx插件】是一款专为提高搜索效率设计的浏览器扩展程序,主要针对英语用户群体。这款插件的独特之处在于它提供了一个统一的、便捷的搜索入口,允许用户在多功能框中输入特定的指令来启动搜索,极大地简化了...

    Ferret.Net-开源

    【标题】"Ferret.Net-开源" 【描述】中的知识点: 1. **Ferret.Net**:这是一个专为IT专业人士设计的开源类库,它主要用于处理网络套接字通信,提供跨平台的支持。 2. **基于接口**:这意味着Ferret.Net的设计遵循...

    Ferret 是用于实时嵌入式控制系统的免费软件 lisp 实现_Makefile_代码_相关文件_下载

    Ferret 是一个免费软件 lisp 实现,旨在用于实时嵌入式控制系统。Ferret lisp 编译成自包含的C++11。生成的代码可在支持C++11兼容编译器的任何操作系统和/或微控制器之间移植。它已经过验证,可以在从内存低至2KB 的...

    Image Ferret-开源

    "Image Ferret"是一款开源的图像搜索工具,它专为帮助用户在互联网上高效地查找、探索和发现各种图像、照片以及艺术作品而设计。这款软件的独特之处在于它能够自动学习用户的偏好,根据用户对图像的喜好进行智能推荐...

    Arduino-ferret.zip

    Arduino-ferret.zip,ferret是一个用于实时嵌入式控制系统的自由软件lisp实现。,Arduino是一家开源软硬件公司和制造商社区。Arduino始于21世纪初,深受电子制造商的欢迎,Arduino通过开源系统提供了很多灵活性。

    一个MIME检测库.zip

    本文将以“Ferret”这个MIME检测库为例,深入探讨其工作原理和使用方法,帮助读者理解和掌握如何在项目中应用此类库进行文件类型的检测。 Ferret是一个高效且轻量级的MIME检测库,它主要通过分析文件的二进制内容来...

    渗透测试常用工具应用(PDF课件)

    使用Weevely工具上传一句话木马.pdf ...使用ferret进行Cookie劫持.pdf 使用SSHMitm中间人拦截SSH.pdf 使用Armitage的MSF进行自动化集成渗透测试.pdf 使用………… ……………… 使用vega对web进行漏洞扫描.pdf

    Python库 | txtferret-0.1.0-py3-none-any.whl

    实际上,要了解txtferret的详细用法,需要查看官方文档或通过网络搜索找到相关的使用示例。 总的来说,"txtferret-0.1.0-py3-none-any.whl"是一个针对Python 3的文本处理库,它可能包含了强大的文本分析和挖掘功能...

    find:数组查找实用程序

    直接从使用安装 npm install jeromedecoster/find 从文件安装 { " dependencies " : { " find " : " jeromedecoster/find " } } 原料药 find(array,fn,[options]) 查找功能 var users = [ { name : 'Tobi' ...

    Ferret CMS-开源

    考虑到网站管理者的使用体验,Ferret CMS 设计了直观且用户友好的界面。通过简洁的布局和清晰的导航,使得非技术背景的用户也能轻松上手。编辑内容、发布更新、管理用户和监控工作流状态都变得非常直观,从而降低了...

Global site tag (gtag.js) - Google Analytics