diff options
author | Daniel Schwarz <bartfastiel@users.noreply.github.com> | 2017-05-11 18:37:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-11 18:37:02 +0200 |
commit | 36af9beabb4407a79dc2924be905ea79908ce704 (patch) | |
tree | c23cc3cc25ec93a7eda58e62134753ba2bf4ffee /server/sonar-server | |
parent | 35cace9be8a1dc08046f4c3fa50885bc6d4b3051 (diff) | |
download | sonarqube-36af9beabb4407a79dc2924be905ea79908ce704.tar.gz sonarqube-36af9beabb4407a79dc2924be905ea79908ce704.zip |
SONAR-9217 if two suggestions have the same relevancy, prefer A over Z
api/components/suggestions used to only use "relevance" (score) in sorting results. If two suggestions have exactly the same relevance (this is a rare case), then we will now also take alphabetical order into account.
Diffstat (limited to 'server/sonar-server')
2 files changed, 12 insertions, 1 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndex.java b/server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndex.java index d03b2220fb3..f0babc80127 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndex.java +++ b/server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndex.java @@ -37,6 +37,8 @@ import org.elasticsearch.search.aggregations.bucket.filters.InternalFilters.Buck import org.elasticsearch.search.aggregations.metrics.tophits.InternalTopHits; import org.elasticsearch.search.aggregations.metrics.tophits.TopHitsBuilder; import org.elasticsearch.search.highlight.HighlightBuilder; +import org.elasticsearch.search.sort.FieldSortBuilder; +import org.elasticsearch.search.sort.ScoreSortBuilder; import org.sonar.server.es.EsClient; import org.sonar.server.es.textsearch.ComponentTextSearchFeature; import org.sonar.server.es.textsearch.ComponentTextSearchFeatureRepertoire; @@ -116,7 +118,9 @@ public class ComponentIndex { .setHighlighterPostTags("</mark>") .addHighlightedField(createHighlighter()) .setFrom(query.getSkip()) - .setSize(query.getLimit()); + .setSize(query.getLimit()) + .addSort(new ScoreSortBuilder()) + .addSort(new FieldSortBuilder(ComponentIndexDefinition.FIELD_NAME)); return sub.setFetchSource(false); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java index 06914666cab..49610473454 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java @@ -146,6 +146,13 @@ public class ComponentIndexScoreTest extends ComponentIndexTest { } @Test + public void if_relevancy_is_equal_fall_back_to_alphabetical_ordering() { + assertResultOrder("sonarqube", + "sonarqubeA", + "sonarqubeB"); + } + + @Test public void scoring_test_DbTester() { features.set(ComponentTextSearchFeatureRepertoire.PARTIAL); |