KR20110060428A - Method and apparatus for prefix tree based indexing, and recording medium thereof - Google Patents

Method and apparatus for prefix tree based indexing, and recording medium thereof Download PDF

Info

Publication number
KR20110060428A
KR20110060428A KR1020090117015A KR20090117015A KR20110060428A KR 20110060428 A KR20110060428 A KR 20110060428A KR 1020090117015 A KR1020090117015 A KR 1020090117015A KR 20090117015 A KR20090117015 A KR 20090117015A KR 20110060428 A KR20110060428 A KR 20110060428A
Authority
KR
South Korea
Prior art keywords
node
hash
tree
index
index tree
Prior art date
Application number
KR1020090117015A
Other languages
Korean (ko)
Other versions
KR101089722B1 (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 동국대학교 산학협력단
Priority to KR20090117015A priority Critical patent/KR101089722B1/en
Publication of KR20110060428A publication Critical patent/KR20110060428A/en
Application granted granted Critical
Publication of KR101089722B1 publication Critical patent/KR101089722B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/322Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/325Hash tables

Abstract

PURPOSE: A prefix tree based indexing apparatus and a method for the same are provided to prevent the increase of an index size and optimize the search performance by renewing the prefix tree based indexing. CONSTITUTION: A memory unit(320) stores an index tree. A node searcher(310) searches a first node for inserting a text in the index tree. If the first node is not in a saturation condition, an index tree updater(330) inserts the character into the first node as a new entry. If the first node is in a saturation condition, the index tree updating unit stores the character, a key value of the first node, and a child node pointer to a hash bucket and converts the first node into the hash table.

Description

프리픽스 트리 기반 색인 방법 및 장치, 그 기록 매체 {Method and apparatus for prefix tree based indexing, and recording medium thereof}Method and apparatus for prefix tree based indexing, and recording medium
본 발명은 대용량 텍스트 문서 집합에서 문자열을 빠르게 검색하기 위한 문자열 색인 방법 및 장치에 관한 것으로, 특히, 프리픽스 트리 기반 색인 방법, 그 기록 매체, 프리픽스 트리 기반 색인 장치에 관한 것이다.The present invention relates to a string indexing method and apparatus for quickly searching a string in a large text document set, and more particularly, to a prefix tree-based indexing method, a recording medium, and a prefix tree-based indexing device.
본 발명은 한글/영어/한자 문서 검색 시스템에서 대용량 텍스트 문서를 문자열 색인을 이용하여 검색하는 기술과 관련된다. 문서 검색 시스템에서 문자열(한글 문자열, 한글 초성 중성 종성들의 스트링, 영어 알파벳 문자열, 한자 문자열, 또는 한자 부수들의 스트링 등)을 이용해서 검색하는 시스템에 관계된다. The present invention relates to a technique for searching a large text document using a string index in a Korean / English / Hanja document search system. The document search system relates to a system for searching using a string (Hangul string, Hangul choseong neutral star string, English alphabet string, Chinese character string, or string of Chinese character copies).
한자 또는 한글 문자열을 기존 방법들과 같이 문자 단위로 프리픽스 트리 (Prefix tree) 기반 인덱스를 구축하면 트리의 각 노드에서의 분기(Branch) 수가 매우 많아질 수 있다. 예를 들어 상용 한자는 3500자이고 부수는 189개이므로, 한자 문자로 프리픽스 트리 기반 인덱스를 구축하는 경우 각 노드의 분기수가 매우 커질 수 있다. 한글 문자의 경우도 11,172개의 완성형 문자들이 존재하므로 프리픽스 트리 기반 인덱스에서 각 노드의 분기 수가 매우 커질 수 있다. 또한 색인 대상 인 문자열에 따라 각 노드의 분기수가 결정되므로, 노드마다 크기가 다를 수 있으며, 어느 노드의 크기는 매우 작고, 어느 노드의 크기는 매우 클 수 있다. 따라서 이 경우 고정 크기(Fixed size)의 노드를 사용하기가 어렵다. 만일 가변 크기(Variable Size)의 노드를 사용하더라도 크기가 큰 노드의 검색에는 많은 노력이 들게 된다. 또한 기존의 프리픽스 트리 기반 인덱스에서 색인 대상인 문자열의 크기는 모두 다르므로, 프리픽스 트리 기반 인덱스의 깊이(높이)도 리프 노드마다 모두 다를 수 있다. 어느 문자열의 크기(문자 수)가 매우 큰 경우에는 문자열의 문자수 만큼 노드들을 검색해야 하므로 검색시간이 많이 걸리게 된다.If you build a prefix tree-based index on a character-by-character basis, as in traditional methods, the number of branches in each node of the tree can be very large. For example, since the common Chinese character is 3500 characters and the number of copies is 189, if you build a prefix tree-based index with Chinese characters, the number of branches of each node can be very large. In the case of Korean characters, because there are 11,172 complete characters, the number of branches of each node in the prefix tree-based index can be very large. In addition, since the number of branches of each node is determined according to the character string to be indexed, the size may be different for each node, the size of which node is very small, and the size of which node may be very large. Therefore, it is difficult to use fixed size nodes in this case. Even if a variable size node is used, a lot of effort is spent searching for a large size node. In addition, since the size of the string to be indexed is different in the existing prefix tree-based index, the depth (height) of the prefix tree-based index may be different for each leaf node. If the size (character count) of a string is very large, it takes a lot of time to search for nodes as many as the number of characters in the string.
본 발명이 이루고자 하는 첫 번째 기술적 과제는 프리픽스 트리 기반 인덱스의 크기가 지나치게 커지는 것을 방지하고 검색 성능을 최적화시킬 수 있는 프리픽스 트리 기반 색인 방법을 제공하는 데 있다.The first technical problem to be achieved by the present invention is to provide a prefix tree-based index method that can prevent the size of the prefix tree-based index from growing too large and optimize search performance.
본 발명이 이루고자 하는 두 번째 기술적 과제는 상기의 프리픽스 트리 기반 색인 방법을 컴퓨터 시스템에서 실행하기 위한 프로그램이 기록된 매체로서, 컴퓨터 시스템이 판독할 수 있는 기록매체를 제공하는 데 있다.A second technical object of the present invention is to provide a recording medium that can be read by a computer system as a medium in which a program for executing the prefix tree-based indexing method in a computer system is recorded.
본 발명이 이루고자 하는 세 번째 기술적 과제는 정보 검색 시스템에서 프리픽스 트리 기반 인덱스의 크기가 지나치게 커지는 것을 방지하고 검색 성능을 최적화시킬 수 있는 프리픽스 트리 기반 색인 장치를 제공하는 데 있다.The third technical problem to be achieved by the present invention is to provide a prefix tree-based indexing apparatus that can prevent the size of the prefix tree-based index from becoming too large and optimize search performance in the information retrieval system.
본 발명의 일 실시 예에 따른 프리픽스 트리 기반 색인 방법은 인덱스 트리에서 문자가 삽입될 제1노드를 검색하는 단계; 상기 제1노드가 포화 상태가 아니면 상기 문자를 상기 제1노드에 새로운 엔트리로 삽입하는 단계; 및 상기 제1노드가 포화 상태이면, 상기 문자와 상기 제1노드의 키값 및 자식 노드 포인터를 해시 버킷에 저장하여 상기 제1노드를 해시 테이블로 변환하는 단계를 포함한다.According to an embodiment of the present invention, a prefix tree-based indexing method includes: searching for a first node to which a character is inserted in an index tree; Inserting the character into the first node as a new entry if the first node is not saturated; And converting the first node into a hash table by storing the character, a key value of the first node, and a child node pointer in a hash bucket when the first node is saturated.
또한, 본 발명의 다른 실시 예에 따른 프리픽스 트리 기반 색인 방법은 상기 인덱스 트리의 루트부터 시작하여 검색 대상 문자열의 키값들을 해당키의 포인터를 따라가면서 상기 인덱스 트리에서 깊이 우선으로검색하는 단계; 검색 중인 노드가 해시 함수를 이용한 노드라고 판단되면, 상기 검색된 노드의 해시 값들에 따라 자식 노드 포인터를 찾는 단계; 및 상기 자식 노드 포인터에 따른 단말 노드에서 데이터를 추출하는 단계를 포함한다.According to another aspect of the present invention, there is provided a prefix tree-based indexing method including: searching for depth-first in the index tree starting from the root of the index tree while following key pointers of a search target string; If it is determined that the node being searched is a node using a hash function, finding a child node pointer according to the hash values of the found node; And extracting data from the terminal node according to the child node pointer.
본 발명의 일 실시 예에 따른 프리픽스 트리 기반 색인 장치는 인덱스 트리를 저장하는 메모리부; 상기 인덱스 트리에서 문자가 삽입될 제1노드를 검색하는 노드 검색부; 및 상기 제1노드가 포화 상태가 아니면 상기 문자를 상기 제1노드에 새로운 엔트리로 삽입하고, 상기 제1노드가 포화 상태이면 상기 문자와 상기 제1노드의 키값 및 자식 노드 포인터를 해시 버킷에 저장하여 상기 제1노드를 해시 테이블로 변환하는 인덱스 트리 갱신부를 포함한다.Prefix tree-based indexing apparatus according to an embodiment of the present invention includes a memory unit for storing an index tree; A node searcher for searching for a first node into which a character is to be inserted in the index tree; And inserting the character into the first node as a new entry if the first node is not in saturation, and storing the character and key value and child node pointer of the character and the first node in a hash bucket if the first node is in saturation. And an index tree updater for converting the first node into a hash table.
본 발명의 실시 예들에 의하면, 프리픽스 트리 기반 인덱스의 크기가 지나치게 커지는 것을 방지하고 검색 성능을 최적화시킬 수 있다.According to embodiments of the present invention, the size of the prefix tree-based index can be prevented from becoming too large and the search performance can be optimized.
이이하에서는 도면을 참조하여 본 발명의 바람직한 실시 예를 설명하기로 한다. 그러나, 다음에 예시하는 본 발명의 실시 예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시 예에 한정되는 것은 아니다.Hereinafter, with reference to the drawings will be described a preferred embodiment of the present invention. However, embodiments of the present invention illustrated below may be modified in various other forms, and the scope of the present invention is not limited to the embodiments described below.
이하의 실시 예들은 한글 및 한문 문서, 영문 문서와 같은 대용량 문서 검색 시스템에서 문자열 검색을 위한 해싱을 이용한 프리픽스(Prefix) 트리 색인 구축 및 검색 방법을 제공한다.The following embodiments provide a prefix tree index construction and retrieval method using hashing for string search in a large-scale document search system such as Korean, Chinese, and English documents.
본 발명의 실시 예들은 프리픽스 트리 기반 인덱스를 이용해서 인덱스를 구 축하며, 각 노드의 크기를 고정 크기로 유지한다. 만일 어느 노드에 저장된 엔트리들의 크기(노드의 문자들의 수)가 노드의 최대 크기를 넘게 되면 해싱(Hashing)을 사용하여 노드를 해시 테이블로 변환한다. Embodiments of the present invention build an index using a prefix tree-based index, and maintain the size of each node at a fixed size. If the size of the entries stored in a node (the number of characters in the node) exceeds the node's maximum size, hashing is used to convert the node into a hash table.
인덱스 트리를 구축하기 위해서는 먼저, 색인 대상 문자열을 문서에서 추출해야 한다. 색인 대상 문자열은 프리픽스 트리 기반 인덱스의 루트 노드부터 해당 노드까지의 모든 문자들을 연결한 스트링이다. 문서에서 검색에 사용될 문자열을 추출한다. 검색할 때 사용되는 기본 단위로 문장, 어절, 어구, 또는 단어 등을 선택할 수 있다. 필요에 따라, 문서에서 구두점(마침표, 쉼표, 물음표, 느낌표 등)과 특수문자(괄호, 인용부호) 등을 공백으로 치환한 후 문자열을 추출할 수 있다. 이 경우, 문자열을 추출할 때는 검색 대상을 단어로 선택한 경우 공백을 기준으로 구분하고, 문장을 선택한 경우에는 전 과정에서 구두점을 기준으로 구분한다. 또는 키워드 사전이나 문자열 사전을 활용하여 문자열을 추출할 수도 있다. 필요에 따라, 추출된 문자열에서 공백을 모두 삭제할 수도 있다. 문자열 추출 방법은 다양한 공지의 기술들 중에서 선택하여 사용할 수 있다. 또한 추출된 문자열들 중에서 색인 대상 문자열을 선택할 수 있다. 이후, 색인 대상 문자열을 구성하는 문자들을 분석하여 적절한 크기의 노드 크기를 정한다. 다음 각 필드의 크기, 최대 분기수 m의 크기를 정한다. 여기서, 분기수 m은 프리픽스 트리 기반 인덱스의 최대 분기수가 되며, 프리픽스 트리 기반 인덱스는 m원 트리가 된다.To build an index tree, first extract the index string from the document. The index target string is a string concatenating all characters from the root node of the prefix tree-based index to the node. Extract the string from the document to be used for searching. You can select sentences, phrases, phrases, or words as the basic units used when searching. If necessary, text can be extracted after replacing punctuation marks (periods, commas, question marks, exclamation marks, etc.) and special characters (brackets, quotation marks) with spaces. In this case, when extracting a string, if the search target is selected as a word, it is divided based on a space, and if a sentence is selected, it is classified based on punctuation in the whole process. Alternatively, a string can be extracted using a keyword dictionary or a string dictionary. If necessary, you can remove all spaces from the extracted string. The string extraction method may be selected from among various known techniques. You can also select an index string from the extracted strings. Then, the size of the appropriate size node is analyzed by analyzing the characters constituting the index string. Next, determine the size of each field and the maximum number of quarters m. Here, the branch number m is the maximum branch number of the prefix tree-based index, and the prefix tree-based index is the m-member tree.
도 1은 본 발명의 일 실시 예에 따른 인덱스 트리의 예를 도시한 것이다. 도 1은 각 노드의 구조를 보여준다. 도 1의 노드 구조는 어느 문자열의 부분 문자열에 대한 색인을 지원한다. 또한 특정 문자열의 색인을 위해서는 특정 문자열이 다른 문자열들과 구별되는 특정 문자열의 프리픽스(즉 특정 문자열의 처음부터 다른 문자열들과 구별되는 위치까지의 부분 문자열)를 인덱스 트리에 삽입하는 것이 효율적이다.1 illustrates an example of an index tree according to an embodiment of the present invention. 1 shows the structure of each node. The node structure of FIG. 1 supports indexing of substrings of any string. In addition, for indexing a specific string, it is efficient to insert a prefix of a specific string (that is, a substring from the beginning of a specific string to a position distinguished from other strings) in the index tree.
m이 최대 분기수일 때, 해시 플래그(Hash Flag, 110)가 1이면 노드에 m개를 초과하는 엔트리를 저장하는 경우(즉, 오버플로가 발생한 경우)이다. 해시 플래그(110)가 1인 노드는 노드 엔트리들을 해싱한 노드이다. 해시 플래그(110)가 0이면 해싱하지 않은 일반 노드를 나타낸다.When m is the maximum number of branches, if the hash flag 110 is 1, more than m entries are stored in the node (i.e., overflow occurs). The node whose hash flag 110 is 1 is the node that hashed the node entries. If the hash flag 110 is zero, it indicates a general node that has not been hashed.
압축 플래그(120)가 1이면 자식 노드들을 자신의 노드에 저장한 상태를 나타내고, 0이면 압축하지 않은 일반 노드를 나타낸다.If the compression flag 120 is 1, it indicates a state in which child nodes are stored in its own node, and 0 indicates a non-compressed general node.
문자열 빈도(130)는 해당 노드까지의 문자열(루트 노드부터 해당 노드까지의 문자(키)들의 스트링)이 문서들에서 나타난 빈도를 나타낸다.The string frequency 130 indicates the frequency at which the strings up to the node (a string of characters (keys) from the root node to the node) appear in the documents.
문자열 리스트 포인터(140)는 해당 문자열이 나타난 문서들에서의 모든 위치들을 저장한 리스트에 대한 포인터이다.The string list pointer 140 is a pointer to a list that stores all positions in the documents in which the string appears.
(키, 자식 노드 포인터) 리스트는 최대 m개의 (키, 자식 노드 포인터) 필드 쌍들을 나타낸다. 키(151)는 문자를 나타내고, 자식 노드 포인터(152)는 키에 해당되는 자식 노드의 포인터이다.The (key, child node pointer) list represents up to m (key, child node pointer) field pairs. The key 151 represents a letter, and the child node pointer 152 is a pointer of the child node corresponding to the key.
본 발명은 도 1에 도시된 노드의 구조에 한정되지 않으며, 본 발명이 적용될 수 있는 노드의 구조는 환경에 따라 달라질 수 있다.The present invention is not limited to the structure of the node shown in FIG. 1, and the structure of the node to which the present invention can be applied may vary depending on environments.
도 2는 도 1의 인덱스 트리에 새로운 문자들이 삽입되는 경우 오버플로우가 발생하는 것을 도시한 것이다.FIG. 2 illustrates that overflow occurs when new characters are inserted into the index tree of FIG. 1.
모든 노드는 키값과 자식 노드에 대한 포인터의 쌍들을 저장한다. 그런데, 문자열을 트리에 차례로 삽입할 때 일부 문자가 포화(Full) 상태인 노드에 삽입되는 경우, 오버플로가 발생하게 된다. 도 2의 예에서, "可憐生(가련생)"을 삽입할 노드(可에 해당되는 노드)는 이미 삽입할 공간이 없으므로 오버플로가 발생하게 되어 해시 함수를 이용한 해싱이 필요하다.Every node stores pairs of key values and pointers to child nodes. However, when some characters are inserted into a node that is full when a string is inserted into the tree in sequence, an overflow occurs. In the example of FIG. 2, since the node (node corresponding to 可) to insert “可憐 生 (wrap)” already has no space to insert, an overflow occurs and hashing using a hash function is required.
도 3은 본 발명의 일 실시 예에 따른 프리픽스 트리 기반 색인 장치(300)의 블록도이다.3 is a block diagram of a prefix tree based indexing apparatus 300 according to an exemplary embodiment.
노드 검색부(310)는 메모리부(320)의 인덱스 트리에서 문자가 삽입될 노드(이하 '제1노드')를 검색한다.The node search unit 310 searches for a node (hereinafter, referred to as a 'first node') in which a character is to be inserted in the index tree of the memory unit 320.
메모리부(320)는 미리 구축된 인덱스 트리를 저장한다. 메모리부(320)는 D램과 같은 휘발성 메모리 소자나 하드 디스크 드라이브, 플래시 메모리와 같은 비휘발성 메모리 소자 중 적어도 하나를 포함한다.The memory unit 320 stores a pre-built index tree. The memory unit 320 includes at least one of a volatile memory device such as a DRAM or a nonvolatile memory device such as a hard disk drive or a flash memory.
인덱스 트리 갱신부(330)는 제1노드가 포화 상태가 아니면 삽입할 문자를 제1노드에 새로운 엔트리로 삽입한다. 인덱스 트리 갱신부(330)는 제1노드가 포화 상태이면 삽입할 문자와 제1노드의 키값 및 자식 노드 포인터를 해시 버킷에 저장하는 방식으로 제1노드를 해시 테이블로 변환한다.The index tree updater 330 inserts a character to be inserted into the first node as a new entry if the first node is not saturated. The index tree updater 330 converts the first node into a hash table by storing the character to be inserted, the key value of the first node, and the child node pointer in the hash bucket when the first node is saturated.
본 발명의 다른 실시 예에서, 인덱스 트리 갱신부(330)는 인덱스 트리의 노드들을 순회하면서 현재 노드 및 자식 노드의 통합 가능 여부를 검사한다. 이 실시 예에서, 인덱스 트리 갱신부(330)는 현재 노드 및 자식 노드가 통합 가능한 경우 자식 노드의 엔트리들을 현재 노드에 통합하면서 현재 노드의 압축 플래그를 변경한다.In another embodiment of the present invention, the index tree updater 330 traverses the nodes of the index tree and checks whether the current node and child nodes can be integrated. In this embodiment, the index tree updater 330 changes the compression flag of the current node while integrating entries of the child node into the current node when the current node and the child node can be merged.
도 4는 본 발명의 일 실시 예에 따른 프리픽스 트리 기반 색인 방법의 흐름도이다.4 is a flowchart of a prefix tree based indexing method according to an embodiment of the present invention.
먼저, 인덱스 트리에서 문자가 삽입될 제1노드를 검색한다(S410). 즉, 인덱스 트리에서 문자를 삽입할 위치를 찾는다.First, a first node to be inserted with a character is searched in the index tree (S410). That is, find a position in the index tree to insert a character.
다음, 제1노드가 포화 상태이면(S420) 삽입할 문자와 제1노드의 키값 및 자식 노드 포인터를 해시 버킷에 저장하는 방식으로 제1노드를 해시 테이블로 변환한다(S430). 예를 들어, 제1노드에서 오버플로가 발생하면 해시 플래그를 1로 변경하고 위 해시 함수를 이용해 m + 1개의 엔트리를 재배치한다. Next, when the first node is saturated (S420), the first node is converted into a hash table by storing the character to be inserted, the key value of the first node, and the child node pointer in the hash bucket (S430). For example, if an overflow occurs in the first node, the hash flag is changed to 1 and the m + 1 entry is relocated using the hash function.
반면, 제1노드가 포화 상태가 아니면(S420) 삽입할 문자를 제1노드에 새로운 엔트리로 삽입한다(S440). 예를 들어, 해당 노드의 해시 플래그가 0이고 노드가 포화 상태가 아니면 새로운 엔트리를 삽입한다. On the other hand, if the first node is not saturated (S420), the character to be inserted is inserted into the first node as a new entry (S440). For example, if the hash flag of the node is 0 and the node is not saturated, insert a new entry.
마지막으로, 인덱스 트리에 모든 문자열이 삽입되었는지 확인(S450)하고, 모든 문자열이 삽입되지 않았으면 다음으로 삽입할 문자에 대해 제1노드를 검색하는 과정(S410)부터 상술한 과정을 반복한다.Finally, if all strings are inserted in the index tree (S450), and if not all strings are inserted, the above-described process is repeated from the step (S410) of searching for the first node for the next character to be inserted.
도 5는 도 2에서 특정 노드를 해시 테이블로 변환한 경우를 도시한 것이다.FIG. 5 illustrates a case where a specific node is converted into a hash table in FIG. 2.
해시 버킷에는 노드에 저장되었던 (키, 자식 노드 포인터) 쌍들이 저장된다. 해시 함수가 사용된 노드는 해시 플래그를 1로 설정하고 상기 노드의 해시 테이블을 저장한다. 즉, 해시 코드의 길이(160), 해시 비트 위치(예를 들어, 12, 13, 15)(171, 172, 173), 해시 코드의 크기(180), 각 해시 코드에 대한 해시 버킷 포인터(190)를 저장한다. The hash bucket stores pairs (keys, child node pointers) that have been stored on the node. A node for which a hash function is used sets the hash flag to 1 and stores the hash table of the node. That is, the length 160 of the hash code, the hash bit position (eg, 12, 13, 15) (171, 172, 173), the size of the hash code 180, and the hash bucket pointer 190 for each hash code. Save).
해시 함수는 문자의 코드값을 기반으로 해시키를 생성한다. 해시함수의 입력값은 오버플로가 발생한 노드에 저장된 키값과 새로 입력되는 키값을 포함한 모든 키값이 된다. 해당 키(문자)들의 코드(예를 들어, 한글완성형 코드는 16비트, ASCII 코드는 8비트)를 분석하고 문자를 유일하게 구별하거나 또는 구별성이 높은 비트들을 선택하여 해시 코드를 구성한다. 이는 특정 노드의 해시 버킷들을 가능한 균등하게(즉, 버킷들의 엔트리 수가 가능한 동일하게) 사용하기 위해서이다. 만일 해시 버킷들을 균등하게 사용하지 않으면 효율성이 떨어지게 된다. Hash functions generate hashes based on the code values of the characters. The input value of the hash function becomes all key values including the key value stored in the overflowed node and the newly entered key value. The code of the corresponding keys (characters) (for example, 16 bits for Hangul completion code and 8 bits for ASCII code) is analyzed and a hash code is formed by uniquely distinguishing characters or selecting bits with high distinction. This is to use the hash buckets of a particular node as evenly as possible (ie, the same number of entries in the buckets as possible). If you don't use hash buckets evenly, you'll lose efficiency.
16비트 문자에 대해 해시코드의 길이가 3이고 해시 비트 위치가 앞부터 12, 13, 15일 경우 해시 테이블의 예는 표 1과 같다. Table 1 shows an example of a hash table when the length of the hash code is 3 for 16-bit characters and the hash bit positions are 12, 13, and 15 from the front.
해시 코드Hash code 해시 코드에 해당하는 문자 코드The character code corresponding to the hash code 해시 버킷 포인터Hash bucket pointer
000000 XXXXXXXXXXX00X0XXXXXXXXXXXX00X0X 0X000000ff0X000000ff
001001 XXXXXXXXXXX00X1XXXXXXXXXXXX00X1X 0X0000ff000X0000ff00
010010 XXXXXXXXXXX01X0XXXXXXXXXXXX01X0X 0X000f00000X000f0000
011011 XXXXXXXXXXX01X1XXXXXXXXXXXX01X1X 0X00f000000X00f00000
100100 XXXXXXXXXXX10X0XXXXXXXXXXXX10X0X 0X0f0000000X0f000000
101101 XXXXXXXXXXX10X1XXXXXXXXXXXX10X1X 0Xf00000000Xf0000000
110110 XXXXXXXXXXX11X0XXXXXXXXXXXX11X0X 0X0000000f0X0000000f
111111 XXXXXXXXXXX11X1XXXXXXXXXXXX11X1X 0X000000f00X000000f0
만일 해시 버킷들이 연속된 공간을 사용하는 경우에는 해시 버킷 포인터는 모든 버킷의 주소들을 저장하지 않고 시작 버킷의 주소만 저장하면 된다. 해시 코드의 크기는 문자들을 구별하는데 사용되는 비트들의 수이다. 해시 코드의 크기는 해시 버킷들의 수를 결정한다(해시 코드 크기가 b이면 해시 버킷의 개수는 2b). 해시 코드는 해당 비트들의 값(비트 스트링)으로 구성된다. 예를 들어, 오버 플로가 발생한 노드의 모든 키값과 자식 노드 포인터를 해시 버킷들에 모두 저장할 수 있도록 해시 버킷의 수를 정할 수 있다. If hash buckets use contiguous space, the hash bucket pointer does not store the addresses of all buckets, only the address of the starting bucket. The size of the hash code is the number of bits used to distinguish the characters. The size of the hash code determines the number of hash buckets (the number of hash buckets is 2 b if the hash code size is b ). The hash code consists of the values (bit strings) of the corresponding bits. For example, the number of hash buckets can be set so that all key values and child node pointers of overflowed nodes can be stored in hash buckets.
여기서는 각 해시 버킷의 크기는 노드의 크기와 동일하다고 가정(다르게 설정할 수도 있다)한다. 최초의 오버플로에서는 m+1 개의 키와 자식 노드 포인터들을 저장할 수 있는 버킷의 개수로부터 시작한다. 노드의 일부를 버킷으로 사용하여 공간을 절약할 수도 있다. 따라서 노드의 일부 공간을 버킷으로 활용할 경우 모든 엔트리들(m+1 게의 쌍)을 저장하는데 추가로 필요한 버킷의 수는 1개일 수도 있으며, 해당 노드의 모든 엔트리들이 해시 키에 의해 구분되어 저장될 수 있는 크기로 결정된다. 해시 코드가 결정되면, 오버플로가 발생한 노드의 모든 엔트리들을 해시 함수를 이용해서 재구성한다. 각 노드마다 해시 키의 길이와 해시 함수, 해시 테이블의 크기, 버킷의 수가 달라질 수 있다. In this case, it is assumed that the size of each hash bucket is the same as the size of the node. The first overflow starts with the number of buckets that can hold m + 1 keys and child node pointers. You can also use some of the nodes as buckets to save space. Therefore, if you use some space of a node as a bucket, the number of additional buckets needed to store all entries (m + 1 crab pairs) may be one, and all entries of the node are stored by hash key. The size is determined. Once the hash code is determined, all entries of the overflowed node are reconstructed using the hash function. Each node can have a different hash key length, hash function, hash table size, and number of buckets.
한편, 해시 함수를 이용하는 노드에서 해시 버킷에 엔트리들이 계속해서 삽입되면 해시 버킷에서도 오버플로가 발생할 수 있다. 이때는 오버플로 해결 방법의 일례로 해시 버킷의 수를 2배로 늘려서 오버플로를 해결할 수 있다. 이에 따라서 해시 코드의 크기도 1씩 증가하게 된다. 본 발명의 다른 실시 예에서, 해시 버킷에 오버플로가 발생한 경우, 오버플로 영역을 할당하여 오버플로 처리를 할 수 있다. 다른 다양한 오버플로 처리 방법을 사용할 수도 있다.On the other hand, if entries are continuously inserted into the hash bucket in the node using the hash function, overflow may occur in the hash bucket. In this case, as an example of the overflow solution, the overflow may be solved by doubling the number of hash buckets. As a result, the size of the hash code is also increased by one. In another embodiment of the present invention, when an overflow occurs in the hash bucket, an overflow area may be allocated to perform an overflow process. You can also use various other overflow handling methods.
도 6은 도 3에서 인덱스 트리 갱신부(330)가 인덱스 트리를 압축한 예를 도시한 것이다.FIG. 6 illustrates an example in which the index tree updater 330 compresses an index tree in FIG. 3.
도 6에서는 어느 노드에 저장된 엔트리들의 크기(노드의 문자들의 수)가 작은 경우에는 자손 노드들까지 자기 노드에 포함시키는 압축 방법을 보여준다.In FIG. 6, when the size of the entries stored in a node (the number of characters in the node) is small, a compression method of including child nodes in its own node is shown.
프리픽스 트리 기반 해시 인덱스를 구축한 후에는 균형 트리(리프노드들간의 레벨의 차가 적은 트리)로 만드는 것이 바람직하다. 불균형 트리(리프노드들간의 레벨의 차가 큰 트리)가 되면 검색 성능이 떨어지기 때문이다.After building the prefix tree-based hash index, it is desirable to create a balanced tree (a tree with a small level difference between leaf nodes). This is because an unbalanced tree (a tree having a large level difference between leaf nodes) degrades search performance.
트리 압축을 위해, 트리를 순회하면서 현재 방문한 노드와 그의 모든 자식 노드들의 크기를 조사한다. 하나의 노드로 통합할 수 있으면 통합한다. 즉, 부모 노드와 모든 자식 노드들이 하나의 노드로 통합될 수 있다. 통합되는 노드들의 엔트리들을 현재 방문한 노드에 삽입하고 엔트리 포인터들을 조정하면 압축 과정이 완료된다. 이 과정을 반복하여 트리의 순회가 끝날 때까지 압축을 계속한다. 따라서 트리의 순회 과정에서 어느 노드의 자식 노드들이 상기 노드에 압축되고, 압축된 자식 노드의 자식 노드들을 상기 노드에 다시 압축하는 과정을 반복하여, 상기 노드의 일부 또는 모든 자손 노드들이 상기 노드로 압축될 수도 있다.For tree compression, we traverse the tree and examine the size of the currently visited node and all of its child nodes. If you can integrate into one node, do so. That is, the parent node and all child nodes can be integrated into one node. The insertion process is completed by inserting the entries of the merged nodes into the currently visited node and adjusting the entry pointers. Repeat this process and continue compacting until the tree traversal is complete. Therefore, in the traversal of the tree, the child nodes of a node are compressed to the node, and the child nodes of the compressed child node are recompressed to the node so that some or all descendant nodes of the node are compressed to the node. May be
압축된 노드(이하 '압축 노드')는 플래그(121, 122)로 표시하여 압축되지 않은 노드와 구별한다. 트리 순회 방식은 트리의 레벨오더(Level Order), 프리오더(PreOrder), 포스트오더(PostOrder) 순회 방식 등을 사용할 수 있다. Compressed nodes (hereinafter referred to as "compressed nodes") are indicated by flags 121 and 122 to distinguish them from uncompressed nodes. The tree traversal method may use a tree level order, a preorder, a postorder traversal method, and the like.
상술한 압축 방법을 트리의 순회를 통해 반복하면 어느 노드를 루트 노드로 하는 서브트리 모두가 하나의 노드로 통합될 수도 있다. 트리 압축을 트리가 구축된 후 실시하거나, 또는 트리의 구축 후에 문자열의 삽입과 삭제가 발생하는 경우에는 트리의 압축을 일정 주기로 수행하여 트리가 적정 성능을 유지할 수 있도록 관리할 수 있다.If the above compression method is repeated through a tree traversal, all of the subtrees whose nodes are root nodes may be integrated into one node. Tree compression can be performed after the tree is constructed, or when string insertion and deletion occurs after tree construction, the tree can be compressed at regular intervals to manage the tree to maintain proper performance.
복수개의 노드들이 압축되어 있는 압축 노드에 새로운 엔트리가 삽입되어 오버플로가 발생하면, 새로운 엔트리 삽입에 필요한 공간 확보를 위해 압축을 해제할 노드를 선택하여 압축 해제하고, 압축 해제된 노드를 트리에 삽입한다. 또는 압축 노드의 복수개의 노드들을 중 일부(적어도 하나)를 선택하여 압축을 해제함으로써 새로운 엔트리 삽입에 필요한 공간을 확보할 수도 있다. 한편 두 개의 노드가 압축된 압축 노드의 경우에 하나의 노드의 압축이 해제되면 모든 압축이 해제되게 된다.If a new entry is inserted into the compression node where multiple nodes are compressed and overflow occurs, select and decompress the node to be decompressed to secure the space required for the new entry, and insert the decompressed node into the tree. do. Alternatively, some (or at least one) of the plurality of nodes of the compression node may be selected and decompressed to secure space for inserting a new entry. Meanwhile, in the case of a compression node in which two nodes are compressed, if one node is decompressed, all compression is decompressed.
도 7은 도 1에서 엔트리를 삭제하는 과정의 상세 흐름도이다.7 is a detailed flowchart of a process of deleting an entry in FIG. 1.
먼저, 엔트리의 삭제가 요청되면 삭제가 요청된 엔트리가 속한 노드(이하, '제2노드')를 검색한다(S760). 삭제 요청된 엔트리는 노드의 엔트리일 수도 있고 해시 버킷의 엔트리일 수도 있다.First, when the deletion of the entry is requested, the node (hereinafter referred to as 'second node') to which the entry requested to be deleted belongs is searched for (S760). The entry requested to be deleted may be an entry of a node or an entry of a hash bucket.
다음, 제2노드에서 삭제가 요청된 엔트리를 삭제한다(S770). 삭제가 요청된 엔트리가 해시 버킷의 엔트리이면 해당 해시 버킷에서 엔트리를 삭제한다. 만일 삭제되는 엔트리가 해시 버킷의 마지막 엔트리이고 해당 버킷의 자식 노드들이 존재하지 않는다면 해당 버킷을 삭제할 수도 있다. Next, the entry requested to be deleted in the second node is deleted (S770). If the entry requested to be deleted is an entry in the hash bucket, the entry is deleted from the hash bucket. If the deleted entry is the last entry of the hash bucket and the child nodes of the bucket do not exist, the bucket may be deleted.
이때, 제2노드가 해시 함수를 이용한 노드인 경우(S781), 제2노드의 전체 엔트리의 수가 사전 설정된 임계값 미만이면(S782), 제2노드의 전체 엔트리로부터 추출된 문자들을 이용하여 제2노드를 재구성한다(S783). 재구성으로 인해 해시 버킷의 수가 줄어들게 되고 해시 코드의 비트 수가 줄어들 수 있다. 엔트리의 삭제로 인해 해시 버킷들의 모든 엔트리들이 하나의 노드에 저장 가능하다면 해시 버킷들을 일반 노드로 변환할 수 있다. 예를 들어, 노드의 해시 플래그를 0으로 설정하고 해시 버킷들의 전체 엔트리들을 노드에 재배치한다. At this time, when the second node is a node using a hash function (S781), if the total number of entries of the second node is less than the preset threshold (S782), the second node using the characters extracted from all entries of the second node; The node is reconfigured (S783). Reconfiguration can reduce the number of hash buckets and reduce the number of bits in the hash code. If the deletion of an entry allows all entries in the hash buckets to be stored on one node, then the hash buckets can be converted to a regular node. For example, set the node's hash flag to 0 and relocate the entire entries of hash buckets to the node.
한편, 제2노드가 해시 함수를 이용한 노드가 아니고 제2노드에 남아있는 엔트리가 없다면(S781, S784), 제2노드의 부모 노드에서 제2노드에 대한 링크를 삭제한다(S785). 예를 들어, 삭제되는 엔트리가 리프 노드의 마지막 엔트리이고 해당 노드의 자식 노드들이 존재하지 않는다면 해당 노드 자체를 삭제할 수 있다. On the other hand, if the second node is not a node using the hash function and no entry remains in the second node (S781, S784), the link to the second node is deleted from the parent node of the second node (S785). For example, if the entry to be deleted is the last entry of a leaf node and the child nodes of the node do not exist, the node itself can be deleted.
도 8은 본 발명의 다른 실시 예에 따른 프리픽스 트리 기반 색인 방법의 흐름도이다.8 is a flowchart of a prefix tree based indexing method according to another embodiment of the present invention.
먼저, 인덱스 트리의 루트부터 시작하여 검색 대상 문자열의 키값들을 해당키의 포인터를 따라가면서 인덱스 트리를 깊이 우선으로 검색한다(S810). 루트 노드부터 시작하여 문자열을 구성하는 각 문자의 키를 순서대로 검색하여 (즉, 문자열의 j번째 문자를 루트 노드로부터 j번째의 노드에서 비교) 해당 키의 포인터를 따라가면서 검색한다. First, starting from the root of the index tree, the index tree is searched for depth first while following key pointers of the search target string along the pointer of the corresponding key (S810). Starting with the root node, the keys of each character that make up the string are searched in order (that is, the jth character of the string is compared from the root node to the jth node), followed by the pointer of the corresponding key.
다음, 검색 중인 노드가 해시 함수를 이용한 노드라고 판단되면(S820), 검색된 노드의 해시 값들에 따라 자식 노드 포인터를 찾는다(S830). 검색 중인 노드가 해시 함수를 이용한 노드인지 판단하기 위해, 각 노드의 해시 플래그를 검사할 수 있다. 예를 들어, 해시 플래그가 0이면 노드의 레벨 L(1 ≤ L)을 문자열의 자리수 p(즉 L=p)로 하고 이에 해당하는 문자(검색하는 문자열의 p번째 문자)를 이용해서 노드를 탐색한다. 해시 플래그가 1이면 해당 노드에서 해시 함수를 이용한 키값의 비교를 통해 엔트리를 찾고 자식 노드 포인터를 따라 탐색을 계속한다. Next, if it is determined that the node being searched is a node using a hash function (S820), a child node pointer is found according to hash values of the found node (S830). To determine whether a node being searched for is a node using a hash function, a hash flag of each node may be examined. For example, if the hash flag is 0, the node's level L (1 ≤ L) is the number of digits p in the string (that is, L = p) and the node is searched for using the corresponding character (the pth character of the string to search for). do. If the hash flag is 1, the node finds the entry by comparing the key value using the hash function and continues searching along the child node pointer.
만일 검색 중인 노드가 압축 노드일 때는 압축 노드에 포함된 노드들 중에서 해당 노드를 선택하여 검색하면 된다.If the node being searched is a compression node, the node may be selected and searched among the nodes included in the compression node.
다음, 단말 노드 또는 내부(비단말) 노드 중에서 찾고자 하는 문자열의 키값이 포함된 목표 노드에 도달하면(S840), 데이터를 추출한다(S850). 검색 문자열의 길이(문자 수)만큼 노드들을 루트 노드로부터 각 노드를 탐색하면서 문자열을 찾지 못하거나 또는 검색 문자열을 찾으면 검색 과정을 종료한다. 문자열의 검색 중 검색 키(문자)에 해당되는 노드의 검색에서 상기 노드에 검색 키가 존재하지 않을 때는 검색을 종료할 수 있으며, 검색 문자열을 찾지 못한 경우에는 검색 실패로 처리한다. 보다 구체적으로, 이 과정(S850)은 자식 노드 포인터가 가리키는 노드가 내부 노드인 경우, 단말 노드 또는 찾고자 하는 문자열의 키값이 포함된 내부 노드가 나올 때까지 자식 노드 포인터가 가리키는 다음 노드로 이동하는 과정을 포함한다. 반면, 찾고자 하는 문자열의 키값이 포함된 노드에 도달하지 못하면(S840), 인덱스 트리 검색 과정을 계속하여 수행한다. Next, when the target node including the key value of the string to be searched among the terminal node or the internal (non-terminal) node is reached (S840), data is extracted (S850). Searching nodes from the root node by the length (number of characters) of the search string does not find the string or terminates the search process if the string is found. If the search key does not exist in the node corresponding to the search key (character) during the search of the string, the search may be terminated. If the search string is not found, the search is treated as a search failure. More specifically, when the node indicated by the child node pointer is an internal node, the process (S850) moves to the next node indicated by the child node pointer until an internal node including a terminal node or a key value of a string to be searched for is found. It includes. On the other hand, if the node including the key value of the string to be found does not reach (S840), the index tree search process is continued.
본 발명은 소프트웨어를 통해 실행될 수 있다. 바람직하게는, 본 발명의 실시 예들에 따른 프리픽스 트리 기반 색인 방법 및 프리픽스 트리 기반 색인 방법을 컴퓨터에서 실행시키기 위한 프로그램을 컴퓨터로 읽을 수 있는 기록매체에 기록하여 제공할 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되거나 전송 매체 또는 통신망에서 반송파와 결합된 컴퓨터 데이터 신호에 의하여 전송될 수 있다.The invention can be implemented via software. Preferably, the prefix tree-based indexing method and the prefix tree-based indexing method according to embodiments of the present invention may be provided by recording a program for executing the program on a computer-readable recording medium. When implemented in software, the constituent means of the present invention are code segments that perform the necessary work. The program or code segments may be stored on a processor readable medium or transmitted by a computer data signal coupled with a carrier on a transmission medium or network.
컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, DVD±ROM, DVD-RAM, 자기 테이프, 플로피 디스크, 하드 디스크(hard disk), 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 장치에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.Computer-readable recording media include all kinds of recording devices that store data that can be read by a computer system. Examples of the computer readable recording medium include ROM, RAM, CD-ROM, DVD 占 ROM, DVD-RAM, magnetic tape, floppy disk, hard disk, optical data storage, and the like. The computer readable recording medium can also be distributed over network coupled computer devices so that the computer readable code is stored and executed in a distributed fashion.
본 발명은 도면에 도시된 일 실시 예를 참고로 하여 설명하였으나 이는 예시적인 것에 불과하며 당해 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 실시 예의 변형이 가능하다는 점을 이해할 것이다. 그리고, 이와 같은 변형은 본 발명의 기술적 보호범위 내에 있다고 보아야 한다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해서 정해져야 할 것이다.Although the present invention has been described with reference to one embodiment shown in the drawings, this is merely exemplary, and it will be understood by those skilled in the art that various modifications and variations may be made therefrom. And, such modifications should be considered to be within the technical protection scope of the present invention. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.
본 발명은 프리픽스 트리 기반 인덱스의 크기가 지나치게 커지는 것을 방지하고 검색 성능을 최적화시킬 수 있는 것으로, 정보 검색 시스템의 단말, 서버 등에 적용될 수 있다.The present invention can prevent the size of the prefix tree-based index from becoming too large and optimize search performance. The present invention can be applied to a terminal, a server, and the like of an information retrieval system.
도 1은 본 발명의 일 실시 예에 따른 인덱스 트리의 예를 도시한 것이다.1 illustrates an example of an index tree according to an embodiment of the present invention.
도 2는 도 1의 인덱스 트리에 새로운 문자들이 삽입되는 경우 오버플로우가 발생하는 것을 도시한 것이다.FIG. 2 illustrates that overflow occurs when new characters are inserted into the index tree of FIG. 1.
도 3은 본 발명의 일 실시 예에 따른 프리픽스 트리 기반 색인 장치의 블록도이다.3 is a block diagram of a prefix tree based indexing apparatus according to an embodiment of the present invention.
도 4는 본 발명의 일 실시 예에 따른 프리픽스 트리 기반 색인 방법의 흐름도이다.4 is a flowchart of a prefix tree based indexing method according to an embodiment of the present invention.
도 5는 도 2에서 특정 노드를 해시 테이블로 변환한 경우를 도시한 것이다.FIG. 5 illustrates a case where a specific node is converted into a hash table in FIG. 2.
도 6은 도 3에서 인덱스 트리 갱신부(330)가 인덱스 트리를 압축한 예를 도시한 것이다.FIG. 6 illustrates an example in which the index tree updater 330 compresses an index tree in FIG. 3.
도 7은 도 1에서 엔트리를 삭제하는 과정의 상세 흐름도이다.7 is a detailed flowchart of a process of deleting an entry in FIG. 1.
도 8은 본 발명의 다른 실시 예에 따른 프리픽스 트리 기반 색인 방법의 흐름도이다.8 is a flowchart of a prefix tree based indexing method according to another embodiment of the present invention.

