From: <ust...@us...> - 2006-07-02 09:58:40
|
Revision: 2253 Author: ustramooner Date: 2006-07-02 02:58:32 -0700 (Sun, 02 Jul 2006) ViewCVS: http://svn.sourceforge.net/clucene/?rev=2253&view=rev Log Message: ----------- implemented ScoreDoc** as const Modified Paths: -------------- trunk/src/CLucene/search/IndexSearcher.cpp trunk/src/CLucene/search/MultiSearcher.cpp trunk/src/CLucene/search/SearchHeader.cpp trunk/src/CLucene/search/SearchHeader.h Modified: trunk/src/CLucene/search/IndexSearcher.cpp =================================================================== --- trunk/src/CLucene/search/IndexSearcher.cpp 2006-07-02 09:56:39 UTC (rev 2252) +++ trunk/src/CLucene/search/IndexSearcher.cpp 2006-07-02 09:58:32 UTC (rev 2253) @@ -40,8 +40,6 @@ (bits==NULL || bits->get(doc))) { // skip docs not in bits totalHits[0]++; if (hq->size() < nDocs || (minScore==-1.0f || score >= minScore)) { - //todo: could use a struct for scoredoc and then - //set the value, then call reorder...? ScoreDoc* sd = _CLNEW ScoreDoc(doc, score); if ( !hq->insert(sd) ) // update hit queue _CLDELETE(sd); @@ -183,7 +181,7 @@ Weight* weight = query->weight(this); Scorer* scorer = weight->scorer(reader); if (scorer == NULL){ - ScoreDoc** sds = _CL_NEWARRAY(ScoreDoc*,1); + const ScoreDoc** sds = _CL_NEWARRAY(const ScoreDoc*,1); sds[0]=NULL; return _CLNEW TopDocs(0, sds, 0); } @@ -203,7 +201,7 @@ int32_t scoreDocsLength = hq->size(); - ScoreDoc** scoreDocs = _CL_NEWARRAY(ScoreDoc*,scoreDocsLength+1); + const ScoreDoc** scoreDocs = _CL_NEWARRAY(const ScoreDoc*,scoreDocsLength+1); for (int32_t i = scoreDocsLength-1; i >= 0; i--) // put docs in array scoreDocs[i] = hq->pop(); @@ -229,7 +227,7 @@ Weight* weight = query->weight(this); Scorer* scorer = weight->scorer(reader); if (scorer == NULL){ - ScoreDoc** sds = _CL_NEWARRAY(ScoreDoc*,1); + const ScoreDoc** sds = _CL_NEWARRAY(const ScoreDoc*,1); sds[0]=NULL; return _CLNEW TopFieldDocs(0, sds, 0, __CONST_CAST(const SortField**,sort->getSort()) ); } @@ -245,9 +243,9 @@ _CLDELETE(scorer); int32_t hqLen = hq->size(); - ScoreDoc** scoreDocs = _CL_NEWARRAY(ScoreDoc*,hqLen+1); + const ScoreDoc** scoreDocs = _CL_NEWARRAY(const ScoreDoc*,hqLen+1); for (int32_t i = hqLen-1; i >= 0; i--) // put docs in array - scoreDocs[i] = hq->fillFields ((FieldDoc*) hq->pop()); + scoreDocs[i] = hq->fillFields (hq->pop()); scoreDocs[hqLen] = NULL; Query* wq = weight->getQuery(); @@ -259,7 +257,7 @@ int32_t totalHits0 = totalHits[0]; _CLDELETE(hq); if ( bits != NULL && filter->shouldDeleteBitSet(bits) ) - _CLDELETE(bits); + _CLDELETE(bits); _CLDELETE_ARRAY(totalHits); return _CLNEW TopFieldDocs(totalHits0, scoreDocs, hqLen, __CONST_CAST(const SortField**,hqFields) ); } Modified: trunk/src/CLucene/search/MultiSearcher.cpp =================================================================== --- trunk/src/CLucene/search/MultiSearcher.cpp 2006-07-02 09:56:39 UTC (rev 2252) +++ trunk/src/CLucene/search/MultiSearcher.cpp 2006-07-02 09:58:32 UTC (rev 2253) @@ -110,12 +110,12 @@ for (int32_t i = 0; i < searchablesLen; i++) { // search each searcher TopDocs* docs = searchables[i]->_search(query, filter, nDocs); totalHits += docs->totalHits; // update totalHits - ScoreDoc** scoreDocs = docs->scoreDocs; + const ScoreDoc** scoreDocs = docs->scoreDocs; int32_t j = 0; while (scoreDocs[j] != NULL ){ //for ( j <scoreDocsLen; j++) { // merge scoreDocs int_to hq - ScoreDoc* scoreDoc = scoreDocs[j]; - scoreDoc->doc += starts[i]; // convert doc + const ScoreDoc* scoreDoc = scoreDocs[j]; + ((ScoreDoc*)scoreDoc)->doc += starts[i]; // convert doc if ( !hq->insert(scoreDoc)) break; // no more scores > minScore @@ -127,11 +127,11 @@ int32_t scoreDocsLen = hq->size(); - ScoreDoc** scoreDocs = _CL_NEWARRAY(ScoreDoc*, scoreDocsLen+1); + const ScoreDoc** scoreDocs = _CL_NEWARRAY(const ScoreDoc*, scoreDocsLen+1); {//MSVC 6 scope fix for (int32_t i = scoreDocsLen-1; i >= 0; i--) // put docs in array - scoreDocs[i] = (ScoreDoc*)hq->pop(); + scoreDocs[i] = hq->pop(); scoreDocs[scoreDocsLen] = NULL; } @@ -183,17 +183,14 @@ } totalHits += docs->totalHits; // update totalHits - ScoreDoc** scoreDocs = docs->scoreDocs; + const ScoreDoc** scoreDocs = docs->scoreDocs; bool done=false; for(int32_t j = 0;j<docs->scoreDocsLength;j++){ // merge scoreDocs into hq - if ( !done ){ - ScoreDoc* scoreDoc = scoreDocs[j]; - scoreDoc->doc += starts[i]; // convert doc - if (!hq->insert ((FieldDoc*)scoreDoc)) //todo: casting - done = true; // no more scores > minScore - }//else - // _CLDELETE(scoreDocs[j]); + const ScoreDoc* scoreDoc = scoreDocs[j]; + ((ScoreDoc*)scoreDoc)->doc += starts[i]; // convert doc + if (!hq->insert ((FieldDoc*)scoreDoc)) //todo: casting + break; // no more scores > minScore } _CLDELETE_ARRAY(scoreDocs); @@ -203,7 +200,7 @@ } int32_t hqlen = hq->size(); - ScoreDoc** scoreDocs = _CL_NEWARRAY(ScoreDoc*,hqlen+1); + const ScoreDoc** scoreDocs = _CL_NEWARRAY(const ScoreDoc*,hqlen+1); for (int32_t j = hqlen - 1; j >= 0; j--) // put docs in array scoreDocs[j] = hq->pop(); scoreDocs[hqlen]=NULL; Modified: trunk/src/CLucene/search/SearchHeader.cpp =================================================================== --- trunk/src/CLucene/search/SearchHeader.cpp 2006-07-02 09:56:39 UTC (rev 2252) +++ trunk/src/CLucene/search/SearchHeader.cpp 2006-07-02 09:58:32 UTC (rev 2253) @@ -98,7 +98,7 @@ } -TopDocs::TopDocs(const int32_t th, ScoreDoc **sds, int32_t scoreDocsLen): +TopDocs::TopDocs(const int32_t th, const ScoreDoc **sds, int32_t scoreDocsLen): totalHits(th), scoreDocsLength(scoreDocsLen){ //Func - Constructor Modified: trunk/src/CLucene/search/SearchHeader.h =================================================================== --- trunk/src/CLucene/search/SearchHeader.h 2006-07-02 09:56:39 UTC (rev 2252) +++ trunk/src/CLucene/search/SearchHeader.h 2006-07-02 09:58:32 UTC (rev 2253) @@ -45,11 +45,11 @@ const int32_t totalHits; /** Expert: The top hits for the query. */ - ScoreDoc** scoreDocs; + const ScoreDoc** scoreDocs; const int32_t scoreDocsLength; /** Expert: Constructs a TopDocs. TopDocs takes ownership of the ScoreDoc array*/ - TopDocs(const int32_t th, ScoreDoc **sds, int32_t scoreDocsLength); + TopDocs(const int32_t th, const ScoreDoc **sds, int32_t scoreDocsLength); ~TopDocs(); }; @@ -102,7 +102,7 @@ * @param scoreDocs The top hits for the query. * @param fields The sort criteria used to find the top hits. */ - TopFieldDocs (int32_t totalHits, ScoreDoc** scoreDocs, int32_t scoreDocsLen, const SortField** fields): + TopFieldDocs (int32_t totalHits, const ScoreDoc** scoreDocs, int32_t scoreDocsLen, const SortField** fields): TopDocs (totalHits, scoreDocs, scoreDocsLen) { this->fields = fields; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |