aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/main
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-11-21 12:45:28 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2022-11-21 12:45:28 +0100
commitbb1ecec95a5b0eb2df37a5925550f1bf776c7521 (patch)
treed74ab46f6e88565ac6e17ad3b99bc68199101a9e /searchlib/src/main
parentc9377b18f70ba1674b1bc257660905142b045028 (diff)
Avoid producing nan values when hashing, they do not compare well.
Diffstat (limited to 'searchlib/src/main')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java
index be5b4242042..6325d8d0334 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/evaluation/StringValue.java
@@ -43,7 +43,12 @@ public class StringValue extends Value {
public double asDouble() {
XXHash64 hasher = XXHashFactory.fastestInstance().hash64();
byte[] data = value.getBytes(StandardCharsets.UTF_8);
- return Double.longBitsToDouble(hasher.hash(data, 0, data.length, 0));
+ long h = hasher.hash(data, 0, data.length, 0);
+ if ((h & 0x7ff0000000000000L) == 0x7ff0000000000000L) {
+ // Avoid nan
+ h = h & 0xffefffffffffffffL;
+ }
+ return Double.longBitsToDouble(h);
}
@Override