[c++] 역 인덱싱을 이용한 검색

역 인덱싱은 특정 단어가 어떤 문서에 등장하는지를 미리 인덱스화하여 효율적으로 검색하는 방법입니다. 이 방법은 대용량의 텍스트 데이터에서 검색 속도를 향상시키는 데 사용됩니다.

역 인덱싱 구현 예시

다음은 C++를 사용하여 역 인덱싱을 구현한 예시입니다. 이 예시에서는 unordered_map을 사용하여 각 단어의 등장하는 문서 번호를 저장하고, 검색할 때 이를 활용합니다.

#include <iostream>
#include <unordered_map>
#include <string>
#include <vector>

using namespace std;

unordered_map<string, vector<int>> invertedIndex;

void buildInvertedIndex(const vector<string>& documents) {
    for (int i = 0; i < documents.size(); ++i) {
        string document = documents[i];
        istringstream iss(document);
        string word;
        while (iss >> word) {
            invertedIndex[word].push_back(i);
        }
    }
}

vector<int> search(const string& query) {
    if (invertedIndex.find(query) != invertedIndex.end()) {
        return invertedIndex[query];
    } else {
        return {};
    }
}

예시에서 사용된 함수들

buildInvertedIndex

결론

C++를 사용하여 역 인덱싱을 구현하여 효율적인 검색을 수행할 수 있습니다. 이를 통해 대용량의 텍스트 데이터에서 원하는 정보를 빠르게 찾아낼 수 있습니다.

더 많은 정보는 여기에서 확인할 수 있습니다.