思考狮身人面像 - 如何索引STI模型的类型

时间:2016-08-08 15:43:00

标签: ruby-on-rails ruby thinking-sphinx

有没有办法索引STI模型的类型(Ruby中的多态模型&#39),而不是自身?例如,我有一个模型Comment

class Comment < ActiveRecord::Base
  belongs_to :commenter, polymorphic: true
  ...
end

是否可以将sphinx编入索引commenters而不是comments

具体而言,而不是sphinx.conf看起来像

source comment_core_0
{
  ...
  sql_query = SELECT SQL_NO_CACHE comments.id * 60 + 2 AS id, 
    'Comment' AS sphinx_internal_class_name, 
    comments.id AS sphinx_internal_id, 
    'Comment' AS sphinx_internal_class
    ...
}

我希望sphinx.conf看起来像:

source comment_core_0
{
  ...
  sql_query = SELECT SQL_NO_CACHE comments.commenter_id * 60 + 2 AS id, 
    commenter_type AS sphinx_internal_class_name, 
    comments.commenter_id AS sphinx_internal_id, 
    commenter_type AS sphinx_internal_class
    ...
}

由于

1 个答案:

答案 0 :(得分:1)

我担心Thinking Sphinx无法做到这一点 - 它的构建是为了期望索引映射到单个模型。此外,在您所描述的情况下(如果您要直接在Sphinx中制作类似此类作品而非TS),如果评论者有多个评论,您最终可能会出现重复记录。

为每个评论者类型提供索引并一次搜索所有这些索引,你会好得多。