--- 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);