2010-12-02 2 views
2

나는 흰 족제비가 일하는 레일 프로젝트를 운영하고 있습니다. 또한 나는 거기에 프랑스어와 스페인어로 된 테이블이있다. 여기에는 á, à 같은 문자가 포함되어 있습니다. ü 등 검색을 할 때만 공통 문자 만 사용하기 때문에 "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 

모든 아이디어를 어떻게 진행 : 여기

코드인가?

답변

0

흰 족제비는 색인을 작성할 때 로캘에 대해 알아야합니다. 환경 변수 'LANG'을 보면 그렇게됩니다. 그래서 우리는 다음과 같습니다 재 구축 :

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 
관련 문제