This is an automated email from the ASF dual-hosted git repository.

epugh pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_10x by this push:
     new d4671bde197 SOLR-18246: Support multiple facet.field parameters in 
Admin UI query screen (#4441)
d4671bde197 is described below

commit d4671bde197803174531799fcc745707afa73f09
Author: Umut Saribiyik <[email protected]>
AuthorDate: Mon May 18 18:59:58 2026 +0200

    SOLR-18246: Support multiple facet.field parameters in Admin UI query 
screen (#4441)
    
    Co-authored-by: Eric Pugh <[email protected]>
---
 changelog/unreleased/SOLR-18246.yml             |  7 ++++++
 solr/webapp/web/js/angular/controllers/query.js | 31 +++++++++++++++++++++++++
 solr/webapp/web/partials/query.html             | 10 +++++++-
 3 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/changelog/unreleased/SOLR-18246.yml 
b/changelog/unreleased/SOLR-18246.yml
new file mode 100644
index 00000000000..95c55340646
--- /dev/null
+++ b/changelog/unreleased/SOLR-18246.yml
@@ -0,0 +1,7 @@
+title: Solr Admin UI properly supports multiple facet.field parameters
+type: fixed
+authors:
+  - name: Umut Saribiyik
+links:
+  - name: SOLR-18246
+    url: https://issues.apache.org/jira/browse/SOLR-18246
diff --git a/solr/webapp/web/js/angular/controllers/query.js 
b/solr/webapp/web/js/angular/controllers/query.js
index 9ddda0511b4..33294b81097 100644
--- a/solr/webapp/web/js/angular/controllers/query.js
+++ b/solr/webapp/web/js/angular/controllers/query.js
@@ -21,6 +21,7 @@ solrAdminApp.controller('QueryController',
 
     $scope._models = [];
     $scope.filters = [{fq:""}];
+    $scope.facetFields = [{value:""}];
     $scope.rawParams = [{rawParam:""}];
     $scope.val = {};
     $scope.val['q'] = "*:*";
@@ -72,6 +73,8 @@ solrAdminApp.controller('QueryController',
         // filters and rawParams are handled specially because of possible 
multiple values
         if( p === "fq" ) {
             addFilters(urlParams[p]);
+        } else if( p === "facet.field" ) {
+            addFacetFields(urlParams[p]);
         } else {
             setParam(p, urlParams[p]);
         }
@@ -128,6 +131,18 @@ solrAdminApp.controller('QueryController',
           }
       }
     }
+    function addFacetFields(argObject){
+      if( argObject ){
+        $scope.facetFields = [];
+          if( Array.isArray(argObject) ){
+            for( var i = 0, iLen = argObject.length; i<iLen; i++ ){
+              $scope.facetFields.push({value: argObject[i]});
+            }
+          } else {
+            $scope.facetFields.push({value: argObject});
+          }
+      }
+    }
 
     $scope.doQuery = function(isPageReload) {
       var params = {};
@@ -189,6 +204,12 @@ solrAdminApp.controller('QueryController',
         copy(params, $scope.filters[filter]);
       }
 
+      for (var fi in $scope.facetFields) {
+        if ($scope.facetFields[fi].value) {
+          set("facet.field", $scope.facetFields[fi].value);
+        }
+      }
+
       for (var rawIndex in $scope.rawParams) {
         if ($scope.rawParams[rawIndex].rawParam) {
           var rawParam = $scope.rawParams[rawIndex].rawParam.split(/[&\n]/);
@@ -294,6 +315,16 @@ solrAdminApp.controller('QueryController',
     $scope.addFilter = function(index) {
       $scope.filters.splice(index+1, 0, {fq:""});
     };
+    $scope.removeFacetField = function(index) {
+      if ($scope.facetFields.length === 1) {
+        $scope.facetFields = [{value: ""}];
+      } else {
+        $scope.facetFields.splice(index, 1);
+      }
+    };
+    $scope.addFacetField = function(index) {
+      $scope.facetFields.splice(index+1, 0, {value:""});
+    };
     $scope.removeRawParam = function (index) {
       if ($scope.rawParams.length === 1) {
         $scope.rawParams = [{rawParam: ""}];
diff --git a/solr/webapp/web/partials/query.html 
b/solr/webapp/web/partials/query.html
index 48e618643a7..ccb9b990e9d 100644
--- a/solr/webapp/web/partials/query.html
+++ b/solr/webapp/web/partials/query.html
@@ -433,7 +433,15 @@ limitations under the License.
           <textarea ng-model="val['facet.query']" name="facet.query" 
id="facet_query"></textarea>
 
           <label for="facet_field">facet.field</label>
-          <input type="text" ng-model="val['facet.field']" name="facet.field" 
id="facet_field">
+          <div class="multiple" id="facet_field">
+            <div class="row clearfix" ng-repeat="facetField in facetFields">
+              <input type="text" ng-model="facetField.value" 
name="facet.field" title="Facet field.">
+              <div class="buttons">
+                <a class="rem" 
ng-click="removeFacetField($index)"><span></span></a>
+                <a class="add" 
ng-click="addFacetField($index)"><span></span></a>
+              </div>
+            </div>
+          </div>
 
           <label for="facet_prefix">facet.prefix</label>
           <input type="text" ng-model="val['facet.prefix']" 
name="facet.prefix" id="facet_prefix">

Reply via email to