簡體   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