`

备忘:使用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