【北大天网搜索引擎TSE学习笔记】第5节——准备数据

         上一节对搜索功能的入口程序TSESearch.cpp的main函数做了介绍,对搜索功能的实现的流程有了大概的了解,从这节开始讲对上节中提到的几个主要流程——准备数据、获取用户输入、中文分词、检索关键词、结果排序和显示搜索结果进行详细的分析。这一节分析准备数据的源代码。(这一节的内容非常简单,明白的朋友可以直接略过)

         (1)加载字典

         上一节的main函数中第12行定义了CDict对象iDict,CDict类为字典类。找到源代码./ChSeg/Dict.cpp,构造函数中调用了函数OpenDict,该函数很简单,就是打开了字典文件,然后从字典文件中逐行读出词加入到类成员mapDict中,也就是将字典内容从文件中加载到内存中,为后面的使用做好准备。

         可以看到打开的文件是DICTFILENAME,找到该宏的定义为:conststringDICTFILENAME("words.dict"); 大家看到words.dict应该非常熟悉了,第2节中已经介绍过了,这就是字典文件。

         另外,注意看一下字典是用什么数据结构存储的,看到./ChSeg/Dict.h中CDict类的声明,类中定义了:map<string,int>mapDict; ,说明字典在TSE中是用STL的map存储的,而STL中的map数据结构在底层是用红黑树实现的。为什么要提到字典存储的数据结构问题呢,因为字典的数据量是非常庞大的(我查看一下words.dict文件一共有108783行),而中文分词时需要频繁的在字典中查找指定的字符串是否存在,这将是影响搜索引擎效率的重要因素之一。如果字典不用优化的数据结构存储,每次都要遍历整个字典文件去查找的话,可以想象效率多么的低(O(n)的时间复杂度)!用红黑树存储的话,时间复杂度为O(log n),效率有很大提高。有的中文分词程序采用的是hash map来存储字典的,效率应该比红黑树更好。

         (2)加载倒排表

         上一节的main函数中第50行调用了GetInvLists函数,看到./Query.cpp中该函数的定义。代码也很简单,打开倒排索引文件,然后循环读出每一行存入mapBuckets中,也就是将倒排索引从文件中加载到内存中,为后面的使用做好准备。

         可以看到打开的文件是INF_INFO_NAME,找到该宏的定义为:conststringINF_INFO_NAME("./Data/sun.iidx"); ,大家看到sun.iidx应该非常熟悉了,第2节中已经介绍过了,这就是倒排文件。

         (3)加载网页索引

         上一节的main函数中第53行调用了GetDocIdx函数,与上面相似,就是从网页索引文件(Doc.idx)加载到内存,为后面的使用做好准备。

 

 

By:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
TSE是指“时分频扩频”(Time Division-Synchronous Code Division Multiple Access)无线通信基础技术。它是一种用于在无线通信系统中进行多用户同时通信的技术。 TSE技术的原理是将时间和码分为不同的频道,实现多用户的并发通信。在TSE系统中,时间被划分为多个时隙,每个时隙具有相同的长度,每个用户被分配一个或多个时隙来进行通信。 在基站与用户之间的通信过程中,基站先将要传输的数据通过扩频技术进行编码,然后将编码后的数据按照时分多路复用的方式发送给各个用户。用户接收到数据后,再通过解码技术将数据还原出来。 TSE技术的优点是能够提高系统的容量和效率。通过时分频扩技术,不同用户可以同时在同一个频段上进行通信,避免了频带资源的浪费。同时,TSE技术还具有抗干扰能力强的特点,能够有效抑制干扰信号对通信质量的影响。 然而,TSE技术也存在一些限制。由于需要将时间分割成多个时隙,系统时延较大,不适合对实时性要求高的应用场景。此外,TSE技术在频谱利用效率方面还有一定的提升空间。 总之,TSE无线通信基础技术是一种实现多用户同时通信的关键技术。它通过时分和码分的方式,提高了无线通信系统的容量和效率,具有良好的抗干扰性能。然而,在实时性要求较高和频谱利用效率方面,还存在进一步研发和优化的空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值