MiniSearch

来源:互联网 发布:ipad怎么传软件 编辑:程序博客网 时间:2024/06/03 10:21

1.预处理过程(离线部分)

预处理主要用来事先生成程序在运行过程中可能用到的数据,以便加速处理时间。

预处理的过程主要生成程序所需的三个文件:网页库文件,网页位置信息文件和倒排索引文件。

网页库文件:ripepage.lib主要是以格式化的数据存储大量的网页信息,每个网页的格式化数据为:

<doc>

<docid>id</docid>

<docurl>url</docurl>

<doctitle>title</doctitle>

<doccontent>content</doccontent>

</doc>

网页位置信息文件:offset.lib主要是存放网页在网页库中的偏移量,以便程序能快速的取出指定的网页,该文件每一行存储一个网页文件在网页库中的位置信息,每一行的格式为:docid offset size。其中docid为网页id,offset为文档在网页库中距离文件起始位置的字节数,size为文档的大小。

倒排索引文件:invert.lib为网页库中的所有词(经过分词,去停用词后)与包含这些词的文档的一种关联关系。每个词的倒排索引在该文件中占一行,每一行的格式为:word docid1 frequency1 weight1 … docidi frequencyi weighti…其中word为网页库中的词,后面接着的是每三个为一组,docidi 为包含该词的网页,frequencyi为该次在该文档中的词频,weighti为该次在该文档中的权重(归一化后的)。

2. 程序运行过程

程序首先从offset.lib中读取网页位置信息,然后根据这些信息从rippage.lib中读取网页信息,然后从invert.lib读取倒排索引信息。程序循环不断地通过socket接受来自客户端的请求,一旦受到请求就fork一个子进程负责处理该请求而主进程则继续监听。子进程接受来自客户端的查询语句,根据查询语句查找结果并将结果返回给客户端。





0 0
原创粉丝点击