KR101299555B1 - 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 - Google Patents

해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 Download PDF

Info

Publication number
KR101299555B1
KR101299555B1 KR1020110147615A KR20110147615A KR101299555B1 KR 101299555 B1 KR101299555 B1 KR 101299555B1 KR 1020110147615 A KR1020110147615 A KR 1020110147615A KR 20110147615 A KR20110147615 A KR 20110147615A KR 101299555 B1 KR101299555 B1 KR 101299555B1
Authority
KR
South Korea
Prior art keywords
index
search
hash
text
hash function
Prior art date
Application number
KR1020110147615A
Other languages
English (en)
Other versions
KR20130078594A (ko
Inventor
이해준
Original Assignee
주식회사 아이디스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 아이디스 filed Critical 주식회사 아이디스
Priority to KR1020110147615A priority Critical patent/KR101299555B1/ko
Publication of KR20130078594A publication Critical patent/KR20130078594A/ko
Application granted granted Critical
Publication of KR101299555B1 publication Critical patent/KR101299555B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

영상 녹화 시스템에서 해시함수 기반의 인덱스를 이용한 텍스트 검색 장치에 관한 것이다. 일 실시예에 따른 텍스트 검색 장치는 적어도 하나 이상의 인덱스 파일을 생성하는 인덱스생성부 및 검색용 단어에 대한 해시코드를 생성하며, 그 해시코드와 인덱스 파일의 연결 정보가 포함된 해시테이블을 생성하는 해시관리부를 포함할 수 있다. 영상 녹화 시스템에서 텍스트 검색을 위한 인덱스의 생성 및 검색에 따른 시스템 리소스 사용을 최소화하고 텍스트 검색 성능을 향상시킬 수 있다.

Description

해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법{APPARATUS AND METHOD FOR TEXT SEARCH USING INDEX BASED ON HASH FUNCTION}
영상 녹화 시스템에서 해시함수 기반의 인덱스를 이용한 텍스트 검색 기술과 관련된다.
영상 녹화 장치가 POS(Point Of Sale)나 Access Control, ATM과 같은 부가 정보를 제공하는 장비와 연동되어 사용되면 많은 양의 텍스트 정보가 저장된다. 예를 들어, 영상 녹화 장치와 POS가 연동될 경우 실시간으로 판매되는 제품의 이름, 가격, 합계, 고객정보 등이 판매되는 영상과 함께 저장이 된다. 추후에 특정 제품이 판매되었을 때의 영상이나 특정 고객의 구매 영상을 검색하고 싶을 경우 저장된 텍스트를 검색해 보면 된다.
그런데, 저장된 모든 텍스트를 순차적(sequential)으로 검색할 경우 텍스트의 양에 따라 검색시간이 오래 걸리기 때문에 검색을 위한 별도의 인덱스를 만들어서 검색 속도를 높여야 한다. 일반적으로, 텍스트 검색은 단어별로 그 단어를 포함하는 문서에 대한 링크를 가지는 역인덱스(Inverted Index)의 구조를 사용하여 구현이 되고 여러 SQL데이터베이스들이 이를 지원한다.
하지만 이런 텍스트 검색을 영상 녹화 시스템에 그대로 적용하기에는 문제가 있다. 즉, 일반적인 영상 녹화 시스템에서는 미리 하드디스크 전체를 영상 녹화에 적합한 구조로 포맷하여 사용하기 때문에 추후 인덱스를 위한 파일 추가 또는 파티션 변경이 어렵고, 인덱스의 생성 및 삭제시 많은 시스템 리소스가 필요하여 전체 시스템의 오버헤드가 존재하게 된다. 대한민국 등록 특허 제10-0468276호는 멀티미디어 데이터를 저장하고 검색하는 방법에 대해 개시되어 있다.
영상 녹화 시스템의 텍스트 검색을 위한 해시 함수 기반의 인덱스 생성 및 관리하는 기술이 제시되고, 그 해시함수 기반의 인덱스를 통한 최적의 텍스트 검색 장치와 방법이 제시된다.
일 양상에 따르면, 해시함수 기반의 인덱스를 이용한 텍스트 검색 장치는 영상 녹화 시스템의 텍스트 검색 장치에 있어서, 적어도 하나 이상의 인덱스 파일을 생성하는 인덱스생성부 및 검색용 단어에 대한 제1 해시코드를 생성하며, 그 제1 해시코드와 인덱스 파일의 연결 정보가 포함된 해시테이블을 생성하는 해시관리부를 포함할 수 있다.
추가적인 양상에 따르면, 각 인덱스 파일은 검색용 단어 정보와 그 단어가 포함된 문서에 대한 연결 정보를 포함하는 텍스트 인덱스를 포함할 수 있다.
추가적인 양상에 따르면, 각 인덱스 파일은 영상 녹화 시스템의 소정 시간 범위 내에서 텍스트 검색을 위한 시간 정보와 텍스트 인덱스로의 연결 정보를 포함하는 타임 인덱스를 더 포함할 수 있다.
또한, 타임 인덱스는 검색용 단어에 대해 바이트(byte) 단위로 해시함수가 적용되어 생성된 제2 해시코드를 더 포함할 수 있다.
이때, 제2 해시코드는 전 일치(whole word maching) 질의 또는 부분 일치(partial matching) 질의를 지원할 수 있다.
한편, 제1 해시코드는 검색용 단어의 적어도 일부에 대해 해시함수를 적용하여 부분 일치 검색이 가능하도록 생성한 것일 수 있다.
한편, 인덱스 파일은 영상 녹화 시스템의 저장 장치에 미리 포맷되어 있는 파일 시스템에 기초하여 생성된 것일 수 있다.
일 양상에 따른 해시함수 기반의 인덱스를 이용한 텍스트 검색 방법은 영상 녹화 시스템의 텍스트 검색 방법에 있어서, 적어도 하나 이상의 인덱스 파일을 생성하는 단계, 검색용 단어에 대한 제1 해시코드를 생성하는 단계 및 그 제1 해시코드와 인덱스 파일의 연결 정보가 포함된 해시테이블을 생성하는 단계를 포함할 수 있다.
추가적인 양상에 따르면, 각 인덱스 파일은 검색용 단어 정보와 그 단어가 포함된 문서에 대한 연결 정보를 포함하는 텍스트 인덱스를 포함할 수 있다.
추가적인 양상에 따르면, 각 인덱스 파일은 영상 녹화 시스템의 소정 시간 범위 내에서 텍스트 검색을 위한 시간 정보와 텍스트 인덱스로의 연결 정보를 포함하는 타임 인덱스를 더 포함할 수 있다.
또한, 타임 인덱스는 검색용 단어에 대해 바이트(byte) 단위로 해시함수가 적용되어 생성된 제2 해시코드를 더 포함할 수 있다.
이때, 제2 해시코드는 전 일치 질의 또는 부분 일치 질의를 지원할 수 있다.
또한, 인덱스 파일은 영상 녹화 시스템의 저장 장치에 미리 포맷되어 있는 파일 시스템에 기초하여 생성된 것일 수 있다.
제시되는 해시 함수 기반의 인덱스를 통한 텍스트 검색 장치 및 방법에 의하면 텍스트 검색을 위한 인덱스의 생성 및 검색에 따른 시스템 리소스 사용을 최소화할 수 있다.
또한, 텍스트의 추가 삭제시 인덱스의 실시간 업데이트가 가능해진다.
또한, 제시되는 해시 함수 기반의 인덱스를 사용하여 텍스트 검색을 수행함으로써 검색 속도를 향상시킬 수 있다.
도 1은 일 실시예에 따른 영상 녹화 시스템의 텍스트 검색 장치의 블록도이다.
도 2는 일반적인 역 인덱스의 예이다.
도 3은 일 실시예에 따른 인덱스 생성의 예이다.
도 4는 일 실시예에 따른 부분 일치 검색의 예이다.
도 5는 일 실시예에 따른 인덱스 생성 절차이다.
도 6은 일 실시예에 따른 질의 처리 절차이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 따른 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 영상 녹화 시스템의 텍스트 검색 장치의 블록도이다. 도 1에 도시된 바와 같이 텍스트 검색 장치(100)는 인덱스관리부(110) 및 해시관리부(130)를 포함한다.
인덱스관리부(110)는 영상 녹화 시스템의 텍스트 검색을 위한 각종 인덱스를 생성하고 관리한다. 인덱스관리부(110)는 인덱스생성부(111)를 포함할 수 있다. 인덱스생성부(111)는 적어도 하나 이상의 인덱스 파일을 생성할 수 있다.
일반적인 영상 녹화 시스템은 하드디스크 조각(fragmentation)을 방지하고 오류 발생시 데이터 손실을 최소화하기 위해 하드디스크를 미리 일정한 크기의 파일로 미리 나누어서 사용한다. 영상 녹화 시스템에서 텍스트 검색을 위해서는 인덱스를 이렇게 영상 녹화에 적합한 구조로 미리 포맷해 놓은 파일 시스템 상에 구현하여야 하기 때문에 인덱스의 변경에 따라 하드디스크의 파티션 변경이나 파일 추가가 어렵다.
본 실시예에서는 이를 해결하기 위해 특정 영상 녹화 시스템에 맞게 미리 일정한 크기로 나누어진 파일 각각에 인덱스 하나씩을 구현하는 방식이 제시된다. 이때, 인덱스 파일의 수는 전처리 과정을 통해 결정할 수 있으며, 각 파일의 크기는 일정 크기로 설정될 수 있다. 즉, 특정 영상 녹화 시스템에서 인덱스 개수에 따른 검색 성능을 미리 측정하여 최적의 성능을 나타내는 인덱스의 수를 결정할 수 있다.
추가적인 양상에 따르면, 인덱스관리부(110)는 인덱스갱신부(112)를 더 포함할 수 있다. 인덱스갱신부(112)는 텍스트의 추가 삭제 등 인덱스에 변경 요인이 발생되면 인덱스를 실시간으로 갱신한다. 즉, 영상 녹화 시스템은 저장장치(하드디스크)가 가득 차게 되면 가장 오래된 영상을 지우고 새로운 영상의 녹화를 반복하는 오버라이트(Overwrite) 기능을 가지고 있다. 따라서, 각 영상에 포함되는 텍스트 정보도 실시간으로 새로운 텍스트가 추가되고 오래된 텍스트들은 삭제된다. 이 경우 텍스트 검색을 위해 실시간으로 인덱스에 반영이 되어야 하는데 텍스트가 삭제되는 경우 인덱스를 수정하는 것은 많은 오버헤드가 발생한다. 본 실시예의 인덱스갱신부(112)는 가장 오래된 인덱스 파일의 텍스트 인덱스에 해당하는 영상이 더 이상 남아 있지 않은 경우 그 파일을 인덱스에서 제거함으로써 간단하게 오버라이트를 할 수 있다.
해시관리부(130)는 도 1에 도시된 바와 같이 해시관리부(130)는 해시코드생성부(131) 및 해시테이블생성부(132)를 포함할 수 있다.
해시코드생성부(131)는 각종 검색용 단어들에 대한 제1 해시코드를 생성할 수 있다. 제1 해시코드는 해시테이블에서 인덱스 파일을 검색하기 위해 생성되는 것으로서, 그 제1 해시코드는 전 일치(whole word matching) 및 부분 일치(partial matching) 검색을 지원할 수 있도록 생성될 수 있다.
제1 해시코드는 부분 일치 검색이 가능하도록 검색용 단어의 적어도 일부(예컨대, 검색용 단어 앞 부분의 4 바이트(byte))에 대해 해시함수를 적용하여 생성될 수 있다. 다른 실시예에 의하면, 검색용 단어 전체를 각 바이트별로 해시함수를 적용하여 사이즈를 줄여 제1 해시코드를 생성할 수 있다. 예를 들어, 생성될 제1 해시코드의 최대 사이즈가 8 바이트이고 실제 검색용 단어의 사이즈가 9 바이트라면 각 1 바이트를 해시함수를 통해 7 비트(bit)로 만들면 전체 검색용 단어의 사이즈를 약 7 바이트로 줄이면서도 부분 일치 검색이 가능해진다.
해시테이블생성부(132)는 제1 해시코드와 인덱스 파일의 연결관계를 나타낸 해시테이블을 생성할 수 있다. 해시테이블에는 각 검색용 단어에 대한 제1 해시코드와 그 제1 해시코드에 대한 인덱스 파일의 번호가 포함될 수 있다. 해시테이블을 통해 사용자의 질의 데이터에 대한 질의를 수행하는 경우 검색 속도를 비약적으로 향상시킬 수 있다. 사용자는 해시테이블의 제1 해시코드를 이용하여 전 일치(whole word matching), 부분 일치(partial matching) 검색, 케이스 민감형(case-sensitive) 일치 및 부울린 질의 등의 각종 검색 방법을 사용하여 질의를 수행할 수 있다.
도 2에는 일반적인 역 인덱스(Inverted Index)의 구조를 예시하였다. 일반적인 텍스트의 검색은 도 2와 같이 검색 단어별로 그 단어를 포함하는 문서에 대한 링크를 가지는 역 인덱스의 구조를 사용한다. 그러나, 사양이 떨어지는 임베디드 영상 녹화 시스템의 경우 영상 녹화 검색의 부하가 시스템 리소스의 대부분을 차지하기 때문에 텍스트 검색을 위한 인덱스의 생성 및 텍스트 검색에 많은 오버헤드가 발생한다. 또한, 기존 텍스트가 삭제되거나 새로운 텍스트가 추가되는 경우 텍스트 검색을 위한 인덱스에도 실시간으로 반영이 되어야 하는 데 텍스트의 변동으로 인한 인덱스를 수정하는데 많은 오버헤드가 발생하게 된다.
그러나, 본 실시예에 따르면 인덱스를 영상 녹화 시스템의 파일 시스템에 맞게, 미리 고정된 일정한 수의 인덱스 파일을 생성하여 이를 이용함으로써 인덱스를 추가할 때에도 해당 파일 내에서 순차 기록(sequential writing)만 발생하여 영상 녹화 시스템의 전체 파일 구조를 변경할 필요없이 그대로 사용할 수 있고 이로 인해 시스템 리소스의 부하를 줄여 검색 성능을 향상시킬 수 있다.
도 3은 일 실시예에 따른 인덱스 생성의 예이다. 도 3을 참조하여 본 실시예에 따라 생성되는 인덱스의 구조를 설명한다. 도 3(a)는 해시테이블의 예이다. 도 3(b)는 저장장치에 생성된 인덱스 파일의 예이다. 도 3(c)는 각 인덱스 파일의 타임 인덱스와 텍스트 인덱스의 예이다.
도 3의 (a)를 참조하면, 해시테이블은 검색용 단어들에 대해 생성된 제1 해시코드와 그 단어들이 포함된 문서에 대한 정보를 가진 인덱스 파일의 정보를 포함하고, 그 제1 해시코드와 인덱스 파일의 연결 관계를 포함할 수 있다.
도 3의 (b)를 참조하면, 영상 녹화 시스템의 저장장치(HDD)에는 일정한 크기로 나누어진 8개의 인덱스 파일(File1 ~ File8)이 생성되어 있다. 인덱스 파일의 수는 전술한 바와 같이 전처리 과정을 거쳐 영상 녹화 시스템에서 최적의 검색 속도를 나타내도록 미리 결정될 수 있다.
사용자의 질의 요청시 이와 같이 제1 해시코드와 인덱스 파일의 연결 관계를 포함하고 있는 해시테이블을 이용하면 사용자의 질의 데이터에 대해 쉽게 질의를 수행하고 결과를 제공할 수 있다. 예를 들어, 질의 데이터가 'hello'이고, 그 'hello'에 대해 해시함수를 통해 생성된 제1 해시코드가 'YYYY'일 경우, 해시테이블을 검색하면 그 검색용 단어 'hello'가 포함된 문서의 인덱스 정보를 가진 인덱스 파일은 File2, File6임을 알 수 있다. 따라서, File2와 File6을 검색하면 손쉽게 질의 데이터에 대한 결과를 제공할 수 있다.
추가적인 양상에 따르면,도 3 (c)에 도시된 바와 같이, 각 인덱스 파일은 타임 인덱스 및 텍스트 인덱스를 포함할 수 있다. 인덱스생성부(111)는 각 인덱스 파일마다 타임 인덱스 및 텍스트 인덱스를 생성할 수 있다.
타임 인덱스는 바이너리(binary) 검색 후 시간 순서로 액세스가 가능하여야 한다. 영상 녹화 데이터의 경우에는 시간 범위를 정하고 그 시간 범위 내에서만 텍스트 검색을 수행할 필요가 있다. 이 경우에는 원하는 시간에 대한 타임 인덱스가 필요하다. 또한, 추가적인 양상에 따르면, 도 3(c)에 도시된 바와 같이 인덱스 파일은 검색용 단어의 정보와 그 검색용 단어가 포함된 실제 문서에 대한 링크를 가지는 텍스트 인덱스를 포함할 수 있다.
본 실시예에 따르면, 질의 데이터에 대한 검색의 효율을 높이기 위해서는 실제 텍스트 인덱스가 아닌 타임 인덱스만 이용하여 검색이 가능하도록 할 수 있다. 타임 인덱스만 보고 질의를 수행하기 위해서는 검색용 단어가 타임 인덱스에 포함될 필요가 있다. 따라서, 타임 인덱스는 바이너리 검색을 위해 고정 사이즈를 가지며 검색의 효율을 위해 검색용 단어들에 대해 해시함수를 이용하여 생성된 제2 해시코드를 포함할 수 있다. 또한, 타임 인덱스는 제2 해시코드와 텍스트 인덱스의 링크 정보를 더 포함할 수 있다.
한편, 검색용 단어는 가변 길이(variable length)를 가지므로, 이 검색용 단어들에 대해 고정 사이즈(예: 8 바이트)를 가지면서도 전 일치(whole word matching)와 부분 일치(partial matching) 검색이 가능하여야 한다. 해시함수를 사용하여 가변 길이를 고정 사이즈로 쉽게 줄일 수 있다. 그러나, 부분 일치(partial matching)도 가능하여야 하므로 각 검색용 단어를 바이트 단위로 해시함수를 사용하여 고정 사이즈의 제2 해시코드를 생성할 수 있다.
1 바이트는 최소한 1 비트 이상의 정보를 가져야 검색이 가능하므로 해시된 키워드 보다 8배 이상 큰 단어의 키워드의 경우에는 뒷 부분은 부분 일치 검색이 불가능하다. 따라서, 본 실시예에 따르면 해시된 키워드(제2 해시코드)의 크기가 8 바이트일 경우 타임 인덱스를 통해 최대 64 바이트의 단어까지 부분 일치 검색이 가능하다. 현실적으로 64 바이트가 넘어가는 단어는 거의 없고 64 바이트가 넘는 경우에는 실제 텍스트 인덱스를 로드하여 그 텍스트 인덱스를 이용하면 정상적인 검색이 가능하므로 전혀 문제되지 않는다.
본 실시예의 추가적인 양상에 따르면, 텍스트 검색 장치(100)는 사용자의 질의 요청을 수신하고, 수신된 질의 데이터에 대해 질의를 수행하여 그 검색 결과를 사용자에게 제공하는 질의처리부(120)를 더 포함할 수 있다. 좀 더 구체적으로, 질의처리부(120)는 질의수신부(121), 질의수행부(122) 및 결과제공부(미도시)를 더 포함할 수 있다.
질의수신부(121)는 사용자의 질의 요청과 질의 데이터를 수신할 수 있다. 사용자는 예를 들어, '도심공항타워'와 같이 검색하고자 하는 단어 전체를 질의 데이터로 입력할 수 있으나, 한편으로는 '도심*' 또는 '도심공항*'과 같이 단어 앞 부분만을 질의 데이터로 입력할 수 있다. 질의수신부(121)는 사용자의 단말기(미도시) 등을 통해 예시된 바와 같은 질의 데이터를 입력받는다.
질의수행부(122)는 질의수신부(121)가 질의 데이터를 수신하면 해시코드생성부(131)로 하여금 그 질의 데이터에 대한 제1 해시코드 생성을 요청한다. 해시코드생성부(131)는 질의수행부(122)의 요청에 따라 그 질의 데이터에 대한 제1 해시코드를 생성하여 질의수행부(122)에 제공한다.
예를 들어, 도 3에 도시된 바와 같이 사용자가 질의 데이터로 'hello'를 입력하였다면 질의수신부(121)는 질의 데이터 'hello'를 수신하고, 질의수행부(122)로 하여금 'hello'에 대한 질의를 수행하도록 요청한다. 질의수행부(122)는 해시코드생성부(131)로 하여금 'hello'에 대한 제1 해시코드 생성을 요청하고, 해시코드생성부(131)에 의해 생성된 제1 해시코드가 'YYYY'라면 해시테이블을 읽는다. 해시테이블을 통해 제1 해시코드 'YYYY'가 저장된 인덱스 파일이 'File2'와 'File6'라는 것을 알 수 있다. 따라서, 해당 인덱스 파일을 순차적으로 검색하는 경우 질의 데이터에 결과를 검색할 수 있다.
이때, 추가적으로 인덱스 파일(File2)에 텍스트 인덱스가 생성되어 있다면 그 텍스트 인덱스를 통해 'hello'가 포함된 문서가 저장된 위치를 손쉽게 찾아갈 수 있다. 만약, 사용자가 질의 데이터에 시간 범위 데이터를 추가로 입력하였다면, 인덱스 파일(File2)에 생성되어 있는 타임 인덱스를 순차적으로 바이너리 검색하여 해당 질의 데이터에 대한 결과를 검색할 수 있다. 타임 인덱스에는 검색용 단어에 대한 제2 해시코드가 포함되어 있으므로 이를 비교함으로써 텍스트 인덱스를 전부 검색할 필요없이 그 제2 해시코드와 연결된 텍스트 인덱스의 위치를 찾아서 손쉽게 질의를 수행할 수 있다. 일치하는 제2 해시코드가 없다면 텍스트 인덱스를 로드하여 순차 검색함으로써 그 결과를 구할 수 있다.
한편, 도 4는 일 실시예에 따른 부분 일치 검색의 예이다. 질의수행부(122)는 질의 데이터에 대한 부분 일치 검색을 수행할 수 있다. 일 양상에 따르면, 부분 일치 검색은 해시테이블 검색 단계에서 수행될 수 있다. 해시코드생성부(131)는 질의 데이터가 'hand*'라면 검색 속도의 향상을 위해 질의 데이터의 앞 부분의 최소 검색 글자수(예: 4 바이트)만 가지고 해시를 하여 제1 해시코드를 생성할 수 있다. 질의수행부(122)는 이 제1 해시코드를 통해 앞 부분만을 이용한 부분 일치 검색을 수행하여 해시테이블에서 인덱스 파일을 쉽게 검색할 수 있다.
또한, 다른 양상에 따르면, 부분 일치 검색은 타임 인덱스 검색 단계에서 수행될 수 있다. 예를 들어, 도 4의 좌측은 8 바이트의 검색용 단어 'handsome'을 각 바이트 단위로 해시함수를 사용하여 4 비트씩 줄여 생성된 제2 해시코드를 타임 인덱스에 저장한 예이다. 이때, 만약, 질의 데이터로 4 바이트의 단어 'hand'가 입력되었다면, 그 질의 데이터를 바이트 단위로 4 비트씩 줄여 그 결과를 이용하여 타임 인덱스에서 제2 해시코드와 부분 일치 검색을 할 수 있다.
결과제공부(미도시)는 질의수행부(122)에 의해 구해진 질의 데이터에 대한 검색 결과를 요청한 사용자의 단말기에 전송함으로써 사용자에게 제공할 수 있다.
도 5는 일 실시예에 따른 인덱스 생성 절차이다. 본 실시예에 따라 영상 녹화 시스템에서 텍스트 검색을 위해 인덱스 및 해시테이블 생성에 대한 절차는 앞서 상세히 상술하였으므로, 이하 자세한 설명은 생략하기로 한다.
도 5를 참조하여 해시함수 기반의 인덱스를 이용한 텍스트 검색 방법 중 인덱스 생성 절차를 설명하면, 먼저, 인덱스관리부(110)가 적어도 하나 이상의 인덱스 파일을 생성한다(단계 310). 인덱스관리부(110)는 영상 녹화 시스템에 맞게 미리 일정한 크기로 나누어진 파일 각각에 인덱스 하나씩을 구현한다. 이때, 인덱스 파일의 수는 그 영상 녹화 시스템에서 인덱스 개수에 따른 검색 성능을 미리 측정하여 최적의 성능을 나타내는 인덱스의 수를 결정할 수 있다.
그 다음, 해시관리부(130)는 검색용 단어들에 대한 제1 해시코드를 생성한다(단계 320). 제1 해시코드는 해시테이블에서 인덱스 파일을 검색하기 위해 생성되는 것으로서, 제1 해시코드는 전 일치(whole word matching) 및 부분 일치(partial matching) 검색을 지원할 수 있도록 생성될 수 있다.
제1 해시코드는 부분 일치 검색을 지원할 수 있도록 검색용 단어의 적어도 일부(예: 검색용 단어의 앞 4바이트)에 대해 해시함수를 적용하여 생성될 수 있다. 한편, 다른 양상에 따르면 검색용 단어를 각 바이트(byte) 별로 해시함수를 적용하여 사이즈를 줄여 제1 해시코드를 생성할 수 있다. 예를 들어, 생성될 제1 해시코드 최대 사이즈가 8 바이트이고 실제 검색용 단어가 9 바이트라면 각 1 바이트를 해시함수를 통해 7 비트로 만들면 그 검색용 단어의 사이즈를 약 7 바이트로 줄이면서도 부분 일치 검색이 가능해진다.
그 다음, 해시관리부(130)는 생성된 제1 해시코드와 인덱스 파일의 연결관계를 나타낸 해시테이블을 생성할 수 있다(330). 도 3의 (a)에 도시된 바와 같이, 해시테이블에는 각 검색용 단어에 대한 제1 해시코드와 그 제1 해시코드에 대한 인덱스 파일의 번호가 포함될 수 있다. 해시테이블을 통해 사용자의 질의 데이터에 대한 질의를 수행하는 경우 검색 속도를 비약적으로 향상시킬 수 있다.
그 다음, 각 인덱스 파일에 대하여 타임 인덱스 또는 텍스트 인덱스를 생성할 수 있다. 텍스트 인덱스는 검색용 단어의 정보와 그 검색용 단어가 포함된 실제 문서에 대한 링크를 가질 수 있다. 타임 인덱스는 영상 녹화 데이터의 경우 시간 범위를 정하고 그 시간 범위 내에서만 텍스트 검색을 수행할 수 있도록 한다. 타임 인덱스는 시간, 검색용 단어에 대해 생성된 제2 해시코드 및 그 해시코드와 텍스트 인덱스의 연결 정보를 포함할 수 있다. 제2 해시코드는 전술한 바와 같이 검색용 단어를 바이트 단위로 해시화하여 고정 사이즈로 생성되어 부분 일치 검색을 지원할 수 있다.
도 6은 일 실시예에 따른 질의 처리 절차이다. 도 3 및 도 6을 참조하여 본 실시예에 따른 해시함수 기반의 인덱스를 사용한 텍스트 검색 절차를 설명한다.
질의수신부(121)는 사용자의 질의 요청과 질의 데이터를 수신할 수 있다(단계 510). 사용자는 예를 들어, '도심공항타워', 'hello'와 같이 검색하고자 하는 단어 전체를 질의 데이터로 입력할 수 있으며, '도심*' 또는 '도심공항*'과 같이 단어 앞 부분만을 질의 데이터로 입력할 수도 있다. 한편, 질의수신부(121)는 시간 범위 검색을 위한 시간 범위 데이터를 더 수신할 수 있다. 질의수신부(121)는 사용자의 단말기(미도시) 등을 통해 예시된 바와 같은 질의 데이터를 입력받는다.
그 다음, 질의수행부(122)는 질의수신부(121)가 질의 데이터(예: 'hello')를 수신하면 해시코드생성부(131)로 하여금 그 질의 데이터에 대한 제1 해시코드 생성을 요청한다. 해시코드생성부(131)는 질의수행부(122)의 요청에 따라 그 질의 데이터에 대한 제1 해시코드(예: 'YYYY')를 생성하여 질의수행부(122)에 제공한다(단계 520).
그 다음, 질의수행부(122)는 해시테이블에서 그 제1 해시코드(예: 'YYYY')에 대응한 인덱스 파일(예: File2, File6)을 읽는다(단계 530). 질의수행부(122)는 해시테이블에서 읽은 인덱스 파일이 'File2'와 'File6'을 순차적으로 검색하여 질의 데이터를 검색할 수 있다. 이때, 추가적으로 인덱스 파일(File2)에 텍스트 인덱스가 생성되어 있다면 그 텍스트 인덱스를 통해 'hello'가 포함된 문서가 저장된 위치를 손쉽게 찾아갈 수 있다(단계 580).
만약, 사용자가 질의 데이터에 시간 범위 데이터를 추가로 입력하였다면(단계 540), 인덱스 파일(File2)에 생성되어 있는 타임 인덱스를 로드하고, 순차적으로 바이너리 검색하여 해당 질의 데이터에 대한 결과를 검색할 수 있다(단계 550). 타임 인덱스에는 검색용 단어에 대한 제2 해시코드가 포함되어 있으므로 이를 비교함으로써 텍스트 인덱스를 전부 검색할 필요없이 그 제2 해시코드와 연결된 텍스트 인덱스의 위치를 찾아서 손쉽게 질의를 수행할 수 있다(단계 570). 일치하는 제2 해시코드가 없다면 텍스트 인덱스를 로드하여 순차 검색함으로써 그 결과를 구할 수 있다.
이때, 도 4에 도시된 바와 같이, 질의수행부(122)는 질의 데이터에 대한 부분 일치 검색을 수행할 수 있다. 예를 들어, 도 4의 좌측은 8 바이트의 검색용 단어 'handsome'을 각 바이트 단위로 해시함수를 사용하여 4 비트씩 줄여 타임 인덱스에 저장한 예이다. 이때, 만약, 질의 데이터로 4 바이트의 단어 'hand'가 입력되었다면, 역시 바이트 단위로 4 비트씩 줄여 생성된 결과로 타임 인덱스에서 제2 해시코드와 부분 일치 검색을 할 수 있다.
마지막으로, 결과제공부(미도시)는 검색된 결과를 요청한 사용자에게 제공한다(단계 590).
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 텍스트 검색 장치 110: 인덱스관리부
111: 인덱스생성부 112: 인덱스갱신부
120: 질의처리부 121: 질의요청수신부
122: 질의수행부 130: 해시관리부
131: 해시코드생성부 132: 해시테이블생성부

Claims (13)

  1. 영상 녹화 시스템의 텍스트 검색 장치에 있어서,
    적어도 하나 이상의 인덱스 파일을 생성하는 인덱스생성부; 및
    검색용 단어에 대한 제1 해시코드를 생성하며, 상기 제1 해시코드와 상기 인덱스 파일에 대한 연결 정보가 포함된 해시테이블을 생성하는 해시관리부;를 포함하고,
    상기 적어도 하나 이상의 인덱스 파일 각각은
    상기 검색용 단어를 바이트(byte) 단위로 해시함수를 적용하여 생성한 제2 해시코드를 포함하는 타임 인덱스를 포함하는 해시함수 기반의 인덱스를 이용한 텍스트 검색 장치.
  2. 제1항에 있어서, 상기 적어도 하나 이상의 인덱스 파일 각각은
    검색용 단어 정보와 그 단어가 포함된 문서에 대한 연결 정보를 포함하는 텍스트 인덱스를 더 포함하는 해시함수 기반의 인덱스를 이용한 텍스트 검색 장치.
  3. 제2항에 있어서, 상기 타임 인덱스는
    상기 영상 녹화 시스템의 소정 시간 범위 내에서 텍스트 검색을 위한 시간 정보와 상기 텍스트 인덱스로의 연결 정보를 더 포함하는 해시함수 기반의 인덱스를 이용한 텍스트 검색 장치.
  4. 삭제
  5. 제1항에 있어서, 상기 제2 해시코드는
    전 일치 질의(whole word matching) 또는 부분 일치(partial matching) 질의를 지원하는 해시함수 기반의 인덱스를 이용한 텍스트 검색 장치.
  6. 제1항에 있어서, 상기 제1 해시코드는
    상기 검색용 단어의 적어도 일부에 대해 해시함수를 적용하여 부분 일치 검색이 가능하도록 생성한 것인 해시함수 기반의 인덱스를 이용한 텍스트 검색 장치.
  7. 제1항에 있어서, 상기 인덱스 파일은
    상기 영상 녹화 시스템의 저장 장치에 미리 포맷되어 있는 파일 시스템에 기초하여 생성된 것인 해시함수 기반의 인덱스를 이용한 텍스트 검색 장치.
  8. 영상 녹화 시스템의 텍스트 검색 방법에 있어서,
    적어도 하나 이상의 인덱스 파일을 생성하는 단계;
    검색용 단어에 대한 제1 해시코드를 생성하는 단계; 및
    상기 제1 해시코드와 상기 인덱스 파일에 대한 연결 정보가 포함된 해시테이블을 생성하는 단계;를 포함하고,
    상기 적어도 하나 이상의 인덱스 파일 각각은
    상기 검색용 단어를 바이트(byte) 단위로 해시함수를 적용하여 생성한 제2 해시코드를 포함하는 타임 인덱스를 포함하는 해시함수 기반의 인덱스를 이용한 텍스트 검색 방법.
  9. 제8항에 있어서, 상기 적어도 하나 이상의 인덱스 파일 각각은
    상기 검색용 단어 정보와 그 단어가 포함된 문서에 대한 연결 정보를 포함하는 텍스트 인덱스를 더 포함하는 해시함수 기반의 인덱스를 이용한 텍스트 검색 방법.
  10. 제9항에 있어서, 상기 타임 인덱스는
    상기 영상 녹화 시스템의 소정 시간 범위 내에서 텍스트 검색을 위한 시간 정보와 상기 텍스트 인덱스로의 연결 정보를 더 포함하는 해시함수 기반의 인덱스를 이용한 텍스트 검색 방법.
  11. 삭제
  12. 제8항에 있어서, 상기 제2 해시코드는
    전 일치 질의(whole word matching) 또는 부분 일치(partial matching) 질의를 지원하는 해시함수 기반의 인덱스를 이용한 텍스트 검색 방법.
  13. 제8항에 있어서, 상기 인덱스 파일은
    상기 영상 녹화 시스템의 저장 장치에 미리 포맷되어 있는 파일 시스템에 기초하여 생성된 것인 해시함수 기반의 인덱스를 이용한 텍스트 검색 방법.
KR1020110147615A 2011-12-30 2011-12-30 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법 KR101299555B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110147615A KR101299555B1 (ko) 2011-12-30 2011-12-30 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110147615A KR101299555B1 (ko) 2011-12-30 2011-12-30 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20130078594A KR20130078594A (ko) 2013-07-10
KR101299555B1 true KR101299555B1 (ko) 2013-08-23

Family

ID=48991513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110147615A KR101299555B1 (ko) 2011-12-30 2011-12-30 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101299555B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558702B2 (en) * 2016-04-06 2020-02-11 Baidu Usa Llc Unified storage system for online image searching and offline image analytics
KR102289408B1 (ko) 2019-09-03 2021-08-12 국민대학교산학협력단 해시 코드 기반의 검색 장치 및 검색 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040074329A (ko) * 2003-02-17 2004-08-25 삼성전자주식회사 데이터 통신 시스템에서 패킷 터널링을 위한 종단 주소관리 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040074329A (ko) * 2003-02-17 2004-08-25 삼성전자주식회사 데이터 통신 시스템에서 패킷 터널링을 위한 종단 주소관리 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Ronald L. Rivest. ON HASH-CODING ALGORITHMS FOR PARTIAL-MATCH RETRIEVAL. Switching and Automata Theory, 1974.10., pp.95-103 *
Ronald L. Rivest. ON HASH-CODING ALGORITHMS FOR PARTIAL-MATCH RETRIEVAL. Switching and Automata Theory, 1974.10., pp.95-103*

Also Published As

Publication number Publication date
KR20130078594A (ko) 2013-07-10

Similar Documents

Publication Publication Date Title
US8554561B2 (en) Efficient indexing of documents with similar content
JP5373846B2 (ja) リレーショナルシステムにおける階層的に編成された情報にアクセスするための階層的インデックス付け
US9262280B1 (en) Age-out selection in hash caches
US8402071B2 (en) Catalog that stores file system metadata in an optimized manner
JP4939421B2 (ja) データを検索し記憶するシステム及び方法
US8296312B1 (en) Search and update of attributes in file systems
US7293005B2 (en) Pipelined architecture for global analysis and index building
US8527556B2 (en) Systems and methods to update a content store associated with a search index
AU2013210018B2 (en) Location independent files
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
JP2005122702A5 (ko)
JP2008513891A6 (ja) データを検索し記憶するシステム及び方法
JP2017504924A (ja) ファイルシステムのコンテンツベースの編成
US20200403633A1 (en) Advanced database compression
US9418154B2 (en) Push-model based index updating
US8832046B2 (en) Encoded data processing
US9594784B2 (en) Push-model based index deletion
JP6726690B2 (ja) 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行
US8756246B2 (en) Method and system for caching lexical mappings for RDF data
KR101299555B1 (ko) 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법
CN108595489A (zh) 一种数据检索方法及装置
US11144580B1 (en) Columnar storage and processing of unstructured data
CN103220355B (zh) 内容分发网络中的多用户配置方法
US20110202506A1 (en) Foldering by stable query
JP2015176407A (ja) 検索装置、検索方法、検索用プログラムおよび検索用データ構造

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee