이 저장소는 코스 정보 검색 및 추출의 일부로 수행 된 미니 프로젝트로 구성되어 있습니다.
## 요구 사항 Python 2.6 이상
파이썬 라이브러리 :
## 문제 미니 프로젝트에는 외부 색인을 사용하지 않고 Wikipedia 데이터 덤프에 검색 엔진을 구축하는 것입니다. 이 프로젝트에서는 2013 년 크기 43GB의 데이터 덤프를 사용합니다. 검색 결과는 실시간으로 반환됩니다. Wikipedia Corpus의 다중 단어 및 멀티 필드 검색이 구현되었습니다. Sax Parser는 XML 코퍼스를 구문 분석하는 데 사용됩니다. 구문 분석 후 다음 형태 학적 작업이 구현됩니다.
줄기 단어와 게시 목록으로 구성된 색인은 제목 및 각 문서에 사용한 고유 한 매핑과 함께 위의 작업을 수행 한 후 코퍼스 용으로 작성됩니다. 따라서 Wikipedia 페이지의 문서 ID는 무시됩니다. 이는 문서 ID가 코퍼스의 단일 자리 숫자로 시작하지 않기 때문에 크기를 줄이는 데 도움이됩니다. 코퍼스의 크기는 기본 메모리에 맞지 않기 때문에 여러 인덱스 파일이 생성됩니다. 다음으로 이러한 인덱스 파일은 K-way Merge와 함께 필드 기반 지수 파일 생성을 사용하여 병합됩니다.
예를 들어, index0.txt, index1.txt, index2.txt가 생성됩니다. 이 파일에는 동일한 단어가 포함될 수 있습니다. 따라서 K Way Merge가 적용되고 필드 기반 파일이 해당 오프셋과 함께 생성됩니다. 이 필드 기반 파일은 멀티 스레딩을 사용하여 생성됩니다. 이것은 여러 I/O를 동시에 수행하는 데 도움이됩니다. 이와 함께 어휘 파일도 생성됩니다.
이것들과 함께 나는 또한 각 필드 파일의 오프셋을 저장했습니다. 이것은 검색 시간을 O (logm * logn)로 줄입니다. 여기서 m은 어휘 파일의 단어 수이고 m은 가장 큰 필드 파일의 단어 수입니다.
SRC 폴더에는 다음 파일이 포함되어 있습니다.
### 주요 기능 :
이 코드를 실행하려면 다음을 실행합니다. Python wikiindexer.py ./sampletext ./outputfolderpath
이 코드를 실행하려면 다음을 실행합니다. Python Search.py ./outputfolderpath
### 도우미 기능 :
TextProcessing.py이 헬퍼 기능은 모든 전처리를 수행합니다. search.py, wikiindexer.py의 도우미 역할을합니다
FileHandler.py이 함수는 모든 파일 전처리를 수행합니다. WikiIndexer.py의 도우미 역할을합니다