Skip to content

Commit 2f24f16

Browse files
authored
Merge pull request #294 from rosette-api/RLPNC-8316-record-matching-generic-types
RLPNC-8316: record matching supports generic types
2 parents 8b86cdc + 772b63e commit 2f24f16

File tree

17 files changed

+212
-39
lines changed

17 files changed

+212
-39
lines changed

all/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<parent>
2020
<groupId>com.basistech.rosette</groupId>
2121
<artifactId>rosette-api-java-binding</artifactId>
22-
<version>1.34.1-SNAPSHOT</version>
22+
<version>1.35.101-SNAPSHOT</version>
2323
</parent>
2424
<artifactId>rosette-api-all</artifactId>
2525
<name>rosette-api-all</name>

annotations/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<parent>
2020
<groupId>com.basistech.rosette</groupId>
2121
<artifactId>rosette-api-java-binding</artifactId>
22-
<version>1.34.1-SNAPSHOT</version>
22+
<version>1.35.101-SNAPSHOT</version>
2323
</parent>
2424
<artifactId>rosette-api-annotations</artifactId>
2525
<name>rosette-api-annotations</name>

api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<parent>
2020
<groupId>com.basistech.rosette</groupId>
2121
<artifactId>rosette-api-java-binding</artifactId>
22-
<version>1.34.1-SNAPSHOT</version>
22+
<version>1.35.101-SNAPSHOT</version>
2323
</parent>
2424
<artifactId>rosette-api</artifactId>
2525
<name>rosette-api</name>

common/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<parent>
2020
<groupId>com.basistech.rosette</groupId>
2121
<artifactId>rosette-api-java-binding</artifactId>
22-
<version>1.34.1-SNAPSHOT</version>
22+
<version>1.35.101-SNAPSHOT</version>
2323
</parent>
2424
<artifactId>rosette-api-common</artifactId>
2525
<name>rosette-api-common</name>

examples/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<parent>
2121
<groupId>com.basistech.rosette</groupId>
2222
<artifactId>rosette-api-java-binding</artifactId>
23-
<version>1.34.1-SNAPSHOT</version>
23+
<version>1.35.101-SNAPSHOT</version>
2424
</parent>
2525
<groupId>com.basistech.rosette</groupId>
2626
<artifactId>rosette-api-examples</artifactId>

examples/src/main/java/com/basistech/rosette/examples/RecordSimilarityExample.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@
2222
import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityRequest;
2323
import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityResponse;
2424
import com.basistech.rosette.apimodel.recordsimilarity.records.AddressField;
25+
import com.basistech.rosette.apimodel.recordsimilarity.records.BooleanField;
2526
import com.basistech.rosette.apimodel.recordsimilarity.records.DateField;
2627
import com.basistech.rosette.apimodel.recordsimilarity.records.NameField;
28+
import com.basistech.rosette.apimodel.recordsimilarity.records.NumberField;
2729
import com.basistech.rosette.apimodel.recordsimilarity.records.RecordFieldType;
30+
import com.basistech.rosette.apimodel.recordsimilarity.records.StringField;
2831
import com.basistech.util.ISO15924;
2932
import com.basistech.util.LanguageCode;
3033

