List of usage examples for org.apache.lucene.search.highlight QueryTermExtractor QueryTermExtractor
QueryTermExtractor
From source file:org.conifer.MyBean.java
License:Apache License
public static String sortOutTerms(String queryString, String resultString, String tag, String strLen) throws org.apache.lucene.queryParser.ParseException { String startTag = "<" + tag + ">"; String endTag = "</" + tag + ">"; StringBuffer termBuf = new StringBuffer(); int addToLen = startTag.length() + endTag.length(); int resultLen = Integer.parseInt(strLen); String displayString = resultString; QueryParser luceneParser = new QueryParser("text", new StandardAnalyzer()); QueryTermExtractor luceneTerms = new QueryTermExtractor(); Query luceneQuery = null;/*from w ww . ja v a 2 s . c o m*/ Query query = null; WeightedTerm[] weightTerms = null; luceneQuery = luceneParser.parse(queryString); weightTerms = luceneTerms.getTerms(luceneQuery); for (int i = 0; i < weightTerms.length; i++) { String term = weightTerms[i].getTerm(); Pattern replace = Pattern.compile(term, Pattern.CASE_INSENSITIVE); Matcher matcher = replace.matcher(displayString); while (matcher.find()) { //displayString = matcher.replaceAll(startTag + term + endTag); if (termBuf.toString().indexOf(matcher.group(0)) == -1) { displayString = displayString.replaceAll(matcher.group(0), startTag + matcher.group(0) + endTag); resultLen += addToLen; } //if termBuf.append(matcher.group(0)); termBuf.append(","); } //while } //for int hlStart = displayString.indexOf(startTag); //System.out.println("hlStart: " + hlStart); if (hlStart > resultLen) { String tmpString = displayString.substring(0, hlStart); hlStart = tmpString.lastIndexOf(" "); displayString = "..." + displayString.substring(++hlStart); resultLen += 3; } //if if (displayString.length() > resultLen) { displayString = displayString.substring(0, resultLen); hlStart = displayString.lastIndexOf(startTag); int hlEnd = displayString.lastIndexOf(endTag); if (hlEnd < hlStart) displayString = displayString.substring(0, --hlStart); displayString = displayString + "..."; } //if return displayString; }