From a7acb51d95a4991253bbce70604a13cc7ae6fdab Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Thu, 21 May 2020 08:25:37 +0200 Subject: [PATCH] [SEARCH-2166] restored solr4queryparser --- .../alfresco/solr/query/Solr4QueryParser.java | 97 +++++++++++++++++-- 1 file changed, 91 insertions(+), 6 deletions(-) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/Solr4QueryParser.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/Solr4QueryParser.java index f681348e7..127040937 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/Solr4QueryParser.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/query/Solr4QueryParser.java @@ -4148,13 +4148,98 @@ public class Solr4QueryParser extends QueryParser implements QueryConstants } } - if (fieldNameAndEnding.getSecond() != null && propertyDef != null) + // Mime type + if (fieldNameAndEnding.getSecond().equals(FIELD_MIMETYPE_SUFFIX)) { - return subQueryBuilder.getQuery(AlfrescoSolrDataModel.getInstance() - .getQueryableFields(propertyQName, - AlfrescoSolrDataModel.getInstance().getTextField(fieldNameAndEnding.getSecond()), - FieldUse.ID).getFields().get(0) - .getField(), queryText, analysisMode, luceneFunction); + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT))) + { + return subQueryBuilder.getQuery(AlfrescoSolrDataModel.getInstance() + .getQueryableFields(propertyQName, SpecializedFieldType.CONTENT_MIMETYPE, FieldUse.ID).getFields().get(0) + .getField(), queryText, analysisMode, luceneFunction); + } + + } else if (fieldNameAndEnding.getSecond().equals(FIELD_SIZE_SUFFIX)) + { + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT))) + { + return subQueryBuilder.getQuery(AlfrescoSolrDataModel.getInstance() + .getQueryableFields(propertyQName, SpecializedFieldType.CONTENT_SIZE, FieldUse.ID).getFields().get(0) + .getField(), queryText, analysisMode, luceneFunction); + + } + + } else if (fieldNameAndEnding.getSecond().equals(FIELD_LOCALE_SUFFIX)) + { + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT))) + { + return subQueryBuilder.getQuery(AlfrescoSolrDataModel.getInstance() + .getQueryableFields(propertyQName, SpecializedFieldType.CONTENT_LOCALE, FieldUse.ID).getFields().get(0) + .getField(), queryText, analysisMode, luceneFunction); + + } + + } else if (fieldNameAndEnding.getSecond().equals(FIELD_ENCODING_SUFFIX)) + { + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT))) + { + return subQueryBuilder.getQuery(AlfrescoSolrDataModel.getInstance() + .getQueryableFields(propertyQName, SpecializedFieldType.CONTENT_ENCODING, FieldUse.ID).getFields().get(0) + .getField(), queryText, analysisMode, luceneFunction); + + } + + } else if (fieldNameAndEnding.getSecond().equals(FIELD_TRANSFORMATION_STATUS_SUFFIX)) + { + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT))) + { + return subQueryBuilder + .getQuery( + AlfrescoSolrDataModel.getInstance() + .getQueryableFields(propertyQName, SpecializedFieldType.TRANSFORMATION_STATUS, + FieldUse.ID) + .getFields().get(0).getField(), + queryText, analysisMode, luceneFunction); + + } + + } else if (fieldNameAndEnding.getSecond().equals(FIELD_TRANSFORMATION_TIME_SUFFIX)) + { + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT))) + { + return subQueryBuilder + .getQuery( + AlfrescoSolrDataModel.getInstance() + .getQueryableFields(propertyQName, SpecializedFieldType.TRANSFORMATION_TIME, + FieldUse.ID) + .getFields().get(0).getField(), + queryText, analysisMode, luceneFunction); + + } + + } else if (fieldNameAndEnding.getSecond().equals(FIELD_TRANSFORMATION_EXCEPTION_SUFFIX)) + { + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT))) + { + return subQueryBuilder.getQuery( + AlfrescoSolrDataModel.getInstance() + .getQueryableFields(propertyQName, SpecializedFieldType.TRANSFORMATION_EXCEPTION, + FieldUse.ID) + .getFields().get(0).getField(), + queryText, analysisMode, luceneFunction); + + } + + } + else if (AlfrescoSolrDataModel.getInstance().isDerivedDateField(fieldNameAndEnding.getSecond())) + { + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.DATE) + || propertyDef.getDataType().getName().equals(DataTypeDefinition.DATETIME ))) + { + return subQueryBuilder.getQuery( + AlfrescoSolrDataModel.getInstance() + .getDateDerivedField(propertyQName, fieldNameAndEnding.getSecond()), + queryText, analysisMode, luceneFunction); + } } // Already in expanded form