diff -r cf5c74390b98 -r 3e1f76dd2722 searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp --- a/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp Wed Aug 18 10:53:26 2010 +0300 +++ b/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp Thu Sep 02 21:37:32 2010 +0300 @@ -17,12 +17,12 @@ #include "clucene/util/bitset.h" #include "fieldsortedhitqueue.h" //#ifdef USE_HIGHLIGHTER -//#include "CLucene/highlighter/QueryTermExtractor.h" -//#include "CLucene/highlighter/QueryScorer.h" -//#include "CLucene/highlighter/Highlighter.h" -//#include "CLucene/highlighter/SimpleHTMLFormatter.h" -//#include "CLucene/analysis/standard/StandardAnalyzer.h" -//#include "CLucene/queryParser/QueryParser.h" +#include "CLucene/highlighter/QueryTermExtractor.h" +#include "CLucene/highlighter/QueryScorer.h" +#include "CLucene/highlighter/Highlighter.h" +#include "CLucene/highlighter/SimpleHTMLFormatter.h" +#include "CLucene/analysis/standard/StandardAnalyzer.h" +#include "CLucene/queryParser/QueryParser.h" //#endif CL_NS_USE(index) CL_NS_USE(util) @@ -120,7 +120,8 @@ reader = IndexReader::open(path); readerOwner = true; //#ifdef USE_HIGHLIGHTER -// rewrittenQuery = NULL; + fistlnHLQuery = NULL; + excerptrwQuery = NULL; //#endif } @@ -136,7 +137,8 @@ reader = IndexReader::open(directory); readerOwner = true; //#ifdef USE_HIGHLIGHTER -// rewrittenQuery = NULL; + fistlnHLQuery = NULL; + excerptrwQuery = NULL; //#endif } @@ -150,7 +152,8 @@ reader = r; readerOwner = false; //#ifdef USE_HIGHLIGHTER -// rewrittenQuery = NULL; + fistlnHLQuery = NULL; + excerptrwQuery = NULL; //#endif } @@ -218,15 +221,14 @@ //Func - //Pre - reader != NULL //Post - -//#ifdef USE_HIGHLIGHTER -// if(!rewrittenQuery) -// { -// rewrittenQuery = query->rewrite(reader); -// } -//#endif - CND_PRECONDITION(reader != NULL, "reader is NULL"); CND_PRECONDITION(query != NULL, "query is NULL"); +//#ifdef USE_HIGHLIGHTER + if(!excerptrwQuery || !fistlnHLQuery) + { + excerptrwQuery = query->rewrite(reader); + } +//#endif Weight* weight = query->weight(this); Scorer* scorer = weight->scorer(reader); @@ -271,15 +273,18 @@ // inherit javadoc TopFieldDocs* IndexSearcher::_search(Query* query, Filter* filter, const int32_t nDocs, const Sort* sort) { -//#ifdef USE_HIGHLIGHTER -// if(!rewrittenQuery) -// { -// rewrittenQuery = query->rewrite(reader); -// } -//#endif + + CND_PRECONDITION(reader != NULL, "reader is NULL"); CND_PRECONDITION(query != NULL, "query is NULL"); +//#ifdef USE_HIGHLIGHTER + if(!excerptrwQuery || !fistlnHLQuery) + { + excerptrwQuery = query->rewrite(reader); + } +//#endif + Weight* weight = query->weight(this); Scorer* scorer = weight->scorer(reader); if (scorer == NULL){ @@ -324,14 +329,17 @@ // filter may or may not be NULL // results is a valid reference to a HitCollector and used to store the results //Post - filter if non-NULL, a bitset used to eliminate some documents -//#ifdef USE_HIGHLIGHTER -// if(!rewrittenQuery) -// { -// rewrittenQuery = query->rewrite(reader); -// } -//#endif + CND_PRECONDITION(reader != NULL, "reader is NULL"); CND_PRECONDITION(query != NULL, "query is NULL"); + +//#ifdef USE_HIGHLIGHTER + if(!excerptrwQuery || !fistlnHLQuery) + { + excerptrwQuery = query->rewrite(reader); + } +//#endif + BitSet* bits = NULL; SimpleFilteredCollector* fc = NULL; @@ -373,14 +381,11 @@ return query; } //#ifdef USE_HIGHLIGHTER -//Query* IndexSearcher::getrewritten(int32_t n, Query* original) -// { -// if(!rewrittenQuery) -// { -// rewrittenQuery = original->rewrite(reader); -// } -// return rewrittenQuery; -// } +void IndexSearcher::getrewritten(int32_t n, Query* original, Query* rwQuery[]) + { + rwQuery[0] = fistlnHLQuery; + rwQuery[1] = excerptrwQuery; + } //#endif void IndexSearcher::explain(Query* query, int32_t doc, Explanation* ret){ Weight* weight = query->weight(this);