发现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了!