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