2010-12-02 38 views
2

J'ai un projet de rails avec un furet travaillant dessus. Aussi j'ai quelques tables avec des noms français et espagnols là-bas. Cela contient des caractères comme: á, à. ü, etc. Quand j'ai fait une recherche, je n'utilise que des caractères communs et cela me rend impossible de trouver dans la base de données quelque chose comme "bèrché" en utilisant un mot-clé comme "berche". J'ai essayé de remplacer les voix avec un caractère générique comme "?" ou "*", mais cela ne semble pas fonctionner.Trouver des caractères á, à, etc. avec un furet dans les rails

Voici le code:

# 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 

Toute idée comment procéder?

Répondre

0

Ferret a besoin de connaître les paramètres régionaux lors de la construction de l'index. Il le fait en regardant la variable d'environnement 'LANG'. Nous avons une tâche de râteau appelé Furet: reconstruire Pour nous, il ressemble à ceci:

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

Si cela ne fonctionne pas, consultez votre collation de base de données.

Pour votre référence

Notre tâche Rake ressemble à ceci:

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