首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

【北大天网搜索引擎TSE学习札记】第4节——实现搜索功能的入口程序

2013-01-27 
【北大天网搜索引擎TSE学习笔记】第4节——实现搜索功能的入口程序 上一节中说到,TSESearch.cpp是实现搜索功能

【北大天网搜索引擎TSE学习笔记】第4节——实现搜索功能的入口程序

 上一节中说到,TSESearch.cpp是实现搜索功能的入口程序,这一节将分析TSESearch.cpp源代码。在看源代码之前,先梳理一下该程序中的主要步骤:

(1)准备数据

在第二节中介绍了系统中一些重要的数据文件,这些文件便是实现搜索功能所需的数据文件,如:字典文件、倒排文件、网页索引文件和URL索引文件等。程序第一步需要读取这些文件的内容为搜索做好准备。

(2)获取用户输入

获取用户输入的欲查询的搜索字符串,这里需要CGI程序与Web服务器交互,通过环境变量的方式来获取用户输入的字符串。

(3)中文分词

因为用户输入的搜索字符串不是最简的单字或词,有可能是自然语言的句子或者是短语,如:“中国最优秀的程序员”,如果直接在倒排表中寻找这样的字符串,肯定是找不到任何结果的,因为倒排表中的词也是根据词典将网页内容进行分词切割后的最简字或者词。所以需要根据分词算法对输入的原始串进行分词切割,如上面的例子被分割为:“中国 /最 /优秀 / 的/ 程序员/”。

(4)检索关键词

对分割后的独立的关键词分别在倒排表中进行查询,找到关键词出现的网页文件。

(5)结果排序

含有一个或者若干个关键词的网页可能很多,如果仅仅是将他们不做任何处理的呈现给用户,肯定不是最好的。因为不同的网页的质量肯定是不一样的,如果为用户进行筛选,将最好的结果显示在前面,便需要对结果的网页集合进行排序。关于搜索结果的网页的质量计算和排序,可以查找相关的资料学习,如:Google的民主表决式网页排名技术PageRank方法,TF-IDF方法等,这里推荐吴军博士的《数学之美》一书,书中第十章、十一章对这些内容做了很好的讲解。

(6)显示搜索结果

这里需要CGI程序与Web服务器交互,通过标准输出的方式将结果发送到浏览器进行显示。

 

下面来看TSESearch.cpp中的main函数,我在代码中清楚的标注了哪一段代码对应于上面的哪一步骤,同时加入了注释(以“LB_C”开始的注释为我加入的)对重要代码进行了说明。

 

热点排行