summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2017-08-31 10:02:21 +0000
committerArne Juul <arnej@yahoo-inc.com>2017-08-31 10:02:21 +0000
commitae01edaf6692d30e6206b2e6eae213f0c52a1ded (patch)
treeac6358404158488353b1deb95a1042bf6e63d41b /container-search
parent21219b0c636f219e239567e7f4bd7b536dbb9cbc (diff)
render infinite or NaN relevance as "0.0"
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/Relevance.java3
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/QuerySnapshotSearcherTestCase.java4
3 files changed, 7 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
index c39f0387d46..dd8e261a6b7 100644
--- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
+++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java
@@ -488,7 +488,8 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> {
if (id != null)
generator.writeStringField(ID, id);
- generator.writeNumberField(RELEVANCE, hit.getRelevance().getScore());
+ generator.writeFieldName(RELEVANCE);
+ generator.writeNumber(hit.getRelevance().toString());
if (hit.types().size() > 0) { // TODO: Remove types rendering on Vespa 7
generator.writeArrayFieldStart(TYPES);
diff --git a/container-search/src/main/java/com/yahoo/search/result/Relevance.java b/container-search/src/main/java/com/yahoo/search/result/Relevance.java
index 7737b01cc14..2f6967ee794 100644
--- a/container-search/src/main/java/com/yahoo/search/result/Relevance.java
+++ b/container-search/src/main/java/com/yahoo/search/result/Relevance.java
@@ -47,6 +47,9 @@ public class Relevance implements Comparable<Relevance> {
*/
@Override
public String toString() {
+ if (Double.isNaN(score) || Double.isInfinite(score)) {
+ return "0.0";
+ }
return DoubleFormatter.stringValue(score);
}
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/QuerySnapshotSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/QuerySnapshotSearcherTestCase.java
index b1763471c82..b17fdbb4cf2 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/QuerySnapshotSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/QuerySnapshotSearcherTestCase.java
@@ -26,8 +26,8 @@ public class QuerySnapshotSearcherTestCase extends junit.framework.TestCase {
Searcher searcher=new QuerySnapshotSearcher();
Result result = doSearch(searcher, new Query(), 0,10);
Hit hit=result.hits().get(0);
- assertEquals(String.valueOf(Double.POSITIVE_INFINITY),
- hit.getRelevance().toString());
+ assertEquals(Double.POSITIVE_INFINITY, hit.getRelevance().getScore());
+ assertEquals("0.0", hit.getRelevance().toString());
}
private Result doSearch(Searcher searcher, Query query, int offset, int hits) {