searchengine/oss/cl/clucene/src/clucene/highlighter/Highlighter.cpp
changeset 24 65456528cac2
parent 7 a5fbfefd615f
equal deleted inserted replaced
23:d4d56f5e7c55 24:65456528cac2
   179 		try
   179 		try
   180 		{
   180 		{
   181 			int32_t startOffset;
   181 			int32_t startOffset;
   182 			int32_t endOffset;
   182 			int32_t endOffset;
   183 			int32_t lastEndOffset = 0;
   183 			int32_t lastEndOffset = 0;
       
   184 			int32_t highlightedfrags = 0;
   184 			_textFragmenter->start(text);
   185 			_textFragmenter->start(text);
   185 			TCHAR substringBuffer[LUCENE_MAX_WORD_LEN];
   186 			TCHAR substringBuffer[LUCENE_MAX_WORD_LEN];
   186 
   187 
   187 			TokenGroup* tokenGroup=_CLNEW TokenGroup();
   188 			TokenGroup* tokenGroup=_CLNEW TokenGroup();
   188 
   189 
   221 					 _CLDELETE_CARRAY(markedUpText);
   222 					 _CLDELETE_CARRAY(markedUpText);
   222 
   223 
   223 					//check if current token marks the start of a new fragment
   224 					//check if current token marks the start of a new fragment
   224 					if (_textFragmenter->isNewFragment(&token))
   225 					if (_textFragmenter->isNewFragment(&token))
   225 					{
   226 					{
   226 						currentFrag->setScore(_fragmentScorer->getFragmentScore());
   227 					    float_t score = _fragmentScorer->getFragmentScore();
       
   228 					    if(score > 0) highlightedfrags++;
       
   229 						currentFrag->setScore(score);
   227 						//record stats for a new fragment
   230 						//record stats for a new fragment
   228 						currentFrag->setTextEndPos( writeTo->length() );
   231 						currentFrag->setTextEndPos( writeTo->length() );
   229 						currentFrag =_CLNEW TextFragment(writeTo->length(), docFrags.size());
   232 						currentFrag =_CLNEW TextFragment(writeTo->length(), docFrags.size());
   230 						_fragmentScorer->startFragment(currentFrag);
   233 						_fragmentScorer->startFragment(currentFrag);
   231 						docFrags.push_back(currentFrag);
   234 						docFrags.push_back(currentFrag);
   239 				//_CLDELETE_CARRAY(highlightedTerm);
   242 				//_CLDELETE_CARRAY(highlightedTerm);
   240 				//_CLDELETE(token);
   243 				//_CLDELETE(token);
   241 
   244 
   242 				tokenGroup->addToken(&token,_fragmentScorer->getTokenScore(&token));
   245 				tokenGroup->addToken(&token,_fragmentScorer->getTokenScore(&token));
   243 
   246 
   244 				if(lastEndOffset>maxDocBytesToAnalyze)
   247 				if(lastEndOffset>maxDocBytesToAnalyze || highlightedfrags>MAX_FRAGMENTS_TO_HIGHLIGHT)
   245 				{
   248 				{
   246 					break;
   249 					break;
   247 				}
   250 				}
   248 			}
   251 			}
   249 			currentFrag->setScore(_fragmentScorer->getFragmentScore());
   252 			currentFrag->setScore(_fragmentScorer->getFragmentScore());
   342 				frags = _CL_NEWARRAY(TextFragment*,fragTexts.size()+1);
   345 				frags = _CL_NEWARRAY(TextFragment*,fragTexts.size()+1);
   343 				fragTexts.toArray(frags);
   346 				fragTexts.toArray(frags);
   344   	        }
   347   	        }
   345 
   348 
   346 			_CLDELETE(tokenGroup);
   349 			_CLDELETE(tokenGroup);
       
   350 			if (tokenStream)
       
   351                 {
       
   352                     try
       
   353                     {
       
   354                         tokenStream->close();
       
   355                     }
       
   356                     catch (...)
       
   357                     {
       
   358                     }
       
   359                 }
   347 			//_CLDELETE(newText);
   360 			//_CLDELETE(newText);
   348 			return frags;
   361 			return frags;
   349 
   362 
   350 		}
   363 		}
   351 		_CLFINALLY(
   364 		catch(...){
   352 			if (tokenStream)
   365 			if (tokenStream)
   353 			{
   366 			{
   354 				try
   367 				try
   355 				{
   368 				{
   356 					tokenStream->close();
   369 					tokenStream->close();
   357 				}
   370 				}
   358 				catch (...)
   371 				catch (...)
   359 				{
   372 				{
   360 				}
   373 				}
   361 			}
   374 			}
   362 		)
   375 			return NULL;
       
   376 	    }
   363 	}
   377 	}
   364 
   378 
   365 
   379 
   366 	void Highlighter::_mergeContiguousFragments(TextFragment** frag, int32_t fragsLen)
   380 	void Highlighter::_mergeContiguousFragments(TextFragment** frag, int32_t fragsLen)
   367 	{
   381 	{