// used for KWIC highlighting final Pattern[] buildHighlightTerms(ArrayList<SearchClause> searchClauses) { ArrayList<Pattern> hilites = new ArrayList<Pattern>(); Iterator<SearchClause> stit = searchClauses.iterator(); while (stit.hasNext()) { try { SearchClause searchClause = stit.next(); String transformedString = searchClause.buildTransformedString(); if (transformedString == null) { continue; } if ("".equals(transformedString)) { continue; } if (searchClause.getAllClauseRoles().contains(ClauseRole.REGEX)) { String trimmedRegex = trimRegex(transformedString); Pattern[] regexPatterns = matchRegexToDocument(trimmedRegex); hilites.addAll(Arrays.asList(regexPatterns)); } else if (searchClause.parseForSearchType() == StringSearchFacet.SearchType.PROXIMITY) { transformedString = transformedString.replaceAll("(\\d+)w", ""); tempRegex = "Prox"; hilites.addAll(Arrays.asList(util.getPhraseHighlightPatterns(transformedString))); } else if (searchClause.parseForSearchType() == StringSearchFacet.SearchType.SUBSTRING) { Pattern[] patterns = util.getSubstringHighlightPatterns(transformedString); for (int i = 0; i < patterns.length; i++) { tempRegex += "### "; tempRegex += patterns[i].toString(); tempRegex += " ###"; } hilites.addAll(Arrays.asList(patterns)); } else { tempRegex = "Other"; Pattern[] patterns = util.getPhraseHighlightPatterns(transformedString); hilites.addAll(Arrays.asList(patterns)); } } catch (Exception e) { } } Pattern[] patterns = new Pattern[hilites.size()]; return hilites.toArray(patterns); }