Ruby on rails 发现áà;,etc字符与铁轨中的雪貂

Ruby on rails 发现áà;,etc字符与铁轨中的雪貂,ruby-on-rails,wildcard,ferret,Ruby On Rails,Wildcard,Ferret,我有一个rails项目,ferret正在做这个项目。我还有一些有法语和西班牙语名字的桌子。包含像:á,á这样的字符。吕等。 当我进行搜索时,我只使用普通字符,这使得我不可能在数据库中找到像“bèrché”这样使用像“berche”这样的关键字的东西。 我试图用“?”或“*”之类的通配符替换人声,但似乎不起作用 代码如下: # controller default_options = {:limit => :all} @results_ferret = Model.find_with_fer

我有一个rails项目,ferret正在做这个项目。我还有一些有法语和西班牙语名字的桌子。包含像:á,á这样的字符。吕等。 当我进行搜索时,我只使用普通字符,这使得我不可能在数据库中找到像“bèrché”这样使用像“berche”这样的关键字的东西。 我试图用“?”或“*”之类的通配符替换人声,但似乎不起作用

代码如下:

# 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
#控制器
默认_选项={:限制=>:全部}
@results\u-ferret=Model.find\u with\u-ferret(参数[“搜索词”],默认选项)
#模型
类模型[:region,:origin,:something,:name,:content],:remote=>true})
结束

有什么办法吗

在建立索引时,Ferret需要了解区域设置。它是通过查看环境变量“LANG”来实现的。我们有一个名为“雪貂:重建”的rake任务,所以对我们来说,它看起来是这样的:

RAILS_ENV=development LANG=da_DK.UTF-8 INDEXES='Model' rake ferret:rebuild
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
如果这不起作用,请检查数据库排序规则

供参考

我们的rake任务如下所示:

RAILS_ENV=development LANG=da_DK.UTF-8 INDEXES='Model' rake ferret:rebuild
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

在构建索引时,Ferret需要了解区域设置。它是通过查看环境变量“LANG”来实现的。我们有一个名为“雪貂:重建”的rake任务,所以对我们来说,它看起来是这样的:

RAILS_ENV=development LANG=da_DK.UTF-8 INDEXES='Model' rake ferret:rebuild
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
如果这不起作用,请检查数据库排序规则

供参考

我们的rake任务如下所示:

RAILS_ENV=development LANG=da_DK.UTF-8 INDEXES='Model' rake ferret:rebuild
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