searchengine/oss/cl/clucene/src/clucene/highlighter/QueryTermExtractor.cpp
changeset 21 2c484ac32ef0
parent 7 a5fbfefd615f
--- 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();