关闭

修改nutch分页功能

809人阅读 评论(2) 收藏 举报

发现nutch的分页功能做的实在是粗糙,最主要的是没有上一页,而且一出场默认显示两条记录来,再来个showAllhits,多余!这是个问题,今天早上花了一个小时再去修改它的分页。修改后的效果如下:

当前处在第一页,显示后面的页数和下一页

当前处在第二页,显示前面和后面的页数、上一页、下一页(我抓的是公司的网站,最常用的关键字也只有两页,囧)

css自己调,简要说明下修改过程:

1、去掉showAllhits功能,可以全部注释掉,或者直接干掉

<!-- 去掉 showAllhits 功能-->
<%--
   if ((!hits.totalIsExact() && (hits.getLength() <= start+hitsPerPage))) {
--%><!--
    <form name="showAllHits" action="../search.jsp" method="get">
    <input type="hidden" name="query" value="<%=htmlQueryString%>">
    <input type="hidden" name="lang" value="<%=queryLang%>">
    <input type="hidden" name="hitsPerPage" value="<%=hitsPerPage%>">
    <input type="hidden" name="hitsPerSite" value="0">
    <input type="hidden" name="clustering" value="<%=clustering%>">
 <input type="submit" value="More..">-->
<%-- if (sort != null) { --%><!--
    <input type="hidden" name="sort" value="<%=sort%>">
    <input type="hidden" name="reverse" value="<%=reverse%>">-->
<%-- } --%><!--
    </form>-->
<%--
    }
--%>

2、去掉这个后,把下一页的功能换成

<table id="paging">
<tr>
<!-- 上一页功能 -->
<%
 if (start >= hitsPerPage) // more hits to show
    {
%>
<td>
 <form name="pre" action="../search.jsp" method="get">
 <input type="hidden" name="query" value="<%=htmlQueryString%>">
 <input type="hidden" name="lang" value="<%=queryLang%>">
 <input type="hidden" name="start" value="<%=start - hitsPerPage%>">
 <input type="hidden" name="hitsPerPage" value="<%=hitsPerPage%>">
 <input type="hidden" name="hitsPerSite" value="<%=hitsPerSite%>">
 <input type="hidden" name="clustering" value="<%=clustering%>">
 <input type="submit" value="上一页">
<% if (sort != null) { %>
    <input type="hidden" name="sort" value="<%=sort%>">
    <input type="hidden" name="reverse" value="<%=reverse%>">
<% } %>
</form>
</td>
<% } %>

<!-- 分页功能 -->
<%  long totalPage = hits.getTotal()%hitsPerPage>0?hits.getTotal()/hitsPerPage+1:hits.getTotal()/hitsPerPage;//总页数
 long currentPage = start/hitsPerPage+1;//当前页数
 for(long i=1; i<=totalPage; i++){
  if(i==currentPage){
%>
<td><%=currentPage %></td>
<%  
  }else{
%>
<td>
<form name="next" action="../search.jsp" method="get">
 <input type="hidden" name="query" value="<%=htmlQueryString%>">
 <input type="hidden" name="lang" value="<%=queryLang%>">
 <input type="hidden" name="start" value="<%=hitsPerPage*(i-1)%>">
 <input type="hidden" name="hitsPerPage" value="<%=hitsPerPage%>">
 <input type="hidden" name="hitsPerSite" value="<%=hitsPerSite%>">
 <input type="hidden" name="clustering" value="<%=clustering%>">
 <input type="submit" value="<%=i %>">
 <% if (sort != null) { %>
    <input type="hidden" name="sort" value="<%=sort%>">
    <input type="hidden" name="reverse" value="<%=reverse%>">
<% } %>
</form>
</td>
<% }
} %>


<!-- 下一页功能 -->
<%
if ((hits.totalIsExact() && end < hits.getTotal()) // more hits to show
    || (!hits.totalIsExact() && (hits.getLength() >= start+hitsPerPage))) {
%>
<td>
<form name="next" action="../search.jsp" method="get">
    <input type="hidden" name="query" value="<%=htmlQueryString%>">
    <input type="hidden" name="lang" value="<%=queryLang%>">
<!--    <input type="hidden" name="start" value="<%=end%>">-->
 <input type="hidden" name="start" value="<%=start+hitsPerPage%>">
    <input type="hidden" name="hitsPerPage" value="<%=hitsPerPage%>">
<!--    <input type="hidden" name="hitsPerSite" value="<%=hitsPerSite%>">-->
    <input type="hidden" name="clustering" value="<%=clustering%>">
    <input type="submit" value="<i18n:message key="next"/>">
<% if (sort != null) { %>
    <input type="hidden" name="sort" value="<%=sort%>">
    <input type="hidden" name="reverse" value="<%=reverse%>">
<% } %>
</form>
</td>
<% } %>
</tr>
</table>

分别为上一页、分页、下一页。加table是为了让他们排在一列,你懂的!

3、需要修改默认的hitsPerSite,刚开始默认为2

int hitsPerSite = 0;                            // max hits per site

ok了!

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:333986次
    • 积分:3011
    • 等级:
    • 排名:第12147名
    • 原创:60篇
    • 转载:45篇
    • 译文:0篇
    • 评论:57条
    文章分类