按照UTF-8编码解析字符串,并封装为Utf8String类型的对象
| 成员类型 | 定义 |
|---|---|
| data_type | std::u32string |
| value_type | data_type::value_type |
| raw_type | std::string |
| size_type | data_type::size_type |
| reference | value_type& |
| const_reference | const value_type& |
| pointer | value_type* |
| const_pointer | const value_type* |
| 函数名 | 功能 |
|---|---|
| (构造函数) | 构造Utf8String |
| (析构函数) | 销毁字符串 |
| front | 访问首字符 |
| back | 访问最后的字符 |
| clear | 清除内容 |
| push_back | 后附字符到结尾 |
| substr | 返回子串 |
| size | 返回字符数 |
| length | 返回字符数 |
| empty | 检查字符串是否为空 |
| raw | 返回std::string类型的版本 |
| c_str | 返回不可修改的C字符数组版本 |
| find | 于字符串中查找字符(串) |
| operator= | 为字符串赋值 |
| operator[] | 访问指定字符 |
| operator+= | 后附字符(串)到结尾 |
| operator+ | 连接两个字符串或者一个字符串和一个字符 |
| operator== | 以字典序比较两个字符串是否相等 |
| operator!= | 以字典序比较两个字符串是否不相等 |
| operator< | 以字典序比较两个字符串 |
| operator<< | 执行字符串的流输入 |
| operator>> | 执行字符串的流输出 |
依赖Utf8String类型,对中文基于信息量实现分词操作,并封装成一个可以直接获取分词结果的接口
封装词语信息量的查询操作
-
double get_infoquantity(const Utf8String &word);接受一个词,并返回该词的信息量
-
bool count(const Utf8String &word);接受一个词,并返回该词在词频文件是否存在
-
std::vector<Utf8String> segment(const Utf8String &sentence);接口接受一个UTF-8编码的Utf8String类型的字符串,并返回分词之后的词语集合.该接口保证返回词语集合的顺序与其在原句中的次序相同.
封装倒排索引,实现如下功能:
- 倒排索引的建立
- 根据关键词进行检索
- 对象到文件的序列化
- 文件到对象的反序列化
描述单个关键词与单个文件之间联系的结构体
包含以下信息:
- 关键词所在文章的文件路径
- 关键词在该文章中出现的次数和频率
- 关键词是否出现在文章的标题中
描述单个关键词在单个文件中的信息的结构体
包含以下信息:
- 关键词在该文章中出现的次数和频率
- 关键词是否出现在文章的标题中
| 成员类型 | 定义 |
|---|---|
| key_type | Utf8String |
| value_type | std::vector<FileInfo> |
| data_type | std::map<key_type, value_type> |
| 函数名 | 功能 |
|---|---|
| (构造函数) | 建立倒排索引 |
| ready | 返回该倒排索引是否已建立成功 |
| serialize | 由对象序列化到文件 |
| unserialize | 由文件反序列化到对象 |
| get_filepaths | 检索给定关键词,返回检索结果,只包含结果的文件路径 |
| add_files | 根据给定文件夹路径,添加新的索引 |
| add_file | 根据给定文件路径,添加新的索引 |
基于Socket的UNIX域实现进程间通信, 并通过多线程优化多进程访问时的效率
规定与其它进程通信的细节
包含以下信息:
- 检索的类型
- 检索的关键词列表
封装服务器的行为,只提供监听和启动操作,隐藏实现细节
| 函数名 | 功能 |
|---|---|
| (构造函数) | 构造SearchServer, 初始化套接字 |
| listen | 开始监听外部请求 |
| run | 进入主循环,处理外部检索请求 |