宁波seo优化:Nutch中默认把输人词单个进行检索
发布时间:2018-09-22 18:43:50
+^http://([a-zO-9]*.)bjfu.edu.cn/
+Ahttps://([a-zO-9]*.)bjfu.edu.cn/通过简单的一行代码,Nutch即可把抓取限制在校园网内。Nutch分析URL是会判断该URL的HOST是否为bjfu.edu.cn,或者是否以bjfu.edu.cn结尾。不是的话Nutch会将该URL抛弃。
第二行代码是为了保证使用了安全通信的HTTP网点也能被Nutch分析,因为Nutch默认的是不接受这些网页解析,但是抓取时这些URL可能会被添加到死链接中,这些URL量过多的话可能造成不可预期的错误,比如Java内存溢出。
修改nutch-defaultjcml中的厲性
修改nutch-default.xml中的一些属性,使Nutch适合校园网的奕际抓取。
修改抓取的网页内容的长度限制

file.content.limit-1
Thelengthlimitfordownloadedcontent,inbytes.
Ifthisvalueisnonnegative(>=0),contentlongerthanitwillbetruncated;.otherwise,notruncationatall.
Nutch默认的网页内容限制是65536B。但是实际情况会有一些网页内容大于此,而大于此长度的Nutch将抛弃,这显然不是我们期望的,
宁波seo优化因此应取消Nutch对网页内容长度的限制。
用户检索摘要设置
默认的摘要显示为5个terms,20个长度,这个对于想要看到更多网页内容来判断网页是否符合要求的用户来说是不够的,因此需要加大显示的数量。
searcher.summary.context
Thenumberofcontexttermstodisplayprecedingandfollowingmatchingtermsinahitsummary.

searcher.summary.length
Thetotalnumberoftermstodisplayinahitsummary. 网页快照设置
虽然Nutch本身自带了网页快照功能,但是想成功地使用Nutch的每一个功能都需要费一番周折,Nutch的网页快照功能也是需要一些修改才能够实现的。
这里出现的问题与9.3.4节中search,jsp文件出现的问题类似,只需改正转义字符的问题即可。修改cached,jsp第67行:
”>
另外,对于explain,jsp和anchor,jsp文件也存在类似的问题,需要改正转义字符问题。
查询功能优化
优化査询祺玦
在查询时,Nutch默认把词语分成单个词来查,例如,查询“计算机”,Nutch会按照“计”、“算”、“机”来做査询,因此需要对Nutch的查询模块进行优化来提高用户查询的体验值。
修改方案:
在search,jsp中根据用户输入进行查询的语句是:
Queryquery=Query.parse(querystring,queryLang,nutchConf);其中,queryString是用户输人的检索词,queryLang为当前的语言版本,nutchConf为Nutch的配置文件。其中,对第一个参数queryString进行处理。
Nutch中默认把输人词单个进行检索,如果作为整个词进行检索则需要用引号将词括住,如计算机,默认搜索的是“计”、“算”、“机”,而作为一个词语搜索的是:“计算机”。所以给queryString添加引号即可。同时为了提高搜索的精度,把两种搜索方式按布尔方式进行捜索,于是,搜索的实际是“计算机”计算机。
优化分页S示方式
Nutch默认的査询结果页的翻页只有一个“下一页”按钮,在最后一页无法向上翻页,因此还需要对Nutch的査询结果页做进一步的更改。不使用Nutch默认的分页方式,自己添加JSP分页显示。JSP分页显示有很多方式,这里给出一种仅供参考。
在src/web/jsp/search,jsp中,查看第85——第5)8行,其中start、hitsPerPage、hitsPerSite这3个变量和第193行中end、length、realEnd这3个变量是在分页显示时需要用到的参数。第第321行是Nutch默认的分页方案,它给出了next(下一页)和showAllHits(显示全部)两种方式,即是对这些行进行替换,下面给出一种简单的分页方式。
首先在193行后添加两个变量:
intpagecount=(Math.floor(hits.getTotal()/hitsPerPage)+1);intintpage=(Math.floor(start/hitsPerPage)+1);然后修改分页显示方案如下,
<%
bean.LOG.info(“totalpagespagecount);bean.LOG.info(”currentpage:“+intpage);if(intpage!=1){Stringmore=
”query=“+URLEncoder.encode(queryString,”UTF8“)+parains+”&hitsPerSite=“+hitsPerSite+”&lang=queryLang+n&clustering=M+clustering+n&hitsPerPage=“+hitsPerPage+n&start=”+(start-hitsPerPage);if(sort!=null){more=more+“&sort=?,+sort+”&reverse=*+reverse;}
%>
”>
<%
}

intstartpage=Math.max(1,intpage-5);intendpage=Math.min(intpage+5,pagecount)+1;for(inti=startpage;i “query=”+URLEncoder.encode{querystring,“UTF8”)+params+*&hitsPerSite=“+hitsPerSite+”&lang=“+gueryLang+n&clustering=”+clustering+“ShitsPerPage^”+hitsPerPage+n&start=“+(hitsPerPage*(i-1));if{sortl=null){more=more+”&sort=“+sort+”&reverse=“+reverse;%>
**>[<%=i%>]
<%
}else{
%>
<%
}
}
if(intpage!=pagecount){
Stringmore=
*query=”+URLEncoder.encode(querystring,“UTF8”)+params+“&hitsPerSite=n+hitsPerSite+”&lang=M+queryLang+n&clustering=“4-clustering+”&hitsPerPage=hitsPerPage+*&start=,T+end;if(sort!=null){
more=more+“&sort=H+sort+”&reverse=“+reverse;}

%>
”>
<%
}
%>
</p>