Claims (13)

  1. 문서에 포함된 키워드 또는 인덱싱할 문장의 프리픽스에 따라 인덱스 트리를 관리하는 방법에 있어서,A method of managing an index tree according to a keyword included in a document or a prefix of a sentence to be indexed,
    상기 인덱스 트리에서 문자가 삽입될 제1노드를 검색하는 단계;Searching for a first node to be inserted with a character in the index tree;
    상기 제1노드가 포화 상태가 아니면 상기 문자를 상기 제1노드에 새로운 엔트리로 삽입하는 단계; 및Inserting the character into the first node as a new entry if the first node is not saturated; And
    상기 제1노드가 포화 상태이면, 상기 문자와 상기 제1노드의 키값 및 자식 노드 포인터를 해시 버킷에 저장하여 상기 제1노드를 해시 테이블로 변환하는 단계를 포함하는, 프리픽스 트리 기반 색인 방법.If the first node is saturated, storing the character, the key value of the first node, and a child node pointer in a hash bucket to convert the first node into a hash table.
  2. 제 1 항에 있어서,The method of claim 1,
    엔트리의 삭제가 요청되면, 삭제가 요청된 엔트리가 속한 제2노드를 검색하는 단계; 및 상기 삭제가 요청된 엔트리만 삭제하는 단계를 더 포함하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 방법.If deletion of the entry is requested, searching for a second node to which the entry requested to be deleted belongs; And deleting only the entries for which the deletion is requested.
  3. 제 2 항에 있어서,The method of claim 2,
    상기 제2노드가 해시 함수를 이용한 노드가 아니고 상기 제2노드에 남아있는 엔트리가 없다면, 상기 제2노드의 부모 노드에서 상기 제2노드에 대한 링크를 삭제하는 단계를 더 포함하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 방법.If the second node is not a node using a hash function and there is no entry remaining in the second node, deleting the link to the second node from the parent node of the second node. Prefix tree based indexing method.
  4. 제 2 항에 있어서,The method of claim 2,
    상기 제2노드가 해시 함수를 이용한 노드인 경우, 상기 제2노드의 전체 엔트리의 수가 임계값 미만이면, 상기 제2노드의 전체 엔트리로부터 추출된 문자들을 이용하여 상기 제2노드를 재구성하는 단계를 더 포함하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 방법.If the second node is a node using a hash function, if the total number of entries of the second node is less than a threshold, reconfiguring the second node using characters extracted from all entries of the second node. Further comprising a prefix tree based indexing method.
  5. 제 1 항에 있어서,The method of claim 1,
    상기 제1노드에 삽입하는 단계 및 상기 제1노드를 해시 테이블로 변환하는 단계는Inserting into the first node and converting the first node into a hash table
    상기 제1노드의 해시 플래그를 검사하여 상기 제1노드가 해시 함수를 이용한 노드인지 판단하는 단계를 포함하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 방법.And determining whether the first node is a node using a hash function by checking a hash flag of the first node.
  6. 제 1 항에 있어서,The method of claim 1,
    상기 제1노드가 해시 함수를 이용한 노드이면서 포화 상태이면, 상기 해시 버킷의 수를 증가시켜 상기 프리픽스 문자를 해시 버킷에 저장하는 단계를 더 포함하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 방법.And increasing the number of hash buckets and storing the prefix characters in a hash bucket if the first node is a node using a hash function and is saturated.
  7. 문서에 포함된 키워드 또는 인덱싱할 문장의 프리픽스에 따라 인덱스 트리를 검색하는 방법에 있어서,A method for searching an index tree according to a keyword included in a document or a prefix of a sentence to be indexed,
    상기 인덱스 트리의 루트부터 시작하여 검색 대상 문자열의 키값들을 해당키의 포인터를 따라가면서 상기 인덱스 트리에서 깊이 우선으로 검색하는 단계;Starting from the root of the index tree and searching for key values of a search target string in depth index in the index tree while following a pointer of the corresponding key;
    검색 중인 노드가 해시 함수를 이용한 노드라고 판단되면, 상기 검색된 노드의 해시 값들에 따라 자식 노드 포인터를 찾는 단계; 및If it is determined that the node being searched is a node using a hash function, finding a child node pointer according to the hash values of the found node; And
    상기 자식 노드 포인터에 따른 단말 노드에서 데이터를 추출하는 단계를 포함하는, 프리픽스 트리 기반 색인 방법.And extracting data from the terminal node according to the child node pointer.
  8. 제 7 항에 있어서,The method of claim 7, wherein
    상기 데이터를 추출하는 단계는Extracting the data
    상기 자식 노드 포인터가 가리키는 노드가 내부 노드인 경우, 단말 노드가 나올 때까지 상기 자식 노드 포인터가 가리키는 다음 노드로 이동하는 단계를 포함하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 방법.And if the node indicated by the child node pointer is an internal node, moving to the next node indicated by the child node pointer until a terminal node emerges.
  9. 제 7 항에 있어서,The method of claim 7, wherein
    상기 자식 노드 포인터를 찾는 단계는Finding the child node pointer is
    상기 인덱스 트리를 깊이 우선으로 검색하면서 각 노드의 해시 플래그를 검사하여 해당 노드가 해시 함수를 이용한 노드인지 판단하는 단계를 포함하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 방법.And checking the hash flag of each node while searching the index tree in depth first to determine whether the node is a node using a hash function.
  10. 제1항 내지 제9항 중 어느 한 항의 방법을 컴퓨터 시스템에서 실행하기 위한 프로그램이 기록된, 컴퓨터 시스템이 판독할 수 있는 기록매체.A computer-readable recording medium having recorded thereon a program for executing the method of claim 1 on a computer system.
  11. 정보 검색 시스템에서 문서에 포함된 키워드 또는 인덱싱할 문장의 프리픽스에 따라 인덱스 트리를 관리하는 장치에 있어서,An apparatus for managing an index tree according to a keyword included in a document or a prefix of a sentence to be indexed in an information retrieval system,
    상기 인덱스 트리를 저장하는 메모리부;A memory unit for storing the index tree;
    상기 인덱스 트리에서 문자가 삽입될 제1노드를 검색하는 노드 검색부; 및A node searcher for searching for a first node into which a character is to be inserted in the index tree; And
    상기 제1노드가 포화 상태가 아니면 상기 문자를 상기 제1노드에 새로운 엔트리로 삽입하고, 상기 제1노드가 포화 상태이면 상기 문자와 상기 제1노드의 키값 및 자식 노드 포인터를 해시 버킷에 저장하여 상기 제1노드를 해시 테이블로 변환하는 인덱스 트리 갱신부를 포함하는, 프리픽스 트리 기반 색인 장치.If the first node is not saturated, the character is inserted into the first node as a new entry. If the first node is saturated, the character and key value of the first node and a child node pointer are stored in a hash bucket. An prefix tree based indexing apparatus, comprising: an index tree updater configured to convert the first node into a hash table.
  12. 제 11 항에 있어서,The method of claim 11,
    상기 인덱스 트리 갱신부는The index tree update unit
    상기 인덱스 트리의 노드들을 순회하면서 현재 노드 및 자식 노드의 통합 가능 여부를 검사하고, 통합 가능한 경우 상기 자식 노드의 엔트리들을 상기 현재 노드에 통합하면서 상기 현재 노드의 압축 플래그를 변경하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 장치.Checking whether the current node and the child node can be merged while traversing the nodes of the index tree, and changing the compression flag of the current node while integrating the entries of the child node into the current node if possible. Prefix tree based indexing device.
  13. 제 12 항에 있어서,13. The method of claim 12,
    상기 인덱스 트리 갱신부는The index tree update unit
    복수개의 노드들이 압축되어 있는 압축 노드가 포화 상태에서 새로운 엔트리가 삽입되는 경우, 상기 복수의 노드 중 적어도 일부의 노드를 압축 해제한 후, 상기 압축이 해제된 노드를 상기 인덱스 트리에 삽입하는 것을 특징으로 하는, 프리픽스 트리 기반 색인 장치.When a new entry is inserted while a compressed node in which a plurality of nodes are compressed is saturated, after decompressing at least some nodes of the plurality of nodes, the decompressed node is inserted into the index tree. Prefix tree-based indexing device.
