2010-12-02 28 views
2

我有一個帶鐵working的鐵軌項目。我還有一些法國和西班牙名字的表。它包含以下字符:á,à。 ü等 當我進行搜索時,我只使用常用字符,這使得我無法在數據庫中使用像「berche」這樣的關鍵字在「bèrché」中找到類似的東西。 我試圖用通配符替換人聲,如「?」或「*」,但似乎並不奏效。用鐵fer在軌道中尋找á,à等字符

下面是代碼:

# 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 

任何想法如何進行呢?

回答

0

Ferret需要了解構建索引時的語言環境。它通過查看環境變量'LANG'來實現。我們有一個叫做白鼬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