1.1 搜索引擎与全文索引技术
1.1.1 搜索引擎
在互联网刚刚起步阶段,站点的个数不多,所以查找相关信息也比较容易。而后随着它的快速发展,网页数量几乎呈指数增长,用户想在一个个的孤立站点之间寻找到所需的资料,更是难上加难,这时就需要搜索引擎来帮忙。为满足广大用户的需求,专业的搜索网站也随即发展起来,成功的就有我们熟知Baidu。
搜索引擎就是在特定的数据库和互联网上搜索符合用户要求的记录的一种计算机程序。搜索引擎查找事先建立的目录或索引库中每条记录的指定字段(作者、标题、内容、时间、主题词等)来匹配使用者输入的关键字。
在种类繁多的搜索引擎当中,被业界最为广泛应用的就是全文搜索引擎[3]。而根据检索数据源的差别,我们又可以把全文搜索引擎可划分为两种——一种是构建了自己的索引数据库,检索的时候直接调用;另一种则是本身没有建立数据库而去租用别的搜索引擎的索引库,然后按照自己制定的格式整理显示检索到的结果。
1.1.2 全文索引
因为在项目中为了使用Lucene实现信息检索的功能,首先需要构建一个全文索引环境,所以这里就做简单的介绍。
全文索引——就是给文件的每个字词建立索引[4],分别为它们构建出一条索引记录(功能类似于标签),并在记录中指出该词条(Term)在原始文章中出现的位置和次数,在检索的时候,搜索程序就会根据索引库查找到与检索关键字匹配的词条所在的原始文档,然后将查找的结果反馈回来并作相关处理。
全文索引的方法有按词索引和按字索引主要两种:按词索引——指对文本中的词条即语义单位(Term)建立索引,按词条检索,并且支持同义词处理等[5];按字索引——指对于文本中的出现的每一个字(英文表示为Word,中文则称为Character)都建立索引[6],检索是以字为单位进行的——就是将用户输入的关键字看成是单个字的组合。由于不同的语言,字和词的含义各不相同。比如English,它的字和词的含义实际上是统一,都可以用单词Word表示。English是以空白来分词,所以在实现方法上按词索引与按字索引相类似,添加同义词处理也比中文容易实现得多。中文等亚洲语种由于字与词在用法和含义上存在很大分别,为了达到按词索引的目的,需要对文本进行分词,构建出一个个的词条(Term,可以是字character也可以是词word)提供检索。
1.2 索引、检索和倒排源]自=优尔^`论\文"网·www.youerw.com/
1.2.1 索引、检索
当我们需要从大量的文件中查找到包含关键字的文件,应该使用什么方法让程序完成实现该功能?在传统的查找中,例如Word,查找是通过顺序扫描、线性匹配文本,查看文本中是否包含关键字而实现,这种方法被称为顺序查找[7]。这种方法虽然实现起来简单,几乎不用对文章进行预处理,但是,却不适合文件数据量庞大或文件数量非常多的环境。这时,我们就需要索引来解决这种问题。
索引,可以理解为一种特殊的精心设计数据结构,功能类似于一本书的目录,能够让程序快速的定位到目标文档。这种结构允许对存储在其中的单词或者词语进行随机、快速存取[6]。在Lucene中,多个索引通常形成一种特定的索引文件存放在文件系统当中。
检索就是在已经建立的索引当中,查找出关键字在文章出现的位置并将相关结果返回给用户的过程。检索通常由查全率(recall)和差确率(precise)来衡量质量,查全率是用来衡量这个信息检索系统查找相关文档的能力,而差确率则可以衡量信息检索系统过滤非相关文档的能力[8]。