前 言
在出门之前,往往先用搜索引擎找下乘车路线。在购物之前,往往先用搜索引擎找到□合适的商品。搜索引擎已经成为人们大脑的外部记忆体。身边的事物对我们有着重要的影响。运行在本机操作系统上的搜索引擎也对我们有着重要的作用。
目前,一些本地搜索引擎往往使用C#开发。本书是一本讲解如何使用C#开发搜索引擎的改进版图书。随着人工智能技术的发展,搜索引擎中的算法已经越来越深刻地影响人的生活。人们生活质量的持续提高有赖于搜索引擎等相关技术的持续改进。
在社会文明的早期,很多有效信息沉淀于书本和纸张。随着越来越多的信息显现于网络,网络爬虫变得更加有用。借助人的智能,网络爬虫软件可以更精准地抓取有效信息。通过阅读本书,读者可以使用C#开发本地手工操作的网络爬虫软件。
这是一本介绍如何使用C#开发网络爬虫的书,因为C#能够方便地调用浏览器内核,所以很容易解析动态网页。把网页转换成DOM树的表示形式,在C#中也是轻而易举的事。
Lucene几乎已经成为全文搜索的同义词。随着.NET开发平台越来越强大,作为Lucene在.NET平台的移植版本,Lucene.net也越来越流行。Lucene.net来源于2002年的NLucene,当时采用.NET平台的□□语言C#移植Lucene,这个决定到现在看来仍然是正确的。几经波折,这个开源项目在2004年一度陷于停滞,但是后来也终于被阿帕奇基金会接纳成为孵化项目,并成功转正。你可能会好奇Lucene.net是怎么从Lucene移植过来的。可以使用Sharpen这样的移植工具,这样可以把Java源代码转化为C#源代码。当然还需要人工修改C#源代码中的错误。
Lucene.net因为上手快、速度快、可扩展性好,赢得了很多开发人员的青睐。虽然已经有包括Autodesk等公司和项目采用了Lucene.net,但是这却是首次介绍Lucene.net的书,即使在全球范围内来看也是如此。
通过Lucene.net源代码学习各种算法是一种不错的选择,如学习使用堆实现的优先队列等。随着Lucene 4.0中灵活索引的推出,Lucene.net将来的版本性能会更好。
这也是一本介绍如何使用C#开发中文分词和文本排重、拼写检查等自然语言处理技的书。使用C#灵活的语法来实现中文分词使得代码可读性更好。
也许你希望能查找英文资料并能够自动翻译成为可读的中文,也许你希望能查找图像中的文字,但很多网站搜索的表现也经常让人失望。大型搜索引擎虽然功能强大,但是一些排序结果往往值得怀疑。本书介绍了如何用C#调用支持分布式索引的Solr或者ElasticSearch。这样网站前端可以采用ASP.NET开发,而后端可以采用Linux搜索集群。
这本书不仅仅适合专业软件开发人员,希望了解搜索引擎工作原理的人也可以阅读。有很多人说,不是我不愿意,是我学不会技术。也许你需要一本更好的书,或者一位更好的老师。根据生活中的场景明白折半查找其实就是猜价格的游戏。有限状态机其实就是电话银行中缴费之前让人晕的一串数字输入。总之,学习技术,不仅仅很有用,还有可能比较有趣。希望快速入门的读者也可以参加我们开发的培训课程。
本书配套的光盘中提供了相关的源代码,有的来源于猎兔搜索多年的开发经验积累,有的是经典算法实现。其中很多都可以直接用于项目实践。也感谢开源软件的开发者们,他们无私的工作丰富了本书的内容。
参与本书编写的还有崔智杰、王全军、石天盈、张继红、张进威、刘宇、何淑琴、任通通、徐友峰、孙宽,在此一并表示感谢。
编 者