3

ローカライズされたフィールドを持つモデルがあるため (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 日) 別の解決策は、翻訳にファセット検索を使用することです。しかし、それらの使用方法がよくわかりません。あなたがそれがより良い解決策だと思うなら、私に知らせてください:-)

4

0 に答える 0