最近想研究一下搜索引擎,看资料前,前几晚趟在床上初步琢磨了一下;其实自己以前也有些零星的想法,先把自己的初步方案记录下来。再和Lucence等对比一下,检验一下自己的想法。
主要是搜索引擎的基本架构和数据模型。
1. 基本架构
按照使用这么多年Yahoo,Baidu的经验,Search Engine要做的事儿就是:输入几个关键字,查询出很多的网址列表。 列表一般按匹配度,网址的跳转频率等排序,也要简单列出该网页的前几十个字作为摘要。
所以查询模块是最外层的,也是第一个模块。
Engine内部要存储这些网址列表和关键词信息,首先要采集网址数据。因此采集模块是整个系统的数据来源。采集时,要分析网页中词(Word),并建立词和网页之间的关联,因此词法分析模块是采集后的一个数据处理模块。
大概先这么多吧:
1) 采集
2) 词法分析
3) 搜索
4) 数据存储(DB或File)
2. 模块及处理
1) 资源采集模块(Resource Collect)
互联网的所有信息以资源形式出现,虽然资源有不同形式:网页,普通文本,图片,视频,音乐等,但都可以用 URL 来唯一标识。
先只考虑对网页的搜索处理。
初步可以考虑,根据给定几个门户网站进行层次性采集。比如:从 sohu.com 首页,采集该页面所有链接 Link ,在对所有链接再进行同样的分析,由于网页一个链多个,不断向下链接,因此仅从一个给定的 URL向下分析,就能分析出很多URL,可能无穷尽,因此可以指定采集到那个层次深度 deep。 采集将所有的网页URL信息及基本信息存入 URL 库。
动态采集:比如你在javaeye中发表一篇新blog,google过会就能搜索到了。肯定不是上面的采集方法。至于什么方法,我暂时没想到,到时再看相关资料。暂时只考虑第一种采集。
2) 词法分析(Word Analyze)
对采集的URL库逐一进行分析,目的是分析出每个网页文本内容包含的 Word,并建立 Word 和 URL的对应关系索引。
英文分词容易,按空格。而中文比较棘手。但中文中的词在语言学上应该是一个有限集合 WordSet,假定符合语义的词都在一个字典中 dictionary,那么,分析URL时,对汉字的组合进行字典检查,符合语义的词才保存到 Word 库中。
词法分析,暂定按汉字个数组合依次分析:2个,3个,4个。OK,先这么多,多的也不管啦。也就是说假定合法的汉语Word只包含2,3,4个汉字。
3) 搜索(Search)
单词搜索:用户输入单个Word,系统在数据中进行查询。按Word-URL索引进行快速等值匹配。将符合的URL列表返回,包含网页标题,URL,前50字的摘要等信息。URL列表的排序是个关键,按下列顺序排序:标题匹配,摘要匹配,正文匹配,URL被搜索次数。
每次搜索,系统对被搜索Word的搜索次数+1,结果集合中的网页URL被搜索次数+1, 被点击的结果URL,对其点击次数+1.
先不考虑分页。
3. 数据模型
1) 首先有几个基本数据项:网页(URL),词(Word),词组(WordGroup)。
词库 Word:wordID, word
词组库: WordGroup:wordGroupID, wordGroup
网页 URL: 网页是 text/html 类型的资源,它有几个基本属性:
URL,
标题(Title),
摘要(Abstract),
建立时间(Time),只入URL库被索引起来的时间。
其中URL是唯一标识,互联网上,任何资源都可以用一个URL唯一表示,因此,被索引的就不只是网页,图片,视频,一般文件等都可以作为引擎搜索的对象。
2) 匹配 (Match关系)
在词法分析时,所有词都是被选关键词,要快速查询,需要建立所有词和网页的关系索引,因此需要URL-Word关系,N:M, 这个关系就是匹配索引(MatchIndex)。 词法分析模块的结果就是生成Word词库,URL库和 Match 关系。 查询时,就可以根据Word快速找到网页(或URL)。
Match属性:
wordID,
urlID,
keywordMatch, 网页关键词是否匹配,用<meta/> keyword进行判断;
urlMatch,url是否匹配
abstractMatch,摘要匹配次数,
fullTextMatch, 除摘要外的全文匹配次数,
matchLocs, 摘要和全文匹配位置列表,记录多个位置,逗号隔开,格式: "loc1,loc2,loc3", 例如"3,19,230"
matchTime, 词法分析记录下此匹配记录的时间
3) URLGroup: 按词组搜索肯定是要考虑的,因此也要建立词组和网页的关系:URL-WordGroup。词组是查询时输入的,是分散的几个word组成的一个临时组,WordGoup也是在查询阶段建立的。
4) WordGroupMatch: wgID,urlID.
5) SearchRecord: 对搜索查询要做记录,主要是记录用户搜索关键词的频率。SearchRecord:WordID,URL,Time,IP.
6 WordFrequency: 搜索结果要记录输入的关键词频率:WordFrequency:Word,Frequency.
7) 相应的,需要有:WordFGrouprequency
URLFrequency: 搜索结果对匹配的网页也要记录它的频率,让用户的搜索行为反应到网页被搜索的频率上,以后的查询结果,不断根据网页被搜索的次数调整在搜索结果中的顺序。URLFrequency:URL,frequency
分享到:
相关推荐
自己动手写搜索引擎 1 第1章 了解搜索引擎 1 1.1 Google神话 1 1.2 体验搜索引擎 1 1.3 你也可以做搜索引擎 4 1.4 本章小结 4 第2章 遍历搜索引擎技术 5 2.1 30分钟实现的搜索引擎 5 2.1.1 准备工作环境(10分钟) 5...
本书由搜索引擎开发研究领域年轻而有活力的科学家精心编写,作者将自己对搜索引擎的深刻理解和实际应用巧妙地结合,使得从未接触过搜索引擎原理的读者也能够轻松地在搜索引擎的大厦中遨游一番。 编辑推荐编辑 《走进...
基于Python的信息安全领域中语义搜索引擎的设计.zip 是一个用于构建信息安全领域中语义搜索引擎的Python项目。这个项目旨在帮助用户在大量文本数据中快速找到与特定主题或关键词相关的信息,从而提高信息检索的效率...
深刻的理解这种技术,本人还亲自实现了一个自己的搜索引擎——新闻搜索引擎。 新闻搜索引擎是从指定的 Web 页面中按照超连接进行解析、搜索,并把搜索到的 每条新闻进行索引后加入数据库。然后通过 Web 服务器接受...
(基于python的毕业设计)信息安全领域中语义搜索引擎的设计(源码+说明+演示视频),本科毕业设计高分项目。 【项目技术】 本次的技术选择为一整套以Python技术为基础的开发工具,通过以Python语言、django框架以及...
【基于Python+Django的毕业设计】信息安全领域中语义搜索引擎的设计(源码+录像演示+说明).zip 【项目技术】 本次的技术选择为一整套以Python技术为基础的开发工具,通过以Python语言、django框架以及Python自带的...
在功能性的设计上,此次主要是围绕着语义搜索展开的,要将输入的文字在爬取数据时能够通过深层次的内涵理解,来更好的查找到与之相关的精准信息。在功能的设计上,本次的设计标题为安全牛搜索引擎,是通过以安全语义...
毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。
1. **系统设计**:项目旨在创建一个能够理解和处理自然语言查询的搜索引擎,特别关注于信息安全领域的内容检索和数据保护。 2. **技术实现**: - 利用了自然语言处理(NLP)技术,如NLTK或spaCy,来解析和理解用户...
源代码部分提供了搜索引擎的核心功能,包括数据爬取、索引构建、查询处理和结果排序等关键模块的实现。这些代码不仅展示了如何通过JSP技术与后台数据库进行交互,还演示了如何设计用户友好的前端界面,使得最终用户...
Django项目之信息安全领域中语义搜索引擎的设计(源码+录像演示+文档).zip 【项目介绍】 高分通过项目,已获导师指导。 包含:项目源码、数据库脚本、LW、PPT、演示录像等,该项目可以直接作为毕设使用。 本项目主要...
4. **交互性强**:图表支持鼠标悬停提示、数据区域缩放、图表联动、图表堆叠、数据过滤、图例开关等多种交互功能,提升用户对数据的探索和理解能力。 5. **个性化定制**:提供详细的配置选项,允许用户自定义图表的...
大部分博客系统以文字为主,而开发一个具备搜索引擎且集文字、图片和视频为一体的博客系统,能大大提高对第三方应用的理解和调用。该毕业论文对搜索引擎技术及多种java开发中常用的中间件展开了研究。设计了一种基于...
毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。
毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。
设计所需技术主要有:分类检索技术、搜索引擎技术、自然语言理解技术等。主要目标是使得铁路信息资源共享平台建立以后,该搜索引擎能够提供全路范围内的各种共享数据的分类索引和查询,用户还可以通过智能化的用户...
第一章 搜索引擎基础............................................................................................................................2 第一节 什么是搜索引擎.....................................
这些资源对于理解项目背景和设计思路至关重要。 文档与操作手册:为了方便他人理解和使用我的作品,我编写了详细的操作手册和使用说明,同时提供了一份Markdown格式的文档,概述了项目的主要功能和特点。 学习笔记:...
这些资源对于理解项目背景和设计思路至关重要。 文档与操作手册:为了方便他人理解和使用我的作品,我编写了详细的操作手册和使用说明,同时提供了一份Markdown格式的文档,概述了项目的主要功能和特点。 学习笔记:...
利用Lucene搜索引擎,将数据索引化,提高检索效率。 用户界面设计与交互: 设计友好直观的用户界面,包括搜索输入框、搜索结果展示区域、地图显示等组件。 通过Java Swing或JavaFX等技术实现用户界面的构建,并与...