package eu.dnetlib.iis.wf.affmatching.match.voter;
import java.io.Serializable;
import java.util.Collection;
/**
* Class containing helper methods checking strings similarity.
*
* @author madryk
*/
class StringSimilarityChecker implements Serializable {
private static final long serialVersionUID = 1L;
//------------------------ LOGIC --------------------------
/**
* Returns true if provided string values contain at least one
* value similar to searchValue string.<br/>
* The similarity is measured based on Jaro-Winkler distance.<br/>
* Strings must have similarity greater or equal to minSimilarity
* to be found similar.
*
* @see JaroWinklerDistanceCalculator#getDistance(String, String)
*/
public boolean containsSimilarString(Collection<String> values, String searchValue, double minSimilarity) {
for (String value : values) {
double similarity = JaroWinklerDistanceCalculator.getDistance(value, searchValue);
// change it to {@link StringUtils#getJaroWinklerDistance(String, String)
// after the common-lang3 3.5 is released
// version 3.4 is not correct, see: https://issues.apache.org/jira/browse/LANG-1199
if (similarity >= minSimilarity) {
return true;
}
}
return false;
}
}