static L dm_gazelle_fullSearch(S query, O... _) { Set types = cast optPar types(_); int maxResults = optPar maxResults(_, 1000); L prepared = scoredSearch_prepare(query); new Map scores; if (emptyOrContains(types, 'rule)) scoredSearchInAllStringFields_impl(prepared, scores, (L) dm_call(dm_gazelle_rulesModule(), 'concepts)); if (emptyOrContains(types, 'line)) scoredSearchInAllStringFields_impl(prepared, scores, (L) dm_call(dm_gazelle_linesCRUD(), 'concepts)); ret takeFirst(maxResults, keysSortedByValuesDesc(scores)); }