static L scoredSearch(S query, Iterable data) { new Map scores; for (S s : data) { int score = scoredSearch_score(s, query); if (score != 0) scores.put(s, score); } ret keysSortedByValuesDesc(scores); }