aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-server
diff options
context:
space:
mode:
authorDaniel Schwarz <bartfastiel@users.noreply.github.com>2017-05-11 18:37:02 +0200
committerGitHub <noreply@github.com>2017-05-11 18:37:02 +0200
commit36af9beabb4407a79dc2924be905ea79908ce704 (patch)
treec23cc3cc25ec93a7eda58e62134753ba2bf4ffee /server/sonar-server
parent35cace9be8a1dc08046f4c3fa50885bc6d4b3051 (diff)
downloadsonarqube-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')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/component/index/ComponentIndex.java6
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/component/index/ComponentIndexScoreTest.java7
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);