org.apache.lucene.search.Hits.java搜索索引

  1. /**
  2. *TriestoaddnewdocumentstohitDocs.
  3. *Ensuresthatthehitnumbered<code>min</code>hasbeenretrieved.
  4. */
  5. privatefinalvoidgetMoreDocs(intmin)throwsIOException{
  6. if(hitDocs.size()>min){
  7. min=hitDocs.size();
  8. }
  9. intn=min*2;//double#retrieved
  10. TopDocstopDocs=(sort==null)?searcher.search(weight,filter,n):
  11. searcher.search(weight,filter,n,sort);
  12. length=topDocs.totalHits;
  13. ScoreDoc[]scoreDocs=topDocs.scoreDocs;
  14. floatscoreNorm=1.0f;
  15. if(length>0&&topDocs.getMaxScore()>1.0f){
  16. scoreNorm=1.0f/topDocs.getMaxScore();
  17. }
  18. intstart=hitDocs.size()-nDeletedHits;
  19. //anynewdeletions?
  20. intnDels2=countDeletions(searcher);
  21. debugCheckedForDeletions=false;
  22. if(nDeletions<0||nDels2>nDeletions){
  23. //eitherwecannotcountdeletions,orsome"previouslyvalidhits"
  24. mighthavebeendeleted,sofindexactstartpoint
  25. nDeletedHits=0;
  26. debugCheckedForDeletions=true;
  27. inti2=0;
  28. for(inti1=0;i1<hitDocs.size()&&i2<scoreDocs.length;i1++){
  29. intid1=((HitDoc)hitDocs.get(i1)).id;
  30. intid2=scoreDocs[i2].doc;
  31. if(id1==id2){
  32. i2++;
  33. }else{
  34. nDeletedHits++;
  35. }
  36. }
  37. start=i2;
  38. }
  39. intend=scoreDocs.length<length?scoreDocs.length:length;
  40. length+=nDeletedHits;
  41. for(inti=start;i<end;i++){
  42. hitDocs.addElement(newHitDoc(scoreDocs[i].score*scoreNorm,
  43. scoreDocs[i].doc));
  44. }
  45. nDeletions=nDels2;
  46. }

你可能感兴趣的:(java,apache,Lucene)