У меня есть модель канала с двумя ассоциациями, «содержанием» и «подписками».Сортировка по количеству совпадений в мышлении 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. Должен ли я запускать reindex после того, как я создаю подписку/одобряю контент или дельта-индекс в канале, связан с этим, поскольку у меня есть эти два контроллера, объединенные в индекс канала?
Благодарим за ответ. Я следую вашим советам и интеграции ts-delayed-delta, и у меня есть небольшой вопрос. Можно ли выбрать очередь, в которой работают дельта? – nunopolonia
Если вы установите 'delayed_job_queue' в свою предпочтительную очередь для каждой соответствующей среды в' config/thinking_sphinx.yml', это должно сделать трюк. – pat