
搜索引擎
洞庭小哥
在IT行业前线努力前行~~
展开
-
【转】倒排文件索引(Inverted File Index)的建立
建立索引目前主流的索引技术有三种:倒排文件、后缀数组和签名。后缀数组的方法虽然快,但是其维护困难,代价相当高,不适合做引擎的索引。签名是一种很好的索引方式,但倒排文件的速度和性能已经超过了签名。倒排文件是一种在各大搜索引擎中被主要使用的索引的方式,并且它也是搜索引擎中一个核心的技术。5.2.1 倒排文件索引(Inverted File Index)的建立倒排索引文件是一种转载 2013-01-04 15:00:30 · 2586 阅读 · 0 评论 -
【北大天网搜索引擎TSE学习笔记】第2节——重要数据文件介绍
本节对系统中的主要的数据文件做一个简单的介绍,方便后面对系统源代码的阅读和对系统的理解。以下如不特别说明,所有路径或者文件都是相对于index目录而言的,即以index为当前目录。(1) ./ChSeg/words.dict为词典文件,包含该系统支持的所有中文单字、词以及标点符号等,该词典是中文分词的依据,直接决定了分词的结果。该文件中每条记录为一行,包含三项数据,第一个为序号,第二个原创 2013-01-15 13:31:22 · 3716 阅读 · 1 评论 -
【北大天网搜索引擎TSE学习笔记】第11节——倒排索引等数据文件的建立(预处理子系统)
前面的章节详细的介绍了查询服务子系统,可以发现查询服务子系统是基于一些”数据文件“实现查询功能的,这些”数据文件“在第2节中介绍过,包括:词典文件(words.dict)、原始网页数据库文件(Tianwang.raw.2559638448)、网页索引文件(Doc.idx)、URL索引文件(Url.idx.sort_uniq)、倒排索引文件(sun.iidx),其中words.dict是已经有的、T原创 2013-03-09 11:32:34 · 3581 阅读 · 0 评论 -
【北大天网搜索引擎TSE学习笔记】第8节——检索关键词+结果排序
这一节将介绍搜索功能入口程序TSESearch.cpp的第四步和第五步——检索关键词+结果排序。 其实,检索关键词非常简单,因为已经建立了倒排表mapBuckets,它是一个map结构,检索某个关键词,就是用map的find方法查询(下面代码中的第27行),没有什么需要介绍的。也因此,TSE中将检索关键词和结果排序在一起实现,也就是main函数中调用的函数:iQuery.原创 2013-02-02 12:39:07 · 2636 阅读 · 1 评论 -
【北大天网搜索引擎TSE学习笔记】第7节——中文分词
这一节将介绍搜索功能入口程序TSESearch.cpp的第三步——中文分词。 (一)引子 中文分词主要有基于字符串匹配的分词方法和基于统计的分词方法,基于字符串匹配的方法又称为机械分词方法,它是按照一定的策略将待分析的汉字串与一个充分大的词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功(识别出一个词),所以该方法是基于词典的,需要一个充分大的且准且的词典。TSE中就原创 2013-02-01 17:09:00 · 2540 阅读 · 2 评论 -
【北大天网搜索引擎TSE学习笔记】第3节——从用户点击“搜索”按钮开始
在第一节中已经将查询服务子系统搭建起来,可以在天网搜索引擎的首页中输入搜索字符串、点击搜索按钮并得到搜索的结果页面。那后台到底是怎么处理的呢?怎么从网页获取用户输入然后调用搜索程序进行搜索呢?大家在这一节将得到答案。我们从用户操作开始入手,首先呈现在用户面前的是天网搜索的首页,第一节中已经说明该首页的页面文件就是/var/www/html/index.html,我们先看看该文件原创 2013-01-22 13:42:43 · 2653 阅读 · 0 评论 -
【北大天网搜索引擎TSE学习笔记】第4节——实现搜索功能的入口程序
上一节中说到,TSESearch.cpp是实现搜索功能的入口程序,这一节将分析TSESearch.cpp源代码。在看源代码之前,先梳理一下该程序中的主要步骤:(1)准备数据在第二节中介绍了系统中一些重要的数据文件,这些文件便是实现搜索功能所需的数据文件,如:字典文件、倒排文件、网页索引文件和URL索引文件等。程序第一步需要读取这些文件的内容为搜索做好准备。(2)获取用户输入获取用户原创 2013-01-21 20:38:55 · 2380 阅读 · 0 评论 -
【北大天网搜索引擎TSE学习笔记】第10节——查询服务子系统/总结
至此,TSE的查询服务子系统相关的内容已经全部介绍完毕,从下载编译源代码、搭建TSE环境,到原理介绍、源代码分析全部进行了详细的介绍。第9节中提到的网页快照和网页内容摘要功能,由于TSE系统中实现的非常简单,所以没有展开详细说明,但是在实际的搜素引擎系统中是非常重要的,读者们可以自行了解。下面谈谈我自己的感受,看完TSE的查询服务子系统的源代码实现后,让我对搜索引擎的基本原理有了很好的原创 2013-03-05 21:37:03 · 1900 阅读 · 0 评论 -
【北大天网搜索引擎TSE学习笔记】第9节——显示搜索结果
这一节将介绍搜索功能入口程序TSESearch.cpp的第六步——显示搜索结果。该部分中首先定义了一个结果显示类CDisplayRst的对象iDisplayRst,然后调用了该类的三个成员函数ShowTop,ShowMiddle和ShowBelow分别显示结果页面的头部、中部和底部(即图1中标注①②③的区域)。下面来看一下这三个函数的源代码,代码中加入了详细的注释(以“LB_C”开始的注释为我加入原创 2013-03-05 20:44:46 · 2664 阅读 · 0 评论 -
【北大天网搜索引擎TSE学习笔记】第6节——获取用户输入
这一节将介绍搜索功能入口程序TSESearch.cpp的第二步——获取用户输入。(一) 获取用户在浏览器中输入的查询数据,需要跟web服务器进行数据交互,这就用到了前面提到的CGI方式。如果对CGI程序还是不太熟悉,请先阅读相关资料学习(推荐:http://blog.youkuaiyun.com/lewsn2008/article/details/8519908)。这里简单叙述一下,原创 2013-01-25 10:44:53 · 2487 阅读 · 0 评论 -
【北大天网搜索引擎TSE学习笔记】第5节——准备数据
上一节对搜索功能的入口程序TSESearch.cpp的main函数做了介绍,对搜索功能的实现的流程有了大概的了解,从这节开始讲对上节中提到的几个主要流程——准备数据、获取用户输入、中文分词、检索关键词、结果排序和显示搜索结果进行详细的分析。这一节分析准备数据的源代码。(这一节的内容非常简单,明白的朋友可以直接略过) (1)加载字典 上一节的main函数中第1原创 2013-01-23 21:23:43 · 2396 阅读 · 2 评论 -
【北大天网搜索引擎TSE学习笔记】第1节——环境搭建
最近在看《搜索引擎——原理、技术与系统》一书,同时下载了书中介绍的原型系统——北大天网搜索引擎TSE的源代码进行学习。之前没有任何搜索引擎方面的基础,也没有web开发经验,一切从零开始学习。为了记录学到的知识以备日后之用,也为了与大家分享并一起学习探讨,将学习的过程整理成笔记,连载发布于本博客。声明一下,我不是高手,我是菜鸟,从零开始学习,所以如果文中有错误之处敬请大家批评指出,也欢迎感兴趣的朋友原创 2013-01-09 11:30:39 · 8832 阅读 · 14 评论