You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/01/14 14:11:16 UTC

[commons-text] 08/08: Add and use a package-private singleton for JaccardSimilarity

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 <ga...@gmail.com>
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.