ローカライズされたフィールドを持つモデルがあるため (Globalize を使用して、ローカライズされた検索を行いたいと思います。モデルに 2 つのインデックスを設定します。
ThinkingSphinx::Index.define :document, name: "document_fr", :with => :active_record, :delta => true do
indexes translations.name, :as => :options
indexes translations.description
where "(#{Document.translations_table_name}.locale='fr' OR #{Document.translations_table_name}.locale IS NULL)"
has created_at, updated_at
end
ThinkingSphinx::Index.define :document, name: "document_nl", :with => :active_record, :delta => true do
indexes translations.name, :as => :options
indexes translations.description
where "(#{Document.translations_table_name}.locale='nl' OR #{Document.translations_table_name}.locale IS NULL)"
has created_at, updated_at
end
delta を使用して、1 つのインデックスを検索するにはどうすればよいですか?
オプションを使用しようとしましたindices
が、実際には機能しません:
Document.search 'something', {
indices: ["document_fr_core", "document_fr_delta"]
}
=> Document インスタンスを変更して保存すると、デルタ インデックスが作成され、変更が *_delta にインデックスされます。しかし、*_core も検索しているため、検索に一致するものがなくなった場合でも、変更されたインスタンスが見つかります :-(
編集 (2015 年 4 月 24 日) 別の解決策は、翻訳にファセット検索を使用することです。しかし、それらの使用方法がよくわかりません。あなたがそれがより良い解決策だと思うなら、私に知らせてください:-)