其中<31811:messagekey=“previous”/〉与<il8n:messagekey=“next”/>为添加H8n国际化支持,previous显示的为中文字符“上一页”,next显示的为中文字符“下一页”,这两个字段都需要添加到相应的属性文件web/local/org/nutch/jsp/search,property中,具体可见9.4.6节中的介绍。
需要注意的是,修改后的search,jsp要覆盖部署好的search,jsp。
系统部署
经过以上对Nutch的扩展以及爬虫抓取策略的优化,系统已经可以基本满足校园网的搜索引擎平台了。之后就是要对系统进行部署,它的部署步骤与9.3节中所介绍的部署方式的大致相同。

重新抓取两站
这时,运行的参数也要根据实际情况进行改变:bjfuurl.txt-dirBJFU-depth15-threads10这里URL入口列表文件为bjfuurl.txt,抓取的深度为10,需要注意的是,爬虫抓取的线程不能开的过多,这样很容易造成Java虚拟机内存溢出,因为线程越多,一段时间内需要处理的死链接和挂起的URL队列越多,这样很容易导致内存溢出。根据Nutch官方的系统测试’数据,当Nutch同时开启1500个线程时,抓取性能最佳。
为了提Nutch处理的性能,分配给Java虚拟机的内存也增加到1GB。
-Dhadoop.log.dir^=logs-Dhadoop.log.file=hadoop.log-Xmxl024m2.重新打包war文件
利用Ant重新打包war文件,部署到Tomcat下,检査Nutch页面是否正确。
修改Nutch查询界面
如果想用Nutch做自己的捜索引擎,那么必须定制自己的査询界面。对Nutch査询界面修改有两种方式:
直接修改生成后的界面=
修改工程中的xml与xsl文件,重新编译生成。html文件。
使用第二种方法的前提是要对Nutch的网页文件结构有所理解,对国际化有一定的了解。


Nutch賙页文件结构
3个部分
对于每一种语言,下面的3个部分是必须要转换的。
网页头部:这是每一个页面上部都有的链接。
静态页面:包括“关于”、“搜索”、“帮助”3个页面。
动态页面,用于动态构建捜索结果页面。
页面文件
Nutch的页面文件在src/web文件夹下。主要包括:
include。主要是页面的头部和底部包含文件,其中style,html中定义的是页面的显示样式。不同地区的文件夹里是头部文件。
Local。国际化支持属性文件。

pages。各个地区的静态页面文件,分别为about.xml、search.xml、help.xml。其中,search,xml是访问的首页。
style。下面的两个文件nutch-header.xsl、nutch-page.xsl,是、中XML文件生成HTML文件的样式表,其中的header,xml,search,xml等文件根据相应的。xsl文件生成。html文件。
jsp。动态页面。搜索结果的属性文件为local/org/nutch/jsp/search_lang.properties。
页面生成

通过査看build,xml文件可以知道Nutch是如何生成网站页面的:
header。位于src/web/include/lang/header.xml,它的样式定义文件为src/web/style/nutch-header.xsl?生成的文件在build/docs/lang/include/header.html.
page,位于src/web/pages/lang/search.xml,它的样式定义文件为src/web/style/nutch-page.xslo因为Nutch采用了国际化支持,因此这些页面里的字符也必须符合国际化支持的标准。
添加il8n国际化支持
査看Nutch的页面会发现,在文件中并未出现任何中文字符,但是捜索显示的确实是中文字符,而在页面中添加中文字符Ant却会出错。这是因为Nutch使用了il8n,亦称国际化支持。
jsp文件中会找到类似与下面的语句:

<%@tagliburi=“http://jakarta.apache.org/taglibs/il8nnprefix=”il8nn%>
第二行就是该文件绑定的il8n字符文件,查找web/local/org/nutch/jsp文件夹,会找到search,property文件,其中定义了一些il8n字符集。
当文件中需要使用字符集的时候,就是用il8n定义的语法来显示:

n/>
”/>
”/>
所以当自己定义界面、修改显示文字时,需要自己査找每个字符所表示的UTF-8编码,然后添加进相应的属性文件。
修改页面
根据上面的介绍,现在已经知道了要修改的主要页面。另外,还有几个需要注意的问题:
修改的页面中的编码方式应为UTF-8,而非GB2312,否则Tomcat的支持会出现乱码。
找到local文件夹下相应的属性文件,添加相应的字符集,然后在页面中添加il8n属性。

修改XML和XSL页面。
修改后,运行Ant,Nutch生成页面的命令为generate-docs。因此如果修改了文件的目录结构或者生成结构,还要修改build,xml的相应语句。执行成功后生成的页面则会在build/docs下看到。
重新执行war或者job命令,打包。
岛錯晶荀醐餓
经过以上的实验步骤,最终运行Nutch,对局域网进行抓取。抓取完成后,修改Tomcat下部署好的Nutch文件nutch-site.xml,告诉Nutch索引地址,开始进行检索。
测试结果

两站曾页
修改后的网站首页如图9-28所示。这里显示的文字全部是中文了。
*助校艟王觅
梭?网遂。搜索d筆

昼
L性《?
图9-28校园网搜索引擎首页界面
査嫡结果
本文转载自
宁波seo优化www.leseo.net
补充词条:宁波谷歌优化
宁波网站seo
宁波谷歌seo
宁波网站优化推广
宁波网络seo