0

我有一个包含大约 100 万条重记录的大型中央数据库。在我的应用程序中,对于每个用户,我都会有来自中央表的行子集,这将非常小(每个可能有 100 条记录)。当特定用户登录时,我只想搜索这个数据集。例子:

假设我有一个世界上所有汽车的中央数据库。我有通用汽车(GM),法拉利等的用户资料。当通用汽车登录时,我只想搜索(全文搜索而不是触发 sql 查询)那些由通用汽车制造的汽车。此外,GM 可能会启动/撤回模型,在这种情况下,中央数据库将被更新,因此与 GM 关联的行集也将被更新。在收购的情况下,某些配置文件的数据库可能会在没有推出/拆除新车的情况下发生变化。所以中央数据库不会改变,但行集可能。

实现这种设计的最佳方法是什么?这些较小的行集需要是动态的,具体取决于用户活动。

我们在 Rails 2.3.5 上,使用 thinking_sphinx 作为连接器,使用 Sphinx/MySQL 进行搜索和关系关联。

4

2 回答 2

0

也许你想用这样的东西定义你的索引:

class Car
  define_index do
    indexes description
    has 'cars.manufacturer_id', :as => :manufacturer_id, :type => :integer
  end
end

然后使用字段条件,例如:

Car.search "red", :conditions => {:manufacturer_id => gm.id}

属性过滤器

Car.search "red", :with => {:manufacturer_id => gm.id}
于 2010-06-01T13:10:35.600 回答
0

如何使用 has_many :through

class Manufacturer
class Car
class ManufacturerCarRelation

Manufacturer
 has_many :manufacturer_car_relations
 has_many :cars through => manufacturer_car_relations

ManufacturerCarRelation
 belongs_to :manufacturer
 belongs_to :car
于 2010-06-01T10:24:54.020 回答