--- a/searchengine/oss/cl/clucene/src/clucene/highlighter/QueryTermExtractor.cpp Thu Sep 02 21:37:32 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/highlighter/QueryTermExtractor.cpp Fri Sep 17 08:35:54 2010 +0300
@@ -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();