信息检索实验报告

发布时间:2015-06-30 17:29:33

实验指导

1. 安装相关文件

nutch-0.9tomcat, paoding-analysis-2.0.4-alpha2apache-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 运行成功:

2. 数据检索

下面我们就可以进行检索了,如输入“北京邮电大学”就可以看到检测结果。点击“评分详解”,还可以看到分词的结果,如下图所示:

3. 查看索引分词结果

我们还可以用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”选项卡,输入“北京”就可以看到检索结果:

4. 采集数据

如果想自己采集数据,还要安装cygwin软件。安装过程如下:

4.1. 选择install from local directory

安装到的目录D:/cygwin

选择已经下载的安装文件所在的目录(安装包目录)

选择全部安装(install)

安装完成........

4.2. 配置抓取的起始网站地址

建立文本文件D:\test\nutch-0.9\ urls.txt,内容为:

http://www.baidu.com

该文本定义的是你要抓取的网站,可以自己选取

4.3. 抓取

首先删除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 日志文件的存储地址,省略则将相关运行信息全部在控制台显示。

5. 说明: 观察抓取后生成的目录

抓取后,在nutch目录下生成一个crawl文件夹,里面包含如下目录:

crawldb

linkdb

/ crawldb/ linkdbweb 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

indexlucene的索引目录(nutch是基于lucene的,在nutch-0.9\lib下可以看到lucene-core-2.1.0.jar,最后有luke工具的简单使用方法),是indexs里所有index合并后的完整索引,注意索引文件只对页面内容进行索引,没有进行存储,因此查询时要去访问segments目录才能获得页面内容

6. 布尔检索

大多数的搜索引擎都会提供布尔操作符让用户可以组合查询典型的布尔操作符有 AND, OR, NOTLucene 支持 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.9tomcat, paoding-analysis-2.0.4-alpha2apache-ant-1.8.3 拷到C 盘根目录,并配置好环境变量后,为何搜索出0项选择结果?

A0项查询结果说明数据检索库没加载,通过检查nutch-0.9目录发现crawl目录被删除了,重新拷入crawl,重启计算机。

2.

Q luke 查看索引分词的结果,进入CMD,输入cd C:\nutch-0.9>java –jar lukeall-3.5.0.jar,看到如下画面:

A:命令输入过程中出现错误,改变输入命令方式如图:

信息检索实验报告

相关推荐