2016-08-08 2 views
0

Есть ли способ индексировать тип модели STI (ассоциация полиморфных моделей в Ruby), а не сама? Например, у меня есть модель Comment:Thinking sphinx - как индексировать тип модели STI

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

Можно ли получить сфинкса индексировать 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

Я боюсь, что это не возможно, с Thinking Sphinx - он построен, чтобы ожидать, что индекс отобразит одну модель. Кроме того, в описанной ситуации (если вы должны сделать что-то вроде этой работы в Sphinx напрямую, а не в TS), вы можете получить дубликаты записей, если комментатор имеет более одного комментария.

Вам будет гораздо лучше иметь индексы для каждого типа комментариев и искать по всем этим индексам сразу.