diff options
author | bjormel <bjormel@yahooinc.com> | 2023-10-26 13:59:28 +0000 |
---|---|---|
committer | bjormel <bjormel@yahooinc.com> | 2023-10-26 13:59:28 +0000 |
commit | 567be9a1f6353cec41c23bfd1fcd46b4b2a4d2d7 (patch) | |
tree | 4664a743e166a5e11aee7b9acd70ad8ee2617612 /container-search/src/main/java/com/yahoo/search/ranking/LinearNormalizer.java | |
parent | e9058b555d4dfea2f6c872d9a677e8678b569569 (diff) | |
parent | bce3b8e926bf9da880172acbe1ba4b12d5e026d6 (diff) |
Merge branch 'master' into bjormel/aws-main-controllerbjormel/aws-main-controller
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"; } +} |