@@ -53,13 +56,19 @@ private void run() throws IOException {
5356
String dobField = "dob";
5457
String dob2Field = "dob2";
5558
String addrField = "addr";
59+
String strField = "jobTitle";
60+
String numberField = "age";
61+
String boolField = "isRetired";
5662
String dobHyphen = "1993-04-16";
5763
RecordSimilarityRequest request = RecordSimilarityRequest.builder()
5864
.fields(Map.of(
5965
primaryNameField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NAME).weight(0.5).build(),
6066
dobField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.2).build(),
6167
dob2Field, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_DATE).weight(0.1).build(),
62-
addrField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_ADDRESS).weight(0.5).build()))
68+
addrField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_ADDRESS).weight(0.5).build(),
69+
strField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_STRING).weight(0.2).build(),
70+
numberField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_NUMBER).weight(0.4).build(),
71+
boolField, RecordSimilarityFieldInfo.builder().type(RecordFieldType.RNI_BOOLEAN).weight(0.05).build()))
6372
.properties(RecordSimilarityProperties.builder().threshold(0.7).includeExplainInfo(true).build())
6473
.records(RecordSimilarityRecords.builder()
6574
.left(
@@ -73,24 +82,31 @@ private void run() throws IOException {
7382
.build(),
7483
dobField, DateField.UnfieldedDate.builder().date(dobHyphen).build(),
7584
dob2Field, DateField.FieldedDate.builder().date("04161993").format("MMddyyyy").build(),
76-
addrField, AddressField.UnfieldedAddress.builder().address("123 Roadlane Ave").build()
85+
addrField, AddressField.UnfieldedAddress.builder().address("123 Roadlane Ave").build(),
86+
strField, StringField.builder().data("software engineer").build()
7787
),
7888
Map.of(
7989
primaryNameField, NameField.FieldedName.builder().text("Evan R").build(),
80-
dobField, DateField.FieldedDate.builder().date(dobHyphen).build()
90+
dobField, DateField.FieldedDate.builder().date(dobHyphen).build(),
91+
numberField, NumberField.builder().data(47).build(),
92+
boolField, BooleanField.builder().data(false).build()
8193
)
8294
)
8395
).right(
8496
List.of(
8597
Map.of(
8698
primaryNameField, NameField.FieldedName.builder().text("Seth R").language(LanguageCode.ENGLISH).build(),
87-
dobField, DateField.FieldedDate.builder().date(dobHyphen).build()
99+
dobField, DateField.FieldedDate.builder().date(dobHyphen).build(),
100+
strField, StringField.builder().data("manager").build(),
101+
boolField, BooleanField.builder().data(true).build()
88102
),
89103
Map.of(
90104
primaryNameField, NameField.UnfieldedName.builder().text("Ivan R").build(),
91105
dobField, DateField.FieldedDate.builder().date(dobHyphen).build(),
92106
dob2Field, DateField.FieldedDate.builder().date("1993/04/16").build(),
93-
addrField, AddressField.FieldedAddress.builder().houseNumber("123").road("Roadlane Ave").build()
107+
addrField, AddressField.FieldedAddress.builder().houseNumber("123").road("Roadlane Ave").build(),
108+
numberField, NumberField.builder().data(72).build(),
109+
boolField, BooleanField.builder().data(true).build()
94110
)
95111
)
96112
).build()

json/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<parent>
2121
<groupId>com.basistech.rosette</groupId>
2222
<artifactId>rosette-api-java-binding</artifactId>
23-
<version>1.34.1-SNAPSHOT</version>
23+
<version>1.35.101-SNAPSHOT</version>
2424
</parent>
2525
<artifactId>rosette-api-json</artifactId>
2626
<name>rosette-api-json</name>

json/src/main/java/com/basistech/rosette/apimodel/jackson/recordsimilaritydeserializers/RecordSimilarityDeserializerUtilities.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,13 @@
3636

3737
import com.basistech.rosette.apimodel.recordsimilarity.RecordSimilarityFieldInfo;
3838
import com.basistech.rosette.apimodel.recordsimilarity.records.AddressField;
39+
import com.basistech.rosette.apimodel.recordsimilarity.records.BooleanField;
3940
import com.basistech.rosette.apimodel.recordsimilarity.records.DateField;
4041
import com.basistech.rosette.apimodel.recordsimilarity.records.NameField;
42+
import com.basistech.rosette.apimodel.recordsimilarity.records.NumberField;
4143
import com.basistech.rosette.apimodel.recordsimilarity.records.RecordFieldType;
4244
import com.basistech.rosette.apimodel.recordsimilarity.records.RecordSimilarityField;
45+
import com.basistech.rosette.apimodel.recordsimilarity.records.StringField;
4346
import com.basistech.rosette.apimodel.recordsimilarity.records.UnknownField;
4447

4548
final class RecordSimilarityDeserializerUtilities {
@@ -124,6 +127,18 @@ static Map<String, RecordSimilarityField> parseRecord(
124127
case RecordFieldType.RNI_ADDRESS:
125128
fieldData = fieldValue.traverse(jsonParser.getCodec()).readValueAs(AddressField.class);
126129
break;
130+
case RecordFieldType.RNI_STRING:
131+
fieldData = StringField.builder().data(fieldValue.textValue()).build();
132+
break;
133+
case RecordFieldType.RNI_NUMBER:
134+
fieldData = NumberField.builder().data(fieldValue.numberValue()).build();
135+
break;
136+
case RecordFieldType.RNI_BOOLEAN:
137+
// Be sure not to accidentally convert non-boolean values to 'false'
138+
fieldData = BooleanField.builder()
139+
.data(fieldValue.isBoolean() ? fieldValue.booleanValue() : null)
140+
.build();
141+
break;
127142
default:
128143
fieldData = fieldValue.traverse(jsonParser.getCodec()).readValueAs(UnknownField.class);
129144
}

0 commit comments

Comments
 (0)