static L scoredSearch_eachTerm(S query, Iterable data) { new LinkedHashMap scores; // preserve original order within score group L prepared = scoredSearch_prepare(query); for (S s : data) { int score = scoredSearch_score_eachTerm(s, prepared); if (score != 0) scores.put(s, score); } ret keysSortedByValuesDesc(scores); }