@Override public int countScoredFieldNames(Query query, String[] filedNames) { int count = 0; for (String fieldName : filedNames) { WeightedTerm[] weightedTerms = QueryTermExtractor.getTerms(query, false, fieldName); if ((weightedTerms.length > 0) && !ArrayUtil.contains(Field.UNSCORED_FIELD_NAMES, fieldName)) { count++; } } return count; }
@Override public Set<String> getQueryTerms(Query query) { String queryString = StringUtil.replace(query.toString(), StringPool.STAR, StringPool.BLANK); Query tempQuery = null; try { QueryParser queryParser = new QueryParser(getVersion(), StringPool.BLANK, getAnalyzer()); tempQuery = queryParser.parse(queryString); } catch (Exception e) { if (_log.isWarnEnabled()) { _log.warn("Unable to parse " + queryString); } tempQuery = query; } WeightedTerm[] weightedTerms = null; for (String fieldName : Field.KEYWORDS) { weightedTerms = QueryTermExtractor.getTerms(tempQuery, false, fieldName); if (weightedTerms.length > 0) { break; } } Set<String> queryTerms = new HashSet<String>(); for (WeightedTerm weightedTerm : weightedTerms) { queryTerms.add(weightedTerm.getTerm()); } return queryTerms; }