aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com/yahoo
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2023-05-08 11:23:23 +0200
committerGitHub <noreply@github.com>2023-05-08 11:23:23 +0200
commit764e11fd0a471a78fe2a8c2d3bf13791c31a0e9c (patch)
treef77fdcce1451a7253a58cb83d5437c84206cf096 /config-model/src/test/java/com/yahoo
parent3accc556eae567bc08778bc3820372bb528030ee (diff)
parent36ac8ebea478d02dfbd4e914e85e4f56d3e11cf2 (diff)
Merge pull request #27002 from vespa-engine/geirst/dotproduct-distance-metric-configurable
Make it possible to configure dotproduct distance metric.
Diffstat (limited to 'config-model/src/test/java/com/yahoo')
-rw-r--r--config-model/src/test/java/com/yahoo/schema/AttributeSettingsTestCase.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/config-model/src/test/java/com/yahoo/schema/AttributeSettingsTestCase.java b/config-model/src/test/java/com/yahoo/schema/AttributeSettingsTestCase.java
index 64f3bda4ac4..3ca182e18c2 100644
--- a/config-model/src/test/java/com/yahoo/schema/AttributeSettingsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/schema/AttributeSettingsTestCase.java
@@ -15,6 +15,7 @@ import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.util.Optional;
+import static com.yahoo.config.model.test.TestUtil.joinLines;
import static org.junit.jupiter.api.Assertions.*;
/**
@@ -334,4 +335,36 @@ public class AttributeSettingsTestCase extends AbstractSchemaTestCase {
assertSame(single.getAliases(), array.getAliases());
}
+ @Test
+ void distance_metric_is_propagated_to_attributes_config() throws ParseException {
+ assertDerivedDistanceMetric(AttributesConfig.Attribute.Distancemetric.ANGULAR, "angular");
+ assertDerivedDistanceMetric(AttributesConfig.Attribute.Distancemetric.EUCLIDEAN, "euclidean");
+ assertDerivedDistanceMetric(AttributesConfig.Attribute.Distancemetric.HAMMING, "hamming");
+ assertDerivedDistanceMetric(AttributesConfig.Attribute.Distancemetric.GEODEGREES, "geodegrees");
+ // TODO Vespa 9: Remove 'innerproduct' as alias for 'prenormalized-angular'.
+ assertDerivedDistanceMetric(AttributesConfig.Attribute.Distancemetric.INNERPRODUCT, "innerproduct");
+ assertDerivedDistanceMetric(AttributesConfig.Attribute.Distancemetric.PRENORMALIZED_ANGULAR, "prenormalized-angular");
+ }
+
+ private void assertDerivedDistanceMetric(AttributesConfig.Attribute.Distancemetric.Enum expDistanceMetric,
+ String schemaDistanceMetric) throws ParseException {
+ var attrs = new AttributeFields(getSchemaWithDistanceMetric(schemaDistanceMetric));
+ var builder = new AttributesConfig.Builder();
+ attrs.getConfig(builder, AttributeFields.FieldSet.ALL, 100);
+ var cfg = builder.build();
+ assertEquals(expDistanceMetric, cfg.attribute(0).distancemetric());
+ }
+
+ private Schema getSchemaWithDistanceMetric(String distanceMetric) throws ParseException {
+ return getSchema(joinLines("search test {",
+ " document test {",
+ " field t type tensor(x[2]) {",
+ " indexing: attribute",
+ " attribute { distance-metric: " + distanceMetric + "}",
+ " }",
+ " }",
+ "}"));
+ }
+
+
}