倒排索引C 實現

2021-07-11 17:28:59 字數 1605 閱讀 2062

file3 (單詞1,單詞a,單詞3,單詞d....)

那麼建立的倒排索引就是這個樣子:

單詞1 (file1,file3)  

單詞2 (file1)  

單詞3 (file1,file3)  

單詞a (file2, file3)

...  

下面是我對於倒排索引的乙個簡單的實現。該程式實現了某目錄下的檔案單詞統計,並建立了倒排索引。

標頭檔案:inverted_index.h

#define maxline 1024

class invertedindex

~invertedindex()

int statwords(const char* file_name);

map> result_index()

private:

//存放倒排索引結果,key是單詞,value也是map,該map的key是檔名,value是該單詞在該檔案中出現的次數

map> result_index_;

int parsewordsbyline(char* str_line, const char* file_name);

void insertwordtomap(char* word, const char* file_name);

};

實現檔案:inverted_index.cpp

int invertedindex::statwords(const char* file_name)

char str_line[maxline];

while(fgets(str_line, maxline, fp) != null)

fclose(fp);

return 0;

}int invertedindex::parsewordsbyline(char* str_line, const char* file_name)

const char* needle=" \n\t";

/*strtok在s中查詢包含在delim中的字元並用null(『\0』)來替換,直到找遍整個字串。

返回值:從s開頭開始的乙個個被分割的串。當沒有被分割的串時則返回null。*/

char* word = strtok(str_line, needle);

while(word != null)

return 0;

}void invertedindex::insertwordtomap(char* word, const char* file_name)

string word_str = word;

string file_name_str = file_name;

map>::iterator it;

it = result_index_.find(word_str);

if(it == result_index_.end())//not found

else

}

執行結果:

全部源**:

倒排索引C 實現

以字或者詞為關鍵字進行索引 正排索引是從文件到關鍵字的對映,已知文件求關鍵字。倒排索引是從關鍵字到文件的對映,已知關鍵字求文件。使用了倒排,當然具體的實現會更加複雜,這裡只是簡單實現倒排索引 inverted index 具體主要做了,把多個文件中的單詞切出來 為了簡單起見直接空格分開單詞 然後建立...

實現倒排索引

倒排索引就是反向索引,一般索引指的是根據記錄位置來查詢值,而倒排索引的原理是 根據屬性的值來查詢記錄位置。比如說,現在有這些文章以及文章中含有的單詞。以英文為例,下面是要被索引的文字 文字0 it is what it is 文字1 what is it 文字2 it is a banana 我們就...

MapReduce倒排索引簡單實現

倒排索引 倒排索引是文件檢索系統中最常用的資料結構,被廣泛的應用於全文搜尋引擎。它主要用來儲存某個單詞 或片語 在乙個文件或一組文件中的儲存位置的對映,即提供了一種根據內容來查詢文件的方式,由於不是根據文件來確定文件所包含的內容,而是進行了相反的操作,因而被稱為倒排索引。例如 input 輸入有三個...