java搜索功能代码 java进阶搜索( 二 )


问题四:搜索引擎如何实现搜索的啊随着互联网的迅猛发展、WEB信息的增加 , 用户要在信息海洋里查找自己所需的信息,就象大海捞针一样,搜索引擎技术恰好解决了这一难题(它可以为用户提供信息检索服务) 。搜索引擎是指互联网上专门提供检索服务的一类网站,这些站点的服务器通过网络搜索软件(例如网络搜索机器人)或网络登录等方式,将Intemet上大量网站的页面信息收集到本地,经过加工处理建立信息数据库和索引数据库,从而对用户提出的各种检索作出响应,提供用户所需的信息或相关指针 。用户的检索途径主要包括自由词全文检索、关键词检索、分类检索及其他特殊信息的检索(如企业、人名、电话黄页等) 。下面以网络搜索机器人为例来说明搜索引擎技术 。
1.网络机器人技术
网络机器人(Robot)又被称作Spider、Worm或Random , 核心目的是为获取Intemet上的信息 。一般定义为“一个在网络上检索文件且自动跟踪该文件的超文本结构并循环检索被参照的所有文件的软件” 。机器人利用主页中的超文本链接遍历WWW,通过U趾引用从一个HT2LIL文档爬行到另一个HTML文档 。网上机器人收集到的信息可有多种用途,如建立索引、HIML文件合法性的验证、uRL链接点验证与确认、监控与获取更新信息、站点镜像等 。
机器人安在网上爬行,因此需要建立一个URL列表来记录访问的轨迹 。它使用超文本,指向其他文档的URL是隐藏在文档中,需要从中分析提取URL,机器人一般都用于生成索引数据库 。所有WWW的搜索程序都有如下的工作步骤:
(1)机器人从起始URL列表中取出URL并从网上读取其指向的内容;
(2)从每一个文档中提取某些信息(如关键字)并放入索引数据库中;
(3)从文档中提取指向其他文档的URL,并加入到URL列表中;
(4)重复上述3个步骤,直到再没有新的URL出现或超出了某些限制(时间或磁盘空间);
(5)给索引数据库加上检索接口 , 向网上用户发布或提供给用户检索 。
搜索算法一般有深度优先和广度优先两种基本的搜索策略 。机器人以URL列表存取的方式决定搜索策略:先进先出,则形成广度优先搜索,当起始列表包含有大量的WWW服务器地址时,广度优先搜索将产生一个很好的初始结果 , 但很难深入到服务器中去;先进后出,则形成深度优先搜索,这样能产生较好的文档分布,更容易发现文档的结构 , 即找到最大数目的交叉引用 。也可以采用遍历搜索的方法,就是直接将32位的IP地址变化,逐个搜索整个Intemet 。
搜索引擎是一个技术含量很高的网络应用系统 。它包括网络技术、数据库技术动标引技术、检索技术、自动分类技术,机器学习等人工智能技术 。
2.索引技术
索引技术是搜索引擎的核心技术之一 。搜索引擎要对所收集到的信息进行整理、分类、索引以产生索引库 , 而中文搜索引擎的核心是分词技术 。分词技术是利用一定的规则和词库 , 切分出一个句子中的词 , 为自动索引做好准备 。目前的索引多采用Non―clustered方法,该技术和语言文字的学问有很大的关系,具体有如下几点:
(1)存储语法库,和词汇库配合分出句子中的词汇;
(2)存储词汇库 , 要同时存储词汇的使用频率和常见搭配方式;
(3)词汇宽,应可划分为不同的专业库,以便于处理专业文献;
(4)对无法分词的句子 , 把每个字当作词来处理 。
索引器生成从关键词到URL的关系索引表 。索引表一般使用某种形式的倒排表(1nversionUst),即由索引项查找相应的URL 。索引表也要记录索引项在文档中出现的位置,以便检索器计算索引项之间的相邻关系或接近关系,并以特定的数据结构存储在硬盘......

推荐阅读