浏览 2653 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-05
对英文的分词倒是很准确的(好像个个全文检索对英文分词都很强的吧)。 也不知道是不是我用得不对,贴上我使用的代码: #全文检索 #rmmseg中文分词 analyzer = RMMSeg::Ferret::Analyzer.new { |tokenizer| Ferret::Analysis::LowerCaseFilter.new(tokenizer) } $index = Ferret::Index::Index.new(:analyzer => analyzer) acts_as_ferret :field => [:title,:summary,:body] #,:ferret => {:analyzer => analyzer} #全文检索方法 def self.full_text_search(q, options = {}) return nil if q.nil? or q=="" default_options = {:limit => 10, :page => 1} options = default_options.merge options # get the offset based on what page we're on options[:offset] = options[:limit] * (options.delete(:page).to_i-1) results = Page.find_by_contents(q, options) return [results.total_hits, results] end 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-05
JavaEye也是使用rmmseg+ferret,没有遇到你说的问题,不过我们没有使用acts_as_ferret,我猜有可能是你在aaf里面没有指定正确的analyzer?
example.rb #!/usr/bin/env ruby require 'rubygems' require 'ferret' require 'rmmseg' require 'rmmseg/ferret' analyzer = RMMSeg::Ferret::Analyzer.new { |tokenizer| Ferret::Analysis::LowerCaseFilter.new(tokenizer) } index = Ferret::Index::Index.new(:analyzer => analyzer) index << "Hawkins开始了他第一部掌上电脑的设计构想" index.search_each('掌上电脑') do |id, score| puts "Document #{id} found with a score of #{score}" end quake@quake-laptop:~/Desktop$ ruby test_rmmseg.rb Document 0 found with a score of 0.268496215343475 quake@quake-laptop:~/Desktop$ echo "Hawkins开始了他第一部掌上电脑的设计构想" | rmmseg Hawkins 开始 了 他 第 一部 掌上 电脑 的 设计 构想 |
|
返回顶楼 | |
发表时间:2008-10-07
问题已经解决了,正如Quake Wang 所言,应该是analyzer没设置好,还就是我之前在没有设置analyzer的情况下进行过一次分词,已经生成了index,在项目根目录下的index文件夹里
设置中文analyzer后 acts_as_ferret({:field => [:title,:summary,:body]},{:analyzer => analyzer}) 再删除项目根目录下的index文件夹,可正常中文分词了。 不过还有一个初始化问题没有解决。 继续努力。 |
|
返回顶楼 | |