|
- /**
- *TriestoaddnewdocumentstohitDocs.
- *Ensuresthatthehitnumbered<code>min</code>hasbeenretrieved.
- */
- privatefinalvoidgetMoreDocs(intmin)throwsIOException{
- if(hitDocs.size()>min){
- min=hitDocs.size();
- }
- intn=min*2;//double#retrieved
- TopDocstopDocs=(sort==null)?searcher.search(weight,filter,n):
- searcher.search(weight,filter,n,sort);
- length=topDocs.totalHits;
- ScoreDoc[]scoreDocs=topDocs.scoreDocs;
- floatscoreNorm=1.0f;
- if(length>0&&topDocs.getMaxScore()>1.0f){
- scoreNorm=1.0f/topDocs.getMaxScore();
- }
- intstart=hitDocs.size()-nDeletedHits;
- //anynewdeletions?
- intnDels2=countDeletions(searcher);
- debugCheckedForDeletions=false;
- if(nDeletions<0||nDels2>nDeletions){
- //eitherwecannotcountdeletions,orsome"previouslyvalidhits"
- mighthavebeendeleted,sofindexactstartpoint
- nDeletedHits=0;
- debugCheckedForDeletions=true;
- inti2=0;
- for(inti1=0;i1<hitDocs.size()&&i2<scoreDocs.length;i1++){
- intid1=((HitDoc)hitDocs.get(i1)).id;
- intid2=scoreDocs[i2].doc;
- if(id1==id2){
- i2++;
- }else{
- nDeletedHits++;
- }
- }
- start=i2;
- }
- intend=scoreDocs.length<length?scoreDocs.length:length;
- length+=nDeletedHits;
- for(inti=start;i<end;i++){
- hitDocs.addElement(newHitDoc(scoreDocs.score*scoreNorm,
- scoreDocs.doc));
- }
- nDeletions=nDels2;
- }
|
|
|