diff options
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/ranking/LinearNormalizer.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/ranking/LinearNormalizer.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/ranking/LinearNormalizer.java b/container-search/src/main/java/com/yahoo/search/ranking/LinearNormalizer.java new file mode 100644 index 00000000000..2cdba9d6361 --- /dev/null +++ b/container-search/src/main/java/com/yahoo/search/ranking/LinearNormalizer.java @@ -0,0 +1,33 @@ +// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.search.ranking; + +class LinearNormalizer extends Normalizer { + + LinearNormalizer(int maxSize) { + super(maxSize); + } + + void normalize() { + double min = Float.MAX_VALUE; + double max = -Float.MAX_VALUE; + for (int i = 0; i < size; i++) { + double val = data[i]; + if (val < Float.MAX_VALUE && val > -Float.MAX_VALUE) { + min = Math.min(min, data[i]); + max = Math.max(max, data[i]); + } + } + double scale = 0.0; + double midpoint = 0.0; + if (max > min) { + scale = 1.0 / (max - min); + midpoint = (min + max) * 0.5; + } + for (int i = 0; i < size; i++) { + double old = data[i]; + data[i] = 0.5 + scale * (old - midpoint); + } + } + + String normalizing() { return "linear"; } +} |