SEARCH-2296: Add new "_unit_of_time_quarter" date part field.

This commit is contained in:
Angel Borroy
2020-06-15 16:21:53 +02:00
parent d9bd638c04
commit 07cc6af3f3
2 changed files with 14 additions and 1 deletions
@@ -121,6 +121,7 @@ import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_HOUR_FIELD_SU
import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_MINUTE_FIELD_SUFFIX;
import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_MONTH_FIELD_SUFFIX;
import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_SECOND_FIELD_SUFFIX;
import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_QUARTER_FIELD_SUFFIX;
import static org.alfresco.solr.SolrInformationServer.UNIT_OF_TIME_YEAR_FIELD_SUFFIX;
/**
@@ -171,6 +172,7 @@ public class AlfrescoSolrDataModel implements QueryConstants
UNIT_OF_TIME_HOUR,
UNIT_OF_TIME_DAY,
UNIT_OF_TIME_MONTH,
UNIT_OF_TIME_QUARTER,
UNIT_OF_TIME_YEAR
}
@@ -179,6 +181,7 @@ public class AlfrescoSolrDataModel implements QueryConstants
static final String PART_FIELDNAME_PREFIX = "part@sd@";
static final Set<String> DATE_PART_SUFFIXES =
Set.of(UNIT_OF_TIME_YEAR_FIELD_SUFFIX,
UNIT_OF_TIME_QUARTER_FIELD_SUFFIX,
UNIT_OF_TIME_MONTH_FIELD_SUFFIX,
UNIT_OF_TIME_DAY_FIELD_SUFFIX,
UNIT_OF_TIME_HOUR_FIELD_SUFFIX,
@@ -1132,6 +1135,8 @@ public class AlfrescoSolrDataModel implements QueryConstants
return UNIT_OF_TIME_DAY_FIELD_SUFFIX;
case UNIT_OF_TIME_MONTH:
return UNIT_OF_TIME_MONTH_FIELD_SUFFIX;
case UNIT_OF_TIME_QUARTER:
return UNIT_OF_TIME_QUARTER_FIELD_SUFFIX;
case UNIT_OF_TIME_YEAR:
return UNIT_OF_TIME_YEAR_FIELD_SUFFIX;
default:
@@ -1792,6 +1797,8 @@ public class AlfrescoSolrDataModel implements QueryConstants
return SpecializedFieldType.UNIT_OF_TIME_DAY;
case UNIT_OF_TIME_MONTH_FIELD_SUFFIX:
return SpecializedFieldType.UNIT_OF_TIME_MONTH;
case UNIT_OF_TIME_QUARTER_FIELD_SUFFIX:
return SpecializedFieldType.UNIT_OF_TIME_QUARTER;
case UNIT_OF_TIME_YEAR_FIELD_SUFFIX:
return SpecializedFieldType.UNIT_OF_TIME_YEAR;
case FIELD_TRANSFORMATION_STATUS_SUFFIX:
@@ -95,6 +95,7 @@ import java.nio.charset.StandardCharsets;
import java.text.DecimalFormat;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.IsoFields;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -381,6 +382,7 @@ public class SolrInformationServer implements InformationServer
private static final String UNIT_OF_TIME_FIELD_INFIX = "_unit_of_time";
public static final String UNIT_OF_TIME_YEAR_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_year";
public static final String UNIT_OF_TIME_QUARTER_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_quarter";
public static final String UNIT_OF_TIME_MONTH_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_month";
public static final String UNIT_OF_TIME_DAY_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_day";
public static final String UNIT_OF_TIME_HOUR_FIELD_SUFFIX = UNIT_OF_TIME_FIELD_INFIX + "_hour";
@@ -2264,7 +2266,8 @@ public class SolrInformationServer implements InformationServer
.stream()
.filter(field -> field.getField().startsWith("text@sd___@"))
.forEach(field -> addStringProperty(valueHolder, field, value, locale));
} else
}
else
{
dataModel.getIndexedFieldNamesForProperty(propertyQName).getFields()
.forEach(field -> {
@@ -3806,6 +3809,7 @@ public class SolrInformationServer implements InformationServer
*
* <ul>
* <li>YEAR</li>
* <li>QUARTER (1-4)</li>
* <li>MONTH (1-12)</li>
* <li>DAY (OF THE MONTH)</li>
* </ul>
@@ -3828,7 +3832,9 @@ public class SolrInformationServer implements InformationServer
{
String fieldNamePrefix = dataModel.destructuredDateTimePartFieldNamePrefix(sourceFieldName);
ZonedDateTime dateTime = ZonedDateTime.parse(value, DateTimeFormatter.ISO_ZONED_DATE_TIME);
consumer.accept(fieldNamePrefix + UNIT_OF_TIME_YEAR_FIELD_SUFFIX, dateTime.getYear());
consumer.accept(fieldNamePrefix + UNIT_OF_TIME_QUARTER_FIELD_SUFFIX, dateTime.get(IsoFields.QUARTER_OF_YEAR));
consumer.accept(fieldNamePrefix + UNIT_OF_TIME_MONTH_FIELD_SUFFIX, dateTime.getMonth().getValue());
consumer.accept(fieldNamePrefix + UNIT_OF_TIME_DAY_FIELD_SUFFIX, dateTime.getDayOfMonth());