From 437b7a162f02251bbfa144cddf6a26cdc1ec9b50 Mon Sep 17 00:00:00 2001 From: Rosmi Date: Thu, 25 Apr 2024 04:09:31 +0530 Subject: [PATCH] feat:(entity-registry): add ability to search for float and double (#10324) --- .../annotation/SearchableAnnotation.java | 4 +++- .../annotation/SearchableRefAnnotation.java | 4 +++- .../SearchDocumentTransformer.java | 4 ++++ .../com/linkedin/metadata/TestEntityUtil.java | 1 + .../SearchDocumentTransformerTest.java | 2 ++ .../com/datahub/test/TestEntityInfo.pdl | 20 +++++++++---------- 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/entity-registry/src/main/java/com/linkedin/metadata/models/annotation/SearchableAnnotation.java b/entity-registry/src/main/java/com/linkedin/metadata/models/annotation/SearchableAnnotation.java index 4ec8702efd..f15dbb61d7 100644 --- a/entity-registry/src/main/java/com/linkedin/metadata/models/annotation/SearchableAnnotation.java +++ b/entity-registry/src/main/java/com/linkedin/metadata/models/annotation/SearchableAnnotation.java @@ -153,10 +153,12 @@ public class SearchableAnnotation { private static FieldType getDefaultFieldType(DataSchema.Type schemaDataType) { switch (schemaDataType) { case INT: - case FLOAT: return FieldType.COUNT; case MAP: return FieldType.KEYWORD; + case FLOAT: + case DOUBLE: + return FieldType.DOUBLE; default: return FieldType.TEXT; } diff --git a/entity-registry/src/main/java/com/linkedin/metadata/models/annotation/SearchableRefAnnotation.java b/entity-registry/src/main/java/com/linkedin/metadata/models/annotation/SearchableRefAnnotation.java index db6cf46dfc..e2ea94c840 100644 --- a/entity-registry/src/main/java/com/linkedin/metadata/models/annotation/SearchableRefAnnotation.java +++ b/entity-registry/src/main/java/com/linkedin/metadata/models/annotation/SearchableRefAnnotation.java @@ -98,10 +98,12 @@ public class SearchableRefAnnotation { DataSchema.Type schemaDataType) { switch (schemaDataType) { case INT: - case FLOAT: return SearchableAnnotation.FieldType.COUNT; case MAP: return SearchableAnnotation.FieldType.KEYWORD; + case FLOAT: + case DOUBLE: + return SearchableAnnotation.FieldType.DOUBLE; default: return SearchableAnnotation.FieldType.TEXT; } diff --git a/metadata-io/src/main/java/com/linkedin/metadata/search/transformer/SearchDocumentTransformer.java b/metadata-io/src/main/java/com/linkedin/metadata/search/transformer/SearchDocumentTransformer.java index 0c98a01134..a655f90597 100644 --- a/metadata-io/src/main/java/com/linkedin/metadata/search/transformer/SearchDocumentTransformer.java +++ b/metadata-io/src/main/java/com/linkedin/metadata/search/transformer/SearchDocumentTransformer.java @@ -314,6 +314,10 @@ public class SearchDocumentTransformer { return Optional.of(JsonNodeFactory.instance.numberNode((Integer) fieldValue)); case LONG: return Optional.of(JsonNodeFactory.instance.numberNode((Long) fieldValue)); + case FLOAT: + return Optional.of(JsonNodeFactory.instance.numberNode((Float) fieldValue)); + case DOUBLE: + return Optional.of(JsonNodeFactory.instance.numberNode((Double) fieldValue)); // By default run toString default: String value = fieldValue.toString(); diff --git a/metadata-io/src/test/java/com/linkedin/metadata/TestEntityUtil.java b/metadata-io/src/test/java/com/linkedin/metadata/TestEntityUtil.java index ea4bb69d94..9ee4a16a3a 100644 --- a/metadata-io/src/test/java/com/linkedin/metadata/TestEntityUtil.java +++ b/metadata-io/src/test/java/com/linkedin/metadata/TestEntityUtil.java @@ -69,6 +69,7 @@ public class TestEntityUtil { "123", "longValue", "0123456789"))); + testEntityInfo.setDoubleField(100.456); return testEntityInfo; } diff --git a/metadata-io/src/test/java/com/linkedin/metadata/search/transformer/SearchDocumentTransformerTest.java b/metadata-io/src/test/java/com/linkedin/metadata/search/transformer/SearchDocumentTransformerTest.java index f2a68de3cb..9953e08efb 100644 --- a/metadata-io/src/test/java/com/linkedin/metadata/search/transformer/SearchDocumentTransformerTest.java +++ b/metadata-io/src/test/java/com/linkedin/metadata/search/transformer/SearchDocumentTransformerTest.java @@ -60,6 +60,7 @@ public class SearchDocumentTransformerTest { assertTrue(result.isPresent()); ObjectNode parsedJson = (ObjectNode) OBJECT_MAPPER.readTree(result.get()); assertEquals(parsedJson.get("urn").asText(), snapshot.getUrn().toString()); + assertEquals(parsedJson.get("doubleField").asDouble(), 100.456); assertEquals(parsedJson.get("keyPart1").asText(), "key"); assertFalse(parsedJson.has("keyPart2")); assertEquals(parsedJson.get("keyPart3").asText(), "VALUE_1"); @@ -106,6 +107,7 @@ public class SearchDocumentTransformerTest { parsedJson.get("nestedIntegerField").getNodeType().equals(JsonNodeType.NULL); parsedJson.get("feature1").getNodeType().equals(JsonNodeType.NULL); parsedJson.get("feature2").getNodeType().equals(JsonNodeType.NULL); + parsedJson.get("doubleField").getNodeType().equals(JsonNodeType.NULL); } @Test diff --git a/test-models/src/main/pegasus/com/datahub/test/TestEntityInfo.pdl b/test-models/src/main/pegasus/com/datahub/test/TestEntityInfo.pdl index d1daa7b8d4..f9c7b30b44 100644 --- a/test-models/src/main/pegasus/com/datahub/test/TestEntityInfo.pdl +++ b/test-models/src/main/pegasus/com/datahub/test/TestEntityInfo.pdl @@ -92,15 +92,15 @@ record TestEntityInfo includes CustomProperties { } esObjectField: optional map[string, string] - @Searchable = { - "fieldName": "doubleField", - "fieldType": "DOUBLE" - } - doubleField: optional double + @Searchable = { + "fieldName": "doubleField", + "fieldType": "DOUBLE" + } + doubleField: optional double - @Searchable = { - "fieldName": "removed", - "fieldType": "BOOLEAN" - } - removed: optional boolean + @Searchable = { + "fieldName": "removed", + "fieldType": "BOOLEAN" + } + removed: optional boolean }