From 33d5ee7b16385aebb12748a2deba4b12babeeee5 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Tue, 19 May 2026 17:21:16 +0900 Subject: [PATCH 1/3] RLPNC-8931: New features for record matching --- .../RecordSimilarityResponseTest.java | 2 +- .../RecordSimilarityExplainInfo.java | 1 + .../RecordSimilarityFieldInfo.java | 1 + .../RecordSimilarityFieldScoringMethod.java | 23 +++++++++++++++++++ .../RecordSimilarityProperties.java | 1 + 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldScoringMethod.java diff --git a/json/src/test/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponseTest.java b/json/src/test/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponseTest.java index f09b09056..ec127440f 100644 --- a/json/src/test/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponseTest.java +++ b/json/src/test/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityResponseTest.java @@ -40,7 +40,7 @@ public class RecordSimilarityResponseTest { private static final ObjectMapper MAPPER = ApiModelMixinModule.setupObjectMapper(new ObjectMapper()); - private static final String EXPECTED_JSON = "{\"info\":[\"Field threshold not found in properties! Defaulting to 0.0\",\"Field weight not found in fields! Defaulting to 1.0 for all entries\"],\"results\":[{\"explainInfo\":{\"leftOnlyFields\":[\"addr\"],\"rightOnlyFields\":[\"bool\"],\"scoredFields\":{\"dob\":{\"calculatedWeight\":0.2857142857142857,\"finalScore\":0.74,\"rawScore\":0.8,\"weight\":0.33},\"primaryName\":{\"calculatedWeight\":0.7142857142857143,\"details\":\"any details\",\"finalScore\":0.85,\"rawScore\":0.99,\"weight\":0.33},\"str\":{\"calculatedWeight\":0.0,\"finalScore\":0.5,\"rawScore\":0.5,\"weight\":0.33}}},\"left\":{\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"num\":2342.15,\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"},\"str\":\"some string\"},\"right\":{\"bool\":false,\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"},\"str\":\"some other string\"},\"score\":0.87},{\"error\":[\"Field foo not found in field mapping\"],\"info\":[\"Some info message\",\"Some other info message\"],\"left\":{\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"}},\"right\":{\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"}}}]}"; + private static final String EXPECTED_JSON = "{\"info\":[\"Field threshold not found in properties! Defaulting to 0.0\",\"Field weight not found in fields! Defaulting to 1.0 for all entries\"],\"results\":[{\"explainInfo\":{\"finalScore\":0.0,\"leftOnlyFields\":[\"addr\"],\"rightOnlyFields\":[\"bool\"],\"scoredFields\":{\"dob\":{\"calculatedWeight\":0.2857142857142857,\"finalScore\":0.74,\"rawScore\":0.8,\"weight\":0.33},\"primaryName\":{\"calculatedWeight\":0.7142857142857143,\"details\":\"any details\",\"finalScore\":0.85,\"rawScore\":0.99,\"weight\":0.33},\"str\":{\"calculatedWeight\":0.0,\"finalScore\":0.5,\"rawScore\":0.5,\"weight\":0.33}}},\"left\":{\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"num\":2342.15,\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"},\"str\":\"some string\"},\"right\":{\"bool\":false,\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"},\"str\":\"some other string\"},\"score\":0.87},{\"error\":[\"Field foo not found in field mapping\"],\"info\":[\"Some info message\",\"Some other info message\"],\"left\":{\"addr\":{\"houseNumber\":\"123\",\"road\":\"Roadlane Ave\"},\"dob\":{\"date\":\"1993-04-16\"},\"primaryName\":{\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\",\"text\":\"Ethan R\"}},\"right\":{\"dob\":\"1993-04-16\",\"primaryName\":{\"text\":\"Seth R\"}}}]}"; private static final RecordSimilarityResponse EXPECTED_RESPONSE; diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityExplainInfo.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityExplainInfo.java index b4ebc0f90..b9fd0ce96 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityExplainInfo.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityExplainInfo.java @@ -32,4 +32,5 @@ public class RecordSimilarityExplainInfo { Map scoredFields; List leftOnlyFields; List rightOnlyFields; + double finalScore; } diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldInfo.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldInfo.java index 8f3672613..db580618f 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldInfo.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldInfo.java @@ -30,6 +30,7 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public class RecordSimilarityFieldInfo { @NotNull @Valid String type; + RecordSimilarityFieldScoringMethod scoringMethod; Double weight; /** * the score that this field should return if the field is null in a record diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldScoringMethod.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldScoringMethod.java new file mode 100644 index 000000000..85844fb74 --- /dev/null +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityFieldScoringMethod.java @@ -0,0 +1,23 @@ +/* + * Copyright 2026 Basis Technology Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.basistech.rosette.apimodel.recordsimilarity; + +public enum RecordSimilarityFieldScoringMethod { + STANDARD, + ONLY_INCREASE, + ONLY_DECREASE +} \ No newline at end of file diff --git a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityProperties.java b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityProperties.java index 6c9fb1a64..9951aa84a 100644 --- a/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityProperties.java +++ b/model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityProperties.java @@ -30,6 +30,7 @@ @JsonInclude(JsonInclude.Include.NON_NULL) public class RecordSimilarityProperties { @Valid Double threshold; + @Valid Double matchingFieldsBoostBias; @Valid Boolean includeExplainInfo; @Valid Map parameters; @Valid String parameterUniverse; From 8a7e0b87e734c69d650f51616fa7acce36128409 Mon Sep 17 00:00:00 2001 From: Akos Varga Date: Tue, 26 May 2026 15:34:08 +0200 Subject: [PATCH 2/3] [maven-release-plugin] prepare release rosette-api-java-binding-1.38.100 --- all/pom.xml | 2 +- annotations/pom.xml | 2 +- api/pom.xml | 2 +- common/pom.xml | 2 +- examples/pom.xml | 2 +- json/pom.xml | 2 +- model/pom.xml | 2 +- pom.xml | 4 ++-- release/pom.xml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 85d021a80..2aef360d6 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 rosette-api-all rosette-api-all diff --git a/annotations/pom.xml b/annotations/pom.xml index 4da42842f..a36c0c510 100644 --- a/annotations/pom.xml +++ b/annotations/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 rosette-api-annotations rosette-api-annotations diff --git a/api/pom.xml b/api/pom.xml index aafdb654e..ddaa562f3 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 rosette-api rosette-api diff --git a/common/pom.xml b/common/pom.xml index 7a53144b4..ce6af236a 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 rosette-api-common rosette-api-common diff --git a/examples/pom.xml b/examples/pom.xml index cf0bfe6e7..507c407b0 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -20,7 +20,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 com.basistech.rosette rosette-api-examples diff --git a/json/pom.xml b/json/pom.xml index 9ba7c6ec0..0d4b58386 100644 --- a/json/pom.xml +++ b/json/pom.xml @@ -20,7 +20,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 rosette-api-json rosette-api-json diff --git a/model/pom.xml b/model/pom.xml index 86f07b27d..a4e2551bf 100644 --- a/model/pom.xml +++ b/model/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 rosette-api-model rosette-api-model diff --git a/pom.xml b/pom.xml index 18dbf31e0..54abe8ed8 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 open-source-parent com.basistech @@ -32,7 +32,7 @@ scm:git:git@github.com:rosette-api/java.git scm:git:git@github.com:rosette-api/java.git - rosette-api-java-binding-1.34.0 + rosette-api-java-binding-1.38.100 This is the Java binding for the Babel Street Analytics API. The classes in here help Java applications to communicate with the Analytics API. diff --git a/release/pom.xml b/release/pom.xml index beaae86bb..53193d303 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.0-SNAPSHOT + 1.38.100 com.basistech.rosette rosette-api-release From e077c9a8d23036656550a170289dc2530d25bf52 Mon Sep 17 00:00:00 2001 From: Akos Varga Date: Tue, 26 May 2026 15:50:38 +0200 Subject: [PATCH 3/3] [maven-release-plugin] prepare for next development iteration --- all/pom.xml | 2 +- annotations/pom.xml | 2 +- api/pom.xml | 2 +- common/pom.xml | 2 +- examples/pom.xml | 2 +- json/pom.xml | 2 +- model/pom.xml | 2 +- pom.xml | 2 +- release/pom.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 2aef360d6..85d021a80 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT rosette-api-all rosette-api-all diff --git a/annotations/pom.xml b/annotations/pom.xml index a36c0c510..4da42842f 100644 --- a/annotations/pom.xml +++ b/annotations/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT rosette-api-annotations rosette-api-annotations diff --git a/api/pom.xml b/api/pom.xml index ddaa562f3..aafdb654e 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT rosette-api rosette-api diff --git a/common/pom.xml b/common/pom.xml index ce6af236a..7a53144b4 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT rosette-api-common rosette-api-common diff --git a/examples/pom.xml b/examples/pom.xml index 507c407b0..cf0bfe6e7 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -20,7 +20,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT com.basistech.rosette rosette-api-examples diff --git a/json/pom.xml b/json/pom.xml index 0d4b58386..9ba7c6ec0 100644 --- a/json/pom.xml +++ b/json/pom.xml @@ -20,7 +20,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT rosette-api-json rosette-api-json diff --git a/model/pom.xml b/model/pom.xml index a4e2551bf..86f07b27d 100644 --- a/model/pom.xml +++ b/model/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT rosette-api-model rosette-api-model diff --git a/pom.xml b/pom.xml index 54abe8ed8..4da32f78c 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT open-source-parent com.basistech diff --git a/release/pom.xml b/release/pom.xml index 53193d303..beaae86bb 100644 --- a/release/pom.xml +++ b/release/pom.xml @@ -19,7 +19,7 @@ com.basistech.rosette rosette-api-java-binding - 1.38.100 + 1.38.0-SNAPSHOT com.basistech.rosette rosette-api-release