基于java语言的搜索引擎开发论文内容摘要:

ne 先在内存中进行索引操作,并根据一定的批量进行文件的写入。 这个批次的间隔越大,文件的写入次数越少,但占用内存会很多。 反之占用内存少,但文件 IO操作频 繁,索引速度会很慢。 在 IndexWriter 中有一 MERGE_FACTOR 参数可以帮助你在构造索引器后根据应用环境的情况充分利用内存减少文件的操作。 根据我的使用经验:缺省 Indexer 是每 20 条记录索引后写入一次,每 当 MERGE_FACTOR 增加 50 倍,索引速度可以提高 1 倍左右。 搜索过程优化 Lucene 面向全文检索的优化在于首次索引检索后,并不把所有的记录( Document)具体内容读取出来,而只将所有结果中匹配度最高的头 100 条结果( TopDocs)的 ID放到结果集缓存中并返回,这里可以比 较一下数据库检索:如果是一个 10,000 条的数据库检索结果集,数据库是一定要把所有记录内容都取得以后再开始返回给应用结果集的。 所以即使检索匹配总数很多, Lucene 的结果集占用的内存空间也不会很多。 对于一般的模糊检索应用是用不到这么多的结果的,头 100 条已经可以满足 90%以上的检索需求。 如果首批缓存结果数用完后还要读取更后面的结果时 Searcher 会再次检索并生成一个 比 上次的搜索缓存数大 1 倍的缓存,再重新向后抓取。 所以如果构造一个 Searcher去查 1- 120 条结果, Searcher 其实是进行了 2 次搜索过 程:头 100 条取完后,缓存结果用完, Searcher 重新检索 , 再构造一个 200 条的结果缓存,依此类推, 400 条缓存,800 条缓存。 由于每次 Searcher 对象消失后,这些缓存也 就 访问不到了,你有可能想将结果记录缓存下来,缓存数尽量保证在 100 以下以充分利用首次的结果缓存,不让Lucene 浪费多次检索,而且可以分级进行结果缓存。 Lucene 的另外一个特点是在收集结果的过程中将匹配度低的结果自动过滤掉了。 这也是和数据库应用 中 需要将搜索的结果全部返回不同之处。 10 3. 开发 环境 信息技术的不断发展,特别 是互联网应用的迅速普及,深入到了人们生活的各个方面,改变了人们 的 生活方式和思维方式,方便了全球信息资源共享。 全球目前的网页超过 100 亿,每天新增加数百万网页,电子信息爆炸似的丰富起来。 要在如此浩瀚的海洋里寻找信息,就像 “大海捞针 ”一样。 能有一种工具使我们可以在不到 1 秒钟的时间就迅速找到我们想要的内容吗。 答案是 “有 ”,这就是搜索引擎。 今天,搜索引擎已成为人们在网络信息海洋中自如冲浪必不可少的利器。 而 随着网络技术的进步,网络编程语言的开发以及进步,给网络搜索引擎的开发提供了前提条件。 网络信息量的集聚增加,寻找有 用信息难度的大幅度增加,成为网络搜索引擎的开发原因。 网络编程语言 JAVA JAVA 语言自从诞生以来,以其平台无关性,面向对象,多线程,半编译半解释等特点而成为网络时代的编程语言。 Java 是一种简单的,面 向 对象的,分布式的,解释的,健 壮的 , 安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。 正是因为这些原因, JAVA 语言无可厚非成为最优秀的网络编程语言,正因为如此,我选JAVA 语言作为我开发网络搜索引擎的工具。 本课题所使用的网络编程语言 均 为 JAVA。 Java 的特点 ( 1) 平台无关性 平台无关性是指 Java 能运行于不同的平台。 Java 引进虚拟机原理,并运行于虚拟机,实现 于 不同平台的 Java 接口之间。 使用 Java 编写的程序能在世界范围内共享。 Java的数据类型与机器无关, Java 虚拟机( Java Virtual Machine)是建立在硬件和操作系统之上,实现 Java 二进制代码的解释执行功能 , 提供于不同平台的接口的。 ( 2) 安全性 Java 的编程类似 C++,学习过 C++的读者将很快掌握 Java 的精髓。 Java 舍弃了 C++的指针对存储器地址的直接操作,程序运行时,内存由操作 系统分配,这样可以避免病毒通过指针侵入系统。 Java 对程序提供了安全管理器,防止程序的非法访问。 ( 3) 面向对象 Java 吸取 了 C++面向对象的概念 ,将数据封装于类中 ,利用类的优点 ,实现了程序的简洁性和便于维护性。 类的封装性、继承性等有关对象的特性,使程序代码只需一次编 11 译,然后通过上述特性反复利用。 程序员只需把主要精力用在类和接口的设计和应用上。 Java 提供了众多的一般对象的类 ,通过继承即可使用父类的方法。 在 Java 中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。 Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类为 Object 类, Object 类功能强大,经常会使用到它及其它派生的子类。 ( 4) 分布式 Java 建立在扩展 TCP/IP 网络平台上。 库函数提供了用 HTTP 和 FTP 协议传送和接受信息的方法。 这使得程序员使用网络上的文件和使用本机文件一样容易。 ( 5) 健 壮性 Java 致力于检查程序在编译和运行时的错误。 类型检查帮助检查出许多开发早期出现的错误。 Java 自已操纵内存减少了内存出错的可能性。 Java 还实现了真数组,避免了覆盖数据的可能。 这些功能特征大大提高了开发 Java 应用程序的周期。 Java 提供: Null指针检测、数组边界检测、异常出口、 Byte code 校验。 JDK JDK,全名 Java Developers Kit,是开发 JAVA 的 SUN 公司的 JAVA 语言的基本工具包,是个免费开发运行 JAVA 程序的基本软件, 由一个标准类库和一组 编译工具所 建立,测试及建立文档的 Java 实用程序组成。 其核心 Java API 是一些预定义的类库,开发人员需要用这些类来访问 Java 语言的功能。 Java API 包括一些重要的语言结构以及基本图形,网络和文件 I/O。 一般来说, Java API 的非 I/O 部分对于运行 Java 的所有平台是相同的,而 I/O 部分则仅在通用 Java 环境中实现 , 是整个 Java 的核心,包括了 Java 运行环境( Java Runtime Envirnment), 很多 Java 工具和 Java 基础的类库 ()。 该软件可以从 网站免费下载。 不论什么 Java 应用服务器实质都是内置了某个版本的 JDK。 除了 Sun 之外,还有很多公 司和组织都开发了自己的 JDK,例如IBM 公司开发的 JDK, BEA 公司的 Jrocket,还有 GNU 组织开发的 JDK 等等。 其中 IBM的 JDK 包含的 JVM( Java Virtual Machine)运行效率要比 Sun JDK 包含的 JVM 高出许多。 而专门运行在 x86 平台的 Jrocket 在服务端 的 运行效率也要比 Sun JDK 好很多。 JDK 为编程人员提供了 JAVA 基础类库( JFC), JFC 包含很多包, 在 每个包中都有若干个特定功能和相互关系的类和接口。 作为 JDK 实用程序,工具库中有七种主要程序。 12 ● Javac: Java 编译器,将 Java 源代码转换成字节码。 ● Java: Java 解释器,直接从类文件执行 Java 应用程序字节代码。 ● appletviewer: 小程序浏览器,一种执行 HTML 文件上的 Java 小程序的 Java 浏览器。 ● Javadoc: 根据 Java 源码及说明语句生成 HTML 文档。 ● Jdb: Java 调试器,可以逐行执行程序,设置断点和检查变量。 ● Javah: 产生可以调用 Java 过程的 C 过程,或建立能被 Java 程序调用的 C 过程的头文件。 ● Javap: Java 反汇编器,显示 编译类文件中的可访问功能和数据,同时显示字节代码含义。 TOMCAT Tomcat 是 Sun 的 JSWDK(JavaServer Web Development Kit)中 Servlet 的运行环境(servlet 容器 )。 Tomcat 的源代码被提供给 Jakarta 项目,在 Open Source 的模型下进行进一步的开发。 Tomcat 是一个 Server 容器,同样的, EJB 运行在 EJB 的容器中。 tomcat就是 webserver,可以作为上面说的服务器端的服务软件,用于接收来自客户端的请求,并做出相应的 处理,然后再返回结果到客户端。 我们可以这样认为, 当在一台机器上配置好 Apache 服务器,可利用它响应对 HTML页面的访问请求。 实际上 tomcat 部分是 apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 apache 独立的进程单独运行的。 这里的诀窍是,当配置正确时, Apache 为 .html 页面服务,而 tomcat 实际上运行 .jsp 页面和 servlet。 4. 搜索引擎开发 本毕业设计的网络搜索引擎由 、 edu、 text 三个部分组成,这三个部分相对独立,又通过不同 的 类 /接口完成各自功能的连接,最后成为一个整体,以完成该搜索引擎的主要功能。 搜索引擎使用的类 /接口 在 JAVA 编程中经常要使用各式各样的类 /接口,它们是 JAVA 程序的连接和实现的主要方法,下图 为该搜索引擎的主要的类 /接口的关系图: 13 图 主要。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。