已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 站内新闻搜索引擎的设计与实现 基于 站内新闻搜索引擎的设计与实现 摘 要 个开源的用于制作搜索引擎的框架 。 目前第二代搜索引擎的设计思路为利用网 络爬虫建立数据源,结合分词技术把数据源建成索引,利用索引从 海量的数据源 中得到搜索结果 ,对搜索的结果进行筛选和排序 , 把最终的结果展示给用户 。 目前版本的 于 标准分词 类 ,建立索引相关类,搜索索引相关类,文档排序和相关性计算相关类等。 建立自 己所需的索引,实现多种多样的搜索方式,进行结果的筛选和排序。本文介绍了搜索引擎的相关知识,分析了 码,并对搜索引擎的未来进行了 展望。本文详细介绍了自己编写的一款在 开发的基于 新闻搜索引擎 ,并且通过对实际项目的介绍,阐明了 现的关键和优缺点,同时还提供了一些与 后对实际项目进行了测试,并分析了测试结果 。 关键词: 词,索引,搜索,排序,相关性 ,优缺点,搜索引擎,新闻 基于 站内新闻搜索引擎的设计与实现 F N is an of is as to up a At to so us to us to on to of of a on I At I 基于 站内新闻搜索引擎的设计与实现 目 录 第一章 绪论 . 1 言 . 1 介 . 1 第二章 索引的建立 . 3 述 . 3 关的技术综述 . 3 排索引 . 3 文分词 . 4 字索引 . 4 科院分词 . 4 丁解牛 . 4 古分词 . 4 准分词 . 4 引 的建立 . 4 引相关类介绍 . 4 引结构 . 5 引过程 . 5 引的合并与优化 . 5 引管理 . 5 第三章 搜索 . 6 述 . 6 搜索 . 6 索相关类介绍 . 6 索过程 . 6 级搜索 . 6 索系统的分析 . 7 第四章 结果的筛选和排序 . 8 述 . 8 选 . 8 序 . 8 序相关技术介绍 . 8 序相关类介绍 . 8 序过程 . 8 序方式 . 9 关性排序 . 9 . 9 第五章 搜索引擎的未来 . 11 述 . 11 第六章 实现 . 12 基于 站内新闻搜索引擎的设计与实现 述 . 12 引的创建 . 12 据源的处理 . 12 引建立的整体思路 . 12 引方式的选择 . 13 引的建立与优化 . 13 引的管理 . 13 史数据索引生成器 . 13 史数据索引生成辅助工具 . 13 引管理工具 . 13 引自动更新服务 . 13 索的实现 . 14 述 . 14 尔逻辑的实现 . 14 间的搜索 . 14 序的实现 . 14 照索引创建的时间排序 . 14 照相关性排序 . 14 存系统 . 14 页的实现 . 15 志维护系统 . 15 第七章 测试 . 16 述 . 16 引创建测试 . 16 引管理测试 . 16 索速度测试 . 16 索准确度测试 . 16 第八章 结论 . 18 参考文献 . 19 致谢 . 20 基于 站内新闻搜索引擎的设计与实现 第 1 页 共 20 页 第一章 绪论 言 看完一部电影,意犹未尽,想了解一下电影花絮;买好房子需要装修,但隔行如隔山,在此之前什么都不懂;电脑出了问题,进程中出现了一个怪怪的东西,不知该如何解决。没关系,只要在谷歌,百度上搜索,就算是拔苗助长,却也能解决很多问题。互联网的飞速发展,为我们开创了一个新时代。而要在这浩瀚的互联网世界中寻找自己想要的东西,那就离不开搜索。 搜索是为网络而生的。 现代意义上的搜索引擎的祖 先,是 1990午内蒙特利尔入学学生明的 ,名字叫 当时大量的文件散播在各个 机中,人们得到一个资源往往要花费很多时间。 因此 明了一个按文件名查找文件的系统:这个系统的工作原理已经和现代的搜索引擎相接近了。 真正把搜索引擎引向互联网的是一个叫“机器人”的 程序。它不间断高速执行则某项任务,就好像一个“ 机器人 ” 不断在“互联网”上穿梭, 这便是现在意义上的 “ 。世界上的第一个网络爬虫是 1994年,斯坦福大学的两位博士生杨致远和 此第一代搜索引擎诞生。 时候互联网的数据量还不算太大, 网站站长也主动的把自己的网站的更新信息发布给 样 很长一段时间内,以分类目录为核心思想的搜索引擎占据了大量的市场份额,称为第一代搜索引擎。 1997年, 1998年 此互联网搜索进入 代 。 成立标志着第二代搜索引擎的诞生。这是一种以网络爬虫, 标志的搜索引擎。网络爬虫使得互联网上数以亿记的资源联系在一起。 法到现在的沙盒,有效链接分数综合算法,使得人们可以通过搜索引擎很方便的搜索到自己想要的资源。 先如今,搜索引擎蓬勃发展,网络数据量与日俱增, 们都号称是第三代搜索引擎,虽然严格来说他们和第二代搜索引擎并无区别,但是却各有特点。现在我们正在迎接互联网的新时代,也在迎接搜索引擎的新时代 。 介 最初 件基金会 目组 的 子项目,是一个完全开放源码的全文检索工具包。 是一位资深全文检索专家, 2000年 3月 2001年 10月 献给 后逐渐被翻译成了多种语言,如 C+、 C#、时 个 、 个基于 。它们的出现为 目前 是由于新版本刚刚发布,稳定性还不是很好, 基于 站内新闻搜索引擎的设计与实现 第 2 页 共 20 页 本文还是按照成熟的 基于 站内新闻搜索引擎的设计与实现 第 3 页 共 20 页 第二章 索引的建立 述 我们首先已经事先建立好了数据源,那么对于建立搜索引擎而言,第二步就是建立索引。索引的目的在于建立一个用户目的信息,与数据源中一个单一数据的对应。具体到文章来说就是需要找到用户所搜索的词与文章的关联。 索引的建立主要涉及一下几个问题,什么样的数据要建立索引?以怎样的方式建立索引? 什么样的数据需要建立索引呢?这就要分析用户需求了。现阶段用户往往输入一段文字,然后希望找到与这段文字相关的信息。这段文字可以拆分成一个个的字,也可以拆分成一个个的词。无论字词,现在最后这都是我们获取的用户 信息,我们要通过这个用户信息查找到相应的数据,那么字词便是需要建立索引的东西。与用户有关的字词,往往出现在文章的标题和文章的正文中,这便是我们需要建立索引的域。把这里边的内容拆成一个个的字词,这些字词就是我们要进行索引的数据。而且用户需要搜索时间,我们就把时间整体索引,用户需要搜索什么,我们就把什么做索引。 怎样的方式去建立索引,决定了通过你的索引查找到相关文章的效率 ,索引的方式很多,我据一种简单的方式,而后结合 种最简单的建立索引的方式就是把字词和一篇文章中出现过这 个字词的文档的编号存在一起。这样,当搜索到这个字词的时候,便能得到相应的文档编号,通过文档编号,便可以获取文档的全部信息。 索引的建立是开发搜索引擎的关键一步,他关系着你的搜索引擎的搜索效率。 关的技术综述 排索引 倒排索引是 也常被称为 反向索引 、 置入档案 或 反向档案 ,是一种 索引 方法,被用来 存储 在 全文搜索 下某个单词在一个文档或者一组文档中的 存储位置 的 映射 。它是 文档检索系统 中最常用的 数据结构 。 举一个例子: 文本 我爱中华人民共和国” 文本 我爱中国” 文本 中华人民共和国很伟大” 那么反向文件索引为: “我”: 0, 1 “爱”: 0, 1 “ 中华人民共和国”: 0, 2 “中国”: 1 “很”: 2 “伟大”: 2 这样搜索“我”“中国”的结果就是 0,1 1=1 基于 站内新闻搜索引擎的设计与实现 第 4 页 共 20 页 文分词 中文分词是索引建立的关键。因为中文博大精深,不像英语以空格完美分隔词。同样的一句话在不同的语境下意思不同,同样连在一起两个字,在某些情况下它们是一个词,而有些情况下它们就是分别的字或者另一个词的组成部分。例如我马上到,我从马上下来。两个马上很难区分。而且像“高高兴兴”这样的叠词,“去哪儿”这个儿化音词,“吃了顿饭”这种分离词都对使得分词变得极其困难。 现在变简单的介绍几种分词 方式。 字索引 按字分词可以解决所有的问题,使得搜索变的十分准确,因为字是汉字的最小单位,我们只要知道输入的是什么字,字与字之间的位置关系便可以确定整个搜索内容。但是按字分词往往使得索引过大,并且用户往往都是直接输入连在一起的汉字,这样便使得,按字拆分的方法不能很好的猜测用户的意思。 科院分词 中科院分词系统是目前使用很广泛的系统。其最大的特点便是保留了大量的分词组合结果,对于每一个结果,通过公司进行计算其相关性,从而从多个分词结果中选出最合适的一个。另一个特点便是他的人名,地名识别系统。虽然在其开源版 本上不尽如人意,但是在其共享版的测试中效果还是非常好的。他的缺点是分词数据并不是很快,而且开源版和共享版都有些问题。 优点是分词准确。 丁解牛 这个算法只有 本,其中的分词算法效率很高,和 的词法分析算法有一些类似。这个分词的缺点是有很多分词不准,优点是分词速度很快。 古分词 这个分词的思想便是匹配,但是其中对于多字的词,这个分词软件设置了很高的优先级,使得分词结果与我们实际想要的结果更加接近。这个分词的优点是完全开源,结构清晰,方便在里边修改源代码,调整权重,并且有一套很好的 词典管理工具。 缺点就是其内置的词典太过混乱,需要人工修改,并且分词准确性不如中科院分词。 准分词 这个分词是按照 后的结果是英文完美分词,中文按字拆分。总的来说对英文应用来说是完美的分词。但是对中文分词来说,效率上不够。 引的建立 引相关类介绍 (1) 的逻辑文件,每一个或多个物理文件与一个逻辑文件相对应。 (2) 表 个 多个 是否索引,是否储存,是否分词之分。 (3) 条,每个 (4) 索引相关类 (5) 基于 站内新闻搜索引擎的设计与实现 第 5 页 共 20 页 读索引相关类 引结构 (1) 常,一个 表 一个完整索引段,一个索引中会包含多个 (2) 含了 所有 (3) 于储存 具有 据。 (4) 于储存 (5) 于储存分词后的词条。 (6) 明了每个 (7) 存了要删除的文档。 (8) 合索引格式。 引过程 (1) 初始化 初始化分词器,设置好文件路径。 (2) 生成 把每个 加到 分哪些是要保存的,哪些是要分词的,哪些是要索引的。 (3) 写索引。 把 息写人缓存,然后生成 后合并为 (4) 索引的合并与优化。 把多个 件合并为一个,并删除无用信息。 引的合并与优化 索引的合并通过 素控制,在批量建立索引时 少量添加索引时 索引的优化通过 多个 引管理 过这个类,我们可以通过 过 除文档,对删除的文档进行恢复等操作。 索引的建立还是通过索引的同步则依靠 实现。通过 两个类 就 可以很好的管理索引。在具体的项目中会介绍如何有效的管理索引。 基于 站内新闻搜索引擎的设计与实现 第 6 页 共 20 页 第三章 搜索 述 搜索是建立一个搜索引擎的第三步,也是根据需求确定内核设计最烦琐的一步。 我们在建立搜索是不仅要考虑搜索的 数量和范围,更要定义相关的过滤器来过滤搜索结果,最后针对各种需求详细设计自己的搜索逻辑。 就目前而言,用户查看的往往只是搜索结果的前几条。过多的搜索会造成不必要的时间浪费。如何建立缓存使得用户快速查找,如何对最终结果进行估计,这些都显得格外重要。 搜索结果的过滤是非常必要的,搜索结果包含敏感词 ,用户给出需求想要限制搜索结果的范围,这些情况下都需要对搜索的结果进行过滤。 搜索逻辑是比较烦琐的一块,对于字词的正则表达式的分析,各种域的限制,使得这一块非常容易出错。需要耐心的去修改,去完善。 搜索 索相关类介绍 (1) 义各种搜索的接口。 (2) 于 查询的 (3) 存搜索结果的类型。 (4) 字词生成查找对象。 索过程 (1) 初始化 择相应的 (2) 初始化 过 字词转化成一个 然后把各种产生的 (3) 定义 始化 定过滤的范围。 (4) 搜索 通过 回 到结果。 级搜索 (1) 是最简单的一种 包括词条本身的内容和词条所在的 过使用 可以进行最简单也是最原始的搜索。 (2) 是布尔搜索。通过 们可以实现与、或、非的逻辑操作。 基于 站内新闻搜索引擎的设计与实现 第 7 页 共 20 页 只需要在添加的时候指定这个值是必须出现,必须不出现还是应该出现。 (3) 是范围搜索。通过这个便可以搜索某个域中一定值范围的数据。 (4) 是前缀搜索。通过这个便可以根据某种 前缀查找内容了。 (5) 是短语搜索。通过这个便可以将短语作为一个整体进行搜索了。 (6) 是多短语搜索。通过这个便可以进行多个短语的搜索。 (7) 是模糊搜索。通过这个便可以帮助用户按照单字进行模糊查找。 (8) 是通配符搜索。通过这个便可以通过一个带有通配符的字符串来进行搜索。 (9) 是跨度搜索。这是一个在某个词与词的距离范围内匹配,便返回结果的搜索。 (10) 正则表达式 含 索 系统的分析 然实现了这么多的功能, 有很多的效率并不高。比如 如要查找 1 100 范围内的匹配,则要产生 100 个 对于产生的每一个 数据源进行搜索。这样的结果就是耗费了大量的时间与内存。 而对于使用 度也远不如使用 且 给出一个精确的搜索结果。这样就使得很多用户查看概率非常小的信息也进行了搜索与记录,大大浪费了搜索引擎的效率。 基于 站内新闻搜索引擎的设计与实现 第 8 页 共 20 页 第四章 结果的 筛选和 排序 述 在搜索出结果之后需要对搜索结果进行筛选和排序了。筛选比较好理解,就是对于一些不需要或者不应该出现的结果进行过滤。在取得的搜索结果上使用过滤或者在搜索之前定义过滤机制都可以很好的完成任务。 对于搜索结果的排序一直是搜索引擎的一个难点 。 法思想是相关性排序的基础。虽然根据不同的需求,可能产生 一些按照时间排序的情况出现,但是排序中最重要的还是相关性排序。 终根据这个值进行排序。但是,这样的一个代表相关性的值,却很难找到一个有效的公式。 用次数而进行了最初的排序,而后有竞价排名。经历了几年的运行,用了好网站链接的方式在修改它的排序算法。而后更是通过多个数据来定时调整它的排序算法。后来我们又渐渐的发现 入了“沙盒”这个概念来管理新的网站和违规的网站。总之,排序算法因为其商业利益的问题显得尤为重 要。 就算只是考虑准确性的因素,排序算法也显得尤为重要。如何把更接近用户意思的 将直接影响用户对于这个搜索引擎的体验。 选 (1) 是一个过滤一个范围值之内所有搜索结果的过滤器。 在某些情况下, 使用比使用 一些。但是在使用 前,就已经遍历过一次索引了,那么这会影响查询的效率。 (2) 是一个在上次基础上进行二次检索所使用的过滤器。可以很方便的实现二次检索。 序 序相关技术介绍 (1) 词频 某个关键字在某个文档中出现的次数。 (2) 反文档词频 在某类文档中出现某个关键字的文档的次数 序 相关类介绍 (1) 中有个 (2) 义文档排序的方式。 序 过程 进行搜索的时候就进行了文章相关性值的计算。在进行搜索时也定义了最终的排序方式。整个排序的过程是结合在搜索过程中的。 基于 站内新闻搜索引擎的设计与实现 第 9 页 共 20 页 序方式 (1) 按照文档创建顺序排序 这是 见的一种排序方式,即先创建索引的排在后边。这 样就等于我们通常意义的时间顺序。 (2) 按照某个域排序 这是 另一种常见的排序方式。即按照某个域的值,从小到大或者从大到小排序。 (3) 按照相关性排序 这是 另一种常见的排序方式。这是按照事先计算好的分数,对文档按照从分数高到分数低的方式排序。 (4) 其它排序方式 如按照文档编号等进行排序,但是由于不常用,这里就不列举了,可 参照 关性排序 文档的得分公式为: 总的来说 用了 基础因子,长度因素作为辅助因子,并自行添加了一个域调节因子。 序系统的分析 排序系统,就功能上来说是比较齐全的,但是最大的问题就是相关性排序。这样一个简单的相关性排序公司显然无法很好的计算相关性。做好文章的相关性分析需要做到很多。首先,我们需要把文章中的词划分为三类。一类是常用词,比如这,那,很好这之类的。一类是 这类文章的专有词,即在这一类文章中经常出现,但在其它文章中不经常出现的词。 一类便是普通词。 这个值能够很好的区分常用词,但是对于专有词的 区分却完全没体现。试问,对于财经内搜索中“股票”一词的价值和体育内搜索中“股票”一词的价值显然不同。 这是其一,另外人们对于搜索 结果的前几个往往比较重视,如果能在搜索结果中加入人工干预,便能够针对特 基于 站内新闻搜索引擎的设计与实现 第 10 页 共 20 页 殊问题来进行处理。就目前这个公式来看,这个公式能够获得大约 85的准确率。而我决定一般意义上要有 90的准确率才算合适,最好能达到 95。所以目前这个相关性计算的公
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2触电人员的急救
- 出纳综合考试题及答案
- 采油调度员考试题库及答案
- 四川省内江市2026年中考语文三模试卷附答案
- 2025-2026人教版八年级语文上期测试卷
- 2025-2026二年级道德法治测试题
- 肝转移微创与开放手术疗效比较
- 肝衰竭CRRT抗凝与血小板输注策略探讨
- 卫生室感染管理制度
- 卫生院基药宣传制度
- 2026海南安保控股有限责任公司招聘11人笔试模拟试题及答案解析
- 装饰装修工程施工组织设计方案(二)
- 2026上海碧海金沙投资发展有限公司社会招聘参考题库必考题
- 保险业客户服务手册(标准版)
- 检验科内控制度
- DB44-T 2771-2025 全域土地综合整治技术导则
- 浅谈医药价格管理现状透析
- 全屋定制合同协议模板2025年标准版
- 2025年数字人民币应用基础考试模拟试卷及答案
- 孕妇监护和管理课件
- 2026年安全员之A证考试题库500道(必刷)
评论
0/150
提交评论