mirror of
https://github.com/Alfresco/SearchServices.git
synced 2026-09-16 18:12:56 +00:00
[SEARCH-2166]
implemented range queries.
This commit is contained in:
+54
-32
@@ -3115,43 +3115,65 @@ public class Solr4QueryParser extends QueryParser implements QueryConstants
|
||||
{
|
||||
return buildTextMLTextOrContentRange(field, part1, part2, includeLower, includeUpper, analysisMode,
|
||||
expandedFieldName, propertyDef, tokenisationMode);
|
||||
} else if (propertyDef.getDataType().getName().equals(DataTypeDefinition.DATETIME)
|
||||
|| propertyDef.getDataType().getName().equals(DataTypeDefinition.DATE))
|
||||
} else if ((propertyDef.getDataType().getName().equals(DataTypeDefinition.DATETIME)
|
||||
|| propertyDef.getDataType().getName().equals(DataTypeDefinition.DATE)) &&
|
||||
!AlfrescoSolrDataModel.getInstance().isDerivedDateField(fieldNameAndEnding.getSecond()))
|
||||
{
|
||||
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())
|
||||
if (AlfrescoSolrDataModel.getInstance().isDerivedDateField(fieldNameAndEnding.getSecond()))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
return bQuery.build();
|
||||
} else
|
||||
else
|
||||
{
|
||||
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("*"))
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
return bQuery.build();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
String solrField = AlfrescoSolrDataModel.getInstance()
|
||||
.getQueryableFields(propertyDef.getName(), null, FieldUse.ID).getFields().get(0).getField();
|
||||
|
||||
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 start = null;
|
||||
try
|
||||
|
||||
+1
-1
@@ -375,6 +375,7 @@ public class DynamicCopyFieldsIT extends AbstractAlfrescoDistributedIT {
|
||||
@Test
|
||||
public void textLOVWholeGeneratedFieldsTest()
|
||||
{
|
||||
Assert.assertFalse();
|
||||
HashSet<String> fieldModifiers = fieldMap.get(TEXT_LOVWHOLE);
|
||||
assertAllSingleValue(fieldModifiers);
|
||||
Set<DynamicFieldType> dynamicFieldsTypes = fieldModifiers.stream()
|
||||
@@ -410,7 +411,6 @@ public class DynamicCopyFieldsIT extends AbstractAlfrescoDistributedIT {
|
||||
* index=disable
|
||||
*/
|
||||
@Test
|
||||
@Ignore("index enable=false is ignored")
|
||||
public void textNoneGeneratedFieldsTest()
|
||||
{
|
||||
HashSet<String> fieldModifiers = fieldMap.get(TEXT_NONE);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</distributionManagement>
|
||||
|
||||
<properties>
|
||||
<dependency.alfresco-data-model.version>8.112</dependency.alfresco-data-model.version>
|
||||
<dependency.alfresco-data-model.version>8.-SNAPSHOT</dependency.alfresco-data-model.version>
|
||||
<dependency.jackson.version>2.10.3</dependency.jackson.version>
|
||||
</properties>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user