思考狮身人面像:多指数和三角洲

时间:2015-04-17 13:21:02

标签: ruby-on-rails sphinx thinking-sphinx globalize

由于我有一个带有本地化字段的模型(使用Globalize,我想进行本地化搜索。我在我的模型上设置了两个索引:

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?

在一个索引上进行搜索

我尝试使用indices选项,但它确实不起作用:

Document.search 'something', {
    indices: ["document_fr_core", "document_fr_delta"]
}

=>如果我更改了Document实例并保存它,则会发生delta索引,并且更改将在* _delta中编入索引。但由于我也在* _core上搜索,即使搜索不再匹配,仍然可以找到修改后的实例: - (

编辑(2015年4月24日) 替代解决方案可能是使用 facets 搜索翻译。但我不确定如何使用它们。如果您认为这是一个更好的解决方案,请告诉我: - )

0 个答案:

没有答案