This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_9x by this push:
new 433d93731cb SOLR-16618 Admin UI Analysis page should include dynamic
fields (#1304)
433d93731cb is described below
commit 433d93731cb239bab3721b8f6e046193840bc9ea
Author: Alex <[email protected]>
AuthorDate: Fri Feb 3 06:44:35 2023 -0800
SOLR-16618 Admin UI Analysis page should include dynamic fields (#1304)
* SOLR-16618 Admin UI Analysis page should include dynamic fields
Co-authored-by: Eric Pugh <[email protected]>
---
solr/CHANGES.txt | 2 +
solr/webapp/web/js/angular/controllers/analysis.js | 83 +++++++++++++++++-----
solr/webapp/web/js/angular/controllers/schema.js | 2 +-
3 files changed, 67 insertions(+), 20 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 35ab43edd44..45429a224f6 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -106,6 +106,8 @@ Improvements
properties `pkiHandlerPublicKeyPath` and `pkiHandlerPrivateKeyPath` before
starting MiniSolrCloudCluster when using
the Solr test framework. (Tomás Fernández Löbbe)
+* SOLR-16618: Admin UI Analysis page should include dynamic fields (Alex
Deparvu via Eric Pugh)
+
Optimizations
---------------------
diff --git a/solr/webapp/web/js/angular/controllers/analysis.js
b/solr/webapp/web/js/angular/controllers/analysis.js
index 5fff59caa65..eb99830de2e 100644
--- a/solr/webapp/web/js/angular/controllers/analysis.js
+++ b/solr/webapp/web/js/angular/controllers/analysis.js
@@ -21,33 +21,64 @@ solrAdminApp.controller('AnalysisController',
$scope.refresh = function() {
Luke.schema({core: $routeParams.core}, function(data) {
- $scope.fieldsAndTypes = [];
- for (var field in data.schema.fields) {
- $scope.fieldsAndTypes.push({
- group: "Fields",
- value: "fieldname=" + field,
- label: field});
- }
- for (var type in data.schema.types) {
- $scope.fieldsAndTypes.push({
- group: "Types",
- value: "fieldtype=" + type,
- label: type});
- }
+ $scope.fieldsAndTypes = getFieldsAndTypes(data.schema);
$scope.core = $routeParams.core;
+ $scope.parseQueryString(data.schema);
+ // @todo - set defaultSearchField either to
context["analysis.fieldname"] or context["analysis.fieldtype"]
});
+ };
+ $scope.verbose = true;
- $scope.parseQueryString();
- // @todo - set defaultSearchField either to
context["analysis.fieldname"] or context["analysis.fieldtype"]
+ var getFieldsAndTypes = function(schema) {
+ var aggregatedFields = schema.fields;
+ for (var field in schema.fields) {
+ var copyDests = schema.fields[field].copyDests;
+ for (var i in copyDests) {
+ var copyDest = copyDests[i];
+ if (!aggregatedFields[copyDest]) {
+ aggregatedFields[copyDest] = {};
+ }
+ }
+ }
+ var fieldsAndTypes = [];
+ var fields = Object.keys(aggregatedFields).sort();
+ for (var i in fields) {
+ fieldsAndTypes.push({
+ group: "Fields",
+ value: "fieldname=" + fields[i],
+ label: fields[i]
+ });
+ }
+ var dynamicFields = Object.keys(schema.dynamicFields).sort();
+ for (var i in dynamicFields) {
+ fieldsAndTypes.push({
+ group: "Dynamic Fields",
+ value: "dynamicfield=" + dynamicFields[i],
+ label: dynamicFields[i]
+ });
+ }
+ var types = Object.keys(schema.types).sort();
+ for (var i in types) {
+ fieldsAndTypes.push({
+ group: "Types",
+ value: "fieldtype=" + types[i],
+ label: types[i]
+ });
+ }
+ return fieldsAndTypes;
};
- $scope.verbose = true;
var getShortComponentName = function(longname) {
var short = -1 !== longname.indexOf( '$' )
? longname.split( '$' )[1]
: longname.split( '.' ).pop();
- return short.match( /[A-Z]/g ).join( '' );
+ var match = short.match( /[A-Z]/g );
+ if(match != undefined) {
+ return match.join( '' );
+ } else {
+ return "?";
+ }
};
var getCaptionsForComponent = function(data) {
@@ -138,15 +169,23 @@ solrAdminApp.controller('AnalysisController',
if (fieldOrType == "fieldname") {
$location.search("analysis.fieldname", name);
+ $location.search("analysis.dynamicfield", null);
$location.search("analysis.fieldtype", null);
+
+ } else if (fieldOrType == "dynamicfield") {
+ $location.search("analysis.fieldname", null);
+ $location.search("analysis.dynamicfield", name);
+ $location.search("analysis.fieldtype", null);
+
} else {
- $location.search("analysis.fieldtype", name);
$location.search("analysis.fieldname", null);
+ $location.search("analysis.dynamicfield", null);
+ $location.search("analysis.fieldtype", name);
}
$location.search("verbose_output", $scope.verbose ? "1" : "0");
};
- $scope.parseQueryString = function () {
+ $scope.parseQueryString = function (schema) {
var params = {};
var search = $location.search();
@@ -161,6 +200,10 @@ solrAdminApp.controller('AnalysisController',
if (search["analysis.fieldname"]) {
$scope.fieldOrType = "fieldname=" + search["analysis.fieldname"];
$scope.schemaBrowserUrl = "field=" +
search["analysis.fieldname"];
+ } else if (search["analysis.dynamicfield"]) {
+ params["analysis.fieldtype"] =
schema.dynamicFields[search["analysis.dynamicfield"]].type;
+ $scope.fieldOrType = "dynamicfield=" +
search["analysis.dynamicfield"];
+ $scope.schemaBrowserUrl = "dynamic-field=" +
search["analysis.dynamicfield"];
} else {
$scope.fieldOrType = "fieldtype=" + search["analysis.fieldtype"];
$scope.schemaBrowserUrl = "type=" + search["analysis.fieldtype"];
@@ -186,6 +229,8 @@ solrAdminApp.controller('AnalysisController',
var parts = $scope.fieldOrType.split("=");
if (parts[0]=='fieldname') {
$scope.schemaBrowserUrl = "field=" + parts[1];
+ } else if (parts[0]=='dynamicfield') {
+ $scope.schemaBrowserUrl = "dynamic-field=" + parts[1];
} else {
$scope.schemaBrowserUrl = "type=" + parts[1];
}
diff --git a/solr/webapp/web/js/angular/controllers/schema.js
b/solr/webapp/web/js/angular/controllers/schema.js
index 3ff0b0e079f..ba4bc6ef140 100644
--- a/solr/webapp/web/js/angular/controllers/schema.js
+++ b/solr/webapp/web/js/angular/controllers/schema.js
@@ -562,7 +562,7 @@ var getAnalysisInfo = function(data, is, name) {
}
else if (is.dynamicField) {
var type = data.relations.df_t[name];
- analysis.query = "analysis.fieldtype=" + type;
+ analysis.query = "analysis.dynamicfield=" + name;
}
else if (is.type) {
var type = name;