WEB站点搜索.doc_第1页
WEB站点搜索.doc_第2页
WEB站点搜索.doc_第3页
WEB站点搜索.doc_第4页
WEB站点搜索.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

搜索功能系统设计方案V1.0WEB站点搜索功能系统设计方案目录1基本Sphinx的全文搜索引擎21.1:什么是全文检索21.2:Sphinx介绍21.3: Sphinx的特性21.4: Sphinx中文分词31.5功能总结42基本数据库引擎的搜索优化42.1:总体设计思想42.2:系统设计方案及基本流程52.3:系统结构52.4:功能总结63基于前两种方案的优化方案73.1方案思路73.2实施方案73.3系统结构构想图71基本Sphinx的全文搜索引擎1.1:什么是全文检索全文检索是指以文档的全部文本信息作为检索对象的一种信息检索技术。检索的对象有可能是文章的标题,也有可能是文章的作者,也有可能是文章摘要或内容。1.2:Sphinx介绍Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS 的原生支持)。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。1.3: Sphinx的特性1. 高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒)2. 高性能的搜索(在2 4GB 的文本数据上,平均每次检索响应时间小于0.1秒)3. 可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可 处理100 M 文档)4. 提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法5. 支持分布式搜索6. 支持短语搜索7. 提供文档摘要生成8. 可作为MySQL的存储引擎提供搜索服务9. 支持布尔、短语、词语相似度等多种检索模式10. 文档支持多个全文检索字段(最大不超过32个)11. 文档支持多个额外的属性信息(例如:分组信息,时间戳等)12. 支持断词1.4: Sphinx中文分词中文的全文检索和英文等latin系列不一样,后者是根据空格等特殊字符来断词,而中文是根据语义来分词。目前大多数数据库尚未支持中文全文检索, 如Mysql。故,国内出现了一些Mysql的中文全文检索的插件,做的比较好的有hightman的中文分词。Sphinx如果需要对中文进行全文检索,也得需要一些插件来补充。如 coreseek 和 sfc 。Coreseek是现在用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg 。并提供了多个系统的二进制发行版,其中有rpm,deb及windows下的二进制包。另外,coreseek也为sphinx贡献了以下事项: 1. GBK编码的数据源支持2. 采用Chih-Hao Tsai MMSEG算法的中文分词器sfc(sphinx-for-chinese)是由网友happy兄提供的另外一个中文分词插件。其中文词典采用的是xdict。目前版本在索引速度上(Linux 测试平台)基本上能够达到索引UTF-8英文的一半,即官方宣称速度的一半。(时间主要是消耗在分词上)。安装和配置都非常方便。happy兄在分词方面还有另外一个贡献php-mmseg,这是php对中文分词的一个扩展库。系统结构图(图片来源于网络)1.5功能总结个人总结的优点:1. 功能强大,安装方便2. 开源免费,便于维护与实施3. 搜索性能高,服务稳定个人总结的缺点:1. 无法统计用户搜索关键词密度,不便于系统主动搜索并缓存2. 所有搜索的数据没有中间进行动态缓存,导致每次的查询都需要进行读表操作2基本数据库引擎的搜索优化2.1:总体设计思想基于查询时的特点,进行数据库结构优化,建立数据库字段的全文搜索索引等,对用户搜索关键词分析,并统计,系统主动缓存搜索频率高的关键词。优化查询语句,进行数据库读写分离,变更数据库文件系统等方式提高mysql数据库的影响速度,读写分离可以避免因为更新操作导致的锁表操作。2.2:系统设计方案及基本流程该方案需要我们首先对数据库进行结构优化,包括建立索引,修改MYSQL存储引擎,数据库读写分离,其次需要建立搜索关键词库,并进行关键词累计,统计每个关键词被搜索的概率,建立系统定时任务,主动完成对搜索频率高的关键词的主动搜索并缓存。具体分为如下几步:1. 优化Mysql,进行数据库读写分离,优化文件系统,使用xfs文件系统代替ex3文件系统2. 优化数据库结构,拆分数据表,建立索引,使用FULLTEXT全文索引,加速查找3. 建立关键词表,记录关键词的搜索次数,将常用的关键词的搜索结果进行缓存操作4. 编写高性能Sql语句,减少慢查询,优化Mysql缓存机制5. 优化服务器架构2.3:系统结构程序优化架构图:系统结构优化图:服务器不直接连接数据库,而是通过中间缓存服务器,只有缓存数据不存在时,才进行数据库查找。2.4:功能总结优点:1. 可以统计用户搜索关键词,分析用户行为,可以获知用户最想获取的数据是什么2. 增加了动态缓存机制,一次查询数据库,即可加入缓存,搜索相同的关键词,不用实时查找数据库3. 对关键词进行分析,做系统定时任务,主动搜索关键词查询频率高的关键词,系统定时更新并优化缺点:1. 系统实施需要专业的技术人员方能实现2. 需要良的程序设计习惯及代码编写规范3. 需要对Mysql数据库的结构特点了解,需要懂得一定的服务器架构技术3基于前两种方案的优化方案3.1方案思路之由于前两种方式我个人认为都有一些优势与不足,如果将两种方案都加以取其优点,避其缺点,即可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论