使用C#开发搜索引擎PDF电子书下载带书签目录完整版.pdf
使用C#开发搜索引擎 PDF电子书下载 带书签目录 完整版.pdf使用C#开发搜索引擎 PDF电子书下载 带书签目录 完整版.pdf○使用C#开发搜索引擎O Search Option 1 O Search Option 2 O Search Option 3从C#基础开始,逐步深入,是学习搜索引擎开发技术的首选。因应众多公司的实际需求,本书介绍如何使用C#作为工具开发搜索引擎。全书以B开发网站搜索垂直搜索作为目标,从网络爬虫抓取数据开始,逐步介绍中文分词、文本排重等文本挖掘技术和搜索结果展现。AeM6SeDISBN978-7-302-27070-6KP9"787302270706>定价:49.00元(附光盘○○介绍业界热门的 Lucene. Net、使用 Web Browser做爬虫以及结合So开发 ASP.NET搜索的第一本图书使用C#开发搜索引擎罗刚编著O Search Option 1 Gn 3、W清华大学出版社北京内容简介从C#基础开始,逐渐深入,是学习搜索引擎开发的首选。应众多公司的实际需求,本书介绍如何以C#作为工具开发搜索引擎。全书以完成一个网站搜索垂直搜索作为目标,从网络爬虫抓取数据开始,然后到中文分词、文本排重等文本挖掘技术和搜索结果展现。本书是市面上介绍业界热门的 Lucene. Net、使用WebBrowser做爬虫以及结合Solr开发 ASPNET搜索的第一书本书适合专业软件开发人员,也适合于希望学习搜索引擎工作原理的读者学习使用。本书对于在校学生学习复杂数据结构和应用动态规划等常用算法也有参考价值。本书封面贴有清华大学出版社防伪标签,无标签者不得销售版权所有,侵权必究。侵权举报电话:010-6278298913701121933图书在版编目(C|P)数据使用C#开发搜索引擎/罗刚编著.一北京:清华大学出版社,20122ISBN978-7-302-27070-6I.①使…Ⅱ.①罗…Ⅲ.①C语言-程序设计ⅣV.①IP312中国版本图书馆CIP数据核字(2011)第206926号责任编辑:夏兆彦责任校对:徐俊伟责任印制:何芊出版发行:清华大学出版社sogtie:http://www.tup.com.cn,http://www.wqbook.com地址:北京清华大学学研大厦A座邮编:100084社总机:010-62770175邮购:010-62786544投稿与读者服务:010-62795954,JSIc@tuptsinghua.edu.cn质量反馈:010-62702015,zhiliang@tuptsinghua.edu.cn印刷者:清华大学印刷厂装订者:三河市金元印装有限公司经销:全国新华书店开本:190mm×260mm印张:22.25字数:556千字(附光盘1张)版次:2012年2月第1版印次:2012年2月第1次印刷印定价:4900元品编号:03500901FOREWORD如果有计算机或者手机,在寻找解决问题的方法时,我们往往用搜索引擎寻找答案。在出门之前,我们往往先用搜索引擎查找乘车路线。在购物之前,往往先用搜索引擎找到最低的价格。搜索引擎已经成为大脑的外部记忆体。而宅男腐女们也更加依赖搜索引擎等计算机工具。但这些也许仍然不够,也许你觉得语音输入搜索识别率准确率仍然有待提高。也许你希望能査找英文资料并能够自动翻译成为可读的中文资料。也许你希望能査找图像中的文字。很多网站搜索的表现也经常让人失望。大型搜索引擎虽然功能强大,但是为什么不能把搜索结果按时间排序?搜索引擎还有很多需要改进的地方,所以出现了越来越多的搜索引擎相关的开发岗位。这些岗位相对来说,一般都是高薪。这本书不仅仅适合专业软件开发人员,希望学习搜索引擎工作原理的人也可以阅读。有很多人说,不是我不愿意,是我学不会技术。也许你需要一本更好的书,或者一位更好的老师。根据生活中的场景明白折半查找其实就是猜价格的游戏。有限状态机其实就是电话银行中缴费之前让人晕的一串数字输入。总之,学习技术,不仅仅很有用,还有可能比较有趣。介绍搜索引擎原理及具体开发实现的书已经有几本,包括笔者出版的几本。但大部分是使用Java实现。C#在国内很流行,但却没有使用C#开发搜索引擎的书籍。这本书就是为了填补这个空白。虽然使用Net总有一种寄人篱下的感觉,但是毕竟还有Mono这样的开源替代品。甚至已经有基于Mono开发的桌面搜索软件 Beagle这本书从需要用到的基本C#语法开始介绍,然后再介绍如何使用它开发搜索引擎应用。CH语法已经越来越复杂,但这里只选取最需要的一部分。学以致用是这本书的写作原则Lucene几乎已经成为全文搜索的同义词。随着Net开发平台越来越强大,作为 Lucene在Net平台的移植版本, Lucene.Net也越来越流行。Lucene. Net来源于2002年的 Lucene,当时采用Net平台的首选语言C#移植 Lucene,这个决定到现在看来仍然是正确的。但后来几经波折,这个开源项目在2004年一度陷于停滞,但是现在也终于被阿帕奇基金会接纳成为孵化项目,有望修成正果。可能有人会好奇 Lucene. Net是怎么从 Lucene移植过来的。可以使用 Sharpen这样的移植工具,这样可以把Java源代码转化为C持源代码。当然还需要人工修改C#源代码中的错误。虽然已经有包括 Autodesk等公司和项目采用了 Lucene. Net,但是本书却是第一本介绍 Lucene. Net的书,即使在全球范围内来看,也是如此。虽然这件好事来得晩了一些,但是该发生的终于还是发生了。使用c#开发搜索引擎Lucene. Net因为上手快,速度快,可扩展性好,赢得了很多开发人员的青睐。很多以前使用 SQL Server全文搜索的开发人员转而使用 Lucene.Net。虽然 Lucene. Net一般运行于Windows服务器,但是把它部署在 Linux机器亦无不可。通过 Lucene. Net源代码学习各种算法也是一种不错的选择。例如学习使用堆实现的优先队列等。随着 Lucene40中灵活索引的推出, Lucene. Net将来的版本性能会更好。这也是第一本介绍如何使用C#开发中文分词和文本排序、拼写检查等自然语言处理技术的书。使用C#灵活的语法来实现中文分词使得代码可读性更好。这也是第一本介绍如何使用C#开发网络爬虫的书,因为c#能够方便地调用浏览器内核,所以很容易解析动态网页。把网页转换成DOM树的表示形式,在C#中也是轻而易举如果担心 Lucene.Net功能仍然不够,可以使用支持分布式索引的Solr。因为Sor有web管理界面,所以可以在安装Sor之前就登录到Sor的管理界面使用它。Solr的Net客户端接口也是精心设计的。在某些已经采用Net作为开发前端的大型网站中,采用这样的站内搜索将是绝配。本书配套的光盘中提供了相关的源代码,有的来源于猎兔搜索多年的开发经验积累,有的是经典算法实现。其中很多都可以直接用于项目实践。这本书从选题到出版已经过去了两年多时间,如果没有这本书,也许至少还要再等几年,才能出现一本内容类似的书。对于笔者推出的第一本介绍搜索引擎开发的书,有的读者有相见恨晚的感觉。希望这本书也能带给C语言开发人员一些新的想法。对于很多C#开发人员来说,也许生活并不容易,因为很多C#程序员收入相对较低。希望本书能让大家学习更轻松,工作更有成效,成为一本给力的软件开发类书籍。有问题可以直接和笔者交流,请发邮件到luogang@gmail.com。最好有相关代码反馈。习惯使用QQ群的读者,可以加猎兔搜索QQ群:166015123。编者CONTENTS目录第1章使用C#开发搜索引擎快速入门1.1各种搜索引擎…1.1.1通用搜索…21.1,2垂直搜索………………………………………21.1.3站内搜索………31.2搜索引擎整体结构……………………31.3搜索引擎基本技术…………13.1网络爬虫1.3,2文本挖掘………………13.3全文索引………………………………………41.34搜索语法介绍13.5搜索用户界面14C#开发快速入门……914.1准备开发环境……14.2基本语法14.3多维数组………………1144位运算……14.5枚举类型14.6面向对象………………………………14.7集合类…14.8泛型……149委托和事件……14.10类库……201.5本章小结…………………………………………………201.6术语表………第2章使用C#开发网络爬虫2.1网络爬虫抓取原理22爬虫架构2.21基本架构…………………………22.2分布式爬虫架构………………………………2622.3垂直爬虫架构………2723下载网页2.31HTTP协议……………2.32下载静态网页………………………31233下载动态网页……………使用c开发搜索引章24网络爬虫遍历与实现…………42第4章自然语言处理……………1152.5网站地图………444.1统计机器学习……………………………11526连接池……………………………444.2文档排重…27URL地址查新………454.3中文关键词提取…292.7.1嵌入式数据库……43.1关键词提取的基本方法…………1292.7.2布隆过滤器43.2从网页中提取关键词……………1322.8抓取RSs………5044相关搜索2.9解析相对地址………………………534.5拼写检查210网页更新…………34.5.1拼写检查的概率模型……2.11信息过滤56452模糊匹配问题…………………1342.12垂直行业抓取…………………………604.5.3英文拼写检查……138213抓取限制应对方法……………6454中文拼写检查……………………1412131更换IP地址……………6146文本摘要…………………1422.13.2抓取需要登录的网页…………………64461文本摘要的设计213.3抓取 ASPNET网页46.2实现文本摘要技术………1432.14保存信息…………………………694.6.3 Lucene. Net中的动态摘要2.14.1存入数据库…………6947文本分类…………492.14.2存成图像……………704.7.1自动分类的接口定义……1492.15日志……………………147.2自动分类的实现……………1492.16本章小结…7448自动聚类…2.17术语表4.8.1文档相似度……482K均值聚类方法·第3章索引各种格式文档……4.8.3K均值实现3.1从HTML文件中提取信息7849拼音转换…………………………1573.1.1识别网页的编码…………………784.10句法分析树……157312正则表达式4.11信息提取……313 Html Agility Pack介绍…………84412本章小结…………………1713.14网页正文提取4.13术语表…………1723.1.5结构化信息提取………10031.6查看网页的DOM结构……104第5章用C#实现中文分词…174317网页结构相似度计算…………51汉语中的词…32从非HTML文件中提取文本…………10952文本切分的基本方法321TEXT文件……………10953有限状态机………322PDF文件…………………10954查找词典算法777323 Office文件………11254.1标准Tie树…………………180324Rtf文件…………542三叉Tie树33本章小结34术语表……………55中文分词的原理…11456中文分词流程与结构…192目录5.7切分词图65.3跨度查询……2535.7,1保存切分词图……………194654通配符查询5.7,2生成全切分词图…65.5过滤………………2565.8概率语言模型的分词方法……201656按指定列排序…………58.1一元模型……………2016.57查询大容量索引……………263582N元模型………………204658函数查询……………26559最大熵659定制相似性………………268510未登录词识别…21065.10评价搜索结果…511词性标注……21066中文信息检索512地名切分…………20661 Lucene. Net中的中文处理……2705.12.1地址类性标注……662 Lietu中文分词的使用……………2705.12.2未登录词识别…………220663定制 Tokenizer…………513本章小结…222664解析查询串……………………273514术语表……2366.5实现字词混合索引…27667抓取数据库中的内容第6章 Lucene.Net原理与应用2246.7.1读取数据………6.1 Lucene. Net快速入门……672数据同步6.1.1索引文档………6.8概念搜索………………61.2搜索文档……69本章小结6.1.3 Lucene. Net结构610术语表……………8662 Lucene. Net深入介绍……………………………229621索引原理………229第7章实现搜索用户界面28762.2分析文本………23171搜索页面设计………6,23遍历索引库………………2347.1.1用于显示搜索结果的 ASPNET…287624检索模型……2357.1.2搜索结果分页625收集最相关的文档…………………236713设计一个简单的搜索页面29163索引中的压缩算法…………24072实现搜索接口………………………29631变长压缩…………………………2417、21 Lucene. Net搜索接口…291632差分编码…2427.22指定范围搜索…29664创建和维护索引库2437.2.3搜索页面的索引缓存与更新641设计一个简单的索引库……2437.3实现关键词高亮显示…………300642创建索引库……24474实现分类统计视图…………………301643向索引库中添加索引文档………245741搜索结果分类统计与导航301644删除索引库中的索引文档……247742层次树……05645更新索引库中的索引文档24775相关搜索词………………30764.6索引的优化与合并……………2487.6实现AJAX自动完成…6.5查找索引库…2487.61总体结构651布尔查询7.62服务器端处理……………310652同时查询多列………2527.63浏览器端处理……………10
用户评论