我在几个不同的模型上有索引,有时用户可能会搜索存在于多个模型中的值。现在,如果用户真的只对其中一个模型中的数据感兴趣,那么我希望用户能够使用某些内容来预先/后缀查询。
例如,如果我只想在我的市政模型中找到匹配项,我在该模型中设置了一个索引,以便用户现在可以查询"xyz municipality"
(在引号中):
define_index do
indexes :name, :sortable => true
indexes "name || ' municipality' name", :as => :extended_name, :type => :string
end
这很好用。现在我也有一个人物模型,与市政当局有关系。我想,当只搜索Person模型时,可以使用相同的功能,这样我就可以说Person.search(“xyz municipality”)并让所有人都联系到该市。这是我在Person模型中的当前定义:
has_many :municipalities, :through => :people_municipalities
define_index do
indexes [lastname, firstname], :as => :name, :sortable => true
indexes municipalities.name, :as => :municipality_name, :sortable => true
end
但有什么方法可以在这个模型上创建一个索引,引用市政当局,就像我在市政模型本身那样?
答案 0 :(得分:1)
如果你在源代码config/development.sphinx.conf
的{{1}}的sql_query设置中查看生成的SQL,你会看到如何将citiesities.name连接在一起(我发布了一个例子,但它取决于你的数据库 - MySQL和PostgreSQL完全不同地处理这个问题。
我建议复制该字段,并插入这样的内容(SQL是伪代码):
person_core_0
另外:添加的内容没有多大意义:可以对此进行排序,也可以从关联中对原始字段进行排序 - 您是否要按所有连接在一起的市政名称进行排序?我猜不是:)