From c9ec2bf09f45f5b99b5193b93884c8ee8bb8c043 Mon Sep 17 00:00:00 2001 From: Oleksii Kriuchykhin Date: Thu, 18 Sep 2025 13:39:09 +0200 Subject: [PATCH] Fix query generation for boolean search [SCI-12350] --- app/models/concerns/searchable_model.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/searchable_model.rb b/app/models/concerns/searchable_model.rb index 65a23f1f6..24f9e95f2 100644 --- a/app/models/concerns/searchable_model.rb +++ b/app/models/concerns/searchable_model.rb @@ -113,8 +113,9 @@ module SearchableModel query_clauses = [] query_params = [] + search_tokens = tokenize_search_query(query) - tokenize_search_query(query).each_with_index do |token, index| + search_tokens.each_with_index do |token, index| if token[:type] == :keyword exact_match = token[:value].split.size > 1 like = exact_match ? '~' : 'ILIKE' @@ -145,6 +146,9 @@ module SearchableModel exact_match ? "(^|\\s)#{Regexp.escape(token[:value])}(\\s|$)" : "%#{sanitize_sql_like(token[:value])}%" end end + + next_token = search_tokens[index + 1] + query_clauses << ' AND ' if next_token && next_token[:type] == :keyword elsif token[:type] == :operator query_clauses << case token[:value]