fittingStrings.js 1.02 KB
/*
 * requires levenshtein.js to be loaded first
 */

function distsort (_a, _b)
{
	var a = _a.substring (0, _a.indexOf('::'));
	var b = _b.substring (0, _b.indexOf('::'));

	return a - b;
}

function fittingStrings (search, strings, cs)
{
	var dists = new Array ();

	if (search.length <= 0)
		return dists;

	if (cs == false)
		_search = search.toUpperCase ();
	else
		_search = search;

	/*
	 * hier suche ich die zur Eingabe am besten passenden Eintraege
	 * in der Datenbank. Neben der eigentlichen distance ermittle ich noch
	 * einen Wert distance - Ueberhang(Datenbankstring zu Suchstring)
	 * Zweiter eignet sich besser zum Vergleich der Ergebnisse untereinander.
	 */
	for (str in strings)
	{
		if (cs == false)
			_str = strings[str].toUpperCase ();
		else
			_str = strings[str];

		var dist    = levenshtein (_search, _str);
		var delta   = _str.length - _search.length;
		var subDist = (delta > 0)? dist - delta: dist;

		dists.push (subDist + '::' + dist + '::' + strings[str]);
	}
	
	dists.sort(distsort);

	return dists;
}