2

我有一个带有雪貂的 Rails 项目。我还有一些带有法语和西班牙语名称的表格。其中包含以下字符:á、à。ü 等。当我进行搜索时,我只使用常用字符,这使我无法在数据库中使用诸如“berche”之类的关键字找到诸如“bèrché”之类的内容。我试图用通配符替换人声,比如“?” 或“*”,但它似乎不起作用。

这是代码:

# controller
default_options = {:limit => :all}
@results_ferret = Model.find_with_ferret(params["search_words"], default_options)

# model
class Model < ActiveRecord::Base
  require 'acts_as_ferret'
  acts_as_ferret({:fields => [:region, :origin, :something, :name, :content], :remote => true})
end

任何想法如何进行?

4

1 回答 1

0

Ferret 在构建索引时需要了解语言环境。它通过查看环境变量“LANG”来实现。我们有一个名为 ferret:rebuild 的 rake 任务,所以对我们来说它看起来像这样:

RAILS_ENV=development LANG=da_DK.UTF-8 INDEXES='Model' rake ferret:rebuild

如果这不起作用,请检查您的数据库排序规则。

供你参考

我们的 rake 任务如下所示:

namespace :ferret do

  # Rebuild index task. Declare the indexes to be rebuilt with the INDEXES
  # environment variable:
  #
  # INDEXES="my_model shared" rake ferret:rebuild
  desc "Rebuild a Ferret index. Specify what model to rebuild with the INDEXES environment variable."
  task :rebuild => :environment do

    models = ENV['INDEXES'].split.map(&:constantize)

    start = 1.minute.ago
    models.each { |m| m.rebuild_index }

    # update records that have changed since the rebuild started
    models.each do |m|
      m.records_modified_since(start).each do |object|
        object.ferret_update
      end
    end
  end
end
于 2012-08-16T07:57:46.390 回答