KR20090117015A 2009-11-30 2009-11-30 Method and apparatus for prefix tree based indexing, and recording medium thereof KR101089722B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20090117015A KR101089722B1 (en) 2009-11-30 2009-11-30 Method and apparatus for prefix tree based indexing, and recording medium thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20090117015A KR101089722B1 (en) 2009-11-30 2009-11-30 Method and apparatus for prefix tree based indexing, and recording medium thereof

Publications (2)

Publication Number Publication Date
KR20110060428A true KR20110060428A (en) 2011-06-08
KR101089722B1 KR101089722B1 (en) 2011-12-07

Family

ID=44395202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20090117015A KR101089722B1 (en) 2009-11-30 2009-11-30 Method and apparatus for prefix tree based indexing, and recording medium thereof

Country Status (1)

Country Link
KR (1) KR101089722B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710833A (en) * 2018-12-29 2019-05-03 上海蜜度信息技术有限公司 For determining the method and apparatus of content node

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710833A (en) * 2018-12-29 2019-05-03 上海蜜度信息技术有限公司 For determining the method and apparatus of content node
CN109710833B (en) * 2018-12-29 2021-07-16 上海蜜度信息技术有限公司 Method and apparatus for determining content node

Also Published As

Publication number Publication date
KR101089722B1 (en) 2011-12-07

Similar Documents

Publication Publication Date Title
US8838551B2 (en) Multi-level database compression
US9195738B2 (en) Tokenization platform
US8554561B2 (en) Efficient indexing of documents with similar content
US6470347B1 (en) Method, system, program, and data structure for a dense array storing character strings
US7222129B2 (en) Database retrieval apparatus, retrieval method, storage medium, and program
US7756859B2 (en) Multi-segment string search
CN107153647B (en) Method, apparatus, system and computer program product for data compression
US8266150B1 (en) Scalable document signature search engine
EP3435256A2 (en) Optimal sort key compression and index rebuilding
Flor A fast and flexible architecture for very large word n-gram datasets
US8140546B2 (en) Computer system for performing aggregation of tree-structured data, and method and computer program product therefor
JP4237813B2 (en) Structured document management system
KR101089722B1 (en) Method and apparatus for prefix tree based indexing, and recording medium thereof
CN102867049B (en) Chinese PINYIN quick word segmentation method based on word search tree
Amir et al. Efficient randomized dictionary matching algorithms
Nilsson et al. An experimental study of compression methods for dynamic tries
KR100999408B1 (en) Method for searching an ??? using hash tree
Belazzougui et al. Compressed string dictionary look-up with edit distance one
Navarro et al. Practical indexing of repetitive collections using Relative Lempel-Ziv
CN109885641B (en) Method and system for searching Chinese full text in database
Belazzougui et al. Compressed string dictionary search with edit distance one
JP2007133682A (en) Full text retrieval system and full text retrieval method therefor
KR102013839B1 (en) Method and System for Managing Database, and Tree Structure for Database
Boytsov Super-linear indices for approximate dictionary searching
Petri et al. Efficient indexing algorithms for approximate pattern matching in text

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: 20141121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151027

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161102

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171103

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181031

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20191105

Year of fee payment: 9