UNPKG

lingual

Version:

Implementing common phonetics algorithms for NodeJS

36 lines (32 loc) 828 B
var generatePairs = function(string) { superPairs = string.toUpperCase() .replace(/[^A-Z ]+/g, '') .split(/\s+/); superPairs = superPairs .map(function(word) { breaks = []; for (var i = 0; i < word.length - 1; i++) { breaks.push(word.slice(i, i + 2)); } return breaks; }); pairs = [].concat.apply([], superPairs); return pairs; } var whiteSimilarity = function(string1, string2) { var pairs1 = generatePairs(string1); var pairs2 = generatePairs(string2); var union = pairs1.length + pairs2.length; var hitCount = 0; for (x in pairs1) { for (y in pairs2) { if (pairs1[x] == pairs2[y]) { hitCount++; pairs2[y] = ''; } } } score = ((2.0 * hitCount) / union).toFixed(2); return score; } module.exports = whiteSimilarity;