1、搜索引擎的研究与实现 Search engine s research and implement,毕业设计的意义,互联网的最大优点就是拥有海量的信息,而且每8个月就翻一倍,现今的网页数量已经超过10亿。要想在这浩如烟海的网络世界中快速、有效地搜索信息,就不能离开现代信息获取技术搜索引擎,毕业设计的两个目标,研究www搜索引擎的系统结构,并重点对网络机器人、索引与搜索程序以及用于查询的Web服务器三个方面进行详细分析。 在这些研究的基础上利用Java TM相关技术和一些开源工具包实现一个简单的搜索引擎新闻搜索引擎,搜索引擎的系统结构,网络机器人、索引与搜索程序、Web查询服务器,终端用户,We
2、b服务器,索引数据库,网络机器人程序,什么是网络机器人,是一种功能强大的Web扫描程序。可以通过超连接来扫描所有Web页面 扫描页面流程如下图所示:,扫描页面,加入等待队列,加入运行队列,加入等待队列,发现URL,扫描结束,发现URL,循环,Jeff Heaton的Bot开发包,开放源代码的第三方开发包 用Java实现的网络机器人类库 提供了包括:解析HTTP、接受Form、分析Cookie、实现Spider等若干类 参考网址:http:/,网络机器人的具体实现,首先构造Spider类,并实现IspiderReportable接口 然后通过覆盖回调函数来处理网页具体代码如下: Public v
3、oid processPage(HTTP http)/完成实际处理代码 ,为什么要建立全文索引数据库,海量数据如果直接通过数据库搜索会非常缓慢,而建立全文索引则可以极大地提高查询速度 全文检索是通过词元(term)匹配,这样可以对中文等非英语语言实现匹配 全文索引可以应用高负载的模糊查询得出结论:搜索引擎需要建立全文索引,Lucene全文索引引擎开发包,Jakarta Apache的开源项目 一个用Java实现的全文索引引擎开发包,可以嵌入各种程序实现全文索引、检索 将数据通过建立全文索引并且一一建立反向索引来实现快速、高效全文索引机制 网站:http:/jakarta.apache.org/
4、lucene/,Lucene进行索引的实现方法,构造一个写索引器 IndexWriter(Path, new SimpleAnalyzer( ), false) 构造一个包含若干Field的Document对象 Document doc = new Document( ) Doc.add(Field.Text() 将Document对象写入索引器 writer.addDocument(doc),Lucene进行搜索的实现方法,构造搜索器 IndexSearcher(indexPath) 构造查询解析器 QueryParser.parse(Qc, “body “, Analyzer) 搜索结果保
5、存在Hits对象中 Hits hits = searcher.search(query),Web查询服务器,接受用户从浏览器发出的查询命令,然后连接索引数据库并进行查询。 将查询的结果返回给用户的浏览器,完成一次查询过程。 在具体的实现中,使用的是开放源代码Apache Tomcat 服务器。,查询服务端的具体实现,服务端使用Java Servlet技术,并且部署在Tomcat 服务器上。 构造Result类并继承自HttpServlet Public class Results extends HttpServlet 覆盖doGet方法来处理客户端Get请求方法 Public void do
6、Get (request , response) /具体处理Get请求方法 ,新闻搜索引擎的结构设计,在对搜索引擎结构研究的基础上设计了一个新闻搜索引擎,结构图如下:,Bot 机器人,Tomcat 服务器,lucene索引,www浏览器,新闻页面,扫描新闻,建立索引,查询新闻,返回结果,新闻搜索引擎的演示环境,新闻页面:http:/127.0.0.1/ 搜索页面:http:/127.0.0.1:8080/ 主程序:Borland Jbuilder 9Heaton Bot PackageJakarta Apache Lucene 查询服务器:Jakarta Apache TomcatJava Servlet,