由于我有一个带有本地化字段的模型(使用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 搜索翻译。但我不确定如何使用它们。如果您认为这是一个更好的解决方案,请告诉我: - )