static L dm_gazelle_fullSearch(S query, O... _) { int maxResults = optPar maxResults(_, 1000); L concepts = cast dm_call(dm_gazelle_linesCRUD(), 'concepts); L prepared = scoredSearch_prepare(query); new Map scores; if (concepts != null) for (O o : concepts) if (o != null) { int score = 0; for (Field f : values(instanceFieldsMap(o))) if (f.getType().equals(S) && !isStaticField(f)) score += scoredSearch_score((S) f.get(o), prepared); if (score != 0) scores.put(o, score); } ret takeFirst(maxResults, keysSortedByValuesDesc(scores)); }