java搜索引擎的研究与实现 第4页
3.2.5网络机器人的代码分析
程序结构图如下:
程序代码实现如下:
package news;
/**
* 新闻搜索引擎
* 计算机99630 沈晨
* 版本 1.0
*/
import com.heaton.bot.HTTP;
import com.heaton.bot.HTTPSocket;
import com.heaton.bot.ISpiderReportable;
import com.heaton.bot.IWorkloadStorable;
import com.heaton.bot.Spider;
import com.heaton.bot.SpiderInternalWorkload;
/**
* 构造一个Bot程序
*/
public class Searcher
implements ISpiderReportable {
public static void main(String[] args) throws Exception {
IWorkloadStorable wl = new SpiderInternalWorkload();
Searcher _searcher = new Searcher();
Spider _spider
= new Spider(_searcher, "
http://127.0.0.1/news.htm",
new HTTPSocket(), 100, wl);
_spider.setMaxBody(100);
_spider.start();
}
// 发现内部连接时调用,url表示程序发现的URL,若返回true则加入作业中,否则不加入。
public boolean foundInternalLink(String url) {
return false;
}
// 发现外部连接时调用,url表示程序所发现的URL,若返回true则把加入作业中,否则不加入。
public boolean foundExternalLink(String url) {
return false;
}
// 当发现其他连接时调用这个方法。其他连接指的是非HTML网页,可能是E-mail或者FTP
public boolean foundOtherLink(String url) {
return false;
}
// 用于处理网页,这是Spider程序要完成的实际工作。
public void processPage(HTTP http) {
System.out.println("扫描网页:" + http.getURL());
new HTMLParse(http).start();
}
// 用来请求一个被处理的网页。
public void completePage(HTTP http, boolean error) {
}
// 由Spider程序调用以确定查询字符串是否应删除。如果队列中的字符串应当删除,方法返回真。
public boolean getRemoveQuery() {
return true;
}
// 当Spider程序没有剩余的工作时调用这个方法。
public void spiderComplete() { }}
3.3小节
在本章中,首先介绍了网络机器人的基本概念,然后具体分析了Spider程序的结构和功能。在最后还结合具体代码进行了详细说明。
本人在编程中运用了JavaTM技术,主要涉及到了net和io两个包。此外还用了第三方开发包Bot(由Jeff Heaton提供的开发包)。
第四章 基于lucene的索引与搜索
4.1什么是Lucene全文检索
Lucene是Jakarta Apache的开源项目。它是一个用Java写的全文索引引擎工具包,可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
4.2 Lucene的原理分析
4.2.1全文检索的实现机制
Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表==>记录==>字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到Lucene的存储结构和接口中。
总体上看:可以先把Lucene当成一个支持全文索引的数据库系统。
索引数据源:doc(field1,field2...) doc(field1,field2...)
\ indexer /
_____________
| Lucene Index|
--------------
/ searcher \
结果输出:Hits(doc(field1,field2) doc(field1...))
Document:一个需要进行索引的“单元”,一个Document由多个字段组成
Field:字段
Hits:查询结果集,由匹配的Document组成
4.2.2 Lucene的索引效率
通常书籍后面常常附关键词索引表(比如:北京:12, 34页,上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。对于检索系统来说核心是一个排序问题。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
java搜索引擎的研究与实现 第4页下载如图片无法显示或论文不完整,请联系qq752018766