From 9a43c884e19fa2e4e1c85cb1fb66b2e600b425b1 Mon Sep 17 00:00:00 2001 From: Chris Beer Date: Thu, 29 Aug 2024 10:52:17 -0700 Subject: [PATCH] Explicitly set q.op for adv search queries --- app/models/search_builder.rb | 7 ++++++- spec/models/search_builder_spec.rb | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/search_builder.rb b/app/models/search_builder.rb index 9e616964d..d105c1ed0 100644 --- a/app/models/search_builder.rb +++ b/app/models/search_builder.rb @@ -20,7 +20,12 @@ class SearchBuilder < Blacklight::SearchBuilder def add_edismax_advanced_parse_q_to_solr(solr_params) add_advanced_parse_q_to_solr(solr_params) - solr_params[:q] = solr_params[:q].gsub('{!dismax', '{!edismax') if solr_params[:q].respond_to?(:to_str) && solr_params[:q].include?('{!dismax') + return unless solr_params[:q].respond_to?(:to_str) && solr_params[:q].include?('{!dismax') + + solr_params[:q] = solr_params[:q].gsub('{!dismax', '{!edismax') + + # q.op AND is the default, but we need to set it to 'OR' for advanced search queries. + solr_params[:'q.op'] = 'OR' end # Override range limit to only add parameters on search pages, not the home page diff --git a/spec/models/search_builder_spec.rb b/spec/models/search_builder_spec.rb index 3f117e518..fb6dd4a3d 100644 --- a/spec/models/search_builder_spec.rb +++ b/spec/models/search_builder_spec.rb @@ -80,6 +80,7 @@ search_builder.add_edismax_advanced_parse_q_to_solr(solr_params) expect(solr_params[:q]).to eq '_query_:"{!edismax }paintings" AND _query_:"{!edismax mm=1}Dutch Netherlands"' + expect(solr_params[:'q.op']).to eq 'OR' end end