효율적인 검색 알고리즘 뭐가 있을까요?

nexusz99의 이미지

지금 구현하려고하는 검색엔진이라고 해야되나요..

하나의 그룹이라고해야하나요

그러한 그룹들은 각각의 파일에 저장이 되어있습니다..

예들 들면

과일.txt 운동.txt 식사.txt 공부.txt 등등등.. 이런식으로요

각각의 파일에는 각 파일들을 대표하는 키워드들이 담겨져 있습니다.
과일.txt 에는 사과, 배, 포도 이런식으로요

그래서 하나의 Application 이 문자열을 입력받으면 그 문자열이 어느 파일에 들어있나 찾는그런 Application 을 만들려고 합니다..

물론.. 커다란 App중 일부 기능이지만요..

지금 생각해본 방법은 각각의 파일을 하나씩 오픈하여 한줄씩 읽어 입력받은 문자열과 비교하는 방식으로 하려고하는데요

아무리 생각해도 파일을 입출력하는 부분이 많다보니 시간이 오래걸릴것 같네요..

어떻게 하면 효율적으로 검색알고리즘을 짤 수 있을까요?

김전일의 이미지

각 파일에 있는 문자열들을 hash table로 만들어서 찾아 볼 수도 있겠죠.

nexusz99의 이미지

마감기한이 얼마 남지않은 거라..hash table을 공부하기엔 시간이 많이 부족하네요.ㅠㅠ
----------------------------------------------
뻘짓도 일이다.

뻘짓도 일이다.

소타의 이미지

데이터 양이 많지 않다면 메모리에 올려놓으세요.
근데 어쨌든 고속의 탐색을 위해서는 hash table이든 이진 트리 응용이든 구현하셔야만 합니다.
디스크가 왜 보조 기억장치라고 불리는지는 메모리의 수~수십배의 데이터를 랜덤 엑세스 해보시면 알게 되실겁니다.

김전일의 이미지

자바나 c++로 하신다면 library나 stl에 이미 구현돼 있을테니 갔다 쓰시기만 하면 될꺼에요. 다른언어라도 이미 구현된게 있을테니 검색해보심 되고.

나빌레라의 이미지

걍 DBMS 쓰세요..

mysql 같은것도 좋고,
여기 저기 설치해서 동작하는 어플이라면 sqlite 써보세요.

파일명을 모아놓은 테이블을 만들고 파일명을 몰아넣은 다음
단어가 들어가 있는 테이블에서 해당 단어랑 연결되는 파일명을 포린키로 설정하고
select문 때려주면 바로 나오겠네요.
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

phonon의 이미지

저도 동의합니다.
이 방법이 제일 좋을 듯 합니다.

간단한 시소러스 사전을 만드시나요?

namsuni의 이미지

sqlite에 저도 한표~
가겹고 괜찮은 것 같아서 추천이요~ㅋ