lucene结果集的分页处理(百度 分页 方式)(转)

导读:
  做一个搜索引擎就要像个样子,做的专业一些才好,因此在分页处理时也采用类似百度和google的分页方式。
  对于结果集的处理,大家各有办法,总结起来就是缓存和重新查询两种方式,lucene推荐第二种,如果使用缓存的方式感觉控制资源的释放比较困难,在并发性较多的情况下系统可能资源耗尽,因此我们这里采用lucene推荐的做法实现类似百度和google的分页效果。
  终于调试通过了,大家可以直接使用了,哪里不清楚可以给我留言。
  <%@ page contentType="text/html; charset=gb2312" buffer="none"%>
  <%@ page import="java.util.*"%>
  <%

//初始化全局变量

int totalNum = 0; //总共记录条数

int numPerPage = 0; //每页显示记录条数

int maxPageNum = 0; //本次搜索最大页数

int curPage = 1; //当前页

int startLocation = 0; //起始位置



Vector searchresult = (Vector) session.getAttribute("searchresult");



numPerPage = ((Integer)session.getAttribute("setPageNum")).intValue();

totalNum = searchresult.size();

maxPageNum=((totalNum%numPerPage) == 0)?totalNum/numPerPage:(totalNum/numPerPage+1);

curPage=startLocation/numPerPage + 1;



%>  //初始化全局变量

  int totalNum = 0; //总共记录条数

  int numPerPage = 0; //每页显示记录条数

  int maxPageNum = 0; //本次搜索最大页数

  int curPage = 1; //当前页

  int startLocation = 0; //起始位置

  

  Vector searchresult = (Vector) session.getAttribute("searchresult");

  

  numPerPage = ((Integer)session.getAttribute("setPageNum")).intValue();

  totalNum = searchresult.size();

  maxPageNum=((totalNum%numPerPage) == 0)?totalNum/numPerPage:(totalNum/numPerPage+1);

  curPage=startLocation/numPerPage + 1;

  

  %>
  
  
  
   查询结果页面
  
  
  <%



if(request.getParameter("startLocation")!=null)

{

startLocation = Integer.parseInt(request.getParameter("startLocation")); //取当前页码

System.out.println("startLocation ="+startLocation);

curPage = ((startLocation%numPerPage) == 0)?(startLocation/numPerPage):(startLocation/numPerPage+1);

curPage=curPage+1;

System.out.println("curPage ="+curPage);

}



%>  

  if(request.getParameter("startLocation")!=null)

  {

  startLocation = Integer.parseInt(request.getParameter("startLocation")); //取当前页码

  System.out.println("startLocation ="+startLocation);

  curPage = ((startLocation%numPerPage) == 0)?(startLocation/numPerPage):(startLocation/numPerPage+1);

  curPage=curPage+1;

  System.out.println("curPage ="+curPage);

  }

  

  %>
  
  

  







  System.out.println("startLocation="+startLocation);

  for(int i=startLocation; i
  String result = (String) searchresult.elementAt(i);

  out.println("












  String result = (String) searchresult.elementAt(i);

  out.println("

















  
  

  查询结果
  
     <% if(curPage<  if(curPage
");   out.println("
");

  out.println(result);

  out.println("
");   out.println(" ");   }   }else{   System.out.println("totalNum="+totalNum);   for(int i=startLocation; i
");   out.println("
");

  out.println(result);

  out.println("
");   out.println(" ");   }   }   //searchresult.clear();   %>   

  

  
  
  

  <%

if (curPage >  if (curPage >1 ) {

  out.println("上一页");

  }

  if(maxPageNum >10) {

  int totalNumShow = curPage + 9;

  int startLocationPage = 0;

  if( totalNumShow >maxPageNum) {

  totalNumShow = maxPageNum;

  }

  if( maxPageNum >11 &&curPage >11) {

  startLocationPage = curPage - 11;

  }

  for(int i=startLocationPage;i
  if(i+1 == curPage) {

  %> [<%=i+1%>] <%

  } else {

  %>  <%=i+1 %> <%

  }

  }

  }

  else {

  for( int i=0;i
  if( i+1 == curPage) {

  %> [<%=i+1 %>] <%

  } else {

  %>  <%=i+1 %> <%

  }

  }

  }

  if ( curPage
  out.println(" 下一页");

  }

  %>
  
        
  

  
  

本文转自
http://hi.baidu.com/51project/blog/item/52708ad3ad4f1630970a16a7.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值