繁体   English   中英

在Ruby on Rails中使用多个模型使用Thinking Sphinx的问题

[英]Problems using Thinking Sphinx in Ruby on Rails with multiple models

我正在使用搜索引擎Sphinx在Ruby on Rails上开发一个网站(我正在使用Thinking Sphinx)。 我有一个要在其中进行搜索的模型,并且我正在使用其他模型(我在模型和表中建立了关系),但是我想创建其他INNER JOINS,所以,我有这样的东西:

class Group < ActiveRecord::Base
        belongs_to :person
    has_many :categories, :dependent => :destroy

    define_index do
        indexes group_name
        indexes person.fullnameindexes categories.category_name
        indexes categories.category_name
    end
end

做这样的事情可以吗?

class Group < ActiveRecord::Base
        belongs_to :person
    has_many :categories, :dependent => :destroy

    define_index do
        indexes group_name
        indexes person.fullnameindexes categories.category_name
        indexes categories.category_name
        indexes subcategories.subcategory_name #additional table
    end
end

如您所见,我要添加一个新模型(子类别),该模型与模型组没有关系,但是与模型类别有关系,可以吗? 或正确的方法是什么?

这些是我关注的链接:

http://freelancing-god.github.com/ts/en/indexing.html
http://freelancing-gods.com/posts/a_concise_guide_to_using_thinking_sphinx

如果在类别模型中引用了子类别,则可以执行以下操作:

indexes categories.subcategories.subcategory_name, :as => :subcategory_names

如果需要的话,认为Sphinx将很高兴通过关联进入更深层次的关联。

我认为对此的简短答案是“否”。 ThinkingSphinx将尝试引用Group名为subcategories的关联,该关联将不存在,并且在建立索引时会出现错误。

如果Category has_many :subcategories ,则可以使用:through选项在Group表示:

class Group < ActiveRecord::Base
  belongs_to :person
  has_many :categories, :dependent => :destroy
  has_many :subcategories, :through => :categories

然后索引应该识别该关联,尽管文档指出您在执行此操作时需要显式别名,因此:

indexes subcategories.subcategory_name, :as => 'subcategory_name'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM