本书是猎兔搜索开发团队的软件研发和教学实践的经验汇总。本书总结搜索引擎相关理论与实际解决方案,并给出了Java实现,其中利用了流行的开源项目Lucene和Solr,而且还包括原创的实现。
本书主要包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例分析。爬虫部分介绍了网页遍历方法和如何实现增量抓取,并介绍了从网页等各种格式的文档中提取主要内容的方法。自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入浅出的介绍,并总结了实现方法。在全文检索部分,结合Lucene介绍了搜索引擎的原理与进展。用简单的例子介绍了Lucene的最新应用方法,包括完整的搜索实现过程:从完成索引到搜索用户界面的实现。此外还进一步介绍了实现准实时搜索的方法,展示了Solr的用法以及实现分布式搜索服务集群的方法。最后介绍了在地理信息系统领域和户外活动搜索领域的应用。
本书适合需要具体实现搜索引擎的程序员使用,对于信息检索等相关研究人员也有一定的参考价值,同时猎兔搜索技术团队也已经开发出以本书为基础的专门培训课程和商业软件。
高级开发人员也可以参加猎兔的培训或者创业团队。职场人员经常面临各种压力。选择猎兔培训,不是几个月学完以后就不再见面,而是给大家提供持久的支持。当以后需要再次找工作的时候,或者需要创业时,依然可以在这里找到支持。很多商业运营的大项目失败的代价太高,所以他们往往只招有多年开发经验的工程师。但是为了成长就不要怕犯错误,在培训时可以等学员犯了错误之后再告知正确答案。有经验的工程师也可以在这里学习到完整的技术体系。
很多搜索相关的技术已经得到了初步的解决。在国内产业界也已经有很多公司掌握了基本的搜索开发技术并拥有专业的搜索技术开发人员。但是越来越多有价值的资讯对现有技术的处理能力仍然是一个挑战。
为了方便实践,需要有良好实现的代码作为参考。为了节约篇幅,书中的代码只是核心片段。本书相关代码的完整版本在附带光盘中可以找到。
作者罗刚在参加编写本书之前,还独立撰写过《自己动手写搜索引擎》一书,与王振东共同编写过《自己动手写网络爬虫》一书。经过10多年的技术积累以及猎兔搜索技术团队每年若干的研发投入,相信猎兔已经能够比以前做得更好。但越是深入接触客户的需求,越感觉到技术本身仍需要更多进步,才能满足实用的需要。写这本书也是考虑到,也许还需要更多的前进,才能使技术产生质的飞跃。
本书分为相关技术总体介绍部分、爬虫部分、全文检索部分、自然语言处理部分以及相关案例分析部分。
爬虫部分从基本的爬虫原理开始讲解,通过介绍优先级队列、宽度优先搜索等内容引领读者入门;然后根据当前风起云涌的云计算热潮,重点讲述了云计算的基本原理及其在搜索中的应用,以及Web图分析、信息抽取等内容;为了能够让读者更深入地了解爬虫,本书还介绍了有关爬虫的数据挖掘的内容。
全文检索部分重点介绍了搜索的基本原理与使用。主要介绍了开源软件实现Lucene以及Solr。不仅介绍了如何使用这些开源软件,而且还介绍了其中的一些实现原理。Lucene更高版本的改进指出了当前需要解决的问题,欢迎读者在了解基本原理后进行更深入的研究。
自然语言处理部分向来是笔者关注的重点,因为系统的智能化依赖于此。开发中文搜索离不开中文分词。开发任何自然语言的搜索也离不开对相应语言的处理。对自然语言的处理其实也可以用到对Java或C语言这样的机器语言的处理方法,只不过处理自然语言更难一点。
虽然本书的每个章节都已经用代码强化了实现细节,但是对于初学者来说,也许需要更多的案例来理解相关技术在真实场景中的用法。案例分析部分介绍了在地理信息系统领域和户外活动搜索领域的应用。股票应用案例待整理完整后再加入。
本书适合需要具体实现搜索引擎的程序员使用,对于信息检索等相关研究人员也有一定的参考价值,同时猎兔搜索技术团队也已经开发出以本书为基础的专门培训课程和商业软件。
高级开发人员也可以参加猎兔的培训或者创业团队。职场人员经常面临各种压力。选择猎兔培训,不是几个月学完以后就不再见面,而是给大家提供持久的支持。当以后需要再次找工作的时候,或者需要创业时,依然可以在这里找到支持。很多商业运营的大项目失败的代价太高,所以他们往往只招有多年开发经验的工程师。但是为了成长就不要怕犯错误,在培训时可以等学员犯了错误之后再告知正确答案。有经验的工程师也可以在这里学习到完整的技术体系。
感谢开源软件开发人员和家人、关心猎兔的老师和朋友、创业伙伴以及信赖猎兔软件的客户多年来的支持。读者可以通过QQ(270954928)联系作者,或者加QQ群(166015123)讨论相关技术问题。参与本书编写的有罗刚、张子宪、张继红、罗庭亮、高丹丹、任通通、孙宽、何淑琴、徐友峰、张进威、刘宇、石田盈,在此一并表示感谢。让我们通过合作共赢为技术发展创造更好的生态环境。
编著者