KR100920745B1 - 질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를위한 압축 방법, 및 구문 역 리스트 관리 방법 - Google Patents

질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를위한 압축 방법, 및 구문 역 리스트 관리 방법 Download PDF

Info

Publication number
KR100920745B1
KR100920745B1 KR1020080019987A KR20080019987A KR100920745B1 KR 100920745 B1 KR100920745 B1 KR 100920745B1 KR 1020080019987 A KR1020080019987 A KR 1020080019987A KR 20080019987 A KR20080019987 A KR 20080019987A KR 100920745 B1 KR100920745 B1 KR 100920745B1
Authority
KR
South Korea
Prior art keywords
list
query
reverse
pid
compression
Prior art date
Application number
KR1020080019987A
Other languages
English (en)
Other versions
KR20090094961A (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 KR1020080019987A priority Critical patent/KR100920745B1/ko
Publication of KR20090094961A publication Critical patent/KR20090094961A/ko
Application granted granted Critical
Publication of KR100920745B1 publication Critical patent/KR100920745B1/ko

Links

Images

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Abstract

본 연구는 정보통신부 및 정보통신연구진흥원의 IT신성장동력핵심기술개발사업[2006-S-040-01, Flash Memory 기반 임베디드 멀티미디어 소프트웨어 기술 개발]의 일환으로 수행하였습니다.
질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를 위한 압축 방법, 및 구문 역 리스트 관리 방법이 제공된다. 이 질의 처리 방법은 삭제된 데이터 각각에 대한 PID를 삭제 리스트 테이블에 저장하는 단계; 역 리스트 테이블에서, 타겟 역 리스트 - 입력된 질의에 대응되는 역 리스트 - 를 검색하는 단계; 상기 역 리스트에 포함된 적어도 하나의 PID 각각에 대해, 상기 삭제 리스트 테이블에 있는지를 확인하는 단계; 및 상기 검색된 역 리스트 및 상기 확인하는 단계의 결과를 기초로, 상기 질의에 응답하는 결과 값을 생성하는 단계를 포함한다. 따라서, 질의 처리 방법은 정확한 질의 응답 값을 효율적으로 검색 및 제공할 수 있다.

Description

질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를 위한 압축 방법, 및 구문 역 리스트 관리 방법 {query processing method, inverted list maintaining method, compression method for maintaining inverted list, phrase inverted list managing method}
본 발명은 역 파일(inverted file)에 관한 것으로, 보다 상세하게는 질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를 위한 압축 방법, 및 구문 역 리스트 관리 방법에 관한 것이다.
역 리스트(inverted list)를 이용하여 질의 평가를 하는 역 파일들(inverted files)에 대한 다양한 방법들이 제안되어있는데, 그 접근 방법에 따라 크게 세 가지로 구분된다. 여기서, 역 파일은 파일 시스템 또는 데이터 베이스 등과 같이 대량의 자료가 관리되는 곳에서 보다 신속하게 자료를 검색하기 위하여 각각의 자료에 대한 색인이 구성되는 파일을 지칭한다.
첫 번째 방법은 압축을 이용한 역 파일 기법이다. 역 리스트를 효과적으로 압축하여 2차 메모리에 저장하고, 필요할 때 이 역 리스트를 주 메모리에 올려서 사용한다. 이 방법은 I/O 입/출력보다 CPU의 처리 속도가 빠르다는 것에 착안하여 역 리스트를 최소한으로 압축하고, 이를 이용하여 질의하는 방법들로서, J. Zobel, A. Moffat, and R. Sacks-Davis, "An Efficient Indexing Technique for Full-Text Database Systems, Proceedings of the 18th VLDB Conferencce Vancouver, British Columbia, Canada 1992.로 특정되는 문헌(이하, 제1 선행 문헌), A. Moffat and J. Zobel, "Self-Indexing Inverted Files for Fast Text Retrieval", ACM Transactions on Information Systems, Vol 14, Issue 4, pages 349-379, Oct. 1996.로 특정되는 문헌(이하, 제2 선행 문헌), P. Boldi and S. Vigna, "Compressed Perfect Embedded Skip lists for Quick Inverted-Index Lookups", String Processing and Information Retrieval 2005, page 25-28, Oct. 2005.로 특정되는 문헌(이하, 제3 선행 문헌), Anh, V.N., and A. Moffat, "Inverted index Compression using word-aligned binary codes" Information Retrieval.로 특정되는 문헌(이하, 제4 선행 문헌), 및 A. Trotman and V. Subramanya, "Sigma Encoded Inverted Files", Proceedings of the 16th ACM Conference on Information and Knowledge Management, pages 983-986, Nov. 2007.로 특정되는 문헌(이하, 제5 선행 문헌) 등에서 제안되었다.
두 번째 방법은 프루닝(Pruning)과 랭킹(Ranking)을 효과적으로 처리함으로써, 질의 평가 속도를 향상시키고자 제안한 방법들이 있다. 프루닝은 영어의 'a'나 'the'와 같이 특별한 의미를 가지고 있지 않는 단어들에 대해서는 역 리스트를 구성하지 않음으로써, 리스트 사이즈를 축소시키고, 질의 처리 속도를 증가시키고자 하는 것이 기본 아이디어이다. 랭킹은 질의를 요청한 사용자에게 최대한 정확한 결 과 값을 제공하기 위해서 사용된다.
세 번째 방법은 역 리스트를 가지고 있는 어휘 (vocabulary : 이하, voca)을 효과적으로 기술하는 방법들을 도입하여, 인덱싱의 속도를 증가시키고자하는 기법이다. 일반적으로는 B 트리나 해슁(Hashing) 기법을 사용하였지만, 최근에는 Trie-Tree를 이용한 방법들도 제안되고 있다.
역 파일들을 구성할 때, 상술한 압축, 프루닝 및 랭킹, 용어 구성(Term Construction)을 적절히 사용하면 개발 환경에 적합한 색인 관리자(indexing manager)를 설계할 수 있다.
하지만 기존 선행 기술에서 Golomb 압축 알고리즘으로 압축되어 있는 역 리스트에서 특정 문서가 삭제되면, 그 문서에 해당하는 비트 열을 역 리스트에서 제거해야 한다. 그러면, 삭제된 비트 열을 채우기 위해서 그 이후의 모든 비트열을 앞쪽으로 이동해야 하는데, 역 리스트의 크기가 작게는 수십 메가 바이트에서 수십 테라 바이트 이상인 것을 고려하면, 비트열 이동에 따른 CPU 및 I/O 등의 자원 소모 문제가 심각하게 발생된다.
본 발명이 이루고자 하는 기술적 과제는 효율적인 질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를 위한 압축 방법, 및 구문 역 리스트 관리 방법을 제공하는 데 있다.
상기의 기술적 과제를 이루기 위해 본 발명의 제1 측면은 삭제된 데이터 각각에 대한 PID를 삭제 리스트 테이블에 저장하는 단계; 역 리스트 테이블에서, 타겟 역 리스트 - 입력된 질의에 대응되는 역 리스트 - 를 검색하는 단계; 상기 역 리스트에 포함된 적어도 하나의 PID 각각에 대해, 상기 삭제 리스트 테이블에 있는지를 확인하는 단계; 및 상기 검색된 역 리스트 및 상기 확인하는 단계의 결과를 기초로, 상기 질의에 응답하는 결과 값을 생성하는 단계를 포함하는 질의 처리 방법을 제공한다.
상기의 기술적 과제를 이루기 위해 본 발명의 제2 측면은 어휘가 존재하는 위치를 나타내는 오프셋들 및 상기 오프셋들을 구분하기 위한 적어도 하나의 구분자를 포함하는 압축 대상을 획득하는 단계; 및 상기 적어도 하나의 구분자의 출현 확률을 상기 오프셋들의 출현 확률보다 높게 간주하여, 상기 압축 대상을 압축하는 단계를 포함하는 역 리스트 관리를 위한 압축 방법을 제공한다.
상기의 기술적 과제를 이루기 위해 본 발명의 제3 측면은 데이터가 삭제되는 경우, 삭제되는 데이터에 대한 PID를 역 리스트 테이블에서 삭제하는 대신, 상기 삭제되는 데이터에 대한 PID를 삭제 리스트 테이블에 저장하는 단계; 및 소정의 주기마다 상기 삭제 리스트 테이블에 속하는 적어도 하나의 PID를 역 리스트 테이블로부터 삭제하는 단계를 포함하는 역 리스트 관리 방법을 제공한다.
상기의 기술적 과제를 이루기 위해 본 발명의 제4 측면은 데이터가 삭제되는 경우, 삭제되는 데이터에 대한 PID를 역 리스트 테이블에서 삭제하는 대신, 상기 삭제되는 데이터에 대한 PID를 삭제 리스트 테이블에 저장하는 단계; 및 입력된 질의에 대한 결과 값에 대응하는 PID가 상기 삭제 리스트 테이블에 있으면, 상기 결과 값에 대응하는 PID를 상기 삭제 리스트 테이블로부터 삭제하는 단계를 포함하는 역 리스트 관리 방법을 제공한다.
상기의 기술적 과제를 이루기 위해 본 발명의 제5 측면은 질의된 구문 각각에 대한 질의 빈도를 포함하는 정보를 질의 빈도 테이블(frequent query table)에 넣어 관리하는 단계; 및 상기 질의 빈도 테이블을 기초로, 소정 횟수 이상 질의된 구문에 대한 정보를 구문 역 리스트 테이블에 저장하는 단계를 포함하는 구문 역 리스트 관리 방법을 제공한다.
상기에서 제시한 본 발명의 실시예들은 다음의 장점들을 포함하는 효과를 가질 수 있다. 다만, 본 발명의 모든 실시예들이 이를 전부 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따르면, 스트링 검색을 효율적으로 수행할 수 있다.
또한, 본 발명의 일실시예에 따르면, 사용자 질의에 대한 답변의 정확성과 일관성을 유지할 수 있다.
또한, 본 발명의 일실시예에 따르면, 구문 질의에 대한 질의 평가(Query evaluation)를 기존의 방법보다 빠르게 처리할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 역 리스트를 효율적으로 관리할 수 있 다.
또한, 본 발명의 일 실시예에 따르면, 문서 삭제시 역 리스트 테이블의 갱신에 필요한 오버헤드를 최소화할 수 있다.
또한, 본 발명의 일실시예에 따르면, MxNxK번의 비트 열 이동에서 1번의 비트 열 이동으로 개선할 수 있다.
또한, 본 발명에 따르면, 큰 사이즈의 2차 메모리(secondary memory)를 가지고 있지만, 제한된 주 메모리(main memory)와 낮은 처리 능력을 갖춘 디바이스에서도 효율적으로 스트링을 검색할 수 있다.
본 발명의 실시예들에 관한 설명은 본 발명의 구조적 내지 기능적 설명들을 위하여 예시된 것에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예들에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 본 발명의 실시예들은 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다.
한편, 본 발명에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로 이들 용어들에 의해 본 발명의 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
"및/또는"의 용어는 하나 이상의 관련 항목으로부터 제시가능 한 모든 조합을 포함하는 것으로 이해되어야 한다. 예를 들어, "제1 항목, 제2 항목 및/또는 제3 항목"의 의미는 "제1 항목, 제2 항목 및 제3 항목 중 적어도 하나 이상"을 의미하는 것으로, 제1, 제2 또는 제3 항목뿐만 아니라 제1, 제2 및 제3 항목들 중 2개 이상으로부터 제시될 수 있는 모든 항목의 조합을 의미한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 발명에서 기재된 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 발명에서 기술한 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동 일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
역 리스트를 이용한 스트링 색인(string indexing) 기법은 상술한 바와 같이, 다양한 방법들이 존재한다. 색인 관리자(index manager)의 구성은 도 1로 예시되는 색인 생성 과정, 및 질의 처리 과정으로 나눌 수가 있다.
색인 생성 과정은 역 리스트 생성(inverted list construction)이라고 부를 수가 있는데, 각각의 어휘(voca)들을 추출하는 과정, 추출된 어휘들에서 불용어(stop word)와 같이 의미가 적은 어휘들을 제거하는 프루닝 과정, 어휘에서 복수, 조사, 과거형으로부터 하나의 명사만을 정의하는 스테밍(steming) 과정, 이렇게 생성된 어휘들로 검색을 용이하게 하기 위해서 B 트리를 생성하는 과정, 문서에서 역 리스트를 추출하는 과정, 역 리스트를 2차 메모리에 저장하기 위해 압축하는 과정으로 구성된다.
그리고, 질의 처리 과정은 검색어가 역 리스트에 있는지를 확인해 보기 위한 set containment 과정과 검색의 결과들의 순위를 정하는 랭킹 과정으로 이루어져 있다.
I. 역 리스트 구성
도 1을 참조하여, 역 리스트 생성 과정을 설명하면 다음과 같다.
사용자(User)가 색인 관리자에게 역 리스트를 생성하고자 하는 칼럼에 대한 정보(docu, table, column)을 보내면, 색인 관리자가 역 리스트 생성을 담당하는 역 리스트 생성자(inverted list constructor)에게 이 정보들을 전송한다. 역 리스트 생성자가 <docu, Table, Column>을 관계형 데이터베이스 관리 시스템(relational database management system : 이하, RDBMS)에 송부하면, RDBMS는 이들에 대한 PID(Position Info iDentity)를 위치 정보 테이블(Position Info Table)로부터 검색하고, 해당 칼럼에 대한 실제 자료(actual data)들을 PID와 함께 역 리스트 생성자에게 전송한다.
역 리스트 생성자는 실제 자료(actual data)를 파싱하고, 파싱된 어휘에 PID와 Offset 값을 추가하여 역 리스트를 구성하고, 이를 RDBMS에 전송한다.
역 리스트 생성자는 Justin Zobel, Alistair Moffat, "Inverted Files for Text Search Engines" ACM Computing Surveys Vol.38, No 2, Article 6, July 2006.로 특정되는 문헌(이하, 제6 선행 문헌)에서 소개된 머지 기반(Merge-based) 기법에 의해서 역 리스트를 생성하는 데, 본 발명에서는 RDBMS에서 사용되는 문 서(document) 번호, 테이블, 칼럼 등을 적용하기 위하여 기존의 머지 기반 기법을 변형하여 사용한다. 기존의 방법에서는 문서 구분을 위해서 문서 번호를 그대로 사용하여 역 리스트를 구성하였지만, RDBMS에서는 자료가 실제 저장되는 테이블과 칼럼에 따라서 서로 다른 것으로 인식해야 하므로, PID를 RDBMS로부터 검색하여 이를 역 리스트에서 문서 번호 대신 사용한다. 또한, 머지를 위하여 RDBMS에 임시 저장 공간을 만들게 되는데, 이 임시 저장 공간은 역 리스트 테이블과 같이 (Key, Voca, Frequency, Foreign_PID, Offset) 칼럼을 가지고 있지만, 동일한 이름의 Voca가 두 번 이상 허용된다는 것이 다른 점이다. 이 테이블을 역 리스트 테이블과 구분하기 위해서 임시 역 리스트 테이블(Temp Inverted List Table)이라고 칭한다. 입력 문서에 대한 파싱(Parsing)이 끝나고 나면, 동일한 이름의 voca들을 임시 역 리스트 테이블로부터 추출하여 머지한 후에 완성된 역 리스트 테이블을 구성하게 된다.
도 2a 및 도 2b는 상술한 본 발명의 일실시예에 따른 각각 RDBMS를 위한 머지 기반 역(merge-based inversion) 알고리즘 및 머지 기반 프로세서를 설명하기 위한 도면이다.
이러한 과정을 통하여 역 리스트가 구성되면, 사용자는 생성된 역 리스트에 대한 질의를 색인 관리자에게 보내어, 이에 대한 결과 값들을 색인 관리자로부터 받을 수가 있다. 결과 값들은 (Document Number, Table, Column)의 형태를 갖는다.
II. 질의 평가
도 3은 본 발명의 일실시예에 따른 단일 질의 평가 과정을 설명하기 위한 도면이다.
단일 질의 평가는 하나의 단어에 대한 질의 응답을 위한 것으로서, 가장 간단한 방법은, 제1 선행 문헌에 개시된 바와 같이, 찾고자 하는 단어에 대한 역 리스트와 그에 해당하는 (Document Number, Table, Column)를 사용자에게 보내주면 된다.
질의에 대한 결과 값이 나오면, 이들에 대한 랭킹을 매기게 되는데, 이는 사용자가 찾고자 하는 결과 값에 유사한 자료들을 먼저 검색 결과로서 보내주기 위함이다.
랭킹에 사용되는 방법은 일반적으로 하나의 문서 내에 어휘가 출현하는 빈도와 전체 문서들에서 어휘가 출현하는 빈도를 고려하여 계산하는데, 자세한 방법은 제6 선행 문헌을 참조하기 바란다.
도 3을 참조하면, 하나의 어휘에 대한 사용자 요청이 들어오면, 색인 관리자는 질의 평가자(Query Evaluator)에게 어휘를 나타내는 단일 질의를 송부하고, 질의 평가자는 이것을 다시 RDBMS에게 전달한다.
RDBMS는 단일 질의에 해당하는 자료들을 역 리스트 테이블에서 검색하여 결과 역 리스트를 생성하고, 실제 위치 정보를 저장하고 있는 위치 정보 테이블에서 결과 값에 대한 Document Number, Table, Column의 위치 정보(Position Info)를 추출한다. RDBMS는 이 값들을 삭제 리스트 테이블(Deletion List Table)의 PID와 비 교하여, 만약 추출한 값들의 PID가 삭제 리스트 테이블에 존재하면, 해당 문서가 삭제되었다는 것을 의미하므로, 결과 값 목록에서 그 PID를 제거한다. 이렇게 생성된 결과 값의 역 리스트와 위치 정보를 RDBMS가 질의 평가자에게 전달하면, 질의 평가자는 위 값들을 이용하여 최종 결과 집합(Final Result Set)을 만들어서 색인 관리자에게 송신한다.
이 최종 결과 집합은 사용 목적에 따라 다양하게 구현가능하며, 일례로, 최종 결과를 (Document Number, Table, Column, Voca, Foreign_PID, Offset) 같이 간단한 형태의 튜플로써 색인 관리자에게 송신한다.
도 4a 및 도 4b는 본 발명의 일실시예에 따른 구문 질의 평가 과정 및 구문질의 평가 함수를 설명하기 위한 도면이다.
도 4a를 참조하면, 두 개 이상의 단어에 대한 질의 요청이 들어오게 되면, 색인 관리자가 구문 질의(phrase query)를 질의 평가자에게 전송하고, 구문 질의 평가(Phrase Query Evaluation) 알고리즘을 실행해서 결과 값으로 구문 역 리스트(Phrase Inverted List)와 위치 정보를 포함하는 결과를 RDBMS로부터 돌려받는다.
질의 평가자는 이러한 값들을 일정한 형식에 따라서 색인 관리자에게 전송하고, 색인 관리자는 이를 사용자에게 전송한다.
도 4b를 참조하면, 구문 질의 평가 함수는 구문 질의라는 Query_Terms를 입력으로 받아서 RDBMS의 도움을 받아, 이곳에 저장되어 있는 위치 정보 테이블, 역 리스트 테이블, 질의 빈도 테이블, 구문 역 리스트 테이블, 삭제 리스트 테이블을 활용해서, 구문 질의의 결과로써 (pid, off, document Number, table, column)를 최종 결과(Final result)로 생성해 내는 함수이다. 그리고 구문 질의 평가 함수에서는 논리곱 불리언 질의 부함수인 Conjunctive Boolean Query()와 FQT_Date_Update()라는 두개의 부함수(sub-Function)를 사용하고 있음을 알 수 있다.
논리곱 불리언 질의 부함수는 검색하고자 하는 구문이 구문 역 리스트 테이블에 없는 경우 사용하는 가장 기본적인 구문 질의 검색 방법이다. 그리고, 질의 빈도 테이블에 새로운 입력 값이 발생하면, (Date_Oldest, Date_Sum, Date)의 값을 갱신하여야 하는데, FQT_Date_Update()는 이러한 목적을 위해서 사용된다.
도 5a 및 도 5b는 각각 도 4b의 구문 질의 평가 함수에 사용되는 Conjunctive Boolean Query()와 FQT_Date_Update()를 예시한다.
III. 역 리스트 관리(Inverted list maintenance)
새로운 문서가 들어오게 되면, 이 문서에 대한 Inverted list(Foreign_PID)를 생성하여 기존의 역 리스트 테이블에 추가하면 족하지만, 기존의 문서가 삭제된 경우에는 그 이후의 역 리스트를 모두 앞으로 이동해야만 하므로 상당한 오버헤드가 발생한다. 또한, 하나의 문서에는 여러 개의 어휘를 포함하는 것이 일반적이므로, 이들 모두의 역 리스트를 새롭게 갱신하는 것은 상당한 부담이 된다.
사용자의 질의에 정확한 결과 값을 제공하기 위해서는 모든 역 리스트가 실제 문서와의 일관성을 유지하고 있어야 하므로, 삭제된 문서에 대한 역 리스트를 기존의 역 리스트로부터 반드시 제거해야만, 사용자에게 잘못된 결과 값을 반환하는 오류를 줄일 수 있다.
본 발명에서는 문서 혹은 PID를 할당받은 칼럼이 삭제된 경우, 이들 PID들로서 삭제 리스트 테이블(Delete_List_Table)을 구성하고자 한다. 질의 평가자가 사용자의 질의에 대한 결과 값을 반환할 때, 결과 값에 있는 PID가 삭제 리스트 테이블에 있는 경우 이들을 결과 값에서 제거함으로써, 사용자에게 데이터가 삭제되더라도 일관성 있는 정확한 결과 값을 제공하고자 한다. 이는 PID를 할당 받은 문서나 칼럼이 삭제되더라도, 역 리스트 테이블과 구문 역 리스트 테이블(Phrase Inverted List Table)에 있는 역 리스트를 제거하지 않아도 되는 장점을 가지고 있다. 물론, 삭제 리스트 테이블이 커지면, 비교 할 때 발생하는 오버헤드와 역 리스트 테이블에 불필요한 메모리 사용량이 증가하므로, 일정한 주기마다 삭제 리스트 테이블에 속하는 PID들을 역 리스트 테이블과 구문 역 리스트 테이블에서 삭제해 주어야 한다.
실제 데이터가 삭제되면, 이를 색인하는 PID가 역 리스트 테이블에서 제거되어야만 사용자 질의에 잘못된 결과를 보내는 경우를 막을 수 있다.
그러나 역 리스트 테이블의 Foreign_PID가 Golomb 압축으로 압축되어 있으므로, 리스트에 속해 있는 하나의 PID를 제거하고자 한다면, 그 이후의 모든 PID들을 제거된 PID쪽으로 이동시켜야 한다. Foreign_PID가 상당히 큰 사이즈임을 고려할 때, 이러한 PID 리스트들의 이동은 큰 오버헤드로 작용된다.
본 발명에서는 실제 데이터가 삭제되더라도, 역 리스트 테이블을 그 즉시 갱신하는 것을 방지하기 위해서 삭제된 데이터에 대한 PID 목록을 저장하는 삭제 리스트 테이블을 사용할 것을 제안한다. 삭제 리스트 테이블은 역 리스트 테이블에서 Frequency 정보를 제거하고, (Foreign_Voca, Foreign_PID, Offset)의 칼럼으로 구성되어 있다. 여기서, Foreign_Voca는 Inverted_List_Table에 있는 Voca 칼럼에 대한 외래키이다.
사용자 질의에 대한 결과 값을 반환할 때, 질의 평가자는 결과 값이 삭제 리스트 테이블에 있는지를 확인해 본 후, 삭제 리스트 테이블에 있는 PID를 결과 값으로부터 삭제한 후, 사용자에게 결과 값을 제공한다. 리스트의 구성 방법은 실제 데이터가 삭제되었을 때, 실제 데이터에 대한 PID들을 리스트에 추가하면 되므로 간단히 구현할 수 있다.
실제 데이터의 경우, 전자 문서들도 되겠지만, MP3의 경우 노래 가사들도 검색을 용이하게 하도록 역 리스트를 구성하므로, 실제 데이터인 MP3 음악 파일에 비해 노래가사들에 대한 역 리스트의 메모리 비율은 상당히 적은 것이다. 게다가, 동영상에 들어가는 자막들도 역 리스트로 구성이 가능한데, 실제 동영상의 크기가 700MB 정도라면, 자막의 크기는 80KB밖에 되지 않으므로, 이 자막에 Golumb 압축을 적용하면 단지 8KB의 메모리만 필요로 한다. 따라서 동영상이나 음악파일을 삭제 하더라도, 이들에 대한 역 리스트를 일정기간동안 남겨두는 것은 메모리 사용량에 상대적으로 부담이 되지 않는다.
하지만 데이터가 계속 삭제되면, 자연스럽게 삭제 리스트 테이블의 크기가 늘어나게 되므로, 이는 두 가지의 문제점을 야기한다. 첫 번째는 삭제되지 않은 역 리스트에 대한 메모리 사용량이 증가한다는 것이고, 두 번째는 질의 평가자가 결과 값을 사용자에게 제공할 때, 결과 값과 삭제 리스트 테이블에 속해 있는 PID와 비교하는 횟수가 증가하는 것이다. 따라서 일정한 주기에 따라서, 삭제 리스트 테이블에 속해 있는 PID 들을 역 리스트 테이블과 구문 역 리스트 테이블에서 삭제해야 한다.
만약 M개의 PID에 N개의 서로 다른 voca가 속해 있는 데이터를 삭제한다고 가정하면, 삭제 리스트 테이블을 사용하지 않는 경우 역 리스트 테이블에서 MxN번의 PID 리스트 이동이 필요하다. 하지만, PID가 M개일 때, 역 리스트 테이블에 적용하는 삭제 리스트 테이블을 사용할 경우, 단지 N번의 PID 이동만이 필요하다. 게다가, PID 자체가 Golomb 압축 알고리즘으로 압축되어 있는 경우, MxN번의 압축과 복원(Decompression)이 요구되던 것에서, N번의 압축과 복원만이 요구되므로, 삭제 리스트 테이블을 사용함으로써 역 리스트 관리가 효율적으로 개선되었음을 알 수가 있다.
삭제 리스트 테이블의 PID 주기가 위와 같이 M일 경우라고 하더라도, 역 리스트가 상당히 큰 경우에는 역 리스트의 이동에 따른 CPU 부담이 클 수밖에 없다.
본 발명에서는 삭제 리스트 테이블의 PID 주기가 M일 때, 해당되는 voca의 PID들을 역 리스트 테이블의 foreign_PID에서 제거하지 않는 방법을 고려함으로써, 역 리스트의 이동을 최소로 할 수 있는 방법을 제안하고자 한다.
이러한 목적을 위해서 역 리스트를 구성하기 위해서 사용되는 Golomb 알고리즘의 압축 및 복원 알고리즘을 변형하여, 상태 표시 Golomb 압축 알고리즘을 제안하고자 한다. 이 상태 표시 Golomb 압축 알고리즘은 역 리스트에 있는 PID에 대한 실제 데이터가 존재한다면, 0로 표현되고, 만약 삭제되었다면, 1로 나타냄으로써, 삭제 리스트 테이블에서 일정 주기 M마다 역 리스트 테이블에 적용할 때, 이후의 모든 PID들을 이동하지 않아도 된다.
도 6은 본 발명의 일실시예에 따른 상태 표시 Golomb 압축 알고리즘을 예시한다.
도 6을 참조하면, 본 실시예에 따른 상태 표시 Golomb 압축 알고리즘은 기존의 Golomb 압축 알고리즘에서 (4)를 추가하여 이루어진다. 그리고 복원(Decompression) 과정에서는 PID를 복원한 후, (4)에 해당하는 비트를 상태 비트로 인식하기만 하면 된다.
삭제 리스트 테이블을 적용한다면, 이 상태 비트를 1로 바꿔줌으로써, 해당 PID에 대한 실제 문서가 삭제되었다는 것을 알려줄 수가 있다.
삭제 리스트 테이블을 역 리스트 테이블에 적용하는 PID 주기가 M이고, 각 PID에 N개의 Voca가 있고, 역 리스트 테이블은 삭제 리스트 테이블이 K번 적용되었을 때마다 역 리스트를 이동한다고 가정하면, 상태 표시 Golomb 압축 알고리즘을 적용하였을 때는 상태 표시 알고리즘을 적용하지 않은 경우와 비교하여 다음과 같은 성능 이점을 가진다.
삭제 리스트 테이블을 적용하지 않은 경우 즉, 기존의 방법에 따르면, MxN번의 Inverted list (Foreign_PID) 이동이 요구되며, 삭제 리스트 테이블을 적용한 본 발명의 일실시예에 따르면, M번의 Inverted list (Foreign_PID) 이동이 요구되며, 삭제 리스트 테이블과 상태 표시 Golomb 압축 알고리즘을 적용한 본 발명의 다른 일실시예에 따르면, M/K 번의 Inverted list (Foreign_PID) 이동이 요구된다. 따라서, 본 발명의 상술한 실시예들은 기존의 방법에 비해 이동 횟수를 최소한으로 줄일 수 있음을 알 수 있다.
IV. RDBMS에서 생성되는 테이블
RDBMS에서 생성되는 테이블은 그 특성에 따라서 위치 정보 테이블, 역 리스트 테이블, 질의 빈도 테이블, 구문 역 리스트 테이블, 삭제 리스트 테이블로 구분한다. 이러한 모든 테이블은 일차 키로서 key 칼럼을 가지고 있는데, 위치 정보 테이블의 경우만 PID라고 부르는 일차 키를 소유하고 있다. 이 PID가 역 리스트의 기본 구성요소가 된다.
이하에서는, 도 7a과 같은 4개의 문서가 있는 경우, 위치 정보 테이블, 역 리스트 테이블, 질의 빈도 테이블, 구문 역 리스트 테이블, 삭제 리스트 테이블을 생성하는 예들을 설명하고자 한다.
위치 정보 테이블은 실제 문서가 저장되어 있는 테이블과 칼럼에 따라서, 서로 다른 인식 번호를 부여한다. 동일한 문서 번호를 가지고 있더라도, 실제 저장되어 있는 테이블과 칼럼이 다르면, 서로 다른 PID를 가지며, 서로 다른 문서로서 인식한다.
RDBMS에서는 실제 데이터가 칼럼에 저장되어 있기 때문에, 칼럼을 기준으로 인식번호 PID를 부여하는 것은 자연스럽게 받아들일 수 있다.
도 7a에 있는 샘플 문서들에 대해서 실제 문서가 저장되어 있는 위치정보를 알려주는 위치 정보 테이블은 도 7b와 같이 생성될 수 있다.
도 7b를 참조하면, 위치 정보 테이블은 일차 키(primary key)인 PID, 문서 번호인 Document Number, 실제 데이터가 저장되어 있는 테이블 이름인 Table과 칼럼 이름인 Column을 포함하여 이루어진다.
위치 정보 테이블에는 PID를 가지고 있는데, 이후부터 즉, 역 리스트 테이블과 질의 빈도 테이블 등은 여기의 PID를 사용해서 실제 저장되어 있는 문서들을 구분하고, 역 리스트를 구성한다.
역 리스트 테이블에는 효율적인 스트링 검색을 위한 색인 정보들을 저장된다.
도 7c는 도 7a의 샘플 문서들에 대한 역 리스트 테이블을 예시한다.
도 7c를 참조하면, 역 리스트 테이블은 실제 어휘들의 이름인 Voca 칼럼, 이들의 출현 횟수를 표현하는 Frequency 칼럼, 위치 정보 테이블의 PID를 나열한 역 리스트인 Foreign_PID 칼럼, 그리고, 칼럼 내에서의 어휘가 존재하는 곳의 위치 정보인 오프셋 칼럼을 포함하여 이루어진다.
7개의 Voca에 대해서 각각의 Frequency를 저장하고 있으며, Foreign_PID와 Offset 정보를 가지고 있다.
콤마(',')로 연결되어 있는 경우는 모두 오름차순으로 증가하고 있기 때문에 Elias-gamma, Elias-delta, Golomb 압축 알고리즘이 사용 가능하다. 상술한 압축 알고리즘 중에서, 코드 길이 면에서, Golomb 압축 알고리즘을 사용하는 것이 바람직하다. Golomb 압축 알고리즘이 상술한 세 개의 압축 알고리즘들 중에서 가장 적은 코드 길이를 생성하기 때문이다.
압축 알고리즘에서는 콤마로 연결된 숫자들을 구분하여 인식할 수 있기 때문에, 실제 압축시에는 콤마를 삽입하지 않아도 무방하다. 하지만, 오프셋 컬럼에는 콤마 외에도 슬래쉬('/')로 숫자들이 연결되어 있는데, 서로 다른 PID에서의 오프셋임을 의미한다. database의 예를 들어보면, Foreign_PID는 2,3이고, Offset이 1,4/3이므로, PID 2에서 1,4 Offset과, PID 3에서 Offset 3을 나타낸다. Offset에서의 콤마로 구분되어 있는 경우도 오름차순으로 정렬해 놓은 것이므로, 이 역시 Golomb 압축 알고리즘을 사용하여 압축할 수 있다. 반면, 슬래쉬로 구분한 경우는 특별한 구분자(Delimiter)를 사용해야 한다.
슬래쉬와 같은 구분자를 Golomb 압축 알고리즘에서 효율적으로 처리하기 위해, 본 발명의 일실시예에 따른 Golomb 압축 방법은 기존의 Gololmb 압축 알고리즘에 약간의 변형을 가한다. 구분자가 하나 있고, 그 구분자의 출현 확률이 가장 높다고 가정하면, 이를 Golomb 압축 알고리즘에서 가장 낮은 비트를 가지고 있는 숫자로써 정의한다. 후술하는 바와 같이 Golomb 압축에서 1로써 정의되어 있는 비트 열을 슬래쉬로 정의하고, 1은 2에 대한 비트 열로써 정의하고 압축과 복원을 하는 것이다.
Golomb 압축으로 압축과 복원되는 모든 숫자들에 대해서, 압축 알고리즘을 적용하기 전에 구분자의 개수만큼 더하거나 빼야 한다. 즉 1을 압축하고자 한다면, 구분자가 슬래쉬 하나이므로, 1+1인 2를 Golomb 압축 알고리즘에 적용한 것이다.
도 8a는 본 발명의 일실시예에 따른 구분자 압축 방법으로서, M=4일 때, 슬래쉬 구분자와 1과 2의 압축 과정을 예시한다. 복원은 이에 대한 역과정으로 진행됨은 이 분야에 종사하는 자라면 충분히 이해할 있으므로 이하 생략한다. 한편, 도 8a의 실시예는 Golomb 압축 알고리즘은 간단히 표현하기 위해서, 일련의 숫자열이 아니라 하나의 숫자에 대한 압축 결과를 비트열로 생성하는 것으로 가정한 상황에서의 압축 과정을 예시한다. 도 8a의 실시예는 Golomb 압축 알고리즘에 간단히 삽입할 수 있다.
도 8b는 도 8a의 실시예를 적용할 때 생성되는 압축코드 각각을 예시한다.
도 8a 및 8b의 실시예에서, 압축하고자 하는 데이터가 1,2/1인 경우 압축코드가 다음과 같이 생성된다.
1,2/1 = 101 110 100 101
여기서, 공백은 쉽게 인식하기 위해서 삽입하였으므로 실제 코드에서는 비트열이 공백 없이 나열된다.
질의 빈도 테이블에는 반복해서 질의하는 구문들에 대한 역 리스트가 저장된다. 즉, 사용자 질의 에 대한 검색을 수행하면, 검색 빈도를 저장하는 질의 빈도 테이블이 생성되는데, 도 7d는 도 7a의 샘플 문서들이 있을 때, model database (4회), security network (1회), model design (3회)를 검색하였을 때 생성되는 질의 빈도 테이블을 예시한다.
구문 검색시에 구문은 일단 정렬을 먼저 수행한 후, 각각의 구문을 '_'로 연결한다. 예를 들어, model database를 검색하고자 한다면, database model로 정렬하고, 단어 사이에 '_'를 삽입하여 database_model을 생성한 후, 이를 구문 역 리스트 테이블에서 검색한다. 만약 database_model이 없으면, 새로 생성하고 count와 Date_Oldest에 삽입한다. database_model이 존재한다면, Count를 증가시키고, Date와 Date_Sum을 아래와 같이 계산하여 삽입한다.
도 7d를 참조하면, 질의 빈도 테이블은 Phrase words 칼럼, Foreign_Voca_List 칼럼, Count, Date_Oldest 칼럼, 및 Date 칼럼을 포함하여 이루어진다.
Phase words 칼럼은 구문에 있는 어휘들을 오름차순으로 정렬해서, '_'로 연결한 칼럼이다. Foreign_Voca_List 칼럼은 각각의 어휘들에 대해 역 리스트 테이블 의 일차 키를 외래키로써 나열한 칼럼이며, 이는 삭제 리스트 테이블에 있는 목록들을 일정주기마다 질의 빈도 테이블에 적용할 때 해당 Voca가 포함되어 레코드를 검색할 때 사용된다.
Count 칼럼은 사용자로부터 구문이 질의되었던 횟수를 저장하는 칼럼이다.
Data_Oldest 칼럼은 가장 이전에 질의되었던 시간을 나타내는 칼럼이고, Date 칼럼은 그 이후 질의 되는 경우 Data_Oldest와 시간 차이를 나타내는 칼럼이다.
Date에 들어 있는 값들은 바로 앞 시간과의 차를 저장한다. 예를 들어, 동일한 구문이 2007년 10월 01일, 2007년 10월 09일, 2007년 10월 15일에 사용자로부터 질의된 경우 Date_Oldest는 20071001가 되고, Date의 첫 번째 값은 20071009와 20071001의 차인 8이 되고, Date의 두 번째 값은 20071015와 20071009와의 차이인 6이 된다. 즉, Date의 값은 8과 6인 것이다. 이는 Golomb 압축으로 압축할 수 있다.
마지막으로 Date 칼럼에 들어 있는 데이터의 합을 표현하는 칼럼 Date_Sum으로 구성되어 있다.
도 9는 도 7d에서의 Date_Sum을 계산하는 방법을 예시한다.
새로운 값이 들어온 경우, Date에서 제일 마지막에 있는 날짜와의 차이를 Date에 추가해야 되는데, Date가 d-Gap을 이용해서 압축되어 있으므로, 가장 최근의 날짜를 구하기 위해서는 Date의 모든 값을 복원해서 이들을 더해야만 한다. 이러한 과정을 없애기 위해서 Date의 값을 합을 더해서 Date_Sum에 저장해 놓는다.
Database_model의 경우 Date_Oldest가 20071011이고, Date_Sum이 0일 때, 2007년 10월 24일에 검색이 되었다면, Count는 2로 증가되고, 다음과 같이 Date와 Date_Sum이 계산된다.
Date : 13 = 20071024 - 20071011
Date_Sum : 13 = 0(Date_Sum) + 13(Date)
이렇게 Date_Sum이 생성되면, Date는 오름차순으로 정렬되어 있으므로 Golomb Compression을 사용해서 압축하여 저장한다.
마지막으로 Foreign_Voca_list가 NULL이라면, 각각의 어휘에 대한 외래키를 역 리스트 테이블에서 검색해서 삽입하도록 한다. 질의 빈도 테이블의 외래키라는 말은 역 리스트 테이블에서의 일차 키라는 것을 의미한다.
구문 역 리스트 테이블은 구문 질의를 효과적으로 지원하기 위한 테이블이다.
도 7e는 본 발명의 일실시예에 따른 구문 역 리스트 테이블로서, 도 7a의 샘플 문서들이 있는 상황에서의 구문 역 리스트 테이블을 예시한다.
도 7e를 참조하면, 구문 역 리스트 테이블은 Foreign_FQT 칼럼, Foreign_PID 칼럼, 및 Offset 칼럼을 포함하여 이루어진다.
Foreign_FQT는 질의 빈도 테이블과 구문 역 리스트 테이블을 Join하기 위한 외래키로 사용된다. Foreign_PID는 해당 구문에서 동일하게 나타나는 PID의 리스트를 저장하고 있으며, Offset은 각각의 위치 정보를 저장한다.
질의 빈도 테이블에서 Count가 일정 횟수 이상인 경우 구문 역 리스트 테이블을 생성하는데, 예제에서는 Count가 4회 이상인 경우 구문 역 리스트 테이블을 구축한다고 하면, database_model에 대한 리스트가 구문 역 리스트 테이블에 생성되고, Foreign_FQT에는 질의 빈도 테이블에 대한 일차 키인 Key를 외래키로 삽입하고, Foreign_PID에는 구문 질의를 포함하고 있는 PID를 저장하고, Offset에서 콤마와 슬래쉬는 상술한 바와 같이, 동일한 PID내에서의 offset 구분은 콤마로 하고, 슬래쉬는 서로 다른 PID를 가지고 있음을 의미한다. 여기서는 별표(*)가 하나 더 추가되는데, 이는 voca의 구분을 위한 것이다. 아래에서 Offset의 예를 보면, Foreign_PID가 2,3이고, Offset이 1,4*3/3*3인데, Foreign_PID의 2와 Offset의 1,4*3은 PID 2에서 database의 Offset이 1,4이고, model의 Offset이 3인것을 의미한다. Foreign_PID 3인 경우, Offset에서 슬래쉬로 구분된 3*3이 database와 model의 Offset을 의미하고 있다. 즉, 별표는 database와 model voca를 구분하기 위해서 사용하는 것이라고 보면 된다.
삭제 리스트 테이블은 PID를 할당 받은 문서나 칼럼이 삭제된 경우, 이들 칼럼에 속해 있는 voca에 대한 PID의 목록을 저장하고 있다가, 사용자 질의 결과 값을 제공할 때, 결과 값 목록에 삭제된 문서에 대한 PID를 제거할 때 사용한다. 하나의 voca에 대한 역 리스트의 크기에 대해서 작게는 수십 메가 바이트에서 크게는 수십 테라 바이트 이상인 것이 존재하고, 이들 리스트는 리스트의 효율적인 관리를 위해 Golomb 압축을 적용하는 것이 일반적이다. Golomb 압축 알고리즘으로 압축되 어 있는 PID 목록에서 하나의 PID를 제거하면, 그 부분의 빈 공간을 채우기 위해서 그 이후의 모든 값을 앞으로 이동해야만 한다. 하나의 voca에 대해서 압축되어 있는 PID 목록의 2 테라 바이트인 경우, 그 평균 값이 1 테라 바이트의 PID 목록 이동이 필요하다. 게다가, 삭제된 PID를 찾기 위해서 1 테라 바이트에 대한 자료 복원도 해야 한다. 그러므로 압축되어 있는 PID 목록 이동과 자료 복원의 횟수를 적게 함으로써, 역 리스트를 효율적으로 관리 할 수 있다.
도 7f는 본 발명의 일실시예에 따른 삭제 리스트 테이블로서, 도 7a의 샘플 문서들 중 PID 3의 컬럼이 삭제된 상황에서의 삭제 리스트 테이블을 예시한다.
PID 3의 칼럼에는 storage database model design의 어휘들이 속해 있는데, Voca 단위로 구성하는 PID 삭제 리스트는 도 7f와 같다.
도 7f를 참조하면, 삭제 리스트 테이블은 Voca 칼럼, Foreign_PID 칼럼, Offset 칼럼을 포함하여 이루어진다.
Voca는 삭제된 문서나 칼럼에 속해있는 어휘들의 목록이고, Foreign_PID는 삭제된 문서나 칼럼이 할당받은 PID이다. 그리고 Offset은 해당 문서나 칼럼내에서 voca의 위치정보를 나타낸다. Voca의 메모리 사용량을 줄이고 싶다면, 모든 Voca들이 역 리스트 테이블에 저장되어 있으므로, 역 리스트 테이블에 대한 일차 키를 외래키로써 삭제 리스트 테이블에 저장해도 된다. 즉 삭제 리스트 테이블에 Voca 칼럼을 생성하지 않고, Foreing_Voca라는 외래키를 저장하는 칼럼을 생성하는 것이다.
삭제 리스트 테이블에서 Voca에 따라 PID 목록을 저장하고 싶지 않으면, 삭 제 리스트 테이블에서 Voca 칼럼과 Offset 칼럼은 생성하지 않고, 단지 Foreign_PID 칼럼만을 생성해서 삭제되는 문서나 칼럼의 모든 목록을 하나의 리스트에 저장한다. 이렇게 하면, 삭제된 문서 내에 수백개의 서로 다른 어휘가 있더라도 하나의 PID만 저장하면 되므로 메모리 사용량이 현저하게 단축된다. 하지만, 삭제된 문서 목록을 어휘별로 저장하고 있지 않기 때문에, 목록의 크기는 삭제되는 문서의 양에 비례하게 된다. 이는 사용자의 질의에 대해 최종 결과 값을 생성할 때, 결과 값과 삭제된 PID의 비교 횟수가 증가되므로, 사용자 질의 응답 시간이 느려지는 단점이 있다. 이와는 달리, Voca 단위로 삭제 리스트 테이블을 생성할 경우에는 사용자의 질의에 해당하는 Voca에 대한 PID 목록만을 삭제 리스트 테이블에서 추출하여, 최종 비교에 사용하면 되므로, 결과 값을 사용자에게 제공하는 시간이 줄어들 것으로 예상된다. 하지만, 하나의 문서에 수십에서 수천개의 voca가 있다는 것을 생각하면, 이에 따른 메모리 사용량도 무시할 수가 없을 것이다. 따라서 메모리가 충분하고, 사용자에 대한 질의 응답의 속도가 중요한 경우에는 Voca별로 삭제 리스트 테이블을 사용하는 것이 권장되고, 메모리 사용 비율을 줄이고자 한다면, 질의 응답속도가 다소 떨어지더라도 Foreign_PID 칼럼만을 사용해서 PID 목록만을 저장하는 것이 좋을 것이다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 케리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
이러한 본원 발명인 방법 및 장치는 이해를 돕기 위하여 도면에 도시된 실시예를 참고로 설명되었으나, 이는 예시적인 것에 불과하며, 당해 분야에서 통상적 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위에 의해 정해져야 할 것이다.
상기에서 제시한 본 발명의 실시예들은 다음의 장점들을 포함하는 효과를 가질 수 있다. 다만, 본 발명의 모든 실시예들이 이를 전부 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따르면, 스트링 검색을 효율적으로 수행할 수 있다.
또한, 본 발명의 일실시예에 따르면, 사용자 질의에 대한 답변의 정확성과 일관성을 유지할 수 있다.
또한, 본 발명의 일실시예에 따르면, 구문 질의에 대한 질의 평가(Query evaluation)를 기존의 방법보다 빠르게 처리할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 역 리스트를 효율적으로 관리할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 문서 삭제시 역 리스트 테이블의 갱신에 필요한 오버헤드를 최소화할 수 있다.
또한, 본 발명의 일실시예에 따르면, MxNxK번의 비트 열 이동에서 1번의 비트 열 이동으로 개선할 수 있다.
또한, 본 발명에 따르면, 큰 사이즈의 2차 메모리를 가지고 있지만, 제한된 주 메모리와 낮은 처리 능력을 갖춘 디바이스에서도 효율적으로 스트링을 검색할 수 있다.
도 1은 역 리스트 생성 과정을 예시한다.
도 2a 및 도 2b는 본 발명의 일실시예에 따른 각각 RDBMS를 위한 머지 기반 역(merge-based inversion) 알고리즘 및 머지 기반 프로세서를 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따른 단일 질의 평가 과정을 설명하기 위한 도면이다.
도 4a 및 도 4b는 본 발명의 일실시예에 따른 구문 질의 평가 과정 및 구문질의 평가 함수를 설명하기 위한 도면이다.
도 5a 및 도 5b는 각각 도 4b의 구문 질의 평가 함수에 사용되는 Conjunctive Boolean Query()와 FQT_Date_Update()를 예시한다.
도 6은 본 발명의 일실시예에 따른 상태 표시 Golomb 압축 알고리즘을 예시한다.
도 7a는 본 발명에서 사용되는 테이블을 설명하기 위한 4개의 샘플 문서들을 나타낸다.
도 7b 내지 7f는 각각 본 발명의 일실시예에 따른 위치 정보 테이블, 역 리스트 테이블, 질의 빈도 테이블, 구문 역 리스트 테이블, 및 삭제 리스트 테이블을 나타낸다.
도 8a는 본 발명의 일실시예에 따른 구분자 압축 방법을 나타낸다.
도 8b는 도 8a의 실시예를 적용할 때 생성되는 압축코드 각각을 예시한다.
도 9는 도 7d에서의 Date_Sum을 계산하는 방법을 예시한다.

Claims (13)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 스트링 검색 시스템에서의 역 리스트 관리를 위한 압축 방법에 있어서,
    어휘가 존재하는 위치를 나타내는 오프셋들 및 상기 오프셋들을 구분하기 위한 적어도 하나의 구분자를 포함하는 압축 대상을 획득하는 단계; 및
    상기 적어도 하나의 구분자의 출현 확률을 상기 오프셋들의 출현 확률보다 높게 간주하여, 상기 압축 대상을 압축하는 단계를 포함하는 것을 특징으로 하는 역 리스트 관리를 위한 압축 방법.
  6. 제5항에 있어서, 상기 압축 대상은
    역 리스트인 것을 특징으로 하는 역 리스트 관리를 위한 압축 방법.
  7. 제5항 또는 제6항에 있어서, 상기 압축하는 단계는
    Golomb 압축 알고리즘을 사용하여 압축하는 단계를 포함하는 것을 특징으로 하는 역 리스트 관리를 위한 압축 방법.
  8. 제7항에 있어서, 상기 압축하는 단계는
    상기 적어도 하나의 구분자에는 가장 작은 값을 부여하고, 상기 오프셋들에는 상기 오프셋들 값과 상기 가장 작은 값을 더한 값을 부여하는 단계; 및
    상기 부여된 값들을 압축하는 단계를 포함하는 것을 특징으로 하는 역 리스 트 관리를 위한 압축 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 스트링 검색 시스템을 위한 구문 역리스트 관리 방법에 있어서,
    질의된 구문 각각에 대한 질의 빈도를 포함하는 정보를 질의 빈도 테이블에 넣어 관리하는 단계; 및
    상기 질의 빈도 테이블을 기초로, 소정 횟수 이상 질의된 구문에 대한 정보를 구문 역 리스트 테이블에 저장하는 단계를 포함하는 것을 특징으로 하는 구문 역 리스트 관리 방법.
  13. 삭제
KR1020080019987A 2008-03-04 2008-03-04 질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를위한 압축 방법, 및 구문 역 리스트 관리 방법 KR100920745B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080019987A KR100920745B1 (ko) 2008-03-04 2008-03-04 질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를위한 압축 방법, 및 구문 역 리스트 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080019987A KR100920745B1 (ko) 2008-03-04 2008-03-04 질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를위한 압축 방법, 및 구문 역 리스트 관리 방법

Publications (2)

Publication Number Publication Date
KR20090094961A KR20090094961A (ko) 2009-09-09
KR100920745B1 true KR100920745B1 (ko) 2009-10-07

Family

ID=41295329

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080019987A KR100920745B1 (ko) 2008-03-04 2008-03-04 질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를위한 압축 방법, 및 구문 역 리스트 관리 방법

Country Status (1)

Country Link
KR (1) KR100920745B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101910491B1 (ko) * 2016-12-07 2018-10-22 전북대학교 산학협력단 가변길이 그램의 역리스트 동적 생성을 이용한 유사 문자열 검색 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040039691A (ko) * 2002-11-04 2004-05-12 엘지전자 주식회사 정보 검색 시스템의 인덱싱 방법
JP2005004560A (ja) 2003-06-13 2005-01-06 Fujitsu Ltd インバーテッドファイル作成方法
KR20080011594A (ko) * 2006-07-31 2008-02-05 (주)닷넷소프트 정보 검색 장치 및 그 제어 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040039691A (ko) * 2002-11-04 2004-05-12 엘지전자 주식회사 정보 검색 시스템의 인덱싱 방법
JP2005004560A (ja) 2003-06-13 2005-01-06 Fujitsu Ltd インバーテッドファイル作成方法
KR20080011594A (ko) * 2006-07-31 2008-02-05 (주)닷넷소프트 정보 검색 장치 및 그 제어 방법

Also Published As

Publication number Publication date
KR20090094961A (ko) 2009-09-09

Similar Documents

Publication Publication Date Title
US7590645B2 (en) Performant and scalable merge strategy for text indexing
US9582514B2 (en) Performing multidimensional search and content-associative retrieval on data that has been losslessly reduced using a prime data sieve
US7007015B1 (en) Prioritized merging for full-text index on relational store
US9710517B2 (en) Data record compression with progressive and/or selective decomposition
KR101529315B1 (ko) 값의 발생에 기초한 테이블의 압축
Harman et al. Inverted Files.
TWI709047B (zh) 對其已使用主要資料篩而被無損減少的資料履行多維搜尋、內容相關擷取、及關鍵字為基的搜尋和擷取
CN112231321B (zh) 一种Oracle二级索引及索引实时同步方法
KR101549220B1 (ko) 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조
US8140546B2 (en) Computer system for performing aggregation of tree-structured data, and method and computer program product therefor
KR100920745B1 (ko) 질의 처리 방법, 역 리스트 관리 방법, 역 리스트 관리를위한 압축 방법, 및 구문 역 리스트 관리 방법
Chen On the signature trees and balanced signature trees
CN106776772B (zh) 一种数据检索的方法及装置
KR102013839B1 (ko) 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조
Chang et al. Efficient phrase querying with common phrase index
Skopal ACB compression method and query preprocessing in text retrieval systems
Aggarwal High Performance Document Store Implementation in Rust
Stockinger et al. Using bitmap indexing technology for combined numerical and text queries
Ahmed et al. IMPROVED FUZZY SEARCHINGTECHNOLOGY
Yazdani MIWD: Multidimensional indexing for web documents
Matacic A novel index method for write optimization on out-of-core column-store databases
KR20010056171A (ko) 정보 검색시스템에서의 정보 검색을 위한 부분검색 장치및 그 방법
Shoshani Using Bitmap Indexing Technology for Combined Numerical and Text Queries

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
FPAY Annual fee payment

Payment date: 20120906

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130917

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140916

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160628

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee