!7 sclass SearchResult { S snippetID; int occurrences; } cmodule FullTextSnippetSearch > DynTableWithInput2 { switchable int maxResults = 1000; void calc { S query = upper(input); SS data = cast dm_requireAndCall("#1028945/CacheAllSnippets", 'getData); new L out; if (nempty(query)) { time "Full-Text Search" { fOr ping (S snippetID, text : data) if (contains(text, query)) { new SearchResult r; r.snippetID = snippetID; r.occurrences = countOccurrences(text, query); out.add(r); } } } setList(out); } }