diff --git a/bobo-browse/src/main/java/com/browseengine/bobo/sort/SortCollector.java b/bobo-browse/src/main/java/com/browseengine/bobo/sort/SortCollector.java index ce55209d..5e7ae854 100644 --- a/bobo-browse/src/main/java/com/browseengine/bobo/sort/SortCollector.java +++ b/bobo-browse/src/main/java/com/browseengine/bobo/sort/SortCollector.java @@ -212,19 +212,27 @@ private static SortField convert(Browsable browser, SortField sort) { } } + protected static SortField buildSortFieldFromQuery(Query q) { + if (q != null && !(q instanceof MatchAllDocsQuery)) { + return SortField.FIELD_SCORE; + } else { + return SortField.FIELD_DOC; + } + } + public static SortCollector buildSortCollector(Browsable browser, Query q, SortField[] sort, int offset, int count, boolean fetchStoredFields, Set termVectorsToFetch, String[] groupBy, int maxPerGroup, boolean collectDocIdCache) { if (sort == null || sort.length == 0) { - if (q != null && !(q instanceof MatchAllDocsQuery)) { - sort = new SortField[] { SortField.FIELD_SCORE }; - } else { - sort = new SortField[] { SortField.FIELD_DOC }; - } + sort = new SortField[] { buildSortFieldFromQuery(q) }; } boolean doScoring = false; for (SortField sf : sort) { + if (sf == null) { + sf = buildSortFieldFromQuery(q); + } + if (sf.getType() == SortField.Type.SCORE) { doScoring = true; break; diff --git a/bobo-browse/src/test/java/com/browseengine/bobo/sort/SortCollectorTest.java b/bobo-browse/src/test/java/com/browseengine/bobo/sort/SortCollectorTest.java new file mode 100644 index 00000000..23da7d18 --- /dev/null +++ b/bobo-browse/src/test/java/com/browseengine/bobo/sort/SortCollectorTest.java @@ -0,0 +1,19 @@ +package com.browseengine.bobo.sort; + +import junit.framework.TestCase; + +import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.MatchAllDocsQuery; +import org.apache.lucene.search.SortField; + +/** + * @author mdelapenya + */ +public class SortCollectorTest extends TestCase { + + public void testBuildSortFieldFromQuery() { + assertEquals(SortCollector.buildSortFieldFromQuery(null), SortField.FIELD_DOC); + assertEquals(SortCollector.buildSortFieldFromQuery(new MatchAllDocsQuery()), SortField.FIELD_DOC); + assertEquals(SortCollector.buildSortFieldFromQuery(new BooleanQuery()), SortField.FIELD_SCORE); + } +}