From 16a490d5d4b4749b85825740c491a7590b583ed7 Mon Sep 17 00:00:00 2001 From: William Dewey Date: Thu, 2 Jun 2022 16:05:44 -0500 Subject: [PATCH] filtering on a single item can either be nested or not --- app/services/search_item_req.rb | 35 +++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/app/services/search_item_req.rb b/app/services/search_item_req.rb index 81bd0ae..cd51f8f 100644 --- a/app/services/search_item_req.rb +++ b/app/services/search_item_req.rb @@ -222,28 +222,33 @@ def filters if filter[0].include?("[") original = filter[0] facet = original.split("[")[0] - path = facet.split(".").first + nested = facet.include?(".") + if nested + path = facet.split(".").first + end condition = original[/(?<=\[).+?(?=\])/] subject = condition.split("#").first predicate = condition.split("#").last - # this is a nested field and must be treated differently - nested = { - "nested" => { - "path" => path, - "query" => { - "bool" => { - "must" => { - "term" => { - # "person.name" => "oliver wendell holmes" - # Remove CR's added by hidden input field values with returns - facet => filter[1].gsub(/\r/, "") - } + query = { + "term" => { + # "person.name" => "oliver wendell holmes" + # Remove CR's added by hidden input field values with returns + facet => filter[1].gsub(/\r/, "") + } + } + if nested + query = { + "nested" => { + "path" => path, + "query" => { + "bool" => { + "must" => query } } } } - } - filter_list << nested + end + filter_list << query #ordinary nested facet elsif filter[0].include?(".") path = filter[0].split(".").first