KR20060059261A - 문서들의 집합에서의 검색 방법 - Google Patents

문서들의 집합에서의 검색 방법 Download PDF

Info

Publication number
KR20060059261A
KR20060059261A KR1020067001389A KR20067001389A KR20060059261A KR 20060059261 A KR20060059261 A KR 20060059261A KR 1020067001389 A KR1020067001389 A KR 1020067001389A KR 20067001389 A KR20067001389 A KR 20067001389A KR 20060059261 A KR20060059261 A KR 20060059261A
Authority
KR
South Korea
Prior art keywords
document
documents
document structure
subset
branch
Prior art date
Application number
KR1020067001389A
Other languages
English (en)
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 코닌클리케 필립스 일렉트로닉스 엔.브이.
Publication of KR20060059261A publication Critical patent/KR20060059261A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data

Landscapes

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

Abstract

본 발명은 트리형 구조를 갖고 문서 구조 정의들의 집합에서 적어도 하나의 문서 구조 정의에 따르는 문서들의 집합에서의 검색 방법에 관한 것이다. 이러한 방법은 특정 브랜치를 수신하는 단계(1)와, 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에 존재하게 하는 문서 구조 정의들의 상기 집합의 서브셋을 결정하는 단계(3)와, 상기 서브셋에서 문서 구조 정의들 중 어느 하나에 따르는 문서들의 집합의 모든 문서들을 포함하는 문서들의 집합의 서브셋을 결정하는 단계(5)와, 각각의 문서에서 특정 브랜치의 적어도 일부에 대해 검색하는 단계(7)를 포함한다. 또한, 본 발명은 본 발명의 문서들의 집합에서 검색하는 방법을 용이하게 하는 문서들의 집합을 인덱싱하는 방법에 관한 것이다. 또한, 본 발명은 프로그램가능한 장치가 본 발명의 방법들을 수행할 수 있게 하는 컴퓨터 프로그램 제품들과 본 발명의 방법들을 수행하기 위한 전자 장치들에 관한 것이다.
문서 구조 정의, 브랜치, 인덱싱, 전자 회로, 값 도메인 파티션

Description

