Expand search range

This commit is contained in:
KMY 2023-04-05 13:55:37 +09:00
parent 462c6e99b6
commit 08e5d96a4a
4 changed files with 10 additions and 2 deletions

View file

@ -47,6 +47,11 @@ class StatusesIndex < Chewy::Index
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end end
crutch :emoji_reactions do |collection|
data = ::EmojiReaction.where(status_id: collection.map(&:id)).where(account: Account.local).pluck(:status_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end
crutch :reblogs do |collection| crutch :reblogs do |collection|
data = ::Status.where(reblog_of_id: collection.map(&:id)).where(account: Account.local).pluck(:reblog_of_id, :account_id) data = ::Status.where(reblog_of_id: collection.map(&:id)).where(account: Account.local).pluck(:reblog_of_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) } data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }

View file

@ -3,7 +3,7 @@
class Api::V2::SearchController < Api::BaseController class Api::V2::SearchController < Api::BaseController
include Authorization include Authorization
RESULTS_LIMIT = 20 RESULTS_LIMIT = 40
before_action -> { authorize_if_got_token! :read, :'read:search' } before_action -> { authorize_if_got_token! :read, :'read:search' }
before_action :validate_search_params! before_action :validate_search_params!

View file

@ -150,12 +150,14 @@ class Status < ApplicationRecord
if preloaded.nil? if preloaded.nil?
ids += mentions.joins(:account).merge(Account.local).active.pluck(:account_id) ids += mentions.joins(:account).merge(Account.local).active.pluck(:account_id)
ids += favourites.joins(:account).merge(Account.local).pluck(:account_id) ids += favourites.joins(:account).merge(Account.local).pluck(:account_id)
ids += emoji_reactions.joins(:account).merge(Account.local).pluck(:account_id)
ids += reblogs.joins(:account).merge(Account.local).pluck(:account_id) ids += reblogs.joins(:account).merge(Account.local).pluck(:account_id)
ids += bookmarks.joins(:account).merge(Account.local).pluck(:account_id) ids += bookmarks.joins(:account).merge(Account.local).pluck(:account_id)
ids += poll.votes.joins(:account).merge(Account.local).pluck(:account_id) if poll.present? ids += poll.votes.joins(:account).merge(Account.local).pluck(:account_id) if poll.present?
else else
ids += preloaded.mentions[id] || [] ids += preloaded.mentions[id] || []
ids += preloaded.favourites[id] || [] ids += preloaded.favourites[id] || []
ids += preloaded.emoji_reactions[id] || []
ids += preloaded.reblogs[id] || [] ids += preloaded.reblogs[id] || []
ids += preloaded.bookmarks[id] || [] ids += preloaded.bookmarks[id] || []
ids += preloaded.votes[id] || [] ids += preloaded.votes[id] || []

View file

@ -35,7 +35,8 @@ class SearchService < BaseService
end end
def perform_statuses_search! def perform_statuses_search!
definition = parsed_query.apply(StatusesIndex.filter(term: { searchable_by: @account.id })) # definition = parsed_query.apply(StatusesIndex.filter(term: { searchable_by: @account.id })).order(id: :desc)
definition = parsed_query.apply(StatusesIndex).order(id: :desc)
definition = definition.filter(term: { account_id: @options[:account_id] }) if @options[:account_id].present? definition = definition.filter(term: { account_id: @options[:account_id] }) if @options[:account_id].present?