This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-text.git
commit 0e6d86a576e8835765e8924f9f3f7f00f36b05e4 Author: Gary Gregory <[email protected]> AuthorDate: Sat Jan 14 09:08:20 2023 -0500 Add and use a package-private singleton for JaccardSimilarity --- src/changes/changes.xml | 3 ++- .../java/org/apache/commons/text/similarity/JaccardDistance.java | 7 +------ .../java/org/apache/commons/text/similarity/JaccardSimilarity.java | 5 +++++ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index cb0067d8..30a10e2c 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -47,13 +47,14 @@ The <action> type attribute can be add,update,fix,remove. <release version="1.10.1" date="20YY-MM-DD" description="Release 1.10.1. Requires Java 8."> <!-- FIX --> <action issue="TEXT-219" type="fix" dev="aherbert" due-to="Jaap Sperling">Fix StringTokenizer.getTokenList to return an independent modifiable list</action> - <action type="fix" dev="aherbert" due-to="James Nord">Fix javadoc for StringEscapeUtils.escapeHtml4 #382</action> + <action type="fix" dev="aherbert" due-to="James Nord">Fix Javadoc for StringEscapeUtils.escapeHtml4 #382</action> <action type="fix" dev="ggregory" due-to="Pavel Belousov, Gary Gregory">TextStringBuidler#hashCode() allocates a String on each call #387.</action> <action issue="TEXT-221" type="fix" dev="aherbert" due-to="Remco Riswick">Fix Bundle-SymbolicName to use the package name org.apache.commons.text</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Add and use a package-private singleton for RegexTokenizer.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Add and use a package-private singleton for CosineSimilarity.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Add and use a package-private singleton for LongestCommonSubsequence.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Add and use a package-private singleton for JaroWinklerSimilarity.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Add and use a package-private singleton for JaccardSimilarity.</action> <!-- ADD --> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Dependabot">Bump actions/cache from 3.0.8 to 3.0.10 #361, #365.</action> diff --git a/src/main/java/org/apache/commons/text/similarity/JaccardDistance.java b/src/main/java/org/apache/commons/text/similarity/JaccardDistance.java index fe956b20..eba0895a 100644 --- a/src/main/java/org/apache/commons/text/similarity/JaccardDistance.java +++ b/src/main/java/org/apache/commons/text/similarity/JaccardDistance.java @@ -30,11 +30,6 @@ package org.apache.commons.text.similarity; */ public class JaccardDistance implements EditDistance<Double> { - /** - * We normalize the jaccardSimilarity for the purpose of computing the distance. - */ - private final JaccardSimilarity jaccardSimilarity = new JaccardSimilarity(); - /** * Calculates Jaccard distance of two set character sequence passed as * input. Calculates Jaccard similarity and returns the complement of it. @@ -50,6 +45,6 @@ public class JaccardDistance implements EditDistance<Double> { if (left == null || right == null) { throw new IllegalArgumentException("Input cannot be null"); } - return 1.0 - jaccardSimilarity.apply(left, right).doubleValue(); + return 1.0 - JaccardSimilarity.INSTANCE.apply(left, right).doubleValue(); } } diff --git a/src/main/java/org/apache/commons/text/similarity/JaccardSimilarity.java b/src/main/java/org/apache/commons/text/similarity/JaccardSimilarity.java index 4f291392..9b77d255 100644 --- a/src/main/java/org/apache/commons/text/similarity/JaccardSimilarity.java +++ b/src/main/java/org/apache/commons/text/similarity/JaccardSimilarity.java @@ -33,6 +33,11 @@ import java.util.Set; */ public class JaccardSimilarity implements SimilarityScore<Double> { + /** + * Singleton instance. + */ + static final JaccardSimilarity INSTANCE = new JaccardSimilarity(); + /** * Calculates Jaccard Similarity of two set character sequence passed as * input.
