diff --git a/processing/src/main/java/io/druid/query/search/search/LexicographicSearchSortSpec.java b/processing/src/main/java/io/druid/query/search/search/LexicographicSearchSortSpec.java index 9f84a47292f..04c931112f1 100644 --- a/processing/src/main/java/io/druid/query/search/search/LexicographicSearchSortSpec.java +++ b/processing/src/main/java/io/druid/query/search/search/LexicographicSearchSortSpec.java @@ -41,7 +41,11 @@ public class LexicographicSearchSortSpec implements SearchSortSpec @Override public int compare(SearchHit searchHit, SearchHit searchHit1) { - return searchHit.getValue().compareTo(searchHit1.getValue()); + int retVal = searchHit.getValue().compareTo(searchHit1.getValue()); + if (retVal == 0) { + retVal = searchHit.getDimension().compareTo(searchHit1.getDimension()); + } + return retVal; } }; } diff --git a/processing/src/test/java/io/druid/query/search/SearchQueryRunnerTest.java b/processing/src/test/java/io/druid/query/search/SearchQueryRunnerTest.java index e5abe9b5d7f..17f2e090989 100644 --- a/processing/src/test/java/io/druid/query/search/SearchQueryRunnerTest.java +++ b/processing/src/test/java/io/druid/query/search/SearchQueryRunnerTest.java @@ -93,6 +93,29 @@ public class SearchQueryRunnerTest checkSearchQuery(searchQuery, expectedResults); } + @Test + public void testSearchSameValueInMultiDims() + { + SearchQuery searchQuery = Druids.newSearchQueryBuilder() + .dataSource(QueryRunnerTestHelper.dataSource) + .granularity(QueryRunnerTestHelper.allGran) + .intervals(QueryRunnerTestHelper.fullOnInterval) + .dimensions( + Arrays.asList( + QueryRunnerTestHelper.placementDimension, + QueryRunnerTestHelper.placementishDimension + ) + ) + .query("e") + .build(); + + Map> expectedResults = Maps.newTreeMap(String.CASE_INSENSITIVE_ORDER); + expectedResults.put(QueryRunnerTestHelper.placementDimension.toLowerCase(), Sets.newHashSet("preferred")); + expectedResults.put(QueryRunnerTestHelper.placementishDimension, Sets.newHashSet("e", "preferred")); + + checkSearchQuery(searchQuery, expectedResults); + } + @Test public void testFragmentSearch() {