Add search syntax for operators and phrases (#11411)

This commit is contained in:
Eugen Rochko 2019-07-27 04:42:08 +02:00 committed by GitHub
parent 501148ab91
commit b9fbcbfe4e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 112 additions and 6 deletions

View file

@ -33,8 +33,7 @@ class SearchService < BaseService
end
def perform_statuses_search!
definition = StatusesIndex.filter(term: { searchable_by: @account.id })
.query(multi_match: { type: 'most_fields', query: @query, operator: 'and', fields: %w(text text.stemmed) })
definition = parsed_query.apply(StatusesIndex.filter(term: { searchable_by: @account.id }))
if @options[:account_id].present?
definition = definition.filter(term: { account_id: @options[:account_id] })
@ -70,7 +69,7 @@ class SearchService < BaseService
end
def url_query?
@options[:type].blank? && @query =~ /\Ahttps?:\/\//
@resolve && @options[:type].blank? && @query =~ /\Ahttps?:\/\//
end
def url_resource_results
@ -120,4 +119,8 @@ class SearchService < BaseService
domain_blocking_by_domain: Account.domain_blocking_map_by_domain(domains, account.id),
}
end
def parsed_query
SearchQueryTransformer.new.apply(SearchQueryParser.new.parse(@query))
end
end