diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java
index 79b1bb2ff1..1454e3db6b 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java
@@ -502,7 +502,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS
}
}
- private static boolean fieldHasTerm(IndexReader indexReader, String field)
+ public static boolean fieldHasTerm(IndexReader indexReader, String field)
{
try
{
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
index a625efded6..09cc288876 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java
@@ -958,6 +958,18 @@ public class ADMLuceneTest extends TestCase
results.close();
+ sp = new SearchParameters();
+ sp.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO);
+ sp.addStore(rootNodeRef.getStoreRef());
+ sp.setQuery("-eager or -dog");
+ sp.addQueryTemplate("ANDY", "%cm:content");
+ sp.setNamespace(NamespaceService.CONTENT_MODEL_1_0_URI);
+ sp.excludeDataInTheCurrentTransaction(true);
+ sp.addSort("test:neverIndexed", false);
+ results = searcher.query(sp);
+ assertEquals(15, results.length());
+ results.close();
+
}
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneTest_model.xml b/source/java/org/alfresco/repo/search/impl/lucene/LuceneTest_model.xml
index bb50836283..32b82c8b08 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneTest_model.xml
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneTest_model.xml
@@ -19,6 +19,12 @@
Test Super Type
sys:container
+
+ d:any
+ false
+ false
+
+
d:date
true
diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java
index 2a763d632c..f45f5ec885 100644
--- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java
+++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java
@@ -27,6 +27,7 @@ package org.alfresco.repo.search.impl.querymodel.impl.lucene;
import java.util.List;
import java.util.Set;
+import org.alfresco.repo.search.impl.lucene.ADMLuceneSearcherImpl;
import org.alfresco.repo.search.impl.querymodel.Column;
import org.alfresco.repo.search.impl.querymodel.Constraint;
import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext;
@@ -79,7 +80,7 @@ public class LuceneQuery extends BaseQuery implements LuceneQueryBuilder
@SuppressWarnings("unused")
boolean should = false;
boolean must_not = false;
-
+
if (selectors != null)
{
for (String selector : selectors)
@@ -111,7 +112,7 @@ public class LuceneQuery extends BaseQuery implements LuceneQueryBuilder
Query constraintQuery = luceneQueryBuilderComponent.addComponent(selectors, null, luceneContext, functionContext);
if (constraintQuery != null)
{
- switch(constraint.getOccur())
+ switch (constraint.getOccur())
{
case DEFAULT:
case MANDATORY:
@@ -138,10 +139,10 @@ public class LuceneQuery extends BaseQuery implements LuceneQueryBuilder
throw new UnsupportedOperationException();
}
}
-
- if(!must && must_not)
+
+ if (!must && must_not)
{
- luceneQuery.add(new TermQuery(new Term("ISNODE", "T")), BooleanClause.Occur.MUST);
+ luceneQuery.add(new TermQuery(new Term("ISNODE", "T")), BooleanClause.Occur.MUST);
}
return luceneQuery;
@@ -182,7 +183,14 @@ public class LuceneQuery extends BaseQuery implements LuceneQueryBuilder
if (luceneField != null)
{
- fields[index++] = new SortField(luceneField, (ordering.getOrder() == Order.DESCENDING));
+ if (ADMLuceneSearcherImpl.fieldHasTerm(luceneContext.getLuceneQueryParser().getIndexReader(), luceneField))
+ {
+ fields[index++] = new SortField(luceneField, (ordering.getOrder() == Order.DESCENDING));
+ }
+ else
+ {
+ fields[index++] = new SortField(null, SortField.DOC, (ordering.getOrder() == Order.DESCENDING));
+ }
}
else
{