searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp
changeset 18 3e1f76dd2722
parent 15 cf5c74390b98
child 21 2c484ac32ef0
--- 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);