문서들의 집합에서의 검색 방법{Method of searching in a collection of documents}
본 발명은 문서들의 집합에서의 검색 방법에 관한 것으로, 상기 문서들은 트리형 구조를 가지고 문서들의 집합에서 각각의 문서는 문서 구조 정의들의 집합에서 적어도 하나의 문서 구조 정의에 따르며, 보다 자세하게는 특정 브랜치를 수신하는 단계와 문서들의 집합에서 상기 특정 브랜치의 적어도 일부에 대해 검색하는 단계를 포함하는 방법에 관한 것이다.
또한, 본 발명은 프로그램가능한 장치 문서들의 집합에서의 검색 방법을 수행할 수 있게 하는 컴퓨터 프로그램 제품에 관한 것이다.
또한, 본 발명은 문서들의 집합에서의 검색용 전자 장치에 관한 것이다.
또한, 본 발명은 문서들의 집합을 인덱싱하는 방법, 보다 자세하게는 구조화된 문서들의 집합에서 검색을 가능하게 하는 방법에 관한 것이다.
또한, 본 발명은 프로그램가능한 장치가 문서들의 집합을 인덱싱하는 방법을 수행할 수 있게 하는 컴퓨터 프로그램 제품에 관한 것이다.
또한, 본 발명은 구조화된 문서들의 집합을 인덱싱하는 전자 장치에 관한 것이다.
문서들의 집합에서의 검색 방법의 예는 XPath라 불리는 월드 와이드 웹 콘소시엄 표준으로부터 공지되어 있다. 이러한 표준에서는 특정 경로를 포함하는 XML 문서들에 대한 검색을 기술하고 있다. XML 문서들은 트리형 구조를 가지며, 여기서 각각의 노드는 태크 및 가능하게는, 값을 갖는다. 각각의 2개의 노드들 사이에는 최대 한 개의 경로가 있다. 각각의 개별적 XML 문서에서 검색함으로써 XML 문서들에서의 경로에 대해 검색하는 것이 일반적인 관례이다. 검색이 오랜 시간 걸릴 수 있고, 특히 문서들이 암호화되어 있는 경우 해독될 필요가 있다는 것이 문서들의 집합에서 검색하는 공지된 방법의 결점이다.
본 발명의 제 1 목적은 보다 효율적인 검색을 가능하게 하는 문서들의 집합에서의 검색 방법을 제공하는 것이다.
본 발명의 제 2 목적은 보다 효율적인 검색을 가능하게 하는 문서들의 집합을 인덱싱하는 방법을 제공하는 것이다.
본 발명에 따라서, 제 1 목적에서는, 문서들의 집합에서의 검색 방법은 특정 브랜치를 수신하는 단계와, 문서 구조 정의들의 상기 집합의 서브셋을 결정하는 단계로서, 상기 서브셋에서의 각각의 문서 구조 정의는 상기 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에 존재하도록 허용하는, 상기 서브셋 결정 단계와, 문서들의 상기 집합의 서브셋을 결정하는 단계로서, 문서들의 상기 서브셋은 상기 서브셋에서의 상기 문서 구조 정의들 중 어느 하나에 따르는 문서들의 집합의 모든 문서들을 포함하는, 상기 서브셋 결정 단계와, 각각의 문서에서 상기 특정 브랜치의 적어도 일부에 대해 검색하는 단계를 포함한다는 것이 이해될 것이다. 브랜치는 하나 이상의 노드에서 시작 또는 종료될 수 있다. 경로 및 브랜치는 하나 이상의 태그들을 포함하고, 경로는 또한 브랜치이다. 예를 들어, 경로는 'book/name', 또는 'book.name'과 같이 표현될 수 있다. 예를 들어, 브랜치는 'book/name', 'book.name', 또는 book(name+author(name+age))'에 의해 표현될 수 있다. 브랜치는 예를 들어, {'책.이름', '책.작가.이름', '책.작가.나이'}와 같은 복수의 경로들에 의해 표현될 수 있다. 문서는 예를 들어 XML 또는 SGML 문서일 수 있다. 문서 구조 정의는 예를 들어 XML 데이터 타입 정의(DTD) 또는 XML 스키마일 수 있다. 후보 문서들의 세트를 결정하기 위해 문서 구조 정의를 사용함으로써, 검색이 보다 효율적이게 된다. 모든 문서들에서의 검색이 더이상 필요하지 않다.
본 발명의 문서들의 집합에서의 검색 방법의 실시예에 있어서, 문서들의 서브셋에서 각각의 암호화된 문서를 해독하도록 시도하는 추가적인 단계를 포함한다. 모든 암호화된 문서들이 해독되어야 하는 것은 아니고 오직 서브셋에서의 암호화된 문서들만 해독되어야 하기 때문에, 암호화된 문서들의 불필요한 해독이 감소된다.
문서들의 집합의 서브셋을 결정하는 단계는 해시 함수를 상기 특정 브랜치의 적어도 일부에 적용함으로써 상기 특정 브랜치의 적어도 일부에 대한 수를 계산하는 단계와, 어느 문서들이 수로부터 문서들로의 맵핑 단계에서 상기 계산된 수로 맵핑되는지를 룩업(looking up)하는 단계로서, 상기 맵핑 단계는 문서 구조 정의들의 상기 서브셋 중 하나의 문서 구조 정의와 연관되고 상기 맵핑 단계에서 상기 문서들은 상기 문서 구조 정의에 따르는, 상기 룩업 단계를 포함한다. 이것은 보안성을 제공할 뿐만 아니라(상기 맵핑 단계는 어느 브랜치가 어느 문서에 있는지는 나타내지 않고 있다), 효율적인 문서 룩업을 가능하게 한다. 상기 해시 맵핑 단계의 사이즈는(그리고 상기 해시 함수에 의해 리턴된 가장 가능한 최대수) 문서들의 집합에 기초하여 적응될 수 있다.
대안적으로, 브랜치 이름들의 해시들을 저장하는 대신에, 브랜치 이름들 자체가 브랜치 이름들로부터 문서들로의 맵핑 단계에 따라 저장될 수 있다. 또한, 이것은 인덱스를 사용하지 않는 검색과 비교하여 보다 효율적인 검색을 가능하게 하지만, 해시 맵핑을 사용하는 것보다 덜 유리하다. 보안성을 제공하기 위해, 추가의 조치들(measures)이 취해져야 한다. 브랜치가 문서에 불명확하게 맵핑함을 보증하기 위해, 브랜치는 브랜치 자신을 포함하지 않는 문서들에 맵핑되어야 한다. 이것은 상기 검색이 보다 덜 효율적이 되지만, 얼마간의 보안성를 제공한다.
상기 방법은 상기 특정 브랜치에 연관된 어떠한 값을 수신하는 단계를 더 포함한다. 상기 맵핑 단계는 상기 맵핑에서의 문서와 값 도메인 파티션(value domain partition) 사이의 관련성을 더 포함한다. 문서들의 집합의 서브셋을 결정하는 단계는, 상기 계산된 수에 맵핑되는 문서와 연관된 값 도메인 파티션이 추가적인 값 도메인 파티션과 정합하는지의 여부를 검사하는 단계를 더 포함하고, 상기 추가적인 값 도메인 파티션은 상기 수신된 값을 포함한다. 보안성은 상기 맵핑에서 값이 아닌 값 도메인 파티션만을 배치함으로써 제공된다. 상기 값 도메인 파티션은 오직 가능한 값들의 약한 표시(weak indication)를 제시하지만, 보다 효율적인 검색을 가능하게 한다. 값 도메인 파티션은 예를 들어, 'a-e', 'a,b,c,d,e', '1-5', '1,2,3,4,5', 'Europe', 또는 "Netherlands, Germany, France, ...' 일 수 있다.
문서들의 집합의 서브셋을 결정하는 단계는, 어느 문서들이 문서 구조 정의들의 서브셋 중 어느 하나에 따르는지 문서 구조 정의로부터 문서들로의 맵핑에서 룩업하는 단계를 포함할 수 있다. 유리하게는, 문서 구조 정의로부터 문서들로 맵핑하는 단계는, 각각의 문서 구조 정의에 대해 맵핑을 생성하거나 값 도메인 파티션과 문서를 연관시키는 것이 필요하지 않기 때문에 수동적으로 쉽게 생성될 수 있다(예로써, 텍스트 에디터를 사용함).
문서 구조 정의들의 상기 집합의 서브셋을 결정하는 단계는 추가적인 해시 함수를 상기 특정 브랜치의 적어도 일부에 적용함으로써 상기 특정 브랜치의 적어도 일부에 대한 추가적인 수를 계산하는 단계와, 어느 문서 구조 정의들이 수로부터 문서 구조 정의들로 맵핑하는 단계에서 상기 계산된 수로 맵핑되는지를 룩업하는 단계를 포함한다. 해시 맵핑(예를 들어, 해시 테이블의 형태로)은 문서 구조 정의들을 더이상 해독할 필요가 없기 때문에 문서 구조 정의들의 집합의 서브셋을 결정하는 단계를 보다 효율적으로 만든다. 또한, 해시 맵핑은 어느 브랜치가 어느 문서 구조 정의에 있는지를 드러내지 않기 때문에 해시 맵핑은 보안성을 제공한다.
문서 구조 정의들의 상기 집합의 서브셋을 결정하는 단계는 문서 구조 정의들의 집합에서 각각의 암호화된 문서 구조 정의를 해독하도록 시도하는 단계와, 상기 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에 존재하도록 상기 문서 구조 정의가 허용하는지의 여부를 각각의 문서 구조 정의에 대해 결정하도록 시도하는 단계를 포함할 수 있다. 따라서, 인덱싱의 양은 예를 들어, 검색에 있어서 존재하는 XML DTD 또는 스키마 파일들을 사용함으로써 제한될 수 있다. XML DTD 또는 스키마 파일들은 예를 들어 실제 검색이 수행되기 전에 메모리에서의 트리에 의해 표현될 수 있다. 상기 특정 브랜치가 XML DTD에 따르는 XML 문서에 존재하도록 XML DTD가 허용하는 지의 여부를 결정하도록 트리가 트래버싱(traverse)될 수 있다.
본 발명의 또 다른 측면에 있어서, 전자 회로를 포함하는 문서들의 집합에서 검색을 위한 전자 장치에 있어서, 상기 전자 회로는 기능적으로, 특정 브랜치를 수신하는 입력 수신기와, 문서 구조 정의들의 집합의 서브셋을 결정하는 정의 서브셋 결정기로서, 상기 서브셋에서 각각의 문서 구조 정의는 상기 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에 존재하도록 허용하는, 상기 정의 서브셋 결정기와, 문서들의 집합의 서브셋을 결정하는 문서 서브셋 결정기로서, 문서들의 상기 서브셋은 상기 서브셋내의 상기 문서 구조 정의들 중 어느 하나에 따르는 문서들의 집합의 모든 문서들을 포함하는, 상기 문서 서브셋 결정기와, 각각의 문서에서 상기 특정 브랜치의 적어도 일부에 대해 검색하는 단계를 위한 검색기를 포함한다.
본 발명에 따라서, 제 2 목적은, 문서들의 집합을 인덱싱하는 방법이, 문서 구조 정의들의 집합 중 각각의 문서 구조 정의에 대해 빈 인덱스를 생성하는 단계로서, 상기 인덱스는 문서들의 집합 중 하나의 문서에 정수들의 범위로부터의 하나의 정수를 맵핑하는, 상기 인덱스 생성 단계와, 브랜치의 적어도 일부에 해시 함수를 적용함으로써 문서들의 집합 중 하나의 문서에 브랜치의 적어도 일부에 대한 수를 계산하는 단계로서, 상기 수는 정수들의 상기 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 수를 가능한 발생시키는, 상기 계산 단계와, 상기 문서가 따르는 문서 구조 정의에 대한 인덱스에 엔트리를 생성하는 단계로서, 상기 엔트리는 상기 계산된 수로부터 상기 브랜치의 적어도 일부를 포함하는 상기 문서로 맵핑하는 단계를 포함하는, 상기 엔트리 생성 단계를 포함한다는 것이 이해될 것이다. 이것은 보안성을 제공할 뿐만 아니라(상기 인덱스는 어느 브랜치가 어느 문서에 있는지 나타내지 않고 있다), 효율적인 문서 룩업을 가능하게 한다(후보 문서 구조 정의에 따르는 각각의 문서를 회수/판독할 필요가 없다).
문서들의 집합을 인덱싱하는 단계의 대안적인 방법에 있어서, 모든 문서 구조 정의들로부터 문서들로 하나의 인덱스를 맵핑하는 단계는 하나의 문서 구조 정의들로부터 문서들로 다중 인덱스들을 맵핑하는 단계 대신에 생성될 수 있다. 이러한 하나의 인덱스는 예를 들어 보안성 및 효율성 양자를 제공할 수 있는 해시 테이블일 수 있다. 그러한 테이블에서 사용되는 정수들의 대안적인 범위는 정수들의 상기 범위 또는 정수들의 상기 추가적인 범위보다 더 클 가능성이 높을 것이다.
본 발명의 문서들의 집합을 인덱싱하는 방법의 실시예에 있어서, 상기 인덱스에서 엔트리를 생성하는 단계는 맵핑 단계에서 값 도메인 파티션과 상기 문서를 연관시키는 단계를 포함하고, 상기 값 도메인 파티션은 상기 브랜치와 연관된 값을 포함한다.
상기 방법은, 정수들의 추가적인 범위로부터 각각의 정수가 문서 구조 정의로 맵핑될 수 있는 빈 추가적인 인덱스를 생성하는 단계를 포함하는 추가적인 단계와, 추가적인 해시 함수를 상기 브랜치에 적용함으로써 상기 브랜치의 적어도 일부에 대한 추가적인 수를 계산하는 추가적인 단계로서, 상기 추가적인 수는 정수들의 추가적인 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 추가적인 수를 발생시키는 것이 가능한, 상기 추가적인 단계, 및 상기 추가적인 인덱스에 엔트리를 생성하는 추가적인 단계로서, 상기 추가적인 인덱스에서 상기 엔트리가 상기 계산된 추가적인 수로부터 상기 문서가 따르는 상기 문서 구조 정의로 맵핑하는 단계를 포함하는, 상기 추가적인 단계를 포함할 수 있다.
본 발명의 또 다른 측면에 있어서, 문서들의 집합을 인덱싱하는 전자 장치는, 문서 구조 정의들의 집합 중 각각의 문서 구조 정의에 대한 빈 인덱스를 생성하는 인덱스 생성기로서, 상기 인덱스는 정수들의 범위로부터의 하나의 정수를 문서들의 상기 집합 중 하나의 문서로 맵핑하는, 상기 인덱스 생성기와, 해시 함수를 브랜치의 적어도 일부에 적용함으로써 문서들의 상기 집합 중 하나의 문서에서 상기 브랜치의 적어도 일부에 대한 수를 계산하는 해시 계산기로서, 상기 수는 정수들의 상기 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 수를 발생시키는 것이 가능한, 상기 해시 계산기와, 상기 문서가 따르는 문서 구조 정의에 대한 인덱스에서 엔트리를 생성하는 인덱스 필러(index filler)로서, 상기 엔트리는 상기 계산된 수로부터 상기 브랜치의 적어도 일부를 포함하는 상기 문서로 맵핑하는 단계를 포함하는, 상기 인덱스 필러를 기능적으로 포함하는 전자 회로를 포함한다.
본 발명의 상기 전자 장치 및 방법의 이러한 측면들과 다른 측면들은 다음에 따르는 도면을 참조로 하여 추가로 설명되고 기술될 것이다.
도 1은 본 발명에 따른 문서들의 집합을 인덱싱하는 방법을 도시한 흐름도.
도 2는 제 1 문서 예 및 대응하는 제 1 DTD 예를 도시한 도면.
도 3은 상기 제 1 DTD 예로부터 추출된 경로들을 포함하는 테이블.
도 4는 인덱스의 예를 도시한 도면.
도 5는 상기 제 1 문서 예의 값 도메인 파티션들을 포함하는 테이블.
도 6은 추가적인 인덱스의 예를 도시한 도면.
도 7은 제 2 DTD 예를 도시한 도면.
도 8은 본 발명에 따른 문서들의 집합을 인덱싱하는 단계를 위한 전자 장치를 도시한 블록도.
도 9는 본 발명에 따른 문서들의 집합에서 검색하는 단계의 방법을 도시한 흐름도.
도 10은 본 발명에 따른 문서들의 집합에서 검색하는 단계를 위한 전자 장치를 도시한 블록도.
도면 내의 대응하는 요소들은 동일한 참조 부호로 식별된다.
본 발명에 따르는 문서들의 집합을 인덱싱하는 단계의 방법이 도 1에 도시되어 있다. 상기 방법은 적어도 3개의 단계들을 포함한다. 단계(51)는 문서 구조 정의들의 집합 중 각각의 문서 구조 정의에 대해 빈 인덱스를 생성하는 단계를 포함하고, 상기 인덱스는 정수들의 범위로부터 문서들의 집합 중 하나의 문서로 맵핑한다. 단계(53)는 해시 함수를 브랜치의 적어도 일부에 적용함으로써 문서들의 집합 중 하나의 문서에서 브랜치의 적어도 일부에 대한 수를 계산하는 단계를 포함하며, 상기 수는 정수들의 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 수를 가능한 생성한다. 마지막으로, 단계(55)는 문서가 따르는 문서 구조 정의에 대해 인덱스에서 엔트리를 생성하는 단계를 포함하며, 상기 엔트리는 상기 계산된 수로부터 상기 브랜치의 적어도 일부를 포함하는 상기 문서로 맵핑하는 단계를 포함한다.
XML DTD 또는 XML 스키마와 같은 하나의 문서 구조 정의에 따르는 문서들, 예를 들어 XML 문서들은 서로 다른 문서들을 구별하기 위해 가능한 서로 다른 요소 컨텐츠들 및/또는 속성 값들 외에 유사한 구조를 소유한다. 예를 들어, 도 2에 도시된 따르는 문서 dtd1의 doc1 단순화를 위해 limit=1000로 표현되는 제한 속성의 값 1000을 갖는다. 그의 요소들 number, name, address, 및 amount는 컨텐츠들 123456789, "Alice", "Twente, Enschede, Netherlands", 및 100.0을 각각 갖는다.
XML DTD 또는 XML 스키마는 요소들, 속성들 등등이 문서들에서 승인되는 것과 같은 그것의 따르는 XML 문서들의 합법적인 빌딩 블록들을 정의한다. 이러한 구성요소들은 문서의 어떠한 부분을 어드레싱하는 트리의 각각의 경로를 통해 문서들의 컨텐츠들의 기초를 이루는 계층적 트리 구조를 구성한다. 경로 및 경로의 개념들은 다음에 따라 정의된다.
정의 1. 경로 p는 p=(n1/n2/.../nk)로 표시되는 노드들 n1, n2, ..., nk의 시퀀스이고, 여기서 임의의 2개의 연속적인 노드들 ni 및 ni +1(1≤i≤k-1, k≥1)에 대 해 그들 사이에 에지가 존재한다.
|p|로 표시되는 경로 p의 길이는 상기 경로에서 에지들의 전체 수 이다. 즉, |p=(n1/n2/.../nk)|=k-1.
도 3은 도 2에서의 예시적인 DTD dtd1으로부터 추출된 다양한 길이들의 경로들을 열거하고 있다. 여기서, 점선 아래 컨텐츠 노드들은 그것들이 dtd1에서 보이지 않기때문에 고려사항에서 제외된다.
문서들의 집합을 인덱싱하는 단계는 각각의 dtdi에 대한 문서 해시 테이블 DOCHashTabledtdi을 구성하는 단계를 포함할 수 있다. 도 4에 있어서, dtdi로부터의 각각의 쌍 c=(cname,cval)(여기서, cname은 요소/속성을 표시하고, cval는 대응하는 요소 컨텐츠/속성 값을 표시한다)는 해시 테이블 DOCHashTabledtdi로 인코딩된다(대안적으로, cname은 cval 없이 해시 테이블 DOCHashTabledtdi로 인코딩된다). 각각의 쌍의 해시 어드레스는 함수 HashFunc(p)(알고리즘 1)를 통해 계산되지만, 해시 테이블 사이즈 SizeDTDHashTable|p| 보다는 SizeDOCHashTabledtd1를 사용한다. 동일한 해시 함수는 문서 구조 정의들에 대한 해시 테이블들을 생성하기 위해 사용될 수 있다. 이러한 예에 있어서, 경로 p는 p=(cname) 및 |p|=0인 하나의 노드만을 항상 포함한다. 예를 들어, s=4라고 하면 해시 테이블 SizeDOCHashTabledtd1는 4와 동일하다(즉, SizeDOCHashTabledtd1=4). 이것은 다음을 결과로 나타낸다. ChopName("limit")"limi", Base26ValueOf("limi") = 11*263 + 8*262 + 12*26 + 8 = 199064 및 HashFunc(limit) = 199064*100 mod 4 = 0.
알고리즘 1 해시 함수 HashFunc(p)
입력: 경로 p = (n1/n2/.../nk), 노드 이름들에 대한 고정된 사이즈 s
해시 테이블 사이즈 SizeDTDHashTable|p|;
출력: p의 해시 값
a) 각각의 노드 ni(1≤i≤k)에 대해, 그것의 이름을 균일하게 s 문자 스트링으로 자른다.
ChopName(ni, s) = xni ,1xni ,2...xni ,s, 여기서 xni ,1,xni ,2, ... , xni ,s는 노드 n의 이름 스트링에서의 문자들이다.
b) 각각의 s 문자 노드 이름 xni ,1xni ,2...xni ,s에 대해, 그것을 10진수로 변환한다.
Base26Valueof(xni ,1xni ,2...xni ,s) = offset(xni ,1)*26s-1 + offset(xni,2)*26s-2 + ... + offset(xni ,s)*260 = Vni, 여기서 offset(xnij)(1≤j≤s)는 26개 문자들 사이의 문자 xnij의 위치를 리턴한다.
c) p=(n1/n2/.../nk)의 해시 값을 계산한다.
HashFunc(n1/n2 ... /nk) = (Vn1*10k-1 + Vn2*10k-2 + ... + Vnk*100) mod SizeDTDHashTable|p|
알고리즘 1은 경로 p = (n1/n2/.../nk)에 대한 해시 값을 계산하는 절차들을 상세히 설명하고 있다. 그것은 다음의 3 단계들로 진행된다.
첫 번째로, 서로 다른 길이들의 것일 수 있는 경로 $p$에서의 노드 이름들이 함수 ChopName(알고리즘 1, 단계(a))를 통해 입력 파라미터로서 사용자들에 의해 제시되는 동일한 사이즈로 균일하게 나눠진다. 예를 들어, s = 4라고 하면, ChopName("creditCard", 4) = "cred", ChopName("payInfo", 4) = "payI", ChopName("Name", 4) = "name" 이다.
두 번째로, 단계(a) 후에 고정된 사이즈의 것인 나눠진 노드 이름 스트링들은 추가적으로 함수 Base26ValueOf(알고리즘 1, 단계(b))를 통해 10진법의 정수들로 변환된다. 예 1은 노드 이름 스트링의 사이즈가 4에 세팅될 때 그것이 작동하는 방법을 나타내고 있다.
예 1
케이스 인센시티브(case insensitive)인 4개 문자 노드 이름 x1x2x3x4이 26개의 기본 정수를 표현할 때, 문자 'a'는 디지털 값 0을 표현하고, 문자 'b'는 디지털 값 1을 표현하고, 문자 'c'는 디지털 값 2를 표현하고, 문자 'd'는 디지털 값 3 을 표현하는 식으로 문자 'z'가 디지털 값 25를 표현할 때까지 계속된다. 제시된 하나의 문자 함수 "offset"는 그러한 디지털 값을 리턴한다. 따라서, 4개의 문자 노드 이름 x1x2x3x4은 다음의 공식을 사용하여 10진법의 정수로 변환될 수 있다.
Base26ValueOf(x1x2x3x4) = offset(x1)*263 + offset(x2)*262 + offset(x3)*261 + offset(x4)*260
x1x2x3x4 = "name"라 가정하면, 'n', 'a', 'm', 및 'e'의 디지털 값들은 각각 offset('n') = 13, offset('a') = 0, offset('m') = 12, 및 offset('e') = 4 이다. Base26ValueOf("name") = 13*263 + 0*262 + 12*261 + 4*260 = 13*17576 + 0 + 312 + 4 = 228802 이다. 유사한 방식으로, Base26ValueOf("cred") = 2*263 + 17*262 + 4*261 + 3*260 = 2*17576 + 17*676 * 104 + 3 = 35152 + 11492 + 104 + 3 = 46751 이다. Base26ValueOf의 일반적인 계산은 다음과 같다.
Base26ValueOf(x1x2 ... xs) = offset(x1)*26s-1 + offset(x2)*26s-2 + ... + offset(xs)*260.
마지막으로, 해시 함수 HashFunc는 각각의 노드 ni에 대한 함수 Base26ValueOf로부터 리턴하는 값 Vni에 기초하여 경로 p = (n1/n2/ ... /nk)의 해시 값을 얻는다(알고리즘 1, 단계(c)).
HashFunc(n1/n2/ ... /nk) = (Vn1*10k-1 + Vn2*10k-2 + ... + Vnk*100) mod SizeDTDHashTablek -1.
예 2
제시된 경로 p = (creditCard/name), 여기서 k = 2 및 |p| = 1 이고, s = 4라고 하면, SizeDTDHashTable|p| = SizeDTDHashTable1 = 8 이다.
단계 1: ChopName("creditCard", 4) = "cred", ChopName("name", 4) = "name".
단계 2: Base26ValueOf("name") = 228802, Base26ValueOf("cred") = 46751.
단계 3: HashFunc(creditCard/name) = (Base26ValueOf("cred")*101 + Base26ValueOf("name")*10^0) mod SizeDTDHashTable1 = (46751*10 + 228802) mod 8 = 0.
인덱스에서 엔트리를 생성하는 단계는 맵핑에서 상기 문서를 값 도메인 파티션으로 연관시키는 단계를 포함할 수 있고, 상기 값 도메인 파티션은 상기 브랜치와 연관된 값을 포함한다. 상기 문서의 브랜치(예로써, cname)의 적어도 일부에 대한 수를 계산하고 그 수에 상기 문서를 맵핑한 후에, 상기 문서는 값 도메인 파티션과 연관될 수 있다. 예를 들어, 상기 값 도메인 파티션은 상기 문서 식별자로 동일한 버킷(bucket)으로 넣어지며, 도 4를 참조하자. 이러한 예에 있어서, 도 4 및 도 5를 참조하면, 상기 경로의 노드 일부만이 해싱된다. 상기 버킷으로 넣어지기 위한 엔트리는, "2002년 6월, 미국, 위스콘신, 페이지 216-227, 데이터의 관리, In Proc. the ACM SIGMOD Intl. Conf. 데이터베이스 서비스 제공자 모델에서 암호화된 데이터에 대한 SQL 실행, H. Hacigumus, B. Lyer, C. Li, 및 S. Mehrotra"에 의해 개발된 기술을 사용하여 cname 및 cval에 기초하여 계산될 수 있다. 기본적인 아이디어는 우선적으로 노드 cname의 도메인을 완료 및 해체 파티션들의 세트로 나누는 것이다. 즉, 함께 취해진 이러한 파티션들은 전체 도메인을 커버하고, 어떠한 2개의 파티션들은 겹치지 않는다. 각각의 파티션에는 고유한 정수 식별자가 할당된다. 그에 따라, 요소/속성 노드 cname의 값 cval은 그것이 떨어지는 파티션에 대응하는 정수로 맵핑된다. 예를 들어, 속성 limit의 도메인은 식별자 0, 1, 2의 [0, 500], (500, 1000], (1000, ∞)로 각각 분할될 수 있다. 따라서, limit 값 1000은 정수 1에 맵핑되고, DOCHashTabledtd1의 제 1 버킷에 저장되므로, HashFunc(limit) = 0 이다. 예시적인 문서에서의 다른 쌍들에 대한 해시 값들은 도 5에 도시되는 것과 동일한 방식으로 계산된다.
도메인의 파티션이 데이터의 의미 및 관련된 애플리케이션들에 기초하여 이뤄질 수 있다는 것에 주의하자. 예를 들어, 요소 name의 도메인은 알파벳 순서에 따라 분류될 수 있다. 요소 address의 도메인은 위치하고 있는 province 또는 country에 따라 분할될 수 있다. Order preserving 제약은, cname의 도메인에서 어떠한 2개의 값들 cval1 및 cval2에 대해 (cval≤cval2)이라면 MapFunc(cval)≤MapFunc(cval2)인 경우를 의미하는 그러한 맵핑 "MapFunc:domain(cname) -> Integer"에 대해 강요될 수 있다.
도 5에 표시된 바와 같이, number, name, address, 및 amount에 대한 맵핑 함수들이 식별자들을 리턴한다고 가정하자. 도 4는 예시적인 XML 문서 doc1에 대한 결과적인 인코딩, 즉 DOCHashTabledtd1 을 도표로 나타내고 있다. 하나의 DTD에 따르는 모든 문서들은 동일한 문서 해시 테이블을 공유한다. 충돌 쌍들은 충돌 해시 어드레스에서 버킷 밑에 함께 링크된다.
문서들의 집합을 인덱싱하는 단계의 방법은 추가적인 단계들(57, 59, 61)을 포함한다. 이러한 단계들은 단계들(51, 53, 55) 이전, 이후, 또는 병행하여 수행될 수 있다. 단계(57)는 정수들의 추가적인 범위로부터 각각의 정수가 문서 구조 정의에 맵핑될 수 있는 추가적인 비어있는 인덱스를 생성하는 단계를 포함한다. 단계(59)는 추가적인 해시 함수를 브랜치에 적용함으로써 브랜치의 적어도 일부에 대해 추가적인 수를 계산하는 단계를 포함하고, 상기 추가적인 수는 정수들의 추가적인 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 추가적인 수를 가능한 발생시킨다. 단계(61)는 추가적인 인덱스에서 엔트리를 생성하는 단계를 포함하고, 상기 추가적인 인덱스에서의 엔트리는 상기 계산된 추가적인 수로부터 상기 문서가 따르는 상기 문서 구조 정의로 맵핑하는 단계를 포함한다.
양호하게는, 서로 다른 길이들의 경로들은 서로 다른 인덱스들로 해싱될 수 있다. 예를 들어, 서로 다른 길이들의 경로들은 DTDHashTable0, DTDHashTable1, DTDHashTable2, ... , DTDHashTablemax _ pathLen 이라 불리는 서로 다른 해시 테이블들 각각으로 해싱될 수 있고, 도 6을 참조하자. 비록 어느 DTD로부터 그것이 온다고 해도, 길이 l의 모든 경로들(여기서, 1≤l≤max_pathLen)은 그의 경로들이 상기 버킷으로 해싱된 DTD들의 세트를 표시하는 각각의 버킷을 통해 하나의 단일한 해시 테이블 DTDHashTablel 을 공유할 것이다. dtd1 으로부터 추출된 경로 p가 존재한다고 가정하면, 해시 함수 HashFunc(p)(알고리즘 1)는 그것의 해시 값, 즉 해시 테이블 DTDHashTable|p| 에서의 버킷 어드레스를 계산한다. 대응하는 버킷 아래에, dtd1의 식별자가 링크되고 p가 위치한 DTD를 나타낸다. 해시 기초 인코딩 방법에 대한 보다 완전한 개요를 제공하기 위해, 또 다른 DTD 예 dtd2가 도 7에 도시되어 있다. 도 6에 있어서, 각각의 버킷들 내에 마크된 그들의 대응하는 DTD들을 갖는 dtd1 및 dtd2로부터의 모든 경로들은 동일한 해시 함수를 사용하여 해싱된다. 당연히, 동일한 인덱스에 서로 다른 길이의 경로들을 해싱하는 것 또한 가능하다.
본 발명에 따른 문서들의 집합을 인덱싱하는 단계를 위한 전자 장치(71)는 전자 회로(73)를 포함하며, 도 8을 참조하자. 전자 회로(73)는 기능적으로 인덱스 생성기(75), 해시 계산기(77), 및 인덱스 필러(79)를 포함한다. 인덱스 생성기(75) 는 문서 구조 정의들의 집합 중 각각의 문서 구조 정의에 대해 빈 인덱스를 생성하도록 동작가능하고, 상기 인덱스는 정수들의 범위로부터 문서들의 집합 중 하나의 문서로 맵핑한다. 해시 계산기(77)는 해시 함수를 브랜치의 적어도 일부에 적용함으로써 문서들의 집합 중 하나의 문서에 브랜치의 적어도 일부에 대한 수를 계산하도록 동작가능하고, 상기 수는 정수들의 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 수를 가능한 발생시킨다. 인덱스 필러(79)는 상기 문서가 따르는 문서 구조 정의에 대해 인덱스에서 엔트리를 생성하도록 동작가능하고, 상기 엔트리는 상기 계산된 수로부터 브랜치의 적어도 일부를 포함하는 상기 문서로 맵핑하는 단계를 포함한다.
예를 들어, 전자 장치(71)는 컴퓨터 또는 소비자용 전자 장치일 수 있다. 예를 들어, 논리 회로는 컴퓨터 프로그램들을 운영하기 위해 동작가능한 일반적인 목적의 CPU(예로써, AMD 애슬론 또는 인텔 팬티엄 CPU)일 수 있다. 양호하게는, 인덱스 생성기(75), 해시 계산기(77), 및 인덱스 필러(79)는 컴퓨터 프로그램의 기능적 구성요소들이다. 전자 장치(71)는 예를 들어 전자 장치(71)를 구성하고/하거나 인덱싱 프로세스를 개시하기 위해 키보드와 같은 입력 장치(45)에 연결될 수 있다. 전자 장치(71)는 예를 들어 전자 장치(71)를 구성하고/하거나 수동적으로 인덱스를 증명하기 위해 CRT 또는 LCD 모니터와 같은 출력 장치(47)에 연결될 수 있다. 전자 장치(71)는 저장 수단(43)을 포함할 수 있다. 저장 수단(43)은 예를 들어 하나 또는 그 이상의 하드 디스크들 및/또는 하나 또는 그 이상의 광 디스크들을 포함할 수 있다. 저장 수단(43)은 예를 들어 생성된 인덱스, 문서 구조 정의들(예로써, XML DTD들 및/또는 XML 스키마들) 및 문서들(예로써, XML 문서들)을 포함할 수 있다. 전자 장치(71)는 생성된 인덱스, 하나 또는 그 이상의 문서 구조 정의들 및/또는 하나 또는 그 이상의 문서들을 저장하는 저장 수단을 갖는 하나 또는 그 이상의 전자 장치들을 포함하는 컴퓨터 네트워크에 접속될 수 있다.
본 발명에 따른 문서들의 집합에서의 검색 방법이 도 9에 도시되어 있다. 상기 방법은 적어도 4개의 단계들을 포함한다. 단계(1)는 특정 브랜치를 수신하는 단계를 포함한다. 단계(3)는 문서 구조 정의들의 집합의 서브셋을 결정하는 단계를 포함하고, 서브셋에서 각각의 문서 구조 정의는 특정 브랜치가 문서 구조 정의에 따르는 문서에서 존재하도록 허용한다. 단계(5)는 문서들의 집합의 서브셋을 결정하는 단계를 포함하고, 상기 문서들의 서브셋은 상기 서브셋에서 문서 구조 정의들 중 어떠한 하나에 따르는 문서들의 집합의 모든 문서들을 포함한다. 마지막으로, 단계(7)는 각각의 문서에서 특정 브랜치의 적어도 일부에 대해 검색하는 단계를 포함한다. 예를 들어, 특정 브랜치는 사용자에 의해 키보드상으로 입력되고 경로로 변경된 XPath 표현일 수 있다.
XPath 언어는 XML 문서의 어드레싱 부분들에 대한 W3C 제안 기준이다. 그것은 요소들/속성들에 대응하는 노드들의 트리로써 XML 문서들을 처리하고, 이 트리 내에 노드들을 규정하고 배치하도록 표현적인 방식을 제공한다.
XPath 표현들은 XML 데이터 트리에서 노드들의 시퀀스로 구성되는 경로들에 정합될 수 있는 구조적 패턴들을 설명한다. 그러한 경로들은 데이터 트리의 루트로부터의 절대적 경로들이거나, 일부 공지된 콘텍스트 노드들을 갖는 상대적인 하나 의 시작일 수 있다. 노드들 사이의 계층적 관계들은 부모 자식 연산자("/") 및 조상 후손 연산자("//")를 사용하는 XPath 표현들에 규정되어 있다. 예를 들어, XPath 표현 "/payInfo/creditCard/@limit" 은 상기 문서에서 payInfo 루트 요소의 자식 요소인 creditCard 의 limit 속성을 어드레스한다. 상대적인 경로 표현 "//creditCard/name" 에서 name 요소는 그것의 부모 creditCard 요소에 대해 자식이다. 표현 "/payInfo//name" 는 payInfo 루트 요소의 name 후손 요소를 어드레스한다.
또한, XPath 는 문서 데이터 트리에서의 콘텍스트 노드에 관련한 어떠한 요소 또는 속성 노드에 정합할 수 있는 와일드카드 연산자("*" 또는 "@*")의 사용을 허용한다. 부가로, 꺾쇠 괄호들로 쌓인 술어들은 XPath 표현들에서 노드들의 선택된 세트를 추가로 구별하기 위해 적용될 수 있다. 예를 들어, "/payInfo/credit[@limit<1000]/name" 는 creditCard의 속성 limit 가 100보다 작은 값을 갖는 경우 XML 문서의 name 요소를 선택한다. ("|") 및 ("and")와 같은 연산자들은 또한 경로들의 구성 노드들을 선택하기 위해 적용될 수 있다. 예를 들어, "/payInfo/(creditCard|cash)/name" 표현은 creditCard 또는 cash 요소 둘 중 하나이고, 차례로 루트 요소 payInfo 의 자식인 부모를 갖는 모든 name 요소를 선택한다. 반대로, "/payInfo/creditCard[@limit and @dueDate]" 는 limit 속성 및 dueDate 속성 양자를 가져야 하는 루트 요소 payInfo 의 모든 creditCard 자식을 표시한다.
데이터 트리의 부분들을 배치하기 위해 사용되는 XPath expression e 는 다 음에 따르는 3개의 단계들을 통해 paths 의 세트에 정합될 필요가 있다.
단계 a
XPath 표현 e 를 "//" 연산자의 포인트에서 몇몇으로 분해한다. 오프 라인 조회 준비 동안 인코딩될 경로들이 연속적인 노드들 사이에서 오직 부모 자식 관계들("/")만 갖기 때문에(도 3에 도시된 바와 같이), XPath 표현은 "//" 연산자가 위치하는 포인트들로부터 첫번째를 제외한 각각의 노드가 "/"에 의해서만 접두사가 붙여지는 몇몇으로 나눠질 필요가 있다. 따라서, 결과적인 XPath 표현들은 모든 2개의 연속적인 노드들 사이에 어떠한 조상 후손 관계들("//")을 포함하지 않는다.
예 3
An XPath expression e = "/payInfo[amount>100]//name" 는 2개의 보다 짧은 Xpath expression e1' = "/payInfo[amount>100]" 및 e2' = "//name" 로 분해될 수 있다. 의미적으로 동일한 분해를 표시하도록 e ⇒1e1' Λ e2' 로 사용한다.
보다 쉬운 설명을 위해, XPath 표현들은 e'와 같은 주요 심볼을 사용하는 단계(a) 후에 얻어진다.
단계 b
각각의 XPath 표현 e' 에서의 술어 제약들을 오직 계층적 관계들에서만 단순화한다.
DTD 인코딩은 경로 노드들 상에 값 제약들을 경감시키고, 후보 DTD 필터링을 용이하도록 그들의 계층적 관계들에 대해서만 집중하기 때문에, XPath 술어 조건들 에 규정된 "[amount>100]" 및 "[@limit=1000]"과 같은 노드들 상의 값 제약들은 오직 그들의 고유한 부모 자식 또는 요소 속성 관계들만 억제하고 유지할 수 있다.
예 4
e1' = "/payInfo[amount>100]" 에서 술어 제약은 양이 payInfo 의 자식 요소이고, 그의 값 제약이 payInfo 및 amount 사이에 부모 자식 관계를 증대시킴으로써 제거되고, 단계(2) ⇒2 가 단순 변환 즉, e1' ⇒2e1" 를 표시하기 위해 사용된 후에 보다 완화된 XPath 표현 e1" = "/payInfo/amount"를 결과로 나타낸다.
예 5
"/payInfo[amount>100]/creditCard"와 같은 XPath 표현의 중간에 놓인 술어는 "/payInfo/amount" 및 "/payInfo/creditCard" 인 단계(b) 후에 발생되는 2개의 XPath 표현들을 이끌어 낸다. 즉, "/payInfo[amount>100]/creditCard" ⇒2 "/payInfo/amount" Λ "/payInfo/creditCard".
e" 는 단계(b) 후에 리턴된 XPath 표현을 표시한다.
단계 c
표현을 "Λ" 또는 "∨"과 논리적으로 접속되는 몇몇으로 재기록함으로써 각각의 XPath 표현 e" 에서 논리 "|" 및 "and" 연산자들을 제거한다.
정의 1에서 경로의 개념을 정합시키기 위해, 논리 연산자들 "|" 및 "and"를 포함하는 단계(b) 후에 모든 XPath 표현은 "Λ" 또는 "∨"를 통해 논리적으로 접속되는 보다 짧은 XPath 표현들의 세트에 따라 대체된다.
예 6
XPath 표현 e" = "/payInfo/(creditCard|cash)/name" 는 e" ⇒3e1"' V e2"'로 표시되는 2개의 분리적인 표현들 e1"' = "/payInfo/creditCard/name" 및 e2"' = "/payInfo/cash/name" 로써 보여질 수 있다.
유사하게는, 표현 "/payInfo/creditCard[name and dueDate]" 는 "/payInfo/creditCard/name" Λ "/payInfo/creditCard/dueDate" 로 동일하게 변한될 수 있다.
상기 3개의 단계들을 진행한 후에, 최초 XPath 표현은 단순한 XPath 표현들의 세트로 변환되고, 그 각각은 모든 2개의 연속적인 노드들 사이에 조상 후손 관계를 포함하지 않고, 노드들 상에 값 제약들을 포함하지 않으며, 논리 연산자들 ("|") 및 ("and")를 포함하지 않는다.
예 7
"/payInfo[amount>100]/(creditCard|cash)/name"와 같은 술어 제약 및 연산자 ("|")를 포함하는 최초의 XPath 표현으로부터, 3개의 단순한 XPath 표현 "//payInfo/amount" Λ ("/payInfo/creditCard/name" ∨ "/payInfo/cash/name") 이 얻어질 수 있다.
XPath 질의(query) 표현으로부터 발생된 단순한 XPath 표현들에 기초하여, 제시된 질의에 대한 후보 DTD들 및 문서들의 컨셉들은 정의될 수 있다. XML DTD는 질의로부터 얻어진 모든 단순한 XPath 표현에 대해 이러한 단순한 XPath 표현을 정 합시키는 DTD에서 경로 p가 가능한 존재하는 경우, 질의에 대해 후보 DTD라 불린다. 유사한 방식에 있어서, XML 문서는 다음과 같은 경우 질의에 대한 후보 문서이도록 규정될 수 있다. 1) 그것의 DTD가 후보 DTD 이고, 2) 그것이 XPath 질의 표현들에서 노드들 상에 강제되는 모든 술어 제약들을 가능한 만족 시키는 경우.
문서들의 집합에서의 검색 방법은 문서들의 서브셋에서 각각의 암호화된 문서를 해독하도록 시도하는 단계(9)를 더 포함할 수 있다. 후보 DTD들은 예를 들어 해독 기술들에 기초한 패스워드 또는 공개 키 기반구조를 사용하여 해독될 수 있다.
문서 구조 정의들의 집합의 서브셋을 결정하는 단계(3)는 추가적인 해시 함수를 특정 브랜치의 적어도 일부에 적용함으로써 특정 브랜치의 적어도 일부에 대한 추가적인 수를 계산하는 단계(11)와, 어느 문서 구조 정의들이 수로부터 문서 구조 정의들로 맵핑하는 단계에서 상기 계산된 수로 맵핑되는지를 룩업하는 단계(13)를 포함할 수 있다. 예를 들어, 질의에 대한 비후보 DTD들을 여과시키기 위해, 질의에서 모든 XPath들에 대한 해시 값들은 동일한 해시 함수를 사용하여 계산될 수 있고, 그에 따라 예를 들어 도 6을 참조로 하면 DTD 해시 테이블들에서 대응하는 버킷들은 요청된 경로들을 가능한 포함하는 DTD들의 서브셋을 획득하기 위해 검사될 수 있다. 이러한 DTD들은 질의에 대해 고려될 후보 DTD들이다.
제시된 질의에 대한 후보 DTD 세트를 미리 선택한 후에, 후보 문서들은 이제 각각의 후보 DTD에 대해 여과될 수 있다. 이러한 단계에서, 경로 노드들 상의 [cname θ cval]의 형태에서 다양한 값 제약들이 고려된다. 명확하게는, 후보 문서는 XPath 질의 표현 내 규정된 값 제약들 중 어떠한 것도 위반하지 않아야 한다.
예를 들어, 제약 [cname θ cval]을 취한다면, 노드 이름 cname(즉, 오직 하나의 노드만을 포함하는 경로)은 해시 함수 HashFunc(cname)를 통해 DOCHashTabledtdi 로 우선 해싱된다. 그 사이에, cval의 범위 식별자는 또한 순서 유지 함수 MapFunc(cval)를사용하여 계산된다. 마지막으로, DOCHashTabledtdi 에서 버킷 어드레스 HashFunc(cname)에 링크된 각각의 엔트리 값 v 는 다음과 같은 경우에 비교된다. if ∃ v(v θ MapFunc(cval)), 제약 [cname θ cval]를 가능한 유지한다. v가 상주하는 연관된 문서는 그에 따라 후보 문서로써 리턴된다.
예 8
질의가 creditCard 요소 상의 제약 [@limit>2000]를 강제하는 XPath 표현 "/payInfo/creditCard[@limit>2000]/name"를 삽입한다고 가정한다. 도 4에서의 인덱스를 참조하고, 여기서 s = 4 및 SizeDOCHashTabledtd1 = 4 이다. SizeDOCHashTabledtd1 내 어드레스 0(= HashFunc(limit))에서 모든 맵핑된 값들은 1 또는 0 둘 중 하나이고, 2보다 더 크지 않으므로(= MapFunc(2000)), 상기 예시적인 문서는 이러한 질의에 대한 후보 문서가 아니고 따라서 폐기될 수 있다.
문서 구조 정의들의 집합의 서브셋을 결정하는 단계(3)는 문서 구조 정의들의 집합에서 각각의 암호화된 문서 구조 정의를 해독하도록 시도하는 단계(15)와, 상기 문서 구조 정의는 상기 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에 존재하도록 허용하는 지의 여부를 각각의 문서 구조 정의에 대해 결정하도록 시도하는 단계(17)를 포함할 수 있다.
문서들의 잡합의 서브셋을 결정하는 단계(5)는 해시 함수를 상기 특정 브랜치의 적어도 일부에 적용함으로써 상기 특정 브랜치의 적어도 일부에 대한 수를 계산하는 단계(21)와, 어느 문서들이 수로부터 문서들로의 맵핑 단계에서 계산된 수로 맵핑되는 것을 룩업하는 단계(23)를 포함할 수 있고, 상기 맵핑 단계는 문서 구조 정의들의 서브셋 중 문서 구조 정의 및 상기 문서 구조 정의에 따르는 맵핑 단계에서의 문서들과 연관된다.
예를 들어, 어느 암호화된 DTD들이 질의로부터 얻어진 각각의 단순한 XPath 표현에 대해 후보 DTD들인지 체크 아웃하기 위해 질의가 제시되면, 그것은 경로 p에 정합될 수 있고 해시 값은 DTD들에 대해 인덱스를 생성하는 동안 동일한 해시 함수 HashFunc(p)(알고리즘 1)를 사용하여 p에 대해 계산될 수 있다. 리턴된 해시 값(즉, 버킷 어드레스)에 따라, 예를 들어 도 6을 참조로 하면, 해시 테이블 DTDHashTable|p| 는 경로 p를 가능한 포함할 수 있는 DTD들의 모든 식별자들을 제시하는 대응 버킷과 협의된다. 이것에 대한 이론적 설명은 다음과 같은 경우에 간단하다. 경로 p가 DTD에 있는 경우, 버킷 엔트리에 이 DTD에 대해 마크를 남기는 DTDHashTable|p| 에서 버킷으로 해싱될 것이다.
예 9
경로 p = (payInfo/creditCard/dueDAte)에 대응하는 오직 하나의 단순한 XPath 표현으로 구성된 질의를 가정해 보자. 도 6에 도시된 DTD 인덱스들을 참조로 하면, 여기서 s= 4 및 SizeDTDHashTable2 = 8, 그것의 해시 값은 다음에 따라 계산된다.
단계 a
ChopName("payInfo", 4) = "payI", ChopName("creditCard", 4) = "cred",
ChopName("dueDate", 4) = "dueD".
단계 b
Base26ValueOf("payI") = 264272, Base26ValueOf("cred") = 46751,
Base26ValueOf("dueD") = 66355.
단계 c
HashFunc(payInfo/creditCard/dueDate) = (Base26ValueOf("PayI")*102 + Base26ValueOf("cred")*101 + Base26ValueOf("dueD")*100) mod SizeDTDHashable2 = (264272*100 + 46751*10 + 66355) mod 8 = 1.
그것의 해시 값 1로 인해, 오직 DTDHashTable2 내 어드레스에서 상기 엔트리가 dtd1 을 나타내기 때문에 예시적인 dtd2 가 그 경로를 포함하지 않는다는 것이 확실하다. 결과로써, 오직 dtd1 만이 후보 DTD, dtd2 로써 리턴될 것이고, 그것의 연관된 순응 문서들(comforming documents)이 따라서 추가적인 고려사항으로부터 폐기될 수 있다.
문서들의 집합의 서브셋을 결정하는 단계(5)는 어느 문서들이 문서 구조 정의들의 서브셋 중 어느 하나에 따르는지 문서 구조 정의로부터 문서들로 맵핑하는 단계에서 룩업하는 단계(25)를 포함할 수 있다.
문서의 집합에서의 검색 방법은 상기 특정 브랜치와 연관된 어떠한 값을 수신하는 단계(27)를 더 포함할 수 있다. 상기 맵핑 단계는 맵핑 단계에서의 문서 및 값 도메인 파티션 사이에서 연관성을 더 포함할 수 있다. 문서들의 집합의 서브셋을 결정하는 단계(5)는 상기 계산된 수로 맵핑되는 문서와 연관된 값 도메인 파티션이 추가적인 값 도메인 파티션을 정합시키는지의 여부를 검사하는 단계(29)를 더 포함할 수 있고, 상기 추가적인 값 도메인 파티션은 상기 수신된 값을 포함한다.
본 발명에 따른 문서들의 집합에서의 검색용 전자 장치(31)는 전자 회로(33)를 포함하며, 도 10을 참조하자. 전자 회로(33)는 기능적으로 입력 수신기(35), 정의 서브셋 결정기(37), 문서 서브셋 결정기(39), 및 검색기(41)를 포함한다. 입력 수신기(35)는 특정 브랜치를 수신하기 위해 동작가능하다. 정의 서브셋 결정기(37)는 문서 구조 정의들의 집합의 서브셋을 결정하기 위해 동작가능하고, 상기 서브셋에서 각각의 문서 구조 정의는 상기 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에서 존재하도록 허용한다. 문서 서브셋 결정기(39)는 문서들의 집합의 서브셋을 결정하기 위해 동작가능하고, 상기 문서들의 서브셋은 상기 서브셋에서 문서 구조 정의들 중 어느 하나에 따르는 문서들의 집합의 모든 문서들을 포함한다. 검색기(41)는 각각의 문서에서 상기 특정 브랜치의 적어도 일부에 대해 검색하기 위해 동작가능하다.
예를 들어, 전자 장치(31)는 컴퓨터 또는 소비자용 전자 장치(예로써, 모바일 폰 또는 개인용 비디오 녹화기)일 수 있다. 예를 들어, 논리 회로는 컴퓨터 프로그램들을 운영하기 위해 동작가능한 일반적인 목적의 CPU(예로써, AMD 애슬론 또는 인텔 펜티엄 CPU)일 수 있다. 양호하게는, 입력 수신기(35), 정의 서브셋 결정기(37), 문서 서브셋 결정기(39), 및 검색기(41)는 컴퓨터 프로그램의 기능적 구성요소들이다. 전자 장치(31)는 예를 들어 특정 브랜치에 대응하는 표현 또는 특정 브랜치를 입력하기 위해 키보드 또는 키패드와 같은 입력 장치(45)에 연결될 수 있다. 전자 장치(31)는 예를 들어 검색 결과들을 디스플레이하기 위한 CRT 또는 LCD 모니터와 같은 출력 장치(47)에 연결될 수 있다. 전자 장치(31)는 저장 수단(45)을 포함할 수 있다. 저장 수단(45)은 예를 들어 하나 또는 그 이상의 하드 디스크들 및/또는 하나 또는 그 이상의 광 디스크들을 포함할 수 있다. 예를 들어, 저장 수단(43)은 하나 또는 그 이상의 하드 디스크들 및/또는 하나 또는 그 이상의 광 디스크들을 포함할 수 있다. 예를 들어, 저장 수단(43)은 맵핑들/인덱스들, 문서 구조 정의들(예로써, XML DTD들 및/또는 XML 스키마들) 및 문서들(예로써, XML 문서들)을 포함할 수 있다. 전자 장치(31)는 하나 또는 그 이상의 맵핑들/인덱스들, 하나 또는 그 이상의 문서 구조 정의들 및/또는 하나 또는 그 이상의 문서들을 저장하는 저장 수단을 갖는 하나 또는 그 이상의 전자 장치들을 포함하는 컴퓨터 네트워크에 접속될 수 있다.
본 발명이 양호한 실시예들과 관련하여 기술되는 동안, 상술된 원칙들 내에 서 그의 수정들이 본 기술 분야의 전문가들에 의해 가능하다는 것은 명백할 것이며, 본 발명은 그러한 수정들을 포함하도록 의도되며 상기 양호한 실시예들로 제한되지 않는다는 것을 이해할 것이다. 본 발명 내에는 각각의 모든 독창적인 특징 특성 및 각각의 모든 특징 특성들의 조합이 존재한다. 특허청구범위에 병기된 참조부호는 그의 보호적인 범위를 제한하지 않는다. 동사 "포함하다" 및 그의 활용의 사용은 특허청구범위에 개시된 것들과 다른 요소들의 존재를 배제하지 않는다. 요소에 선행하는 관사 "하나"의 사용은 복수의 그러한 요소들의 존재를 배제하지 않는다.
'컴퓨터 프로그램'은 인터넷과 같은 네트워크를 통해 다운로드 가능한 플로피 디스크와 같은 컴퓨터 판독가능 매체 상에 저장되는 어떠한 소프트웨어 제품 또는 어떠한 다른 방식으로 시장성 높은 소프트웨어 제품을 의미하도록 이해될 것이다.

Claims (14)

  1. 문서들의 집합(collection)에서의 검색 방법으로서, 상기 문서들은 트리형 구조를 갖고 문서들의 상기 집합에서의 각각의 문서는 문서 구조 정의들의 집합내의 적어도 하나의 문서 구조 정의에 따르는, 상기 검색 방법에 있어서,
    특정 브랜치를 수신하는 단계(1)와,
    문서 구조 정의들의 상기 집합의 서브셋을 결정하는 단계(3)로서, 상기 서브셋에서의 각각의 문서 구조 정의는 상기 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에 존재하도록 허용하는, 상기 서브셋 결정 단계(3)와,
    문서들의 상기 집합의 서브셋을 결정하는 단계로서(5), 문서들의 상기 서브셋은 상기 서브셋에서의 상기 문서 구조 정의들 중 어느 하나에 따르는 문서들의 집합의 모든 문서들을 포함하는, 상기 서브셋 결정 단계와,
    각각의 문서에서 상기 특정 브랜치의 적어도 일부에 대해 검색하는 단계(7)를 포함하는, 검색 방법.
  2. 제 1 항에 있어서,
    문서들의 상기 서브셋에서 각각의 암호화된 문서를 해독하도록 시도하는 추가적인 단계(9)를 포함하는, 검색 방법.
  3. 제 1 항에 있어서,
    문서들의 상기 집합의 서브셋을 결정하는 단계는, 해시 함수를 상기 특정 브랜치의 적어도 일부에 적용함으로써 상기 특정 브랜치의 적어도 일부에 대한 수를 계산하는 단계(21)와, 어느 문서들이 수로부터 문서들로의 맵핑 단계에서 상기 계산된 수로 맵핑되는지를 룩업(looking up)하는 단계(23)로서, 상기 맵핑 단계는 문서 구조 정의들의 상기 서브셋 중 하나의 문서 구조 정의와 연관되고 상기 맵핑 단계에서 상기 문서들은 상기 문서 구조 정의에 따르는, 상기 룩업 단계(23)를 포함하는, 검색 방법.
  4. 제 3 항에 있어서,
    상기 특정 브랜치와 연관된 어떠한 값을 수신하는 추가적인 단계(27)를 포함하고, 상기 맵핑 단계는 상기 맵핑에서의 문서와 값 도메인 파티션(value domain partition)사이에 연관성을 더 포함하며, 문서들의 상기 집합의 서브셋을 결정하는 상기 단계는 상기 계산된 수에 맵핑된 문서와 연관된 값 도메인 파티션이 추가적인 값 도메인 파티션과 정합하는지의 여부를 검사하는 단계(29)를 더 포함하고 상기 추가적인 값 도메인 파티션은 상기 수신된 값을 포함하는, 검색 방법.
  5. 제 1 항에 있어서,
    문서들의 상기 집합의 서브셋을 결정하는 상기 단계는 어느 문서들이 문서 구조 정의들의 상기 서브셋 중 어느 하나에 따르는지 문서 구조 정의로부터 문서들로의 맵핑에서 룩업하는 단계(25)를 포함하는, 검색 방법.
  6. 제 1 항에 있어서,
    문서 구조 정의들의 상기 집합의 서브셋을 결정하는 상기 단계는 추가적인 해시 함수를 상기 특정 브랜치의 적어도 일부에 적용함으로써 상기 특정 브랜치의 적어도 일부에 대해 추가적인 수를 계산하는 단계(11)와, 어느 문서 구조 정의들이 수로부터 문서 구조 정의들로 맵핑하는 단계에서 상기 계산된 수로 맵핑되는지 룩업하는 단계(13)를 포함하는, 검색 방법.
  7. 제 1 항에 있어서,
    문서 구조 정의들의 상기 집합의 서브셋을 결정하는 단계는 문서 구조 정의들의 집합에서 각각의 암호화된 문서 구조 정의를 해독하도록 시도하는 단계(15)와, 상기 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에 존재하도록 상기 문서 구조 정의가 허용하는지의 여부를 각각의 문서 구조 정의에 대해 결정하도록 시도하는 단계(17)를 포함하는, 검색 방법.
  8. 프로그램가능한 장치가 제 1 항에 청구된 바와 같은 방법을 수행할 수 있게 하는 컴퓨터 프로그램 제품.
  9. 전자 회로(33)를 포함하는, 문서들의 집합에서 검색하는 전자 장치(31)에 있어서,
    상기 전자 회로(33)는,
    특정 브랜치를 수신하는 입력 수신기(35)와,
    문서 구조 정의들의 집합의 서브셋을 결정하는 정의 서브셋 결정기(37)로서, 상기 서브셋에서의 각각의 문서 구조 정의는 상기 특정 브랜치가 상기 문서 구조 정의에 따르는 문서에 존재하도록 허용하는, 상기 정의 서브셋 결정기(37)와,
    문서들의 집합의 서브셋을 결정하는 문서 서브셋 결정기(39)로서, 문서들의 상기 서브셋은 상기 서브셋내의 상기 문서 구조 정의들 중 어느 하나에 따르는 문서들의 상기 집합의 모든 문서들을 포함하는, 상기 문서 서브셋 결정기(39)와,
    각각의 문서에서 상기 특정 브랜치의 적어도 일부에 대해 검색하는 검색기(41)를 기능적으로 포함하는, 전자 장치(31).
  10. 문서들의 집합을 인덱싱하는 방법으로서, 상기 문서들은 트리형 구조를 갖고 문서들의 상기 집합에서의 각각의 문서는 문서 구조 정의들의 집합에서의 적어도 하나의 문서 구조 정의에 따르는, 문서 집합 인덱싱 방법에 있어서,
    문서 구조 정의들의 상기 집합 중 각각의 문서 구조 정의에 대해 빈 인덱스(empty index)를 생성하는 단계(51)로서, 상기 인덱스는 문서들의 상기 집합 중 하나의 문서에 정수들의 범위로부터의 하나의 정수를 맵핑하는, 인덱스 생성 단계(51)와,
    해시 함수를 브랜치의 적어도 일부에 적용함으로써 문서들의 상기 집합 중 하나의 문서에서 상기 브랜치의 적어도 일부에 대한 수를 계산하는 단계(53)로서, 상기 수는 정수들의 상기 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 수를 발생시키는 것이 가능한, 상기 계산 단계(53)와,
    상기 문서가 따르는 문서 구조 정의에 대한 인덱스에서 엔트리를 생성하는 단계(55)로서, 상기 엔트리는 상기 계산된 수로부터 상기 브랜치의 적어도 일부를 포함하는 상기 문서로 맵핑하는 단계를 포함하는, 상기 엔트리 생성 단계를 포함하는, 문서 집합 인덱싱 방법.
  11. 제 10 항에 있어서,
    상기 인덱스에서 엔트리를 생성하는 단계는 값 도메인 파티션으로 맵핑하는 단계에서 상기 문서를 연관시키는 단계를 포함하고, 상기 값 도메인 파티션은 상기 브랜치와 연관된 값을 포함하는, 문서 집합 인덱싱 방법.
  12. 제 10 항에 있어서,
    추가적인 단계가 정수들의 추가적인 범위로부터의 각각의 정수가 문서 구조 정의로 맵핑될 수 있는 빈 추가적인 인덱스(empty further index)를 생성하는 단계(57)를 포함하고,
    추가적인 단계가 추가적인 해시 함수를 상기 브랜치에 적용함으로써 상기 브랜치의 적어도 일부에 대한 추가적인 수를 계산하는 단계(59)를 포함하고, 상기 추가적인 수는 정수들의 상기 추가적인 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 추가적인 수를 발생시키는 것이 가능하며,
    추가적인 단계가 상기 추가적인 인덱스에서 엔트리를 생성하는 단계(61)를 포함하고, 상기 추가적인 인덱스에서 상기 엔트리는 상기 계산된 추가적인 수로부터 상기 문서가 따르는 상기 문서 구조 정의로 맵핑하는 단계를 포함하는, 문서 집합 인덱싱 방법.
  13. 프로그램가능한 장치가 제 10 항에 청구된 바와 같은 방법을 수행할 수 있게 하는 컴퓨터 프로그램 제품.
  14. 전자 회로(73)를 포함하는 문서들의 집합을 인덱싱하는 전자 장치(71)에 있어서,
    상기 전자 회로(73)는,
    문서 구조 정의들의 집합 중 각각의 문서 구조 정의에 대한 빈 인덱스를 생성하는 인덱스 생성기(75)로서, 상기 인덱스는 정수들의 범위로부터의 하나의 정수를 문서들의 상기 집합 중 하나의 문서로 맵핑하는, 상기 인덱스 생성기(75)와,
    해시 함수를 브랜치의 적어도 일부에 적용함으로써 문서들의 상기 집합 중 하나의 문서에서 상기 브랜치의 적어도 일부에 대한 수를 계산하는 해시 계산기(77)로서, 상기 수는 정수들의 상기 범위로 제한되고 상기 계산은 서로 다른 브랜치들에 대해 동일한 수를 발생시키는 것이 가능한, 상기 해시 계산기(77)와,
    상기 문서가 따르는 문서 구조 정의에 대한 인덱스에서 엔트리를 생성하는 인덱스 필러(index filler; 79)로서, 상기 엔트리는 상기 계산된 수로부터 상기 브 랜치의 적어도 일부를 포함하는 상기 문서로 맵핑하는 단계를 포함하는, 상기 인덱스 필러(79)를 기능적으로 포함하는, 문서 집합 인덱싱 전자 장치(71).
KR1020067001389A 2003-07-21 2004-07-16 문서들의 집합에서의 검색 방법 KR20060059261A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03102240 2003-07-21
EP03102240.3 2003-07-21

Publications (1)

Publication Number Publication Date
KR20060059261A true KR20060059261A (ko) 2006-06-01

Family

ID=34072665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067001389A KR20060059261A (ko) 2003-07-21 2004-07-16 문서들의 집합에서의 검색 방법

Country Status (6)

Country Link
US (1) US20080059404A1 (ko)
EP (1) EP1649388A1 (ko)
JP (1) JP2006528382A (ko)
KR (1) KR20060059261A (ko)
CN (1) CN1826598A (ko)
WO (1) WO2005008525A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484092B2 (en) * 2001-03-12 2009-01-27 Arcot Systems, Inc. Techniques for searching encrypted files
US20070130206A1 (en) * 2005-08-05 2007-06-07 Siemens Corporate Research Inc System and Method For Integrating Heterogeneous Biomedical Information
FR2899708B1 (fr) * 2006-04-07 2008-06-20 Thales Sa Procede de de-doublonnage rapide d'un ensemble de documents ou d'un ensemble de donnees contenues dans un fichier
US8782091B2 (en) * 2006-08-28 2014-07-15 International Business Machines Corporation Method and system for addressing a node in tree-like data structure
US8676863B1 (en) 2008-09-15 2014-03-18 Liberty Mutual Insurance Company Maintaining a relational database and its schema in response to a stream of XML messages based on one or more arbitrary and evolving XML schemas
KR101095862B1 (ko) 2008-12-01 2011-12-21 한국전자통신연구원 데이터 암호화 장치 및 방법, 데이터 복호화 장치, 데이터 검색 방법
US8527497B2 (en) * 2010-12-30 2013-09-03 Facebook, Inc. Composite term index for graph data
US20130297657A1 (en) * 2012-05-01 2013-11-07 Gajanan Chinchwadkar Apparatus and Method for Forming and Using a Tree Structured Database with Top-Down Trees and Bottom-Up Indices
US10268662B2 (en) * 2012-09-10 2019-04-23 The Boeing Company Panoptic visualization of a document according to the structure thereof
US9087055B2 (en) * 2013-01-28 2015-07-21 International Business Machines Corporation Segmenting documents within a full text index
US9256644B1 (en) * 2013-03-15 2016-02-09 Ca, Inc. System for identifying and investigating shared and derived content
CN104537325A (zh) * 2014-12-05 2015-04-22 中国科学院信息工程研究所 基于gis的物品运动轨迹分析方法及装置
CN113076721B (zh) * 2021-04-09 2024-03-08 航天信息(广东)有限公司 一种基于XPath的编码长度控制方法以及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6421656B1 (en) * 1998-10-08 2002-07-16 International Business Machines Corporation Method and apparatus for creating structure indexes for a data base extender
US6675163B1 (en) * 2000-04-06 2004-01-06 International Business Machines Corporation Full match (FM) search algorithm implementation for a network processor
US6725223B2 (en) * 2000-12-22 2004-04-20 International Business Machines Corporation Storage format for encoded vector indexes

