From e52aede98fc867c1debbbf2dda2b4ed721d7368b Mon Sep 17 00:00:00 2001 From: Neil McErlean Date: Thu, 25 Sep 2014 11:29:05 +0000 Subject: [PATCH] Additional handling for "special" facet IDs (SITE, TAG etc). Part of ACE-2639. This check-in ensures that those facet IDs are not prefixed with the '@' char like all other facet IDs. The list is currently injected from solr-facets-context.xml, which required a slight refactoring of spring beans to make SolrFacetHelper a bean. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@85711 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/script-services-context.xml | 3 +++ config/alfresco/solr-facets-context.xml | 17 +++++++++++++++ .../org/alfresco/repo/jscript/Search.java | 18 +++++++++++++++- .../impl/solr/facet/SolrFacetHelper.java | 21 ++++++++++++++++++- 4 files changed, 57 insertions(+), 2 deletions(-) diff --git a/config/alfresco/script-services-context.xml b/config/alfresco/script-services-context.xml index b736cb43ad..59d7521033 100644 --- a/config/alfresco/script-services-context.xml +++ b/config/alfresco/script-services-context.xml @@ -113,6 +113,9 @@ + + + ${spaces.store} diff --git a/config/alfresco/solr-facets-context.xml b/config/alfresco/solr-facets-context.xml index 3fb02a4460..0ec15f0339 100644 --- a/config/alfresco/solr-facets-context.xml +++ b/config/alfresco/solr-facets-context.xml @@ -18,6 +18,7 @@ + @@ -25,6 +26,7 @@ + @@ -41,4 +43,19 @@ ${solr_facets.root} + + + + + + SITE + TAG + ANCESTOR + PARENT + ASPECT + TYPE + OWNER + + + \ No newline at end of file diff --git a/source/java/org/alfresco/repo/jscript/Search.java b/source/java/org/alfresco/repo/jscript/Search.java index 25e403ec85..c6cfd48a37 100644 --- a/source/java/org/alfresco/repo/jscript/Search.java +++ b/source/java/org/alfresco/repo/jscript/Search.java @@ -104,6 +104,12 @@ public class Search extends BaseScopableProcessorExtension implements Initializi this.solrFacetHelper = new SolrFacetHelper(services); } + + public void setSolrFacetHelper(SolrFacetHelper solrFacetHelper) + { + this.solrFacetHelper = solrFacetHelper; + } + /** * Set the default store reference * @@ -717,8 +723,18 @@ public class Search extends BaseScopableProcessorExtension implements Initializi { for (String field: facets) { - sp.addFieldFacet(new FieldFacet("@" + field)); + final FieldFacet fieldFacet; + if (solrFacetHelper.isSpecialFacetId(field)) + { + fieldFacet = new FieldFacet(field); + } + else + { + fieldFacet = new FieldFacet("@" + field); + } + sp.addFieldFacet(fieldFacet); } + List facetQueries = null; // Workaround for ACE-1605 if (query.indexOf("created:") < 0 && query.indexOf("modified:") < 0) diff --git a/source/java/org/alfresco/repo/search/impl/solr/facet/SolrFacetHelper.java b/source/java/org/alfresco/repo/search/impl/solr/facet/SolrFacetHelper.java index 0605f62a2d..bc4dd7b8a5 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/facet/SolrFacetHelper.java +++ b/source/java/org/alfresco/repo/search/impl/solr/facet/SolrFacetHelper.java @@ -105,7 +105,17 @@ public class SolrFacetHelper BUCKETED_FIELD_FACETS.add(MODIFIED_FIELD_FACET_QUERY); BUCKETED_FIELD_FACETS.add(CONTENT_SIZE_FIELD_FACET_QUERY); } - + + /** These facet IDs are recognised by SOLR and can be used directly within facetted searches. */ + private Set specialFacetIds = Collections.emptySet(); + { + } + + public void setSpecialFacetIds(Set ids) + { + this.specialFacetIds = ids; + } + /** Facet value and facet query display label handlers */ private Map displayHandlers; @@ -288,6 +298,15 @@ public class SolrFacetHelper { return Collections.unmodifiableSet(BUCKETED_FIELD_FACETS); } + + /** + * Is the specified facet ID part of the list of "specials" which are + * handled by our SOLR service as is? + */ + public boolean isSpecialFacetId(String facetId) + { + return specialFacetIds.contains(facetId); + } /** * Creates Date buckets. The dates are in ISO8601 format (yyyy-MM-dd)