1.7 本章小结
在20世纪90年代,计算机还不普及,图书馆为了方便借阅者检索图书,把每本书对应做了一个卡片,借阅者可以根据图书的分类编号手工查找分类放在盒子中的图书卡片。
20世纪50年代中期,在IBM公司工作的Luhn提出利用词对文档构建索引并利用用户查询词与文档中词的匹配程度进行检索的方法,这种方法就是目前常用的倒排文档技术的雏形。倒排索引按词建立词到文档的映射。虽然词是最基本的语义单元,但是用户意图往往不仅仅只是用查询词就能完全代表。需要扩展查询词,猜测用户意图,根据用户意图展示信息。
本章介绍了互联网搜索及其创新原则。在Google出现之前,Yahoo使用人工对网站分类,提供按目录导航和搜索目录数据库功能。在Google尚未占据互联网搜索绝对优势之前,也是在笔者第一次听人推荐Google之前,就出现了元搜索引擎(Meta Search Engine)。用户只需提交一次搜索请求,由元搜索引擎负责转换处理后提交给多个预先选定的独立搜索引擎,并将从各独立搜索引擎返回的所有查询结果,集中起来处理后再返回给用户。但Google开始独家垄断全球互联网搜索后,元搜索引擎逐渐被人遗忘。
Google早期的时候使用MapReduce实现分布式索引。后来之所以放弃这种方式,是因为它并不能为Google提供它所想要的索引速度。工程师需要等待8个小时的计算时间才能够得到计算的全部结果,然后把它发布到索引系统中。随着实时检索时代的到来,Google需要在几秒内刷新索引内容,而非8小时。
Hadoop来源于开源的分布式搜索项目Nutch。Powerset公司在Hadoop的基础上开发了基于BigTable架构的数据库Hbase(http://hbase.apache.org/)。2008年,微软收购了Powerset。
与文本挖掘技术对应的是包括语音识别、基于内容的图像检索等技术的流媒体挖掘技术。随着网络电视和视频网站的流行,流媒体挖掘技术正越来越引起人们的关注。
除了像Google的网页搜索这样的常规搜索引擎外,还有些特殊的搜索引擎。搜索的输入不一定是简单的关键词,例如,Wolfram|Alpha(http://www.wolframalpha.com/)是一个特殊的可计算的知识引擎。它可以根据用户的问句式的输入精确地返回一个答案。开放式信息提取搜索(http://openie.allenai.org/)是另外一个问答式的搜索。除了大的搜索引擎,还有些小的垂直搜索引擎,例如,专利搜索引擎http://www.soopat.com/。
Prim算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(Vojtěch Jarník)发现,并在1957年由美国计算机科学家罗伯特·普里姆(Robert C. Prim)独立发现。1959年,艾兹格·迪科斯彻再次发现了该算法。因此,在某些场合,Prim算法又被称为DJP算法、亚尔尼克算法或普里姆-亚尔尼克算法。除了Prim算法,还可以用Kruskal算法求解最小生成树。
单元测试可以采用JUnit结合Hamcrest测试框架,或者TestNG结合Hamcrest。