mirror of
https://github.com/Alfresco/SearchServices.git
synced 2026-09-16 18:12:56 +00:00
[SEARCH-2166]
added support for order by code refactoring
This commit is contained in:
+70
-22
@@ -155,16 +155,22 @@ public class AlfrescoSolrDataModel implements QueryConstants
|
||||
HIGHLIGHT
|
||||
}
|
||||
|
||||
public enum ContentFieldType
|
||||
public enum SpecializedFieldType
|
||||
{
|
||||
DOCID,
|
||||
SIZE,
|
||||
LOCALE,
|
||||
MIMETYPE,
|
||||
ENCODING,
|
||||
CONTENT_DOCID,
|
||||
CONTENT_SIZE,
|
||||
CONTENT_LOCALE,
|
||||
CONTENT_MIMETYPE,
|
||||
CONTENT_ENCODING,
|
||||
TRANSFORMATION_STATUS,
|
||||
TRANSFORMATION_TIME,
|
||||
TRANSFORMATION_EXCEPTION
|
||||
TRANSFORMATION_EXCEPTION,
|
||||
UNIT_OF_TIME_SECOND,
|
||||
UNIT_OF_TIME_MINUTE,
|
||||
UNIT_OF_TIME_HOUR,
|
||||
UNIT_OF_TIME_DAY,
|
||||
UNIT_OF_TIME_MONTH,
|
||||
UNIT_OF_TIME_YEAR
|
||||
}
|
||||
|
||||
public static final String CONTENT_S_LOCALE_PREFIX = "content@s__locale@";
|
||||
@@ -615,7 +621,7 @@ public class AlfrescoSolrDataModel implements QueryConstants
|
||||
return dictionaryComponent;
|
||||
}
|
||||
|
||||
public IndexedField getIndexedFieldForContentPropertyMetadata(QName propertyQName, ContentFieldType type)
|
||||
public IndexedField getIndexedFieldForSpecializedPropertyMetadata(QName propertyQName, SpecializedFieldType type)
|
||||
{
|
||||
IndexedField indexedField = new IndexedField();
|
||||
PropertyDefinition propertyDefinition = getPropertyDefinition(propertyQName);
|
||||
@@ -640,19 +646,19 @@ public class AlfrescoSolrDataModel implements QueryConstants
|
||||
builder.append('_');
|
||||
switch (type)
|
||||
{
|
||||
case DOCID:
|
||||
case CONTENT_DOCID:
|
||||
builder.append("docid");
|
||||
break;
|
||||
case ENCODING:
|
||||
case CONTENT_ENCODING:
|
||||
builder.append("encoding");
|
||||
break;
|
||||
case LOCALE:
|
||||
case CONTENT_LOCALE:
|
||||
builder.append("locale");
|
||||
break;
|
||||
case MIMETYPE:
|
||||
case CONTENT_MIMETYPE:
|
||||
builder.append("mimetype");
|
||||
break;
|
||||
case SIZE:
|
||||
case CONTENT_SIZE:
|
||||
builder.append("size");
|
||||
break;
|
||||
case TRANSFORMATION_EXCEPTION:
|
||||
@@ -667,21 +673,30 @@ public class AlfrescoSolrDataModel implements QueryConstants
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
builder.append('@');
|
||||
builder.append(propertyQName);
|
||||
indexedField.addField(builder.toString(), false, false);
|
||||
|
||||
}
|
||||
else if (dataTypeDefinition.getName().equals(DataTypeDefinition.DATE) ||
|
||||
dataTypeDefinition.getName().equals(DataTypeDefinition.DATETIME))
|
||||
{
|
||||
String dateDerivedSuffix = getDateDerivedSuffix(type);
|
||||
if (dateDerivedSuffix != null)
|
||||
{
|
||||
indexedField.addField(getDateDerivedField(propertyQName, dateDerivedSuffix), false, true);
|
||||
}
|
||||
}
|
||||
return indexedField;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public IndexedField getQueryableFields(QName propertyQName, ContentFieldType type, FieldUse fieldUse)
|
||||
public IndexedField getQueryableFields(QName propertyQName, SpecializedFieldType type, FieldUse fieldUse)
|
||||
{
|
||||
if(type != null)
|
||||
{
|
||||
return getIndexedFieldForContentPropertyMetadata(propertyQName, type);
|
||||
return getIndexedFieldForSpecializedPropertyMetadata(propertyQName, type);
|
||||
}
|
||||
|
||||
IndexedField indexedField = new IndexedField();
|
||||
@@ -1082,6 +1097,27 @@ public class AlfrescoSolrDataModel implements QueryConstants
|
||||
return "part@sd@" + propertyDefinition.getName().toString() + suffix;
|
||||
}
|
||||
|
||||
public String getDateDerivedSuffix(SpecializedFieldType type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case UNIT_OF_TIME_SECOND:
|
||||
return UNIT_OF_TIME_SECOND_FIELD_SUFFIX;
|
||||
case UNIT_OF_TIME_MINUTE:
|
||||
return UNIT_OF_TIME_MINUTE_FIELD_SUFFIX;
|
||||
case UNIT_OF_TIME_HOUR:
|
||||
return UNIT_OF_TIME_HOUR_FIELD_SUFFIX;
|
||||
case UNIT_OF_TIME_DAY:
|
||||
return UNIT_OF_TIME_DAY_FIELD_SUFFIX;
|
||||
case UNIT_OF_TIME_MONTH:
|
||||
return UNIT_OF_TIME_MONTH_FIELD_SUFFIX;
|
||||
case UNIT_OF_TIME_YEAR:
|
||||
return UNIT_OF_TIME_YEAR_FIELD_SUFFIX;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all the field names into which we must copy the source data
|
||||
@@ -1803,20 +1839,32 @@ public class AlfrescoSolrDataModel implements QueryConstants
|
||||
|
||||
/**
|
||||
* @param ending String
|
||||
* @return ContentFieldType
|
||||
* @return SpecializedFieldType
|
||||
*/
|
||||
public ContentFieldType getTextField(String ending)
|
||||
public SpecializedFieldType getTextField(String ending)
|
||||
{
|
||||
switch(ending)
|
||||
{
|
||||
case FIELD_MIMETYPE_SUFFIX:
|
||||
return ContentFieldType.MIMETYPE;
|
||||
return SpecializedFieldType.CONTENT_MIMETYPE;
|
||||
case FIELD_SIZE_SUFFIX:
|
||||
return ContentFieldType.SIZE;
|
||||
return SpecializedFieldType.CONTENT_SIZE;
|
||||
case FIELD_LOCALE_SUFFIX:
|
||||
return ContentFieldType.LOCALE;
|
||||
return SpecializedFieldType.CONTENT_LOCALE;
|
||||
case FIELD_ENCODING_SUFFIX:
|
||||
return ContentFieldType.ENCODING;
|
||||
return SpecializedFieldType.CONTENT_ENCODING;
|
||||
case UNIT_OF_TIME_SECOND_FIELD_SUFFIX:
|
||||
return SpecializedFieldType.UNIT_OF_TIME_SECOND;
|
||||
case UNIT_OF_TIME_MINUTE_FIELD_SUFFIX:
|
||||
return SpecializedFieldType.UNIT_OF_TIME_MINUTE;
|
||||
case UNIT_OF_TIME_HOUR_FIELD_SUFFIX:
|
||||
return SpecializedFieldType.UNIT_OF_TIME_HOUR;
|
||||
case UNIT_OF_TIME_DAY_FIELD_SUFFIX:
|
||||
return SpecializedFieldType.UNIT_OF_TIME_DAY;
|
||||
case UNIT_OF_TIME_MONTH_FIELD_SUFFIX:
|
||||
return SpecializedFieldType.UNIT_OF_TIME_MONTH;
|
||||
case UNIT_OF_TIME_YEAR_FIELD_SUFFIX:
|
||||
return SpecializedFieldType.UNIT_OF_TIME_YEAR;
|
||||
case FIELD_TRANSFORMATION_STATUS_SUFFIX:
|
||||
case FIELD_TRANSFORMATION_TIME_SUFFIX:
|
||||
case FIELD_TRANSFORMATION_EXCEPTION_SUFFIX:
|
||||
|
||||
+17
-17
@@ -2412,10 +2412,10 @@ public class SolrInformationServer implements InformationServer
|
||||
private void addContentPropertyMetadata(
|
||||
SolrInputDocument doc,
|
||||
QName propertyQName,
|
||||
AlfrescoSolrDataModel.ContentFieldType type,
|
||||
AlfrescoSolrDataModel.SpecializedFieldType type,
|
||||
GetTextContentResponse textContentResponse)
|
||||
{
|
||||
IndexedField indexedField = dataModel.getIndexedFieldForContentPropertyMetadata(propertyQName, type);
|
||||
IndexedField indexedField = dataModel.getIndexedFieldForSpecializedPropertyMetadata(propertyQName, type);
|
||||
for (FieldInstance fieldInstance : indexedField.getFields())
|
||||
{
|
||||
switch(type)
|
||||
@@ -2440,27 +2440,27 @@ public class SolrInformationServer implements InformationServer
|
||||
BiConsumer<String, Object> consumer,
|
||||
QName propertyQName,
|
||||
ContentPropertyValue contentPropertyValue,
|
||||
AlfrescoSolrDataModel.ContentFieldType type)
|
||||
AlfrescoSolrDataModel.SpecializedFieldType type)
|
||||
{
|
||||
IndexedField indexedField =
|
||||
AlfrescoSolrDataModel.getInstance().getIndexedFieldForContentPropertyMetadata(propertyQName, type);
|
||||
AlfrescoSolrDataModel.getInstance().getIndexedFieldForSpecializedPropertyMetadata(propertyQName, type);
|
||||
for (FieldInstance fieldInstance : indexedField.getFields())
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DOCID:
|
||||
case CONTENT_DOCID:
|
||||
consumer.accept(fieldInstance.getField(), contentPropertyValue.getId());
|
||||
break;
|
||||
case ENCODING:
|
||||
case CONTENT_ENCODING:
|
||||
consumer.accept(fieldInstance.getField(), contentPropertyValue.getEncoding());
|
||||
break;
|
||||
case LOCALE:
|
||||
case CONTENT_LOCALE:
|
||||
consumer.accept(fieldInstance.getField(), contentPropertyValue.getLocale().toString());
|
||||
break;
|
||||
case MIMETYPE:
|
||||
case CONTENT_MIMETYPE:
|
||||
consumer.accept(fieldInstance.getField(), contentPropertyValue.getMimetype());
|
||||
break;
|
||||
case SIZE:
|
||||
case CONTENT_SIZE:
|
||||
consumer.accept(fieldInstance.getField(), contentPropertyValue.getLength());
|
||||
break;
|
||||
// Skips the ones that require the text content response
|
||||
@@ -2583,11 +2583,11 @@ public class SolrInformationServer implements InformationServer
|
||||
ContentPropertyValue propertyValue,
|
||||
boolean contentIndexingEnabled)
|
||||
{
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.ContentFieldType.DOCID);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.ContentFieldType.SIZE);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.ContentFieldType.LOCALE);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.ContentFieldType.MIMETYPE);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.ContentFieldType.ENCODING);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.SpecializedFieldType.CONTENT_DOCID);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.SpecializedFieldType.CONTENT_SIZE);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.SpecializedFieldType.CONTENT_LOCALE);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.SpecializedFieldType.CONTENT_MIMETYPE);
|
||||
addContentPropertyMetadata(consumer, propertyName, propertyValue, AlfrescoSolrDataModel.SpecializedFieldType.CONTENT_ENCODING);
|
||||
|
||||
if (contentIndexingEnabled)
|
||||
{
|
||||
@@ -2639,9 +2639,9 @@ public class SolrInformationServer implements InformationServer
|
||||
|
||||
// Expensive call to be done with ContentTracker
|
||||
try (GetTextContentResponse response = repositoryClient.getTextContent(dbId, propertyQName, null)) {
|
||||
addContentPropertyMetadata(doc, propertyQName, AlfrescoSolrDataModel.ContentFieldType.TRANSFORMATION_STATUS, response);
|
||||
addContentPropertyMetadata(doc, propertyQName, AlfrescoSolrDataModel.ContentFieldType.TRANSFORMATION_EXCEPTION, response);
|
||||
addContentPropertyMetadata(doc, propertyQName, AlfrescoSolrDataModel.ContentFieldType.TRANSFORMATION_TIME, response);
|
||||
addContentPropertyMetadata(doc, propertyQName, AlfrescoSolrDataModel.SpecializedFieldType.TRANSFORMATION_STATUS, response);
|
||||
addContentPropertyMetadata(doc, propertyQName, AlfrescoSolrDataModel.SpecializedFieldType.TRANSFORMATION_EXCEPTION, response);
|
||||
addContentPropertyMetadata(doc, propertyQName, AlfrescoSolrDataModel.SpecializedFieldType.TRANSFORMATION_TIME, response);
|
||||
|
||||
final String textContent = textContentFrom(response);
|
||||
|
||||
|
||||
+41
-145
@@ -52,7 +52,7 @@ import org.alfresco.service.namespace.NamespacePrefixResolver;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.solr.AlfrescoAnalyzerWrapper;
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel;
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel.ContentFieldType;
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel.SpecializedFieldType;
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel.FieldInstance;
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel.FieldUse;
|
||||
import org.alfresco.solr.AlfrescoSolrDataModel.IndexedField;
|
||||
@@ -3064,22 +3064,22 @@ public class Solr4QueryParser extends QueryParser implements QueryConstants
|
||||
{
|
||||
case FIELD_SIZE_SUFFIX:
|
||||
solrField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(), ContentFieldType.SIZE, FieldUse.ID)
|
||||
.getQueryableFields(propertyDef.getName(), SpecializedFieldType.CONTENT_SIZE, FieldUse.ID)
|
||||
.getFields().get(0).getField();
|
||||
break;
|
||||
case FIELD_MIMETYPE_SUFFIX:
|
||||
solrField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(), ContentFieldType.MIMETYPE, FieldUse.ID)
|
||||
.getQueryableFields(propertyDef.getName(), SpecializedFieldType.CONTENT_MIMETYPE, FieldUse.ID)
|
||||
.getFields().get(0).getField();
|
||||
break;
|
||||
case FIELD_ENCODING_SUFFIX:
|
||||
solrField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(), ContentFieldType.ENCODING, FieldUse.ID)
|
||||
.getQueryableFields(propertyDef.getName(), SpecializedFieldType.CONTENT_ENCODING, FieldUse.ID)
|
||||
.getFields().get(0).getField();
|
||||
break;
|
||||
case FIELD_LOCALE_SUFFIX:
|
||||
solrField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(), ContentFieldType.LOCALE, FieldUse.ID)
|
||||
.getQueryableFields(propertyDef.getName(), SpecializedFieldType.CONTENT_LOCALE, FieldUse.ID)
|
||||
.getFields().get(0).getField();
|
||||
break;
|
||||
}
|
||||
@@ -3119,61 +3119,44 @@ public class Solr4QueryParser extends QueryParser implements QueryConstants
|
||||
|| propertyDef.getDataType().getName().equals(DataTypeDefinition.DATE)) &&
|
||||
!AlfrescoSolrDataModel.getInstance().isDerivedDateField(fieldNameAndEnding.getSecond()))
|
||||
{
|
||||
if (AlfrescoSolrDataModel.getInstance().isDerivedDateField(fieldNameAndEnding.getSecond()))
|
||||
{
|
||||
Pair<Date, Integer> dateAndResolution1 = parseDateString(part1);
|
||||
Pair<Date, Integer> dateAndResolution2 = parseDateString(part2);
|
||||
|
||||
}
|
||||
else
|
||||
BooleanQuery.Builder bQuery = new BooleanQuery.Builder();
|
||||
IndexedField indexedField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(), null, FieldUse.ID);
|
||||
for (FieldInstance instance : indexedField.getFields())
|
||||
{
|
||||
Pair<Date, Integer> dateAndResolution1 = parseDateString(part1);
|
||||
Pair<Date, Integer> dateAndResolution2 = parseDateString(part2);
|
||||
|
||||
BooleanQuery.Builder bQuery = new BooleanQuery.Builder();
|
||||
IndexedField indexedField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(), null, FieldUse.ID);
|
||||
for (FieldInstance instance : indexedField.getFields())
|
||||
String start = dateAndResolution1 == null ? part1
|
||||
: (includeLower ? getDateStart(dateAndResolution1) : getDateEnd(dateAndResolution1));
|
||||
String end = dateAndResolution2 == null ? part2
|
||||
: (includeUpper ? getDateEnd(dateAndResolution2) : getDateStart(dateAndResolution2));
|
||||
if (start.equals("*"))
|
||||
{
|
||||
String start = dateAndResolution1 == null ? part1
|
||||
: (includeLower ? getDateStart(dateAndResolution1) : getDateEnd(dateAndResolution1));
|
||||
String end = dateAndResolution2 == null ? part2
|
||||
: (includeUpper ? getDateEnd(dateAndResolution2) : getDateStart(dateAndResolution2));
|
||||
if (start.equals("*"))
|
||||
{
|
||||
start = null;
|
||||
}
|
||||
if (end.equals("*"))
|
||||
{
|
||||
end = null;
|
||||
}
|
||||
|
||||
SchemaField sf = schema.getField(instance.getField());
|
||||
|
||||
Query query = sf.getType().getRangeQuery(null, sf, start, end, includeLower, includeUpper);
|
||||
if (query != null)
|
||||
{
|
||||
bQuery.add(query, Occur.SHOULD);
|
||||
}
|
||||
start = null;
|
||||
}
|
||||
if (end.equals("*"))
|
||||
{
|
||||
end = null;
|
||||
}
|
||||
return bQuery.build();
|
||||
}
|
||||
|
||||
SchemaField sf = schema.getField(instance.getField());
|
||||
|
||||
Query query = sf.getType().getRangeQuery(null, sf, start, end, includeLower, includeUpper);
|
||||
if (query != null)
|
||||
{
|
||||
bQuery.add(query, Occur.SHOULD);
|
||||
}
|
||||
}
|
||||
return bQuery.build();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
String solrField;
|
||||
|
||||
if ((propertyDef.getDataType().getName().equals(DataTypeDefinition.DATETIME)
|
||||
|| propertyDef.getDataType().getName().equals(DataTypeDefinition.DATE)) &&
|
||||
AlfrescoSolrDataModel.getInstance().isDerivedDateField(fieldNameAndEnding.getSecond()))
|
||||
{
|
||||
solrField = AlfrescoSolrDataModel.getInstance().getDateDerivedField(propertyDef.getName(), fieldNameAndEnding.getSecond());
|
||||
}
|
||||
else
|
||||
{
|
||||
solrField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(), null, FieldUse.ID).getFields().get(0).getField();
|
||||
}
|
||||
String solrField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(),
|
||||
AlfrescoSolrDataModel.getInstance().getTextField(fieldNameAndEnding.getSecond()),
|
||||
FieldUse.ID)
|
||||
.getFields().get(0).getField();
|
||||
|
||||
String start = null;
|
||||
try
|
||||
@@ -4165,98 +4148,13 @@ public class Solr4QueryParser extends QueryParser implements QueryConstants
|
||||
}
|
||||
}
|
||||
|
||||
// Mime type
|
||||
if (fieldNameAndEnding.getSecond().equals(FIELD_MIMETYPE_SUFFIX))
|
||||
if (fieldNameAndEnding.getSecond() != null && propertyDef != null)
|
||||
{
|
||||
if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT)))
|
||||
{
|
||||
return subQueryBuilder.getQuery(AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyQName, ContentFieldType.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, ContentFieldType.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, ContentFieldType.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, ContentFieldType.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, ContentFieldType.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, ContentFieldType.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, ContentFieldType.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);
|
||||
}
|
||||
return subQueryBuilder.getQuery(AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyQName,
|
||||
AlfrescoSolrDataModel.getInstance().getTextField(fieldNameAndEnding.getSecond()),
|
||||
FieldUse.ID).getFields().get(0)
|
||||
.getField(), queryText, analysisMode, luceneFunction);
|
||||
}
|
||||
|
||||
// Already in expanded form
|
||||
@@ -5535,6 +5433,4 @@ public class Solr4QueryParser extends QueryParser implements QueryConstants
|
||||
query.setRewriteMethod(MultiTermQuery.CONSTANT_SCORE_REWRITE);
|
||||
return query;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user