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

続行する方法はありますか?

4

1 に答える 1

0

フェレットは、インデックスを作成するときにロケールについて知る必要があります。これは、環境変数「LANG」を調べることによって行われます。ferret:rebuildというレーキタスクがあるので、次のようになります。

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
于 2012-08-16T07:57:46.390 に答える