使用multiMap建立倒排索引,= =太方便都不用写hash作单词映射。
还有一些需要修改的地方
/**
* C++实现倒排索引
* Author:Steven'
* E-mail : steven_zhaosh@163.com feel free to contract to me!
* 文档按照文件读取的方式写入,我自己暂时没办法独立写一个中文分词出来,目前只支持英文文档。
* 倒排表通过multimap建立。
**/
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <map>
#include <stdlib.h>
#include <sstream>
using namespace std;
//存储倒排列表信息包括:TF,pos
struct DocMes{
int TF=0; //词频
string pos = ""; //在文档出现的位置
};
typedef map<string,map<int,DocMes>> IndexMap; //定义multiMap类型
typedef map<int,DocMes> invertMap;//倒排列表
//把单词转为小写
//void judge(string &word)
//把int转为String
string intToString(int a){
string res;
stringstream ss;
ss<<a;
ss>>res;
return res;
}
//索引建立,在与代码同文件夹的1.txt 2.txt 3.txt读入文档,分词,记录词语与词语对应倒