From 946c75aadf0bb2857a41f8c2a79af5343b677add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Mon, 22 Dec 2014 10:49:32 +0100 Subject: [PATCH 1/3] Create a method to build a SortField depending on the Query impl --- .../browseengine/bobo/sort/SortCollector.java | 8 ++++++++ .../bobo/sort/SortCollectorTest.java | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 bobo-browse/src/test/java/com/browseengine/bobo/sort/SortCollectorTest.java 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..7a846811 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,6 +212,14 @@ private static SortField convert(Browsable browser, SortField sort) { } } + protected static SortField buildSortFromQuery(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) { 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..103f5d34 --- /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.buildSortFromQuery(null), SortField.FIELD_DOC); + assertEquals(SortCollector.buildSortFromQuery(new MatchAllDocsQuery()), SortField.FIELD_DOC); + assertEquals(SortCollector.buildSortFromQuery(new BooleanQuery()), SortField.FIELD_SCORE); + } +} From c358f8b77d96342eb82b5a880ee01149b5ab2f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Mon, 22 Dec 2014 10:50:24 +0100 Subject: [PATCH 2/3] Fix bug when the array of SortFields contains a null SortField on it --- .../java/com/browseengine/bobo/sort/SortCollector.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 7a846811..b1e62ea9 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 @@ -224,15 +224,15 @@ public static SortCollector buildSortCollector(Browsable browser, Query q, SortF 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[] { buildSortFromQuery(q) }; } boolean doScoring = false; for (SortField sf : sort) { + if (sf == null) { + sf = buildSortFromQuery(q); + } + if (sf.getType() == SortField.Type.SCORE) { doScoring = true; break; From 4cbb097381a91dd3f88953dbac4c7675c9deb539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Mon, 22 Dec 2014 11:04:46 +0100 Subject: [PATCH 3/3] Rename new method --- .../main/java/com/browseengine/bobo/sort/SortCollector.java | 6 +++--- .../java/com/browseengine/bobo/sort/SortCollectorTest.java | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) 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 b1e62ea9..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,7 +212,7 @@ private static SortField convert(Browsable browser, SortField sort) { } } - protected static SortField buildSortFromQuery(Query q) { + protected static SortField buildSortFieldFromQuery(Query q) { if (q != null && !(q instanceof MatchAllDocsQuery)) { return SortField.FIELD_SCORE; } else { @@ -224,13 +224,13 @@ public static SortCollector buildSortCollector(Browsable browser, Query q, SortF int offset, int count, boolean fetchStoredFields, Set termVectorsToFetch, String[] groupBy, int maxPerGroup, boolean collectDocIdCache) { if (sort == null || sort.length == 0) { - sort = new SortField[] { buildSortFromQuery(q) }; + sort = new SortField[] { buildSortFieldFromQuery(q) }; } boolean doScoring = false; for (SortField sf : sort) { if (sf == null) { - sf = buildSortFromQuery(q); + sf = buildSortFieldFromQuery(q); } if (sf.getType() == SortField.Type.SCORE) { 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 index 103f5d34..23da7d18 100644 --- a/bobo-browse/src/test/java/com/browseengine/bobo/sort/SortCollectorTest.java +++ b/bobo-browse/src/test/java/com/browseengine/bobo/sort/SortCollectorTest.java @@ -12,8 +12,8 @@ public class SortCollectorTest extends TestCase { public void testBuildSortFieldFromQuery() { - assertEquals(SortCollector.buildSortFromQuery(null), SortField.FIELD_DOC); - assertEquals(SortCollector.buildSortFromQuery(new MatchAllDocsQuery()), SortField.FIELD_DOC); - assertEquals(SortCollector.buildSortFromQuery(new BooleanQuery()), SortField.FIELD_SCORE); + assertEquals(SortCollector.buildSortFieldFromQuery(null), SortField.FIELD_DOC); + assertEquals(SortCollector.buildSortFieldFromQuery(new MatchAllDocsQuery()), SortField.FIELD_DOC); + assertEquals(SortCollector.buildSortFieldFromQuery(new BooleanQuery()), SortField.FIELD_SCORE); } }