카테고리 없음

데이터를 먼저 봐라

고요한하늘... 2008. 11. 13. 14:46

예전에 검색테스트를 위해서 간단한 검색 엔진을 만들어본적이 있다.

포지션정보까지 넣어서 인접한 검색 결과를 찾기 위해서 어절, 형태소 포지션을 저장하도록 구현을 했는데

포지션 정보를 압축하는 알고리즘 중 word align에 기반한 세가지 방법( simple-9, relative-10, carryover-12)중 relative-10으로 구현을 했었다. 이방법들은 모두 int 형 변수 하나에 최대 몇개의 포지션 정보를 저장할수 있는가가 이름에 나타나 있다.

즉 relative-10는 최대 10개까지 저장할수 있다는 의미이다.

그런데 테스트를 간단히 하기 위해 메모리상에 일정 크기이상이면 파일에 써버리는 방법으로( 임시저장을 하지 않음 )

진행했는데 생각보다 색인할수 있는 문서가 많지 않았다.  여러가지 이유가 있었는데

그중 한가지는 포지션 정보를 사용해서 색인크기가 커져서이고

다른 한가지는 relative-10을 사용한것이 두번째 이다.

아래 데이터를 보면 임의의 문서에서 추출한 것인데 대부분의 문서는 1회 출현하는 키워드(색인텀)이 전체의 80%정도를 차지 한다.

그래서 앞서 이야기한 relative-10을 사용했을 경우 1byte 또는 2byte로 처리할수 있는 정보를 4byte( int )로 저장해서 불필요한 저장 공간을 많이 사용한것이다.

 

 928447 count = 1( 1회 출현한 키워드의 수)

 191222 count = 2

  28302 count = 3

    7028 count = 4

   1868 count = 5

     728 count = 6

      47 count = 7

       6 count = 8

 

여유가 되면 이 부분을 v-byte 방식으로 변환해서 어느정도 색인이 가능한지 추가적으로 테스트를 해 볼 예정이다.