# Class FuzzyScore

java.lang.Object
org.apache.commons.text.similarity.FuzzyScore

public class FuzzyScore extends Object
A matching algorithm that is similar to the searching algorithms implemented in editors such as Sublime Text, TextMate, Atom and others.

One point is given for every matched character. Subsequent matches yield two bonus points. A higher score indicates a higher similarity.

This code has been adapted from Apache Commons Lang 3.3.

Since:
  1.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FuzzyScore(Locale locale)`
  Constructs a new instance for a `Locale`-specific `FuzzyScore`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Integer`
  `fuzzyScore(CharSequence term, CharSequence query)`
  Computes the Fuzzy Score which indicates the similarity score between two Strings.
  `Locale`
  `getLocale()`
  Gets the locale.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### FuzzyScore

    public FuzzyScore(Locale locale)
    Constructs a new instance for a `Locale`-specific `FuzzyScore`.
    Parameters:
      `locale` - The string matching logic is case insensitive. A `Locale` is necessary to normalize both Strings to lower case.
    Throws:
      `IllegalArgumentException` - This is thrown if the `Locale` parameter is `null`.

- ## Method Details

  - ### fuzzyScore

    public Integer fuzzyScore(CharSequence term, CharSequence query)
    Computes the Fuzzy Score which indicates the similarity score between two Strings.

        score.fuzzyScore(null, null)                          = Throws IllegalArgumentException
        score.fuzzyScore("not null", null)                    = Throws IllegalArgumentException
        score.fuzzyScore(null, "not null")                    = Throws IllegalArgumentException
        score.fuzzyScore("", "")                              = 0
        score.fuzzyScore("Workshop", "b")                     = 0
        score.fuzzyScore("Room", "o")                         = 1
        score.fuzzyScore("Workshop", "w")                     = 1
        score.fuzzyScore("Workshop", "ws")                    = 2
        score.fuzzyScore("Workshop", "wo")                    = 4
        score.fuzzyScore("Apache Software Foundation", "asf") = 3

    Parameters:
      `term` - a full term that should be matched against, must not be null.
      `query` - the query that will be matched against a term, must not be null.
    Returns:
      result score.
    Throws:
      `IllegalArgumentException` - if the term or query is `null`.

  - ### getLocale

    public Locale getLocale()
    Gets the locale.
    Returns:
      The locale