diff --git a/source/java/org/alfresco/repo/search/impl/solr/DbOrIndexSwitchingQueryLanguage.java b/source/java/org/alfresco/repo/search/impl/solr/DbOrIndexSwitchingQueryLanguage.java index 01cf02a08e..60561cbb4e 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/DbOrIndexSwitchingQueryLanguage.java +++ b/source/java/org/alfresco/repo/search/impl/solr/DbOrIndexSwitchingQueryLanguage.java @@ -181,8 +181,9 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage case DEFAULT: case TRANSACTIONAL_IF_POSSIBLE: default: - StopWatch stopWatch = new StopWatch("DB if possible"); - if(dbQueryLanguage != null) + StopWatch stopWatch = new StopWatch("DB if possible"); + //SEARCH-347, exclude TMDQ calls if faceting present. + if(dbQueryLanguage != null && !hasFaceting(searchParameters)) { try { @@ -251,8 +252,6 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage } throw new QueryModelException("No query language available"); } - - } private SearchParameters flattenDBQuery(SearchParameters sp) @@ -284,7 +283,25 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage return flatten; } } - + + /** + * Checks if faceted fields or faceted queries are present if so it needs + * to be excluded from the TMDQ call. + * @param searchParameters + * @return true if exists + */ + private boolean hasFaceting(SearchParameters searchParameters) + { + if(searchParameters.getFacetQueries() != null && !searchParameters.getFacetQueries().isEmpty()) + { + return true; + } + if(searchParameters.getFieldFacets() != null && !searchParameters.getFieldFacets().isEmpty()) + { + return true; + } + return false; + } private ResultSet executeHybridQuery(SearchParameters searchParameters, ADMLuceneSearcherImpl admLuceneSearcher) { @@ -374,5 +391,5 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage logger.debug(stopWatch.prettyPrint()); } return results; - } + } }