"연관성"과 "가입"이라는 2 개의 연관성이있는 채널 모델이 있습니다.Thinking Sphinx에서 연관 수별로 정렬하기
채널 색인에서 사용자는 구독 수 또는 승인 된 콘텐츠 수로 채널을 주문할 수 있습니다.
개발 과정에서 모든 것이 제대로 작동하는 것처럼 보이지만 (결과를 관찰하여 오작동을 일으킬 수 있고 데이터를 제대로 볼 수없는 문제 일 수 있습니다.) 결과를 준비하는 데는 무작위이며 때로는 적절하게 표시되거나 때때로 가끔씩 표시됩니다. '티. 처음에는
내가 거기에있을 수있는 문제를 델타 인덱스를 사용하고 생각되지 않았다 그래서 내용을 승인 할 때마다 내가 전화 : 구독이 인덱스를 가지고 있지 않기 때문에
Delayed::Job.enqueue(DelayedRake.new("ts:index"), queue: "sphinx")
, 그렇게하지 내가 하나 만들 때마다 인덱싱 (나는 그것을해야합니까?)
다음나는 채널 델타 인덱스를 사용하고 난 여전히 같은 문제를 얻을 시작 : 여기
ThinkingSphinx::Index.define :channel, with: :active_record, delta: true do
# fields
indexes :name, sortable: true
indexes description
# attributes
has created_at, sortable: true
has approved, type: :boolean
has public, type: :boolean
join subscriptions
has "COUNT(subscriptions.id)", as: :subscription_count, type: :integer, sortable: true
join contents.approved
has "COUNT(contents.id)", as: :content_count, type: :integer, sortable: true
end
을 그리고 시든입니다 채널 컨트롤러에 전화 :
def index
if params[:order_by].present?
@channels = Channel.search params[:search],
order: "#{params[:order_by]} DESC",
page: params[:page], per_page: 6
else
@channels = Channel.search params[:search],
order: :name,
page: params[:page], per_page: 6
end
end
요약하기를, 내 질문은 다음과 같습니다 1. 내 채널 인덱스를 잘 형성하고 있는가? 2. 색인으로 구독해야합니까, 아니면 내 채널 색인에 구독하기에 충분합니까? 3. 채널 인덱스에 가입 된 두 컨트롤러가 있기 때문에 구독을 만들거나 콘텐츠를 승인하거나 채널에서 델타 인덱스를 처리 한 후 다시 인덱스를 실행해야합니까?
답변 해 주셔서 감사합니다. 나는 당신의 조언을 따르고 ts-delayed-delta를 통합하고 있으며 작은 질문이 있습니다. 델타가 실행되는 대기열을 선택할 수 있습니까? – nunopolonia
'config/thinking_sphinx.yml'에서 각각의 적절한 환경에 대해'delayed_job_queue'를 선호 큐로 설정하면, 그 트릭을해야합니다. – pat