信息检索实验报告
发布时间:2015-06-30 17:29:33
发布时间:2015-06-30 17:29:33
实验指导
将nutch-0.9,tomcat, paoding-analysis-2.0.4-alpha2,apache-ant-1.8.3 拷到D:\test\目录还要对Tomcat\webapps\nutch-0.9\WEB-INF\classes中的nutch-site.xml文件进行修改,其中value=D:\test\nutch-0.9\crawl\的值必须对应你所采集到的文件,并且环境变量的配置也必须改变),并配置环境变量(右击我的电脑----高级-----环境变量,如下图)
如果没有安装jdk 需要先安装jdk 安装目录为:C:\Program Files\Java\jdk1.7.0
在用户变量中,编辑PATH,变量值D:\test\apache-ant-1.8.3\bin;C:\Program Files\Java\jdk1.7.0\bin
在系统变量中,新建ANT_HOME,变量值D:\test\apache-ant-1.8.3
在系统变量中,新建CATALINA_HOME,变量值D:\test\Tomcat
在系统变量中,编辑CLASSPATH,变量值
D:\test\nutch-0.9\src\plugin\lib-paoding-analyzers\paoding-analysis.jar; C:\Program Files\Java\jdk1.7.0\lib
在系统变量中,新建NUTCH_JAVA_HOME,变量值C:\Program Files\Java\jdk1.7.0
在系统变量中,新建PAODING_DIC_HOME,变量值D:\test\paoding-analysis-2.0.4-alpha2\dic
在系统变量中,新建JAVA_HOME,变量值C:\Program Files\Java\jdk1.7.0
运行tomcat,进入tomcat\bin文件夹,双击startup.bat.。打开浏览器,输入http://127.0.0.1:8080/nutch-0.9,出现如下画面说明nutch 运行成功:
下面我们就可以进行检索了,如输入“北京邮电大学”就可以看到检测结果。点击“评分详解”,还可以看到分词的结果,如下图所示:
我们还可以用luke查看索引分词的结果,进入CMD,输入cd D: \test\nutch-0.9\ 回车
再输入 D: 回车 输入java -jar lukeall-3.5.0.jar
就可以看到如下画面;或者去D:\test\nutch-0.9\ lukeall-3.5.0.jar(点击)
点击“browse”,选择D:\test\nutch-0.9\crawl, 我们就可以看到索引分词结果了。我们也可以在luke中进行检索,选择“search”选项卡,输入“北京”就可以看到检索结果:
如果想自己采集数据,还要安装cygwin软件。安装过程如下:
安装到的目录D:/cygwin
选择已经下载的安装文件所在的目录(安装包目录)
选择全部安装(install)
安装完成........
建立文本文件D:\test\nutch-0.9\ urls.txt,内容为:
http://www.baidu.com |
该文本定义的是你要抓取的网站,可以自己选取
首先删除nutch-0.9中的crawl文件夹,双击Cygwin快捷方式,启动Cygwin
$ cd /cygdrive/d/test/nutch-0.9/ $ bin/nutch crawl urls.txt -dir crawl -depth 3 -topN 50 |
或者
$ bin/nutch crawl urls.txt -dir crawl -depth 3 > crawl.log? $ bin/nutch crawl urls.txt -dir crawl -depth 3 -threads 4 |
● urls 就是刚才我们创建的url文件,存放我们要抓取的网址
● -dir crawl 指定抓取内容所存放的目录,如上存在crawl中
● -threads 4 指定并发的线程数
● -depth 3 表示以要抓取网站顶级网址为起点的爬行深度
● -topN 50 表示获取前多少条记录,可省
● >crawl.log 日志文件的存储地址,省略则将相关运行信息全部在控制台显示。
抓取后,在nutch目录下生成一个crawl文件夹,里面包含如下目录:
crawldb linkdb | ①/② crawldb/ linkdb:web link目录,存放url 及url的互联关系,作为爬行与重新爬行的依据,页面默认30天过期(可以在nutch-site.xml中配置) |
segments | ③ segments:一存放抓取的页面,与上面链接深度depth相关,depth设为2则在segments下生成两个以时间命名的子文件夹,比如” 20061014163012”,打开此文件夹可以看到,它下面还有6个子文件夹,分别是 crawl_generate: names a set of urls to be fetched crawl_fetch: contains the status of fetching each url content: contains the content of each url parse_text: contains the parsed text of each url parse_data: contains outlinks and metadata parsed from each url crawl_parse: contains the outlink urls, used to update the crawldb |
indexes | ④ indexes:索引目录,我运行时生成了一个” part-00000”的文件夹, |
index | ⑤ index:lucene的索引目录(nutch是基于lucene的,在nutch-0.9\lib下可以看到lucene-core-2.1.0.jar,最后有luke工具的简单使用方法),是indexs里所有index合并后的完整索引,注意索引文件只对页面内容进行索引,没有进行存储,因此查询时要去访问segments目录才能获得页面内容 |
大多数的搜索引擎都会提供布尔操作符让用户可以组合查询,典型的布尔操作符有 AND, OR, NOT。Lucene 支持 5 种布尔操作符,分别是 AND, OR, NOT, 加(+), 减(-)。每个操作符的用法如下。
OR: 如果你要搜索含有字符 A 或者 B 的文档,那么就需要使用 OR 操作符。需要记住的是,如果你只是简单的用空格将两个关键词分割开,其实在搜索的时候搜索引擎会自动在两个关键词之间加上 OR 操作符。例如,“Java OR Lucene” 和 “Java Lucene” 都是搜索含有 Java 或者含有 Lucene 的文档。
AND: 如果你需要搜索包含一个以上关键词的文档,那么就需要使用 AND 操作符。例如,“Java AND Lucene” 返回所有既包含 Java 又包含 Lucene 的文档。
NOT: Not 操作符使得包含紧跟在 NOT 后面的关键词的文档不会被返回。例如,如果你想搜索所有含有 Java 但不含有 Lucene 的文档,你可以使用查询语句 “Java NOT Lucene”。但是你不能只对一个搜索词使用这个操作符,比如,查询语句 “NOT Java” 不会返回任何结果。
加号(+): 这个操作符的作用和 AND 差不多,但它只对紧跟着它的一个搜索词起作用。例如,如果你想搜索一定包含 Java和 Lucene 的文档,就可以使用查询语句“Java+Lucene”。
减号(-): 这个操作符的功能和 NOT 一样,查询语句 “Java -Lucene” 返回所有包含 Java 但不包含 Lucene 的文档。
本次检索中,由于只配置了中文,nutch不识别or and not操作符,在此只给出用+ -操作符的例子。
另外,对于如大学这类词语,检索时可以分成大 大学两个词,在分词时可以使用""来限定。
Q&A
1.
Q:将 nutch-0.9,tomcat, paoding-analysis-2.0.4-alpha2,apache-ant-1.8.3 拷到C 盘根目录,并配置好环境变量后,为何搜索出0项选择结果?
A:0项查询结果说明数据检索库没加载,通过检查nutch-0.9目录发现crawl目录被删除了,重新拷入crawl,重启计算机。
2.
Q:用 luke 查看索引分词的结果,进入CMD,输入cd C:\nutch-0.9>java –jar lukeall-3.5.0.jar,看到如下画面:
A:命令输入过程中出现错误,改变输入命令方式如图: