KR100892406B1 - 정보 검색 방법 및 그 시스템 - Google Patents
정보 검색 방법 및 그 시스템 Download PDFInfo
- Publication number
- KR100892406B1 KR100892406B1 KR1020070047677A KR20070047677A KR100892406B1 KR 100892406 B1 KR100892406 B1 KR 100892406B1 KR 1020070047677 A KR1020070047677 A KR 1020070047677A KR 20070047677 A KR20070047677 A KR 20070047677A KR 100892406 B1 KR100892406 B1 KR 100892406B1
- Authority
- KR
- South Korea
- Prior art keywords
- section
- merge
- merging
- result
- posting
- Prior art date
Links
Images
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
Abstract
본 발명은, 구현 방식의 단순성으로 인해 빠른 처리 속도를 담보할 수 있는 TAAT방식의 장점을 그대로 간직하면서도, 후보 문서 리스트의 생성 및 저장에 따른 공간 복잡도의 증가라는 TAAT방식의 단점을 최소화함으로써, 각각의 질의 색인어에 대한 포스팅 리스트들의 병합을 효율적으로 처리할 수 있는 정보 검색 방법 및 그 시스템에 관한 것으로서, 본 발명의 정보 검색 방법은, 질의 색인어들 각각에 대응하는 포스팅 리스트들을 구간별로 병합하는 단계; 및 상기 구간별 병합 결과들을 단순 병합하는 단계를 포함한다.
검색, PAAT, 구간분할
Description
도 1은 일반적인 정보 검색 시스템의 역파일 구조를 나타내는 개요도.
도 2는 본 발명의 일 실시예에 따른 정보 검색 시스템의 구성을 나타내는 블록도.
도 3은 본 발명의 제1 실시예에 따른 구간별 병합 과정을 보여주는 순서도.
도 4는 본 발명의 제1 실시예에 따라 이전 구간의 병합 결과를 다음 구간의 병합 연산에 이용하는 과정을 보여주는 순서도.
도 5는 본 발명의 제2 실시예에 따른 구간별 병합 과정을 보여주는 순서도.
도 6은 본 발명의 제1 실시예에 따라 이전 구간의 병합 결과를 다음 구간의 병합 연산에 이용하는 과정을 보여주는 순서도.
도 7은 각 방식의 동시 검색 프로세스 수에 따른 논리합 질의 평균 수행 시간을 보여주는 그래프.
도 8은 각 방식의 동시 검색 프로세스 수에 따른 논리합 질의 최대 수행 시간을 보여주는 그래프.
<도면의 주요부분에 대한 부호의 설명>
10: 색인 파일 20: 포스팅 리스트 파일
100: 전처리부 200: 검색부
300: 데이터베이스 310: 색인 파일
320: 포스팅 리스트 파일 330: 최대 가중치 파일
400: 제1 버퍼 500: 제2 버퍼
600: 누산기
본 발명은 정보 검색 방법 및 그 시스템에 관한 것으로서, 보다 구체적으로는, 논리합 연산을 효율적으로 수행할 수 있는 정보 검색 방법 및 그 시스템에 관한 것이다.
정보 검색 시스템은 인터넷을 통해 접근 가능한 방대하고 다양한 정보들 중에서 원하는 정보를 찾기 위한 필수 도구이다. 이러한 정보 검색 시스템은 "인덱싱(indexing)" 작업을 통하여 인터넷 상의 각 문서들로부터 색인어를 추출하여 각 문서와 해당 색인어 사이의 관련성을 저장하고, 복수 개의 질의 용어를 담고 있는 질의를 사용자로부터 수신하면 그러한 질의에 응답하여 질의 용어에 해당하는 색인어를 포함하는 문서를 검색하게 된다. 이렇게 검색된 문서들은 질의와 문서 사이의 관련성에 따라 순위화(ranking)되어 사용자에게 제공된다.
정보 검색 시스템이 인덱싱 작업을 통하여 인터넷 상의 각 문서들로부터 색인어를 추출하고, 각 문서와 해당 색인어 사이의 관련성을 저장할 때, 검색이 빠르 게 수행될 수 있도록 각 문서와 해당 색인어 사이의 관련성은 일반적으로 역파일(inverted file) 구조로 저장된다.
역파일 구조에 대하여 보다 상세히 설명하면, 어느 특정 문서로부터 색인어들을 추출하면 그 문서는 색인어들의 열로 표현될 수 있는데, 모든 문서들에 대하여 색인어들의 열로 표현한 후 그 결과를 각각의 색인어를 기준으로 재구성한 것을 의미한다. 이때, 색인어와 문서 사이의 가중치를 계산하여 함께 저장함으로써 해당 색인어와 문서 사이의 연관도를 함께 검색할 수 있다.
따라서, 역파일 구조는, 도 1에 도시된 바와 같이, 색인 파일(10)과 포스팅 리스트 파일(20)로 구성되어 있으며, 각각의 색인어에 대하여 해당 색인어를 포함하는 문서와 문서-색인어 사이의 연관도를 나타내는 가중치(weight)를 문서 식별자(Document ID: DocID)의 오름차순으로 정렬하여 저장한 구조로 정의될 수 있다. 특정 색인어를 포함하는 문서의 문서 식별자와 문서-색인 간의 가중치의 쌍을 오름차순으로 정렬한 것을 해당 색인어에 대한 "포스팅 리스트(Posting List)"라고 한다. 포스팅 리스트는 압축 여부 등의 옵션에 의해 다양한 형태로 저장될 수 있으나, 기본적인 형태는 도 1에 나타난 바와 같다.
이와 같은 역파일 구조 상에서 정보 검색 시스템의 검색 과정은, 질의어로부터 추출된 색인어들 각각에 대응하는 포스팅 리스트들을 병합하는 과정으로 요약될 수 있다. 포스팅 리스트들의 병합 과정에서 문서-색인어 사이의 가중치의 병합도 이루어지며, 병합된 가중치 및 기타 여러 요소에 의해 계산된 유사도 또는 연관도에 의해 검색 결과 문서의 순위화가 이루어지게 된다.
이때, 개별 색인어들에 대한 포스팅 리스트들을 병합하기 위하여 다양한 연산들이 사용된다. 고속의 검색을 위해서는 주로 논리곱 연산(AND, conjunction)이 사용되는 것이 유리하나, 부울 질의 등의 고급 검색이나 언어 모델(language medel)의 지원, 동의어 확장 등의 기타 검색 품질의 향상을 위해 논리합 연산(OR, disjunction)에 대한 요구가 증대되고 있다. 특히 중복 문서 제거의 경우와 같이, 기존의 검색 시스템 응용과는 다른 고급 응용에서도 논리합 연산을 필요로 한다. 따라서, 효율적으로 논리합 연산을 수행할 수 있는 검색 알고리즘이 절실히 요구되고 있는 실정이다.
기존의 검색 알고리즘은 각각의 색인어들에 대한 포스팅 리스트들의 병합 방식에 따라 크게 DAAT(Document-at-a-time) 방식과 TAAT(Term-at-a-time) 방식으로 대별된다.
DAAT 방식은 각각의 질의 색인어의 포스팅 리스트들을 병렬적으로 훑어 감으로써 포스팅 리스트들 전체를 동시에 병합하여 결과를 생성하는 방식으로서, 일반적으로 멀티웨이 머지(multiway merge) 알고리즘을 기반으로 구현된다. 이러한 DAAT 방식의 경우, 각 문서들이 문서 리스트에 포함되는 지의 여부 및 각 문서들과 질의와의 연관도가 바로 계산되기 때문에 중간 계산 결과를 저장하기 위한 부가적인 메모리가 요구되지 않는다는 장점이 있다. 그러나, DAAT 방식은 민 힙(min heap)에 기반한 비교적 복잡한 병합 방식을 수행할 뿐만 아니라 각 색인어에 대한 포스팅 리스트들에 접근할 때 간접 참조가 많다는 점 때문에 연산 속도가 느리다는 심각한 단점을 갖고 있다.
TAAT 방식은 한 번에 하나의 질의 색인어에 대한 포스팅 리스트만을 훑고, 이러한 과정을 각각의 질의 색인어들에 대하여 반복함으로써 포스팅 리스트들을 병합하는 방식이다. 보다 구체적으로는, 최초의 포스팅 리스트에 대한 후보 문서 리스트를 생성하고, 이후의 포스팅 리스트에 대해 상기 후보 문서 리스트와의 병합을 수행함으로써 새로운 후보 문서 리스트를 생성한다. 마지막 포스팅 리스트를 병합할 때까지 위와 같은 과정을 반복함으로써 최종 결과 문서 리스트가 생성되게 된다. 이 과정에서 후보 문서 리스트에는 연관도의 부분합이 포함되며, 마지막 포스팅 리스트에 대한 병합 연산이 끝나면 최종 결과 문서 리스트를 얻게 된다.
이와 같은 TAAT 방식은 그 구현이 단순하여 빠른 검색 속도를 얻을 수 있다는 장점이 있다. 그러나, TAAT 방식의 경우, 병합 과정에서 후보 문서 리스트를 저장하여야 하기 때문에, 공간 복잡도(space complexity)가 증가하고 DAAT 방식에 비해 큰 메모리가 요구된다는 단점이 있다. 이와 같은 단점은 특히 많은 요청을 처리하는 정보 검색 시스템에서 치명적이다.
따라서, TAAT 방식은 병합 과정에서 후보 문서 리스트의 크기가 작아지는 논리곱 연산에는 유리하지만, 논리합 연산의 경우에는 높은 공간 복잡도로 인해 많은 메모리가 요구된다는 점에서 적절한 병합 방식이라고 볼 수 없다. 또한, TAAT 방식의 경우 마지막 포스팅 리스트에 대한 연산 과정에 가서야 순위화를 수행할 수 있다는 것도 커다란 단점이다.
본 발명은 상술한 문제점을 해결하기 위한 것으로서, 본 발명의 목적은, 구 현 방식의 단순성으로 인해 빠른 처리 속도를 담보할 수 있는 TAAT방식의 장점을 그대로 간직하면서도, 후보 문서 리스트의 생성 및 저장에 따른 공간 복잡도의 증가라는 TAAT방식의 단점을 최소화함으로써, 각각의 질의 색인어에 대한 포스팅 리스트들의 병합을 효율적으로 처리할 수 있는 정보 검색 방법 및 그 시스템을 제공하는 것이다.
본 발명의 다른 목적은, 각각의 포스팅 리스트들을 복수개의 구간으로 분할하고 각 구간별로 병합을 수행함으로써 특정 구간의 병합을 수행하는데 있어서 이전 구간의 최소 순위값을 적절하게 이용할 수 있어 부가적인 속도 향상을 꾀할 수 있는 점보 검색 방법 및 그 시스템을 제공하는 것이다.
상술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 정보 검색 방법은, 질의 색인어들 각각에 대응하는 포스팅 리스트들을 구간별로 병합하는 단계; 및 상기 구간별 병합 결과들을 단순 병합하는 단계를 포함한다.
상술한 목적을 달성하기 위한 본 발명의 다른 측면에 따른 기록매체는, 질의 색인어들 각각에 대응하는 포스팅 리스트들을 구간별로 병합하는 단계; 및 상기 구간별 병합 결과들을 단순 병합하는 단계를 포함하는 정보 검색 방법을 수행하기 위한 컴퓨터로 판독 가능한 프로그램이 기록되어 있다.
상술한 목적을 달성하기 위한 본 발명의 또 다른 측면에 따른 정보 검색 시스템은, 색인어들 및 상기 색인어들 각각에 대응하는 포스팅 리스트들이 저장된 데이터베이스; 및 질의 색인어들에 대응하는 포스팅 리스트들을 상기 데이터베이스로 부터 수신하고, 상기 수신한 포스팅 리스트들을 구간별로 병합하며, 상기 구간별 병합 결과들을 단순 병합하는 검색부를 포함한다.
이하 첨부되는 도면을 참고하여, 본 발명의 바람직한 실시예를 상세하게 설명한다.
도 2는 본 발명의 일 실시예에 따른 정보 검색 시스템의 구성을 나타내는 블록도이다.
도 2에 도시되어 있는 바와 같이, 본 발명의 일 실시예에 따른 정보 검색 시스템은 크게, 전처리부(100), 검색부(200), 데이터베이스(300), 제1 및 제2 버퍼(400, 500), 및 누산기(600)를 포함한다.
본 발명의 데이터베이스(300)에는 인덱싱부(미도시)를 통하여 각종 문서들로부터 추출된 색인어들의 집합인 색인 파일(310) 및 상기 색인어들 각각에 대응하는 포스팅 리스트들의 집합인 포스팅 리스트 파일(320)이 저장된다. 또한, 본 발명의 인덱싱부는 각 포스팅 리스트 별 문서-색인어 간 가중치의 최대값을 갱신하여 최대 가중치 파일(330)로서 데이터베이스(300)에 저장할 수 있다.
본 발명의 전처리부(100)는 사용자로부터 전송된 검색 질의로부터 질의 색인어들을 추출한다. 검색부(200)는 전처리부(100)에 의해 추출된 질의 색인어들 각각에 대응하는 포스팅 리스트들을 2 이상의 구간별로 병합하고, 각 구간 별 병합 결과들을 단순 병합한다. 이러한 병합 과정 중에 발생하는 중간 결과들은 제1 버퍼(400) 또는 제2 버퍼(500)에 임시로 저장된다. 또한, 본 발명의 일 실시예에 따른 정보 검색 시스템은 포스팅 리스트들을 구간별로 병합하는 과정 또는 구간별 병 합 결과들을 단순 병합하는 과정에서 각 문서들의 순위값을 갱신하기 위한 누산기(600)를 더 포함한다.
이하에서는 본 발명의 핵심적 기술 사상인, 포스팅 리스트들의 구간별 병합(Partition-At-A-Time: "PAAT"로 약칭할 수 있음)의 개념을 보다 상세히 설명한다.
PAAT의 기본적인 아이디어는 i) 문서 식별자의 범위를 2 이상의 구간들로 분할하고, ii) 각 분할된 구간별로 포스팅 리스트들의 병합을 TAAT 방식에 의해 수행하며, iii) 각 구간별 병합 결과들을 단순 병합하는 것이다.
정수의 집합 A, B, C가 있고, 그 합집합, 즉 A, B 및 C의 병합 결과가 Z라고 할 경우 다음의 식이 성립한다.
Z = A ∪ B ∪ C
각 집합을 구성하는 정수의 범위를 R이라고 할 경우, R은 다음과 같이 R1 및 R2의 2개의 구간으로 분할될 수 있다.
R = R1 ∪ R2, R1 ∩ R2 = Ø
집합 A 중 구간 R1에 속하는 부분 집합을 AR1이라 하고 구간 R2에 속하는 부분 집합을 AR2라 하면, 다음의 식이 성립한다.
ZR1 = A R1 ∪ B R1 ∪ C R1
ZR2 = A R2 ∪ B R2 ∪ C R2
Z = Z R1 + Z R2 (합집합이 아닌 단순 병합)
만약, 집합 A, B 및 C의 합집합, 즉 A, B 및 C의 병합 결과인 Z를 TAAT 방식을 이용하여 구한다면 다음의 순서가 된다.
T = A ∪ B ------------ (1)
Z = T ∪ C ------------ (2)
즉, A와 B의 합집합인 T를 먼저 구한 후에 T와 C의 합집합을 구함으로써 최종 결과인 Z를 구하게 된다.
이와 달리, 집합 A, B 및 C의 합집합, 즉 A, B 및 C의 병합 결과인 Z를 본 발명의 PAAT 방식(R1과 R2의 2 구간으로 분할한다고 가정)을 이용하여 구한다면 다음의 순서가 된다.
T R1 = A R1 ∪ B R1 ------------ (1)
Z R1 = T R1 ∪ C R1 ------------ (2)
T R2 = A R2 ∪ B R2 ------------ (3)
Z R2 = T R2 ∪ C R2 ------------ (4)
Z = Z R1 + Z R2 ---------------- (5)
즉, 전체 문서 식별자의 범위인 R을 R1과 R2의 2개 구간으로 분할한다고 가 정할 경우, R1에 해당하는 구간에 대한 병합 결과인 Z R1 과, R2에 해당하는 구간에 대한 Z R2를 각각 구한 후에, Z R1 과 Z R2를 단순 병합한다. 이때, Z R1 과 Z R2의 합집합이 아닌 단순 병합이 가능한 이유는 R1 ∩ R2 = Ø이기 때문이다. 한편, Z R1 과 Z R2를 각각 구하기 위한 각 구간별 병합은 TAAT 방식에 의해 수행된다.
위에서 알 수 있는 바와 같이, TAAT 방식의 경우 중간 병합 결과인 T는 A ∪ B의 크기를 갖지만, PAAT 방식의 중간 병합 결과인 TR1과 TR2는 그 최대 크기가 R1 또는 R2의 크기밖에 되지 않고, TR1과 TR2의 크기가 A ∪ B의 크기보다 충분히 작을 경우 본 발명의 PAAT 방식은 중간 병합 결과가 의미하는 후보 문서 리스트의 길이를 줄이는 효과를 갖는다. 따라서, R1과 R2가 동일한 크기를 가짐으로써 중간 병합 결과인 TR1과 TR2의 최대 크기를 최소화하는 것이 바람직하다. 즉, 본 발명의 PAAT 방식에서 분할되는 구간은 그 크기가 서로 동일한 것이 바람직하다.
한편, TR1과 TR2는 각 구간의 최종 병합 결과를 구한 후에는 유지될 필요가 없는 임시적인 집합이므로 제1 또는 제2 버퍼(400, 500)에 임시 저장되며, 상기 제1 또는 제2 버퍼(400, 500)는 각 구간별 병합 연산 시 중간 병합 결과를 임시 저장하기 위하여 공통으로 사용될 수 있다.
본 발명의 PAAT방식이 종래의 TAAT 방식 및 DAAT 방식에 비해 갖는 우월성을 입증하기 위한 실험을 하였다.
실험을 위한 정수열은 55개의 정수가 오름차순으로 정렬된 정수열로서, 최소 139개에서 최대 2,815,551개이다. 정수의 범위는 1에서 약 10,000,000 까지다. 병합 결과 건수는 총 4,909,478개이다. 이 데이터는 약 10,000,000 건의 문서의 색인에 대한 특정 질의의 포스팅 리스트에서 문서 식별자를 추출한 것이다.
각 방식마다 위 데이터에 대하여 20번 병합을 수행하여 그 평균 속도를 구하였다. PAAT 적용의 경우 각 구간의 크기는 65,536 이었다. 각 방식의 평균 수행 시간은 아래의 표 1과 같다.
[표 1] 병합 문제의 각 알고리즘의 수행 시간
알고리즘 | 평균 수행 시간(msec) |
TAAT | 462 |
DAAT | 1780 |
PAAT | 424 |
표 1에 나타난 바와 같이, 병합 속도는 본 발명의 PAAT방식이 가장 빠르고, TAAT, DAAT 순의 병합 속도를 보였다. 특히 DAAT방식은 본 발명의 PAAT 방식에 비해 4 배 이상 느렸고, TAAT 방식도 본 발명의 PAAT 방식에 비해 약 8% 정도 느렸다.
본 발명의 PAAT 방식은 분할된 구간을 검사하는 조건문이 루프 내에 있어 TAAT 방식에 비해 약 50% 이상의 비교 연산을 수행하고 있음에도 불구하고 TAAT 방식보다 향상된 속도를 보여주는 것을 알 수 있다.
한편, 위 실험에서 TAAT 방식에 요구되는 임시 버퍼의 크기는 약 40 MB였음에 반해, 본 발명의 PAAT 방식에서는 각 구간의 크기인 65,536 개의 정수를 담을 수 있는 버퍼 두 개의 크기인 512KB만으로 충분하였다. 본 발명의 PAAT 방식의 경 우 작은 사이즈의 임시 버퍼가 반복적으로 사용되므로, 큰 임시 버퍼를 매 색인어마다 훑어야 되는 TAAT 방식에 비해 메모리 접근의 접근성(locality)이 더 우수하다.
이하에서는, 본 발명의 검색부(200)가 PAAT 방식을 이용하여 사용자 질의에 따른 검색을 수행하는 과정을 보다 상세히 살펴보기로 한다.
검색부(200)는 전처리부(100)에 의해 추출된 질의 색인어들 각각에 대응하는 포스팅 리스트들을 2 이상의 구간별로 병합한다. 포스팅 리스트들의 특정 구간에 해당하는 문서들만을 병합하기 위하여 검색부(200)는 포스팅 리스트에 포함된 문서 식별자가 상기 특정 구간에 속하는지의 여부를 검사한다. 이와 같은 검사의 용이성을 위하여, 각 포스팅 리스트는 문서 식별자와 함께 그 문서 식별자가 속하는 구간의 구간 식별자를 포함할 수 있다.
검색부(200)가 포스팅 리스트들의 특정 구간, 예를 들어 제1 구간을 병합하는 과정을 구체적으로 살펴보면, 제1 포스팅 리스트의 제1 구간과 제2 포스팅 리스트의 제1 구간을 병합하여 제1 병합 결과를 생성하고, 상기 제1 병합 결과에 제3 포스팅 리스트의 제1 구간을 병합하여 제2 병합 결과를 생성한다. 마지막 포스팅 리스트를 병합할 때까지 이와 같은 과정을 반복함으로써 제1 구간 병합 결과를 생성한다.
위와 같은 방식에 의해 각 구간별 병합 결과들이 생성되면 검색부(200)는 이들을 단순 병합한다.
한편, 일반적인 정보 검색 시스템에 대한 검색 요청은 검색 결과 문서를 전부 요청하는 것이 아니라 순위화된 검색 결과의 상위 소정 개수의 문서만을 요청한다. 순위화된 상위 문서 선택의 문제는 주어진 포스팅 리스트들의 병합 결과 중 지정된 순위화 방식에 의한 상위 r개의 문서를 결과로 하는 문제이다.
이것은 최종 병합 결과를 생성한 후 선택(selection) 알고리즘에 의해 수행될 수 있으나, 최종 병합 결과의 크기, 즉 최종 결과 문서 리스트의 길이가 길 경우 중간 병합 결과로서의 문서 리스트에 대한 메모리 사용량이 커지고 선택 단계에서의 시간 복잡도 역시 커지게 된다. 따라서, 최종적으로 선택되지 않을 결과를 병합 과정에서 미리 제거함으로써 병합 작업과 병행하여 수행되는 것이 더 바람직하다고 할 수 있다.
본 발명의 바람직한 실시예에 따른 검색부(200)는 구간별 병합 결과들을 단순 병합한 최종 병합 결과를 각 문서의 순위값에 따라 순위화된 상태로 사용자에게 제공하되, 순위값에 따른 상위 r 개의 문서만을 제공한다. 특히 본 발명의 검색부(200)는 최종적으로 선택되지 않을 결과를 구간별 병합 결과들의 단순 병합 과정에서 미리 제거한다. 예를 들어, 제1 구간에 대한 병합 결과와 제2 구간에 대한 병합 결과를 단순 병합하는 경우 제1 구간 병합 결과에 포함된 문서의 개수가 r 개 이상이면, 1) 제2 구간 병합 결과에 포함된 문서들 중 그 순위값이 제1 구간 병합 결과의 최소 순위값보다 작은 문서는 병합 결과의 문서 집합에 추가하지 않고, 2) 제1 구간 병합 결과의 최소 순위값과 동일한 순위값을 갖는 제2 구간 병합 결과의 문서는 제1 구간 병합 결과에 추가하며, 3) 제1 구간 병합 결과의 최소 순위값보다 큰 순위값을 갖는 제2 구간 병합 결과의 문서는 제1 구간 병합 결과에 추가하고 상기 최소 순위값을 가졌던 원래 문서는 그것을 삭제하더라도 병합 결과의 문서 집합의 크기가 r이상을 유지할 경우에만 삭제한다.
위와 같이, 본 발명의 검색부(200)는 중간 병합 결과의 문서 리스트에 포함된 문서들의 순위값 중에서 최소 순위값, 즉 중간 병합 결과의 최소 순위값을 병합에 의해 새로운 문서를 리스트에 추가할 때마다 갱신함으로써 중간 병합 결과의 문서 집합의 크기를 r 개로 유지할 수 있어, 최종 병합을 수행한 후 별도의 선택 과정을 수행하지 않아도 된다. 최소 순위값의 갱신을 위해 min heap 자료 구조를 사용할 수 있다.
한편, 포스팅 리스트들을 구간별 병합 및 구간별 병합 결과들의 단순 병합 과정에서 문서 각각에 대하여 사용자 질의와의 연관도, 즉 순위값을 계산해 주어야 한다.
각 문서의 순위값 결정을 위한 본 발명의 제1 실시예에 따르면, 문서에 몇 개의 질의 색인어가 포함되어 있는지에 따라 각 문서의 순위값을 결정하는 MTC(Matched Term Count) 방식이 적용된다. 즉, 포스팅 리스트들에 대한 구간별 병합 단계 및 구간별 병합 결과들의 단순 병합 단계에 각 문서의 중복 횟수가 본 발명의 누산기(600)에 의해 계산된다.
이와 같은 MTC에 의한 순위화 방식을 본 발명의 PAAT 방식에 결합하면 각 구간별 병합을 용이하게 수행할 수 있게 된다.
즉, 포스팅 리스트들의 특정 구간, 예를 들어 제1 구간에 대한 병합을 수행 하는 경우, 본 발명의 검색부(200)는, 제1 포스팅 리스트의 제1 구간과 제2 포스팅 리스트의 제1 구간을 병합하여 제1 병합 결과를 생성하고, 상기 제1 병합 결과에 제1 및 제2 포스팅 리스트들을 제외한 나머지 포스팅 리스트(들)의 제1 구간을 병합하여 제1 구간 병합 결과를 생성한다. 이때, 상기 제1 병합 결과에 포함된 문서의 개수가 기설정된 r 개 이상이고 상기 나머지 포스팅 리스트(들)의 개수가 상기 제1 병합 결과의 최소 순위값보다 작을 경우, 상기 나머지 포스팅 리스트(들)의 제1 구간 중 상기 제1 병합 결과에 속하지 않은 문서는 추가되지 않으나 상기 제1 병합 결과에 속하는 문서에 대해서는 누산이 계속 수행된다.
MTC 방식을 적용한 구간별 병합을 도 3을 참조하여 보다 상세히 설명한다.
먼저, 첫 번째(n = 1) 포스팅 리스트의 제1 구간이 중간 병합 결과가 된다(S110).
이 중간 병합 결과에 포함된 문서의 개수가 사용자에게 검색 결과로서 제공될 문서의 개수(r) 이상인지의 여부를 판단한다(S120). 만약 r개 이상일 경우에는, 상기 중간 병합 결과의 최소 순위값과 나머지 포스팅 리스트(들)의 개수를 비교한다(S130). 중간 병합 결과의 최소 순위값이 나머지 포스팅 리스트(들)의 개수보다 크면 나머지 포스팅 리스트(들)의 제1 구간에 포함된 문서 중 상기 중간 병합 결과에 포함되지 않은 문서는 이후 병합 연산에서 배제시킨다(S150).
이어서, n번째 포스팅 리스트가 총 m개의 포스트 리스트들 중 마지막 포스팅 리스트이었는지를 판단한다(S140). 또한, 상기 S120 단계에서 중간 병합 결과에 포함된 문서의 개수가 사용자에게 검색 결과로서 제공될 문서의 개수(r) 미만인 경우 및 상기 S130 단계에서 중간 병합 결과의 최소 순위값이 나머지 포스팅 리스트(들)의 개수 이하인 경우에도 상기 S140 단계를 수행한다.
S140 단계에서 n번째 포스팅 리스트가 총 m개의 포스트 리스트들 중 마지막 포스팅 리스트이었다고 판단되면 제1 구간에 대한 병합을 종료한다. 그러나, n번째 포스팅 리스트가 총 m개의 포스트 리스트들 중 마지막 포스팅 리스트가 아니었을 경우에는 n을 1만큼 증가시키고(S160) 다음 포스팅 리스트의 제1 구간을 상기 중간 병합 결과에 병합한다(S170). 즉, n + 1 번째 포스팅 리스트의 제1 구간을 상기 중간 병합 결과에 병합시킴과 동시에 새로운 병합 결과의 최소 순위값을 갱신한다(S160, S170).
한편, 이와 같은 MTC에 의한 순위화 방식을 본 발명의 PAAT 방식에 결합하면 이전 구간까지의 각 구간별 병합 결과를 다음 구간의 병합 연산에 이용할 수 있어 전체적인 연산 속도 향상을 꾀할 수 있는 효과가 있다.
즉, 제1 구간에 대한 병합 결과를 생성한 후 제2 구간에 대한 병합 연산을 수행함에 있어서, 본 발명의 검색부(200)는, 제1 구간의 병합 결과에 포함된 문서의 개수가 r개 이상이고 제1 구간의 병합 결과의 최소 순위값이 제2 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 개수보다 클 경우, 제2 구간에 대한 병합 연산을 생략할 수 있고, 따라서 전체 연산 속도가 향상되게 된다. 한편, 제1 구간의 병합 결과에 포함된 문서의 개수가 r개 이상이고 제1 구간의 병합 결과의 최소 순위값이 제2 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 개수와 동일한 경우에는, 상기 제2 구간에 있어서는 그 포스팅 리스트(들) 모두에 존재하는 문서만 을 제2 구간의 병합 결과로서 생성한다.
MTC 방식 하에서 이전 구간의 병합 결과를 다음 구간의 병합에 이용하는 본 발명의 바람직한 실시예를 도 4를 참조하여 보다 상세히 설명한다.
먼저, n번째 구간의 병합 결과를 생성하고(S210), 상기 n번째 구간이 총 p개의 구간 중 마지막 구간이었는지의 여부를 판단한다(S220). 상기 n번째 구간이 총 p개의 구간 중 마지막 구간이었으면 모든 구간에 대한 구간별 병합을 종료한다. 그러나, 상기 n번째 구간이 마지막 구간이 아니었다면 상기 병합 결과에 포함된 문서의 개수가 사용자에게 검색 결과로서 제공될 문서의 개수(r) 이상인지의 여부를 판단한다(S230).
만약 r개 이상일 경우에는, 상기 중간 병합 결과의 최소 순위값과 n + 1 번째 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 개수를 비교한다(S240). 중간 병합 결과의 최소 순위값이 n + 1 번째 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 개수보다 크면 상기 n + 1 번째 구간에 대한 병합 연산은 생략하고 n을 2만큼 증가시키고(S250), 그 증가된 값과 총 구간의 개수인 p를 비교함으로써 해당 구간이 존재하는 지를 확인한다(S260). 그런 구간이 존재한다면 해당 구간에 대한 병합 결과를 생성하고, 존재하지 않는다면 모든 구간별 병합을 종료한다.
한편, S230에서 상기 병합 결과에 포함된 문서의 개수가 r개보다 작을 경우 및 S240에서 상기 중간 병합 결과의 최소 순위값이 n + 1 번째 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 개수 이하일 경우에는 n을 1만큼 증가시키고(S270), 그 증가된 값과 총 구간의 개수인 p를 비교함으로써 해당 구간이 존재하 는 지를 확인한다(S280). 그런 구간이 존재한다면 해당 구간에 대한 병합 결과를 생성하고, 존재하지 않는다면 모든 구간별 병합을 종료한다.
각 문서의 순위값 결정을 위한 본 발명의 제2 실시예에 따르면, 문서-색인어 간 가중치의 합에 따라 각 문서의 순위값을 결정하는 유사도에 의한 순위화 방식이 적용된다. 즉, 포스팅 리스트들에 대한 구간별 병합 단계 및 구간별 병합 결과들의 단순 병합 단계에 각 문서의 문서-색인어간 가중치의 합이 본 발명의 누산기(600)에 의해 계산된다. 또한, 본 발명의 데이터베이스(300)에는 각 포스팅 리스트 별 문서-색인어 간 가중치의 최대값들로 구성된 최대 가중치 파일(330)이 저장된다.
이와 같은 유사도에 의한 순위화 방식을 본 발명의 PAAT 방식에 결합하면 각 구간별 병합을 용이하게 수행할 수 있게 된다.
즉, 포스팅 리스트들의 특정 구간, 예를 들어 제1 구간에 대한 병합을 수행하는 경우, 본 발명의 검색부(200)는, 제1 포스팅 리스트의 제1 구간과 제2 포스팅 리스트의 제1 구간을 병합하여 제1 병합 결과를 생성하고, 상기 제1 병합 결과에 제1 및 제2 포스팅 리스트들을 제외한 나머지 포스팅 리스트(들)의 제1 구간을 병합하여 제1 구간 병합 결과를 생성한다. 이때, 상기 제1 병합 결과에 포함된 문서의 개수가 기설정된 r 개 이상이고 상기 나머지 포스팅 리스트(들)의 최대 가중치의 합이 상기 제1 병합 결과의 최소 순위값보다 작을 경우, 상기 나머지 포스팅 리스트(들)의 제1 구간 중 상기 제1 병합 결과에 속하지 않은 문서는 추가되지 않으나 상기 제1 병합 결과에 속하는 문서에 대해서는 누산이 계속 수행된다.
유사도에 의한 순위화 방식을 적용한 구간별 병합을 도 5를 참조하여 보다 상세히 설명한다.
먼저, 첫 번째(n = 1) 포스팅 리스트의 제1 구간이 중간 병합 결과가 된다(S310).
이 중간 병합 결과에 포함된 문서의 개수가 사용자에게 검색 결과로서 제공될 문서의 개수(r) 이상인지의 여부를 판단한다(S320). 만약 r개 이상일 경우에는, 상기 중간 병합 결과의 최소 순위값과 나머지 포스팅 리스트(들)의 최대 가중치의 합을 비교한다(S330). 중간 병합 결과의 최소 순위값이 나머지 포스팅 리스트(들)의 최대 가중치의 합보다 크면 나머지 포스팅 리스트(들)의 제1 구간에 포함된 문서 중 상기 중간 병합 결과에 포함되지 않은 문서는 이후 병합 연산에서 배제시킨다(S350).
이어서, n번째 포스팅 리스트가 총 m개의 포스트 리스트들 중 마지막 포스팅 리스트이었는지를 판단한다(S340). 또한, 상기 S320 단계에서 중간 병합 결과에 포함된 문서의 개수가 사용자에게 검색 결과로서 제공될 문서의 개수(r) 미만인 경우 및 상기 S330 단계에서 중간 병합 결과의 최소 순위값이 나머지 포스팅 리스트(들)의 최대 가중치의 합 이하인 경우에도 상기 S340 단계를 수행한다.
S340 단계에서 n번째 포스팅 리스트가 총 m개의 포스트 리스트들 중 마지막 포스팅 리스트이었다고 판단되면 제1 구간에 대한 병합을 종료한다. 그러나, n번째 포스팅 리스트가 총 m개의 포스트 리스트들 중 마지막 포스팅 리스트가 아니었을 경우에는 n을 1만큼 증가시키고(S360) 다음 포스팅 리스트의 제1 구간을 상기 중간 병합 결과에 병합한다(S370). 즉, n + 1 번째 포스팅 리스트의 제1 구간을 상기 중 간 병합 결과에 병합시킴과 동시에 새로운 병합 결과의 최소 순위값을 갱신한다(S360, S370).
한편, 이와 같은 유사도에 의한 순위화 방식을 본 발명의 PAAT 방식에 결합하면 이전 구간까지의 각 구간별 병합 결과를 다음 구간의 병합 연산에 이용할 수 있어 전체적인 연산 속도 향상을 꾀할 수 있는 효과가 있다.
즉, 제1 구간에 대한 병합 결과를 생성한 후 제2 구간에 대한 병합 연산을 수행함에 있어서, 본 발명의 검색부(200)는, 제1 구간의 병합 결과에 포함된 문서의 개수가 r개 이상이고 제1 구간의 병합 결과의 최소 순위값이 제2 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 최대 가중치의 합보다 클 경우, 제2 구간에 대한 병합 연산을 생략할 수 있고, 따라서 전체 연산 속도가 향상되게 된다.
유사도에 의한 순위화 방식 하에서 이전 구간의 병합 결과를 다음 구간의 병합에 이용하는 본 발명의 바람직한 실시예를 도 6을 참조하여 보다 상세히 설명한다.
먼저, n번째 구간의 병합 결과를 생성하고(S410), 상기 n번째 구간이 총 p개의 구간 중 마지막 구간이었는지의 여부를 판단한다(S420). 상기 n번째 구간이 총 p개의 구간 중 마지막 구간이었으면 모든 구간에 대한 구간별 병합을 종료한다. 그러나, 상기 n번째 구간이 마지막 구간이 아니었다면 상기 병합 결과에 포함된 문서의 개수가 사용자에게 검색 결과로서 제공될 문서의 개수(r) 이상인지의 여부를 판단한다(S430).
만약 r개 이상일 경우에는, 상기 중간 병합 결과의 최소 순위값과 n + 1 번 째 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 최대 가중치의 합을 비교한다(S440). 중간 병합 결과의 최소 순위값이 n + 1 번째 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 최대 가중치의 합보다 크면 상기 n + 1 번째 구간에 대한 병합 연산은 생략하고 n을 2만큼 증가시키고(S450), 그 증가된 값과 총 구간의 개수인 p를 비교함으로써 해당 구간이 존재하는 지를 확인한다(S460). 그런 구간이 존재한다면 해당 구간에 대한 병합 결과를 생성하고, 존재하지 않는다면 모든 구간별 병합을 종료한다.
한편, S430에서 상기 병합 결과에 포함된 문서의 개수가 r개보다 작을 경우 및 S440에서 상기 중간 병합 결과의 최소 순위값이 n + 1 번째 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 최대 가중치의 합 이하일 경우에는 n을 1만큼 증가시키고(S470), 그 증가된 값과 총 구간의 개수인 p를 비교함으로써 해당 구간이 존재하는 지를 확인한다(S480). 그런 구간이 존재한다면 해당 구간에 대한 병합 결과를 생성하고, 존재하지 않는다면 모든 구간별 병합을 종료한다.
위에서 살펴본 본 발명의 정보 검색 방법의 성능을 확인하기 위해 실제 서비스되는 문서 컬렉션과 질의 집합으로 실험해 보았다. 컬렉션은 특정 서비스의 전체 컬렉션 중 약 10,000,000건의 컬렉션을 추출하였고, 서비스 질의 로그로부터 50,000개의 질의를 추출하여 논리합 연산자에 의해 유사도 기준 상위 10건의 검색을 수행하였다. 문서-색인어 간 가중치는 2 poisson 모델에 의해 구하였다. 모든 포스팅 리스트는 VBE(Variable Byte Encoding)에 의해 압축되며, 블록화되어 스킵 리스트(skip list)에 의한 논리곱 연산의 스키핑(skipping)을 지원한다.
알고리즘의 수행 성능 파악을 위해 전체 색인은 I/O 버퍼링된 상태로 실험하였다. 또한 알고리즘의 동시 처리 성능을 알아보기 위해, 50,000건 질의의 검색을 수행하는 프로세스를 동시에 1개에서 9개까지 바꿔가며 평균 수행 시간을 체크해 보았다.
TAAT, DAAT 및 본 발명의 PAAT의 세 가지 방식에 동일한 수준의 최적화를 적용하였다. 이에 덧붙여, 본 발명의 PAAT방식에는 앞에서 설명한 최적화 기법이 검색 옵션에 따라 적절히 적용되도록 구현하였다.
각 방식의 동시 검색 프로세스 수에 따른 논리합 질의 평균 수행 시간을 보여주는 도 7의 그래프에서 알 수 있는 바와 같이, 본 발명의 PAAT 방식에 의하면 TAAT 및 DAAT 방식에 비해 4 배 이상의 속도 향상을 나타내고 있다.
또한, 각 방식의 동시 검색 프로세스 수에 따른 논리합 질의 최대 수행 시간을 보여주는 도 8의 그래프에서 알 수 있는 바와 같이, 본 발명의 PAAT 방식과 종래의 TAAT 및 DAAT 방식의 수행 시간 격차는 더 증가하였음을 알 수 있는데, 본 발명의 PAAT 방식에 의하면 TAAT 및 DAAT 방식에 비해 약 5~6 배 이상의 속도 향상을 나타냈다.
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다.
그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
상술한 바와 같이, 본 발명의 정보 검색 방법 및 그 시스템은, 구현 방식의 단순성으로 인해 빠른 처리 속도를 담보할 수 있는 TAAT방식의 장점을 그대로 간직하면서도, 후보 문서 리스트의 생성 및 저장에 따른 공간 복잡도의 증가라는 TAAT방식의 단점을 최소화함으로써, 각각의 질의 색인어에 대한 포스팅 리스트들의 병합을 효율적으로 처리할 수 있다.
또한, 각각의 포스팅 리스트들을 복수개의 구간으로 분할하고 각 구간별로 병합을 수행함으로써 특정 구간의 병합을 수행하는데 있어서 이전 구간의 최소 순위값을 적절하게 이용할 수 있어 부가적인 속도 향상을 꾀할 수 있는 효과가 있다.
Claims (27)
- 질의 색인어들 각각에 대응하는 포스팅 리스트들을 구간들 별로 병합하는 단계; 및상기 구간들 별 병합 결과들을 단순 병합하는 단계를 포함하되,상기 구간은 제1 구간을 포함하고,상기 포스팅 리스트들은 제1, 제2 및 제3 포스팅 리스트를 포함하며,상기 포스팅 리스트들의 상기 제1 구간을 병합하는 단계는,상기 제1 포스팅 리스트의 상기 제 1 구간과 상기 제2 포스팅 리스트의 상기 제1 구간을 병합하여 제1 병합 결과를 생성하는 단계; 및상기 제1 병합 결과에 상기 제3 포스팅 리스트의 상기 제1 구간을 병합하여 제2 병합 결과를 생성하는 단계를 포함하는 것을 특징으로 하는 정보 검색 방법.
- 제 1 항에 있어서,상기 구간별로 병합하는 단계는, 상기 포스팅 리스트에 포함된 문서 식별자가 해당 구간에 속하는지의 여부를 검사하는 단계를 포함하는 것을 특징으로 하는 정보 검색 방법.
- 삭제
- 제 1 항에 있어서,사용자로부터 전송된 검색 질의로부터 상기 질의 색인어들을 추출하는 단계; 및상기 단순 병합 단계에 의해 생성된 결과를 각 문서의 순위값에 따라 순위화된 상태로 상기 사용자에게 제공하는 단계를 더 포함하는 것을 특징으로 하는 정보 검색 방법.
- 제 4 항에 있어서, 상기 사용자에게 제공되는 상기 순위화된 상태의 단순 병합 결과는 순위값에 따른 상위 r개의 문서만을 포함하는 것을 특징으로 하는 정보 검색 방법.
- 제 5 항에 있어서, 상기 구간별 병합 단계 및 상기 단순 병합 단계 각각은 각 중간 병합 결과의 최소 순위값을 갱신하는 단계를 포함하는 것을 특징으로 하는 정보 검색 방법.
- 제 6 항에 있어서, 상기 구간별 병합 단계 및 상기 단순 병합 단계 각각은 상기 각 문서의 순위값을 결정하기 위하여 각 문서의 중복 횟수를 누산하는 단계를 포함하는 것을 특징으로 하는 정보 검색 방법.
- 제 7 항에 있어서, 상기 제1 병합 결과에 포함된 문서의 개수가 상기 r 개 이상이고 상기 제3 포스팅 리스트를 포함하는 나머지 포스팅 리스트(들)의 개수가 상기 제1 병합 결과의 상기 최소 순위값보다 작을 경우, 상기 제3 포스팅 리스트의 상기 제1 구간 중 상기 제1 병합 결과에 속하지 않은 문서는 추가하지 않고 상기 제2 병합 결과를 생성하는 것을 특징으로 하는 정보 검색 방법.
- 제 8 항에 있어서, 상기 제1 병합 결과에 포함된 문서의 개수가 상기 r 개 이상이고 상기 제3 포스팅 리스트를 포함하는 나머지 포스팅 리스트(들)의 개수가 상기 제1 병합 결과의 상기 최소 순위값보다 작을 경우, 상기 제3 포스팅 리스트의 상기 제1 구간 중 상기 제1 병합 결과에 속하는 문서에 대해서는 누산을 수행하여 상기 제2 병합 결과를 생성하는 것을 특징으로 하는 정보 검색 방법.
- 제 7 항에 있어서, 상기 구간은 제2 구간을 더 포함하고,상기 제1 구간의 병합 결과에 포함된 문서의 개수가 상기 r개 이상이고 상기 제1 구간의 병합 결과의 최소 순위값이 상기 제2 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 개수보다 클 경우, 상기 제2 구간에 대한 병합을 생략하는 것을 특징으로 하는 정보 검색 방법.
- 제 7 항에 있어서, 상기 구간은 제2 구간을 더 포함하고,상기 제1 구간의 병합 결과에 포함된 문서의 개수가 상기 r개 이상이고 상기 제1 구간의 병합 결과의 최소 순위값이 상기 제2 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 개수와 동일할 경우, 상기 제2 구간에 있어서는 상기 포스팅 리스트(들) 모두에 존재하는 문서만을 상기 제2 구간의 병합 결과로서 생성하는 것을 특징으로 하는 정보 검색 방법.
- 제 6 항에 있어서, 상기 구간별 병합 단계 및 상기 단순 병합 단계 각각은 상기 각 문서의 순위값을 결정하기 위하여 문서-색인어 간 가중치를 누산하는 단계를 포함하는 것을 특징으로 하는 정보 검색 방법.
- 제 12 항에 있어서, 상기 제1 병합 결과에 포함된 문서의 개수가 상기 r개 이상이고 상기 제3 포스트 리스트를 포함한 나머지 포스팅 리스트(들)의 최대 가중치의 합이 상기 제1 병합 결과의 상기 최소 순위값보다 작을 경우, 상기 제3 포스팅 리스트의 상기 제1 구간 중 상기 제1 병합 결과에 속하지 않은 문서는 추가하지 않고 상기 제2 병합 결과를 생성하는 것을 특징으로 하는 정보 검색 방법.
- 제 13 항에 있어서, 상기 제1 병합 결과에 포함된 문서의 개수가 상기 r개 이상이고 상기 제3 포스트 리스트를 포함한 나머지 포스팅 리스트(들)의 최대 가중치의 합이 상기 제1 병합 결과의 상기 최소 순위값보다 작을 경우, 상기 제3 포스팅 리스트의 상기 제1 구간 중 상기 제1 병합 결과에 속하는 문서에 대해서는 누산을 수행하여 상기 제2 병합 결과를 생성하는 것을 특징으로 하는 정보 검색 방법.
- 제 12 항에 있어서, 상기 구간은 제2 구간을 더 포함하고,상기 제1 구간의 병합 결과에 포함된 문서의 개수가 상기 r개 이상이고 상기 제1 구간의 병합 결과의 최소 순위값이 상기 제2 구간에 속하는 문서를 포함하는 포스팅 리스트(들)의 최대 가중치의 합보다 클 경우, 상기 제2 구간에 대한 병합을 생략하는 것을 특징으로 하는 정보 검색 방법.
- 제 6 항에 있어서, 상기 구간은 제2 구간을 더 포함하고, 상기 구간별 병합 결과들을 단순 병합하는 단계는 상기 제1 구간의 병합 결과에 상기 제2 구간의 병합 결과를 단순 병합하는 단계를 포함하되,상기 제1 구간의 병합 결과에 포함된 문서의 개수가 상기 r개 이상이면, 상기 제2 구간의 병합 결과에 포함된 문서들 중 그 순위값이 상기 제1 구간의 병합 결과의 최소 순위값보다 작은 문서는 추가하지 않는 것을 특징으로 하는 정보 검색 방법.
- 제 16 항에 있어서, 상기 제1 구간의 병합 결과에 포함된 문서의 개수가 상기 r개 이상이면, 상기 제2 구간의 병합 결과에 포함된 문서들 중 순위값이 상기 제1 구간의 병합 결과의 최소 순위값보다 큰 문서는 상기 제1 구간의 병합 결과에 추가하고, 상기 제1 구간의 병합 결과 중 최소 순위값을 가졌던 문서는 삭제하는 것을 특징을 하는 정보 검색 방법.
- 제 6 항에 있어서, 상기 구간별 병합 결과들을 단순 병합하는 단계는,상기 단순 병합의 과정에서 생성된 중간 병합 결과에 포함된 문서의 개수가 상기 r개 이상이 되면, 상기 중간 병합 결과의 최소 순위값 이상의 순위값을 갖는 문서만을 추가하는 단계; 및상기 중간 병합 결과에서 최소 순위값을 갖는 문서를 삭제하여도 상기 중간 병합 결과에 포함된 문서의 개수가 상기 r개 이상을 유지할 수 있으면 상기 최소 순위값을 갖는 문서를 삭제하는 단계를 포함하는 것을 특징으로 하는 정보 검색 방법.
- 삭제
- 제 1 항, 제 2 항, 제 4 항 내지 제 18항들 중 어느 하나의 항에 기재된 방법을 수행하기 위한 컴퓨터로 판독 가능한 프로그램이 기록된 기록매체.
- 색인어들 및 상기 색인어들 각각에 대응하는 포스팅 리스트들이 저장된 데이터베이스;질의 색인어들에 대응하는 포스팅 리스트들을 상기 데이터베이스로부터 수신하고, 상기 수신한 포스팅 리스트들을 구간들 별로 병합하며, 상기 구간들 별 병합 결과들을 단순 병합하는 검색부; 및상기 검색부에 의해 상기 구간들 별 병합 및 상기 단순 병합이 수행될 때 생성되는 중간 병합 결과를 저장하기 위한 제1 및 제2 저장수단을 포함하는 것을 특징으로 하는 정보 검색 시스템.
- 삭제
- 제 21 항에 있어서, 상기 구간들은 제1 구간을 포함하고, 상기 포스팅 리스트들은 제1, 제2 및 제3 포스팅 리스트를 포함하며,상기 검색부는, 상기 제1 포스팅 리스트의 상기 제1 구간과 상기 제2 포스팅 리스트의 상기 제1 구간을 병합하여 제1 병합 결과를 생성하고 상기 제1 병합 결과를 상기 제1 저장수단에 저장하며, 이어서 상기 제1 저장수단에 저장된 상기 제1 병합 결과와 상기 제3 포스팅 리스트의 상기 제1 구간을 병합하여 제2 병합 결과를 생성하고 상기 제2 병합 결과를 상기 제2 저장수단에 저장하는 것을 특징으로 하는 정보 검색 시스템.
- 색인어들 및 상기 색인어들 각각에 대응하는 포스팅 리스트들이 저장된 데이터베이스;질의 색인어들에 대응하는 포스팅 리스트들을 상기 데이터베이스로부터 수신하고, 상기 수신한 포스팅 리스트들을 구간들 별로 병합하며, 상기 구간들 별 병합 결과들을 단순 병합하는 검색부; 및상기 구간들 별 병합 및 상기 단순 병합 각각의 과정에서 각 문서의 중복 횟수를 계산하기 위한 수단을 포함하는 것을 특징으로 하는 정보 검색 시스템.
- 색인어들 및 상기 색인어들 각각에 대응하는 포스팅 리스트들이 저장된 데이터베이스;질의 색인어들에 대응하는 포스팅 리스트들을 상기 데이터베이스로부터 수신하고, 상기 수신한 포스팅 리스트들을 구간들 별로 병합하며, 상기 구간들 별 병합 결과들을 단순 병합하는 검색부; 및상기 구간들 별 병합 및 상기 단순 병합 각각의 과정에서 각 문서의 문서-색인어 간 가중치를 합하기 위한 수단을 포함하는 것을 특징으로 하는 정보 검색 시스템.
- 제 25 항에 있어서, 상기 포스팅 리스트들 각각의 문서-색인어간 가중치 최대값을 갱신하여 상기 데이터베이스에 저장하는 인덱싱부를 더 포함하는 것을 특징으로 하는 정보 검색 시스템.
- 색인어들 및 상기 색인어들 각각에 대응하는 포스팅 리스트들이 저장된 데이터베이스;질의 색인어들에 대응하는 포스팅 리스트들을 상기 데이터베이스로부터 수신하고, 상기 수신한 포스팅 리스트들을 구간들 별로 병합하며, 상기 구간들 별 병합 결과들을 단순 병합하는 검색부; 및사용자로부터 수신한 검색 질의로부터 상기 질의 색인어들을 추출하여 상기 검색부로 전송하는 전처리부를 더 포함하는 것을 특징으로 하는 정보 검색 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070047677A KR100892406B1 (ko) | 2007-05-16 | 2007-05-16 | 정보 검색 방법 및 그 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070047677A KR100892406B1 (ko) | 2007-05-16 | 2007-05-16 | 정보 검색 방법 및 그 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080101216A KR20080101216A (ko) | 2008-11-21 |
KR100892406B1 true KR100892406B1 (ko) | 2009-04-10 |
Family
ID=40287510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070047677A KR100892406B1 (ko) | 2007-05-16 | 2007-05-16 | 정보 검색 방법 및 그 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100892406B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101203931B1 (ko) | 2010-12-30 | 2012-11-27 | 대한민국(국가기록원) | 동영상 내 등장인물의 효율적 검색을 위한 포스팅 리스트 압축 및 순위 결정 방법 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102568662B1 (ko) * | 2021-01-22 | 2023-08-22 | 성균관대학교산학협력단 | 복수의 스킵리스트를 병합하기 위한 지퍼 컴팩션 방법 및 장치 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060048778A (ko) * | 2004-07-26 | 2006-05-18 | 구글, 인코포레이티드 | 정보 검색 시스템에서의 문구 기반 서치 |
-
2007
- 2007-05-16 KR KR1020070047677A patent/KR100892406B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060048778A (ko) * | 2004-07-26 | 2006-05-18 | 구글, 인코포레이티드 | 정보 검색 시스템에서의 문구 기반 서치 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101203931B1 (ko) | 2010-12-30 | 2012-11-27 | 대한민국(국가기록원) | 동영상 내 등장인물의 효율적 검색을 위한 포스팅 리스트 압축 및 순위 결정 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20080101216A (ko) | 2008-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100458779C (zh) | 扩展索引的方法 | |
Zhu et al. | Josie: Overlap set similarity search for finding joinable tables in data lakes | |
US7558802B2 (en) | Information retrieving system | |
KR101972645B1 (ko) | 클러스터링 저장 방법 및 장치 | |
US10706034B2 (en) | Query access optimizations for tiered index architecture | |
CN109325032B (zh) | 一种索引数据存储及检索方法、装置及存储介质 | |
US5758335A (en) | Optimizing table join ordering using graph theory prior to query optimization | |
Trotman et al. | Towards an Efficient and Effective Search Engine. | |
US9292554B2 (en) | Thin database indexing | |
EP3289484B1 (en) | Method and database computer system for performing a database query using a bitmap index | |
WO2007033463A1 (en) | Methods and systems for joining database tables using indexing data structures | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
KR101656750B1 (ko) | 인덱스정보를 생성하는 데이터베이스의 아카이빙 방법 및 장치, 인덱스정보를 포함하는 아카이빙된 데이터베이스의 검색 방법 및 장치 | |
WO2005041059A1 (en) | Sorting result buffer | |
US10545960B1 (en) | System and method for set overlap searching of data lakes | |
KR100892406B1 (ko) | 정보 검색 방법 및 그 시스템 | |
US9558221B2 (en) | Multi-pass, parallel merge for partitioned intermediate pages | |
US7953721B1 (en) | Integrated search engine devices that support database key dumping and methods of operating same | |
Han et al. | Efficient top-k retrieval on massive data | |
Siedlaczek et al. | Using conjunctions for faster disjunctive top-k queries | |
CN114911826A (zh) | 一种关联数据检索方法和系统 | |
US9928274B2 (en) | Dynamically adjust duplicate skipping method for increased performance | |
JP2013127750A (ja) | パーティション分割装置及び方法及びプログラム | |
Lin | Concurrent frame signature files | |
KR101311409B1 (ko) | 부분적인 인덱스 rid 정렬을 통한 파티션 스캔 방법 및 장치, 메모리 시스템, 및 데이터 정렬 방법 |
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: 20120329 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20160329 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20170328 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20190401 Year of fee payment: 11 |