From 0ad0dcc8fd8a4c06bc3c5cbd5348a5e0b75ced7d Mon Sep 17 00:00:00 2001 From: KMY Date: Sat, 16 Sep 2023 08:29:24 +0900 Subject: [PATCH] Fix ES error --- app/lib/search_query_transformer.rb | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/app/lib/search_query_transformer.rb b/app/lib/search_query_transformer.rb index 32d30a3b0e..2ec68fd5f7 100644 --- a/app/lib/search_query_transformer.rb +++ b/app/lib/search_query_transformer.rb @@ -260,6 +260,7 @@ class SearchQueryTransformer < Parslet::Transform @negated = operator == '-' @options = options @operator = :filter + @statuses_index_only = false case prefix when 'has', 'is' @@ -296,6 +297,7 @@ class SearchQueryTransformer < Parslet::Transform when 'my' @type = :term @term = @options[:current_account]&.id + @statuses_index_only = true case term when 'favourited', 'favorited', 'fav' @filter = :favourited_by @@ -326,13 +328,33 @@ class SearchQueryTransformer < Parslet::Transform else 'desc' end + when 'searchability' + @filter = :searchablity + @type = :terms + @statuses_index_only = true + @term = case term + when 'public' + %w(public private direct limited) + when 'private' + %w(private direct limited) + when 'direct' + %w(direct limited) + else + %w(limited) + end else raise "Unknown prefix: #{prefix}" end end def to_query - if @negated + if @statuses_index_only + if @negated + { bool: { must_not: [_index => StatusesIndex.index_name, @type => { @filter => @term }] } } + else + { bool: { must: [_index => StatusesIndex.index_name, @type => { @filter => @term }] } } + end + elsif @negated { bool: { must_not: { @type => { @filter => @term } } } } else { @type => { @filter => @term } }