From 85c8feadda74fd794cf8641f0f3c740be4bb61a8 Mon Sep 17 00:00:00 2001 From: Rafael Oliveira Date: Mon, 31 Aug 2026 14:28:19 +0100 Subject: [PATCH 1/5] Marked Search & Match V1 as obsolete --- src/main/java/com/textkernel/tx/TxClient.java | 2 ++ .../tx/services/SearchMatchService.java | 4 +++ .../tx/integration/MatchV2Tests.java | 20 +++++++++++-- .../tx/integration/ParsingTests.java | 29 +++++++------------ 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/textkernel/tx/TxClient.java b/src/main/java/com/textkernel/tx/TxClient.java index 75fc3ac7..a61fcf8e 100644 --- a/src/main/java/com/textkernel/tx/TxClient.java +++ b/src/main/java/com/textkernel/tx/TxClient.java @@ -70,7 +70,9 @@ public class TxClient { /** * @return access all endpoints/methods for Search & Match V1 + * @deprecated Search & Match V1 is deprecated. You should use {@link #searchMatchV2()} instead. */ + @Deprecated public SearchMatchService searchMatchV1() { return _searchMatchV1Service; } static { diff --git a/src/main/java/com/textkernel/tx/services/SearchMatchService.java b/src/main/java/com/textkernel/tx/services/SearchMatchService.java index 7cd5618b..abb0d330 100644 --- a/src/main/java/com/textkernel/tx/services/SearchMatchService.java +++ b/src/main/java/com/textkernel/tx/services/SearchMatchService.java @@ -540,7 +540,9 @@ SearchRequest createRequest(List indexesToQuery, FilterCriteria query, S * @param settings The settings for this search request. Use {@code null} for defaults. * @return The API response body * @throws TxException Thrown when an API error occurs + * @deprecated BimetricScore is deprecated. */ + @Deprecated @SuppressWarnings("unchecked") //these actually are checked, compiler just can't tell public BimetricScoreResponse bimetricScore( ParsedResumeWithId sourceResume, @@ -585,7 +587,9 @@ public BimetricScoreResponse bimetricScore( * @param settings The settings for this search request. Use {@code null} for defaults. * @return The API response body * @throws TxException Thrown when an API error occurs + * @deprecated BimetricScore is deprecated. */ + @Deprecated @SuppressWarnings("unchecked") //these actually are checked, compiler just can't tell public BimetricScoreResponse bimetricScore( ParsedJobWithId sourceJob, diff --git a/src/test/java/com/textkernel/tx/integration/MatchV2Tests.java b/src/test/java/com/textkernel/tx/integration/MatchV2Tests.java index 2805b967..9009d231 100644 --- a/src/test/java/com/textkernel/tx/integration/MatchV2Tests.java +++ b/src/test/java/com/textkernel/tx/integration/MatchV2Tests.java @@ -35,6 +35,10 @@ import com.textkernel.tx.models.api.parsing.ParseOptions; import com.textkernel.tx.models.api.parsing.ParseRequest; import com.textkernel.tx.models.api.parsing.ParseResumeResponse; +import com.textkernel.tx.models.api.parsing.SkillsSettings; +import com.textkernel.tx.TestData; +import com.textkernel.tx.models.job.ParsedJob; +import com.textkernel.tx.models.resume.ParsedResume; public class MatchV2Tests extends TestBase { @@ -42,9 +46,16 @@ public class MatchV2Tests extends TestBase { @BeforeAll static void setup() throws TxException { - // add a document to each index - ClientDESv2.searchMatchV2().addJob(_documentId, TestParsedJobTech, null, null); - ClientDESv2.searchMatchV2().addCandidate(_documentId, TestParsedResume, null, false, null); + ParseOptions v2Options = new ParseOptions(); + v2Options.SkillsSettings = new SkillsSettings(); + v2Options.SkillsSettings.Normalize = true; + v2Options.SkillsSettings.TaxonomyVersion = "V2"; + + ParsedJob jobV2 = ClientDESv2.parser().parseJob(new ParseRequest(TestData.JobOrderTech, v2Options)).Value.JobData; + ParsedResume resumeV2 = ClientDESv2.parser().parseResume(new ParseRequest(TestData.Resume, v2Options)).Value.ResumeData; + + ClientDESv2.searchMatchV2().addJob(_documentId, jobV2, null, null); + ClientDESv2.searchMatchV2().addCandidate(_documentId, resumeV2, null, false, null); delayForIndexSync(5); } @@ -94,6 +105,9 @@ public void testParseAndUpload() throws TxException, IOException { ParseOptions options = new ParseOptions(); options.IndexingOptions = new IndexingOptionsGeneric(MatchV2Environment.PROD, docId, null, null); + options.SkillsSettings = new SkillsSettings(); + options.SkillsSettings.Normalize = true; + options.SkillsSettings.TaxonomyVersion = "V2"; ParseResumeResponse parseResponse = ClientDESv2.parser().parseResume(new ParseRequest(document, options)); assertTrue(parseResponse.Value.IndexingResponse.isSuccess()); diff --git a/src/test/java/com/textkernel/tx/integration/ParsingTests.java b/src/test/java/com/textkernel/tx/integration/ParsingTests.java index 064b0c79..d75987a6 100644 --- a/src/test/java/com/textkernel/tx/integration/ParsingTests.java +++ b/src/test/java/com/textkernel/tx/integration/ParsingTests.java @@ -180,28 +180,19 @@ public void testParseResumeGeocodeIndex() throws TxException { IndexingOptionsGeneric indexingOptions = new IndexingOptionsGeneric(documentId, indexId, null); - // since there isn't an address this will throw an exception - assertThrows(TxGeocodeResumeException.class, () -> { - ParseRequest request = new ParseRequest(TestData.Resume, null); - request.GeocodeOptions = geocodeOptions; - request.IndexingOptions = indexingOptions; - Client.parser().parseResume(request); - }); - - - // confirm you can geocode but indexing fails - assertThrows(TxIndexResumeException.class, () -> { - ParseRequest request = new ParseRequest(TestData.ResumeWithAddress, null); - request.GeocodeOptions = geocodeOptions; - request.IndexingOptions = indexingOptions; - Client.parser().parseResume(request); - }); - try { - // set the document id and create the index - indexingOptions.DocumentId = documentId; Client.searchMatchV1().createIndex(IndexType.Resume, indexId); delayForIndexSync(); + + // since there isn't an address this will throw an exception + assertThrows(TxGeocodeResumeException.class, () -> { + ParseRequest request = new ParseRequest(TestData.Resume, null); + request.GeocodeOptions = geocodeOptions; + request.IndexingOptions = indexingOptions; + Client.parser().parseResume(request); + }); + + indexingOptions.DocumentId = documentId; // confirm you can parse/geocode/index assertDoesNotThrow(() -> { From f26eb0604c509ef355f80e12c0c7dc2f514bd610 Mon Sep 17 00:00:00 2001 From: Rafael Oliveira Date: Mon, 31 Aug 2026 15:23:12 +0100 Subject: [PATCH 2/5] Marked Search & Match V1 as obsolete --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e1c71ae5..ffaba725 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.textkernel tx-java - 3.0.2 + 3.0.3 jar Textkernel Tx Java SDK From a1227d044f018a2db35aa75674625baffa127009 Mon Sep 17 00:00:00 2001 From: Rafael Oliveira Date: Mon, 31 Aug 2026 15:26:12 +0100 Subject: [PATCH 3/5] Marked Search & Match V1 as obsolete --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f922d88..668ab081 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ The official Java SDK for the Textkernel Tx v10 API for resume/CV and job parsin ### Gradle Users Add this dependency to your project's build file: ``` -implementation "com.textkernel:tx-java:3.0.2" +implementation "com.textkernel:tx-java:3.0.3" ``` ### Maven Users From 3150203449c5b9dd734ee854ad6bd362cfee537e Mon Sep 17 00:00:00 2001 From: Rafael Oliveira Date: Tue, 1 Sep 2026 11:09:22 +0100 Subject: [PATCH 4/5] Marked Search & Match V1 as obsolete --- .../com/textkernel/tx/integration/ParsingTests.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/textkernel/tx/integration/ParsingTests.java b/src/test/java/com/textkernel/tx/integration/ParsingTests.java index d75987a6..c75263d5 100644 --- a/src/test/java/com/textkernel/tx/integration/ParsingTests.java +++ b/src/test/java/com/textkernel/tx/integration/ParsingTests.java @@ -192,8 +192,16 @@ public void testParseResumeGeocodeIndex() throws TxException { Client.parser().parseResume(request); }); + // confirm you can geocode but indexing fails (nonexistent index) + assertThrows(TxException.class, () -> { + ParseRequest request = new ParseRequest(TestData.ResumeWithAddress, null); + request.GeocodeOptions = geocodeOptions; + request.IndexingOptions = new IndexingOptionsGeneric(documentId, indexId + "-nonexistent", null); + Client.parser().parseResume(request); + }); + indexingOptions.DocumentId = documentId; - + // confirm you can parse/geocode/index assertDoesNotThrow(() -> { ParseRequest request = new ParseRequest(TestData.ResumeWithAddress, null); From 76a6d5fc7fdbcfdb931080f54b078e24458268e7 Mon Sep 17 00:00:00 2001 From: Rafael Oliveira Date: Tue, 1 Sep 2026 13:37:19 +0100 Subject: [PATCH 5/5] Marked Search & Match V1 as obsolete --- .../tx/integration/ParsingTests.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/test/java/com/textkernel/tx/integration/ParsingTests.java b/src/test/java/com/textkernel/tx/integration/ParsingTests.java index c75263d5..3407774b 100644 --- a/src/test/java/com/textkernel/tx/integration/ParsingTests.java +++ b/src/test/java/com/textkernel/tx/integration/ParsingTests.java @@ -170,7 +170,7 @@ public void verifyparseJobSuccess() throws Exception assertNotNull(response.ParsingMetadata); } - @Test + @Test public void testParseResumeGeocodeIndex() throws TxException { String indexId = "SDK-testParseResumeGeocodeIndex"; String documentId = "1"; @@ -180,28 +180,29 @@ public void testParseResumeGeocodeIndex() throws TxException { IndexingOptionsGeneric indexingOptions = new IndexingOptionsGeneric(documentId, indexId, null); + // since there isn't an address this will throw an exception + assertThrows(TxException.class, () -> { + ParseRequest request = new ParseRequest(TestData.Resume, null); + request.GeocodeOptions = geocodeOptions; + request.IndexingOptions = indexingOptions; + Client.parser().parseResume(request); + }); + + + // confirm you can geocode but indexing fails + assertThrows(TxException.class, () -> { + ParseRequest request = new ParseRequest(TestData.ResumeWithAddress, null); + request.GeocodeOptions = geocodeOptions; + request.IndexingOptions = indexingOptions; + Client.parser().parseResume(request); + }); + try { + // set the document id and create the index + indexingOptions.DocumentId = documentId; Client.searchMatchV1().createIndex(IndexType.Resume, indexId); delayForIndexSync(); - - // since there isn't an address this will throw an exception - assertThrows(TxGeocodeResumeException.class, () -> { - ParseRequest request = new ParseRequest(TestData.Resume, null); - request.GeocodeOptions = geocodeOptions; - request.IndexingOptions = indexingOptions; - Client.parser().parseResume(request); - }); - - // confirm you can geocode but indexing fails (nonexistent index) - assertThrows(TxException.class, () -> { - ParseRequest request = new ParseRequest(TestData.ResumeWithAddress, null); - request.GeocodeOptions = geocodeOptions; - request.IndexingOptions = new IndexingOptionsGeneric(documentId, indexId + "-nonexistent", null); - Client.parser().parseResume(request); - }); - - indexingOptions.DocumentId = documentId; - + // confirm you can parse/geocode/index assertDoesNotThrow(() -> { ParseRequest request = new ParseRequest(TestData.ResumeWithAddress, null);