自己动手写分布式搜索引擎 - (EPUB全文下载)
文件大小:0.69 mb。
文件格式:epub 格式。
书籍内容:
自己动手写分布式搜索引擎
第1章 搜索引擎
第2章 自己动手写全文检索
第3章 Lucene的原理与应用
第4章 搜索引擎用户界面
第5章 Solr分布式搜索引擎
第6章 ElasticSearch分布式搜索引擎
第1章 搜索引擎
每天都有很多人通过聊天软件进行交流。理想的聊天软件应该能够自动在服务器中永久记录聊天记录,而且有强大的搜索功能。
当用户只输入个别词时,搜索引擎系统可以猜测用户的查询意图,把用户查询意图扩展成整句。
搜索界面可以用WebSocket登录方式重新实现,这样可以给出个性化的查询结果。例如,如果已经知道某个用户在使用Macbook,当他搜索“eclipse下载”时,则给他提供Mac版本的Eclipse下载地址。
本章首先概要地介绍搜索引擎的总体结构和基本模块,然后介绍其中最核心的模块:全文检索的基本原理。为了尽快普及搜索引擎开发技术,本章介绍的搜索引擎结构可以采用开源软件实现。为了通过实践来深入了解相关技术,本章会介绍相关的开发环境。本书所介绍的搜索技术使用Java编程语言实现,之所以没有采用性能可能会更好的C/C++,是因为Java代码的可维护性更好。C++开发团队的协作性更差,往往沦为手工作坊式的开发。另外,为了集中关注程序的基本逻辑,书中的Java代码去掉了一些错误和异常处理,实际可以运行的代码在本书附赠的资源中。在以后的各章中会深入探索搜索引擎的每个组成模块。
1.1 搜索引擎基本模块
一个最简单的搜索引擎由索引和搜索界面两部分组成,相对完整的搜索结构如图1-1所示。
图1-1 搜索引擎的简单结构
实现按关键字快速搜索的方法是建立全文索引库,所以最基础的程序是管理全文索引库的程序。搜索的数据来源可以是互联网或者数据库,也可以是本地路径等。搜索引擎的基本模块从底层至顶层的结构如图1-2所示。
图1-2 搜索引擎中的主要模块
1.2 开发环境
由于开源软件的迅速发展,可以借助开源软件简化搜索引擎开发工作。很多开源软件用Java语言编写,例如最流行的全文索引库Lucene,所以本书采用Java来实现搜索。
为了实现一个简单的指定目录文件的搜索引擎,首先要准备好JDK和集成开发环境Eclipse。当前可以使用JDK 1.6。JDK 1.6可以从Java官方网站http://java.sun.com下载得到,使用缺省方式安装即可。本书中的程序在附赠的资源中都能找到,可以直接导入Eclipse中。Eclipse默认是英文界面,如果习惯用中文界面可以从http://www.eclipse.org/babel/downloads.php下载支持中文的语言包。
Lucene是一个Java实现的jar包,用来管理搜索引擎索引库。可以从http://lucene.apache.org/java/docs/index.html下载到最新版本的Lucene,当前最新的版本是3.0。
如果需要用Web搜索界面,还要下载Tomcat,可以从http://tomcat.apache.org/下载,推荐使用Tomcat 6以上的版本。使用开源的全文检索包Lucene作索引后,要把实现搜索的界面发布到Tomcat。
对于Web搜索界面,建议使用MyEclipse开发。对于其他普通的非Web开发工作则不建议使用MyEclipse。例如,开发爬虫建议只使用Eclipse,而不要用MyEclipse。MyEclipse开发普通的Java项目时,速度慢。
Lucene及一些相关项目的源代码由版本管理工具SVN管理,如果要构建源代码工程,可以使用Ant和Maven工具。
如果需要导出Lucene的最新开发版本,就需要用到SVN的客户端。“小乌龟”TortoiseSVN是最流行的SVN客户端。TortoiseSVN的下载地址是http://tortoisesvn.tigris.org/。安装TortoiseSVN后,选择一个存放源代码的文件夹,单击右键,选择TortoiseSVN菜单中的Export...选项导出源代码。
Ant与Maven都是项目管理软件Make类似。虽然Maven正在逐步替代Ant,但当前仍然有很多开源项目在继续使用Ant。从http://ant.apache.org/bindownload.cgi可以下载Ant的最新版本。
在Windows下,ant.bat和3个环境变量相关:ANT_HOME、CLASSPATH和JAVA_HOME。需要设置ANT_HOME和JAVA_HOME环境变量,并且路径不要以\或/结束,不要设置CLASSPATH环境变量。可以使用echo命令检查ANT_HOME环境变量:
>echo %ANT_HOME%
D:\apache-ant-1.7.1
如果把Ant解压到c:\apache-ant-1.7.1,则需修改环境变量PATH,增加当前路径c:\apache-ant-1.7.1\bin。
如果项目的源代码根目录包括一个build.xml文件,则说明这个项目可能是用Ant构建的。大部分用Ant构建的项目只需要如下一个命令:
#ant
生成jor包。
可以从http://maven.apache.org/download.html下载最新版本的Maven,当前最新版本是Maven 2.2.1。解压下载的Maven压缩文件到C盘根目录下,将创建一个c:\apache-maven-2.2.1路径。修改Windows系统环境变量PATH,增加当前路径c:\apache-maven-2.2.1\bin。如果一个项目的源代码根目录包括一个pom.xml文件,则说明这个项目可能是用Maven构建的。大部分用Maven构建的项目只需要如下一个命令:
#mvn clean install
盖大楼的时候需要搭建脚手架,虽然最终不会交付使用。很多单元测试代码也不会在正式环境中运行,但是必须写。可以使用JUnit做单元测试。
如果参与开发的人很多,就需要一个项目管理软件, ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 自己动手写分布式搜索引擎 - (EPUB全文下载)