diff -r d4d56f5e7c55 -r 65456528cac2 searchengine/oss/cl/clucene/src/clucene/highlighter/QueryTermExtractor.cpp --- a/searchengine/oss/cl/clucene/src/clucene/highlighter/QueryTermExtractor.cpp Tue Oct 05 13:15:12 2010 +0530 +++ b/searchengine/oss/cl/clucene/src/clucene/highlighter/QueryTermExtractor.cpp Fri Oct 15 12:09:28 2010 +0530 @@ -30,6 +30,9 @@ getTermsFromPhraseQuery((PhraseQuery *) query, terms); else if (query->instanceOf( TermQuery::getClassName() )) getTermsFromTermQuery((TermQuery *) query, terms); + // Adding support for prefix Query to have direct comparision of Query text + else if (query->instanceOf( PrefixQuery::getClassName() )) + getTermsFromPrefixQuery((PrefixQuery *) query, terms); //else if(query->instanceOf(_T("SpanNearQuery")) // getTermsFromSpanNearQuery((SpanNearQuery*) query, terms); } @@ -121,6 +124,18 @@ _CLDELETE(pWT); } + + void QueryTermExtractor::getTermsFromPrefixQuery( PrefixQuery * query, WeightedTermList * terms) + { + Term *term = query->getPrefix(); + WeightedTerm * pWT = _CLNEW WeightedTerm(query->getBoost(),term->text()); + _CLDECDELETE(term); + if (terms->find(pWT)==terms->end()) // possible memory leak if key already present + terms->insert(pWT); + else + _CLDELETE(pWT); + } + //todo: implement this when span queries are implemented /*void getTermsFromSpanNearQuery(SpanNearQuery* query, WeightedTermList* terms){ Collection queryTerms = query.getTerms();