Also Published As

Publication number Publication date
EP1649388A1 (en) 2006-04-26
JP2006528382A (ja) 2006-12-14
CN1826598A (zh) 2006-08-30
WO2005008525A1 (en) 2005-01-27
US20080059404A1 (en) 2008-03-06

Similar Documents

Publication Publication Date Title
US8423565B2 (en) Information life cycle search engine and method
Freitag Toward general-purpose learning for information extraction
Ferragina et al. The string B-tree: A new data structure for string search in external memory and its applications
US7171404B2 (en) Parent-child query indexing for XML databases
US20170177713A1 (en) Systems and Method for Searching an Index
JP3755134B2 (ja) コンピュータベースの適合テキスト検索システムおよび方法
JP5338238B2 (ja) ワードの類似性を用いたオントロジーの自動生成
US8266150B1 (en) Scalable document signature search engine
JP2002520712A (ja) データ検索システムと方法およびサーチ・エンジンにおけるその使用
KR20060059261A (ko) 문서들의 집합에서의 검색 방법
Lin et al. Query expansion for document retrieval based on fuzzy rules and user relevance feedback techniques
Arenas et al. Consistency of XML specifications
CN107291851A (zh) 基于属性加密的密文索引构造方法及其查询方法
US7536377B1 (en) Component naming
Yasodha et al. An ontology-based framework for semantic web content mining
Hartmann et al. On the notion of an XML key
Garcia-Alvarado et al. Keyword search across databases and documents
Cohen et al. Generating relations from XML documents
Ciaccia et al. Adding flexibility to structure similarity queries on XML data
Lu An Introduction to XML Query Processing and Keyword Search
KR100659370B1 (ko) 시소러스 매칭에 의한 문서 db 형성 방법 및 정보검색방법
Altamimi et al. A math query language with an expanded set of wildcards
Feigenblat et al. A grouping approach for succinct dynamic dictionary matching
KR100441346B1 (ko) 엑스엠엘 문서의 저장방법 및 엑스엠엘 문서 또는 인덱스노드 탐색방법
Belazzougui Improved space-time tradeoffs for approximate full-text indexing with one edit error

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid