[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
buildInvertedIndex
함수는 문서들을 입력으로 받아 역 인덱스를 구축합니다.- 각 단어를 키(Key)로 하고, 해당 단어가 등장하는 문서의 번호를 값(Value)으로 하는
unordered_map
을 활용합니다.
search
search
함수는 입력된 쿼리에 대한 검색 결과를 반환합니다.- 만약 쿼리에 해당하는 결과가 없으면 빈 벡터를 반환합니다.
결론
C++를 사용하여 역 인덱싱을 구현하여 효율적인 검색을 수행할 수 있습니다. 이를 통해 대용량의 텍스트 데이터에서 원하는 정보를 빠르게 찾아낼 수 있습니다.
더 많은 정보는 여기에서 확인할 수 있습니다.