view
- <!--
page title --> -
< title > -
< xsl:text > Nutch: </ xsl:text > -
< xsl:value-of select ="title" disable-output-escaping ="yes" /> -
</ title > - <!--
insert style --> -
< xsl:copy-of select ="document('../include/style.html')" /> - <!--
specify icon file --> -
< link rel ="icon" href ="../img/favicon.ico" mce_href ="img/favicon.ico" type ="image/x-icon" /> -
< link rel ="shortcut icon" href ="../img/favicon.ico" mce_href ="img/favicon.ico" type ="image/x-icon" />
Nutch的默认选项保存在default.xml文件中,如果要进行修改的话在nutch-site.xml文件中重写一下即可。
在二次开发的时候,需要重点对Nutch的界面及界面显示数据进行适当的调整。
目前据我了解到的要修改的地方有以下几点:
1.
2.
3.
4.
5.
6.
7.
8.
9.
右上角“简介”、“常见问题”在搜索主界面不乱吗,但搜索时乱码的问题
修改
<?xml
把对应图片替换掉即可
Tomcat
Tomcat
貌似系统已经提供了查询结果行,就是这样一句话
(1)在搜索开始之前,比如import语句区域后面,记录一下当前时间
<%
//搜索用时计算
long
%>
(2)在搜索结束之后,比如RSS语句之前,记录一下当前时间
<%
long
%>
(3)两者相减,得到查询所用时间,单位为ms
<p>搜索用时:<%=
(1)删除这段代码,这段代码是系统自带的搜索结果提示
注:i18n即java的internationalization问题,即使java同时支持多种语言,对我国这种非英语国家且汉字有多种编码方式的情况下很有现实意义。
view
- <i18n:message
key="hits" > -
<i18n:messageArg value="<%=new Long((end==0)?0:(start+1))%>" /> -
<i18n:messageArg value="<%=new Long(end)%>" /> -
<i18n:messageArg value="<%=new Long(hits.getTotal())%>" /> - </i18n:message>
<div
(3)在搜索结束后用下面的JS脚本改变div的内容
view
- <mce:script
language="javascript" ><!-- -
document.getElementByIdx('result-tips' ).innerHTML="共约 <%=new Long(hits.getTotal())%> 条结果,当前第 <%=new Long((end==0)?0:(start/10+1))%> 页, 搜索用时 <%= endTime-startTime %> ms" ; - //
--></mce:script>
在文件Tomcat
<configuration>
...
view
- <
property > -
< name > searcher.summary.length</ name > -
< value > 100</ value > -
< description > -
The total number of terms to display in a hit summary. -
</ description > - </
property >
...
</configuration>修改后,重启Tomcat服务即可生效。
注:我的搜索结果中,有些快照中只有一个链接没有内容,有些有,可能抓取时超时没抓取到内容。
所谓网页快照及搜索引擎服务器端存储的网页副本。Nutch通过关键字进行搜索网页的时候,会查询出这个关键字对应的相关信息,比如:title、
Hit
HitDetails
….
String
另外还涉及到Nutch
修改cached.jsp,把
content
改成
如果需要对内容的显示方面做一些修改的话,通过该页面也可以修改。
修改后立即生效。
(nutch默认的页面hits有重复,最后一页出现showallhits的按钮,原来还以为是底层抓取重复,后来才发现是网页上的问题。不知道hitsPerSite这个变量到底是起什么作用的,为啥还有个showallhits,解决方法如下)
在search.jsp中修改下面的语句
int
为
int
默认情况下,搜索引擎Nutch在查询搜索结果时,只有下一页功能。主要是Nutch采用了“80/20”原则,即返回前面最相关的记录,而基本上的用户都不会去关心第三页以后的内容。
把 search.jsp文件中
view
- <
% - if
((hits.totalIsExact() && end < hits.getTotal ()) // more hits to show -
|| (!hits.totalIsExact() && (hits.getLength() > start+hitsPerPage))) { - %>
-
< 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 ="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 > - <
% -
} - 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 ="< i18n:message key="showAllHits"/>" > - <
% if (sort != null) { %> -
< input type ="hidden" name ="sort" value ="<%=sort%>" > -
< input type ="hidden" name ="reverse" value ="<%=reverse%>" > - <
% } %> -
</ form > - <
% -
} - %>
view
- <%---------------------------------------------------%>
- <table
align="center" > -
<tr> -
<td> -
<% -
// 显示上一页按钮 -
if (start >= hitsPerPage) -
{ -
%> -
<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="上一页" > -
<%} %> -
</form> -
-
<% -
//显示页码按钮 -
int startnum=1 ; -
//页面中最前面的页码编号,我设定(满足)共10页,当页为第6页 -
//若果结果大于等于11页,每次显示11个按钮,当前按钮在最中间,即第6个 -
if ((int )(start/hitsPerPage)>=5 ) -
startnum=(int )(start/hitsPerPage)-4 ; -
for (int i=hitsPerPage*(startnum-1 ),j=0 ;i<=hits.getTotal()&&j<=10 ;) -
{ -
if (hits.getTotal()%10 ==0 &&i==hits.getTotal()) break ; //搜索结果为整数的时候处理 -
%> -
<td> -
<%=startnum%> && <%=hits.getTotal()%> -
<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="<%=i%>" > -
<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/hitsPerPage+1 %>" > -
</form> -
</td> -
<% -
i=i+10 ; -
j++; -
}//for -
%> -
<td> -
<% -
//显示下一页按钮 -
if ((hits.totalIsExact() && end < hits.getTotal()) // more hits to show -
|| (!hits.totalIsExact() && (hits.getLength() > start + hitsPerPage))) { -
%> -
-
<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="h