Fix for ACE-4417 Search by Aspect within a site returns results from all sites

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@114218 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2015-10-12 20:41:01 +00:00
parent 1af13154bd
commit fd740adefc

View File

@@ -144,14 +144,14 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
}
case TRANSACTIONAL:
if(dbQueryLanguage != null)
{
{
if(logger.isDebugEnabled())
{
logger.debug("Trying db query for "+dbQueryLanguage.getName()+" for "+searchParameters);
}
StopWatch stopWatch = new StopWatch("database only");
stopWatch.start();
ResultSet results = dbQueryLanguage.executeQuery(searchParameters, admLuceneSearcher);
ResultSet results = dbQueryLanguage.executeQuery(flattenDBQuery(searchParameters), admLuceneSearcher);
stopWatch.stop();
if (logger.isDebugEnabled())
{
@@ -183,7 +183,7 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
logger.debug("Trying db query for "+dbQueryLanguage.getName()+" for "+searchParameters);
}
stopWatch.start();
ResultSet results = dbQueryLanguage.executeQuery(searchParameters, admLuceneSearcher);
ResultSet results = dbQueryLanguage.executeQuery(flattenDBQuery(searchParameters), admLuceneSearcher);
stopWatch.stop();
if (logger.isDebugEnabled())
{
@@ -247,6 +247,27 @@ public class DbOrIndexSwitchingQueryLanguage extends AbstractLuceneQueryLanguage
}
private SearchParameters flattenDBQuery(SearchParameters sp)
{
if (sp.getFilterQueries().size() == 0)
{
return sp;
}
else
{
SearchParameters flatten = sp.copy();
StringBuilder queryBuilder = new StringBuilder();
queryBuilder.append("( ").append(sp.getQuery()).append(" )");
for(String filter : sp.getFilterQueries())
{
queryBuilder.append("AND ( ").append(filter).append(" )");
}
flatten.setQuery(queryBuilder.toString());
// the filter can be left and will be ignored by the DB query
return flatten;
}
}
private ResultSet executeHybridQuery(SearchParameters searchParameters,
ADMLuceneSearcherImpl admLuceneSearcher)