KR20170005428A - A method of searching text based on two computer hardware processing properties: indirect memory addressing and ascii encoding - Google Patents

A method of searching text based on two computer hardware processing properties: indirect memory addressing and ascii encoding Download PDF

Info

Publication number
KR20170005428A
KR20170005428A KR1020167033202A KR20167033202A KR20170005428A KR 20170005428 A KR20170005428 A KR 20170005428A KR 1020167033202 A KR1020167033202 A KR 1020167033202A KR 20167033202 A KR20167033202 A KR 20167033202A KR 20170005428 A KR20170005428 A KR 20170005428A
Authority
KR
South Korea
Prior art keywords
word
memory
memory bank
data
search
Prior art date
Application number
KR1020167033202A
Other languages
Korean (ko)
Inventor
칼리드 오마르 타빗
Original Assignee
칼리드 오마르 타빗
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 칼리드 오마르 타빗 filed Critical 칼리드 오마르 타빗
Publication of KR20170005428A publication Critical patent/KR20170005428A/en

Links

Images

Classifications

    • G06F17/30988
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • G06F16/902Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90348Query processing by searching ordered data, e.g. alpha-numerically ordered data

Abstract

메모리 뱅크를 이용하여 실시간 데이터-집약적 검색 애플리케이션을 위한 대형 데이터 세트에서 단어 또는 단어 세트를 검색 및 삽입하는 방법 및 프로세스가 개시된다. 전통적인 검색 방법은 빠른 검색을 실현할 수 있도록 데이터를 사전-소팅함으로써 시간 및 공간을 최적화한다. 불행하게도, 실시간 검색 집약 애플리케이션에서, 단어 또는 단어 세트의 소팅 및 검색을 하기 위해 거래가 일어나고 있는 동안 실시간으로 데이터 세트의 스냅샷을 찍는 것이 거의 불가능하다. 본 방법 및 프로세스는 데이터의 사전-소팅 요건없이 데이터를 실시간으로 검색하기 위한 정렬되지 않은 리스트를 이용하는 혁신적 방식이다. 제안되는 방법의 시간 복잡도는 매우 빠르다. 추가적으로, 제안되는 방법은 메모리 뱅크에서의 간접적 어드레싱을 이용하여 코드 복잡도 및 시간을 감소시키는 삽입 및 검색을 행한다. A method and process for retrieving and inserting a word or set of words in a large data set for a real-time data-intensive search application using a memory bank is disclosed. Traditional search methods optimize time and space by pre-sorting the data to achieve faster searches. Unfortunately, in a real-time search intensive application, it is almost impossible to take a snapshot of a data set in real time while a transaction is taking place to sort and search for a word or set of words. The method and process is an innovative approach to using an unordered list to retrieve data in real time without pre-sorting the data. The time complexity of the proposed method is very fast. Additionally, the proposed method utilizes indirect addressing in a memory bank to perform insertion and retrieval that reduces code complexity and time.

Figure P1020167033202
Figure P1020167033202

Description

간접적 메모리 어드레싱 및 ASCII 인코딩의 2개의 컴퓨터 하드웨어 프로세싱 성질에 기초한 텍스트 검색 방법 {A METHOD OF SEARCHING TEXT BASED ON TWO COMPUTER HARDWARE PROCESSING PROPERTIES: INDIRECT MEMORY ADDRESSING AND ASCII ENCODING}TECHNICAL FIELD The present invention relates to a text retrieval method based on two computer hardware processing properties of indirect memory addressing and ASCII encoding. BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a text retrieval method based on two computer hardware processing properties of indirect memory addressing and ASCII encoding.

본 발명은 2개의 컴퓨터 하드웨어 프로세싱 성질 - 간접 메모리 어드레싱 및 ASCII 인코딩 - 을 이용하여 고속 메모리 뱅크 내 단어들의 리스트를 삽입, 저장, 및 검색하기 위한 방법 및 프로세스에 관한 것이다. The present invention relates to a method and a process for inserting, storing and retrieving a list of words in a high speed memory bank using two computer hardware processing properties - indirect memory addressing and ASCII encoding.

검색은 컴퓨팅시 매우 기본적인 작동으로서, 속성들의 대형 컬렉션 내에서 일 속성을 발견하는데 사용된다. 예를 들어, 숫자들의 집합 내에서 하나의 숫자가 검색될 수 있고, 또는, 데이터베이스 내 단어들의 집합 내에서 일 단어가 검색될 수 있다. Search is a very basic operation in computing, and is used to find work attributes within a large collection of attributes. For example, a single number may be retrieved within a set of numbers, or a single word may be retrieved within a set of words within the database.

검색 방법은, 일반적으로, 속성을 검색하는 애플리케이션들이 검색을 통해 다시 획득되는 답변에 의해 게이팅되기 때문에 빨라야할 필요가 있다. 예를 들어, 검색이 성공적일 경우, 로직은 검색이 성공적이지 않을 때에 비해 소정의 액션들의 코스를 따른다. The search method generally needs to be fast because the applications that retrieve the attributes are gated by the answers that are retrieved again through the search. For example, if the search is successful, the logic follows a course of predetermined actions rather than when the search is unsuccessful.

인기있는 검색법은 이진 검색을 포함한다. 그러나, 이진 검색은 데이터의 사전-처리, 통상적으로 소팅을 필요로한다. 이전 검색과 같은 방법은 완전하고 안정한 데이터에 대해 작동할 때 매우 좋다. (크기 N의) 데이터가 정렬(ordering)될 때 이들은 로그(N) 속도를 실현한다. 그러나, 많은 데이터-집약적 애플리케이션들이 진화하고 있고, 라인을 그려서 검색 용도로 작동시키도록 데이터의 스냅샷을 취하는 것이 매우 어렵다. Popular searches include binary searches. However, binary retrieval requires pre-processing of the data, typically sorting. The same method as the previous search is very good when working with complete and stable data. When data (of size N) are ordered, they realize the log (N) rate. However, many data-intensive applications are evolving and it is very difficult to take a snapshot of the data to draw lines and operate them for retrieval purposes.

데이터 집약적 일부 애플리케이션들은 뱅킹, 항공 및 호텔 예약과 같은 분야에 속한다. 뱅킹 거래는 연속적으로 나타나고, 특정 정보에 대한 검색이 병렬로 나타난다. 예를 들어, 신용 카드사 및 대학과 같은 애플리케이션에서, 새 레코드가 항시 추가된다. 소팅된 데이터에 따라 좌우되는 검색 방법에 의해 작동되도록 소팅 및 리소팅하는 것은 성가신 일이다. Some data intensive applications are in areas such as banking, airline and hotel reservations. Banking transactions appear continuously, and searches for specific information appear in parallel. For example, in applications such as credit card companies and universities, new records are always added. It is cumbersome to sort and resort to operate by the search method depending on the sorted data.

대부분의 산업들은, 거래 중 인터럽션이 나타나지 않도록, 스냅샷을 취함으로써 기결정된 시간 슬롯(예 - 야간)에 데이터를 소팅한다. 불행하게도, 소팅된 리스트는 최신 리스트가 아닐 것이다. Most industries sort data in a predetermined time slot (eg, night) by taking a snapshot so that no interruption occurs during the transaction. Unfortunately, sorted lists are not up-to-date lists.

이에 반해, 리스트를 항시 소팅된 상태로 유지하는 것은 물론 어려운데, 이는 새 아이템을 소팅된 리스트에 삽입하는 것에 시간이 걸리기 때문이다. 애플리케이션들이 수백만개의 거래를 가질 때, 최적 검색 용도로 정보를 방금 소팅된 상태로 유지하는데 시간을 투자하는 것이 매우 어렵다. 시간, 전력, 및 컴퓨터 메모리 최소화를 위해 상이한 검색 방법이 필요하다. In contrast, it is difficult to keep the list always sorted, because it takes time to insert the new item into the sorted list. When applications have millions of transactions, it is very difficult to invest the time to keep the information just sorted for optimal retrieval purposes. Different search methods are needed for time, power, and computer memory minimization.

본 개시에서, 프로세서 또는 컴퓨터 하드웨어에 위치하는 메모리 뱅크에 저장되는 단어들의 리스트 내 단어를 삽입 및 검색하는 신규한 방법 및 프로세스가 설명된다. 일 실시예에서, 메모리 뱅크를 이용하여 인덱스 기반 어레이에 단어를 삽입하는 방법이 이루어진다. 다른 실시예에서, 동일 인덱스 기반 어레이로부터 단어의 검색 방법이 실현되며, 따라서, 어레이 검색 전에 소팅 작업을 수행할 필요가 없어진다. In the present disclosure, novel methods and processes for inserting and retrieving words in a list of words stored in a memory bank located in a processor or computer hardware are described. In one embodiment, a method of inserting words into an index-based array using a memory bank is provided. In another embodiment, a method of retrieving words from the same index-based array is realized, thus eliminating the need to perform sorting operations prior to array retrieval.

일 실시예에서, 삽입 및 검색을 위한 ASCII 인코딩 및 간접적 메모리 액세스를 이용하기 위한 방법 및 프로세스가 설명된다. 최소 요건은 적어도 256 바이트 크기의 메모리 뱅크에 대한 액세스를 갖는 것이다. 일 실시예에서, 우리는 메모리 뱅크를 2개의 메모리 뱅크로 나누었고, 예를 들어 우리는 그걸 메모리 뱅크 A 및 메모리 뱅크 B로 부른다. 일 실시예에서, 우리는 모든 엔트리를 0으로 설정함으로써 메모리 A 및 B를 초기화한다. 삽입 방법은 검색 방법이 메모리 판독일 때 메모리 쓰기다. In one embodiment, methods and processes for utilizing ASCII encoding and indirect memory access for insertion and retrieval are described. The minimum requirement is to have access to a memory bank of at least 256 bytes in size. In one embodiment, we divide the memory bank into two memory banks, for example we call it memory bank A and memory bank B. In one embodiment, we initialize memory A and B by setting all entries to zero. The inserting method is the memory method when the memory method is used for memory retrieval.

본 삽입 방법 및 프로세스에서, 일 실시예에서, 제 1 단계는 메모리 뱅크 B에 모든 단문자(single character)의 기록을 시작함으로써 실현된다. 그 후, 다음 단계는, 메모리 뱅크 B에서 제 1 문자의 ASCII 코드를 판독하는 것이다. 메모리 뱅크 A의 인접 어드레스들은 특정 순서로 모든 ASCII 코드를 표시한다. 제 2 단계로서, 발생할 제 1 문자임을 표시하는 값 1로 제 1 문자의 ASCII 코드에 의해 설정된 위치에서, 메모리 뱅크 A에 기록을 한다. 다시 메모리 뱅크 B에 제 2 문자의 ASCII 코드를 찾아내고, ASCII 코드에 의해 설정된 메모리 위치에서 그 값 2를 메모리 뱅크 A에 기록한다. 메모리 뱅크 B 내 모든 문자들의 판독과, ASCII 코드에 의해 설정된 어드레스에 메모리 뱅크 A 내 대응 위치를 기록한다. In this insertion method and process, in one embodiment, the first step is realized by initiating the recording of all single characters in memory bank B. Then, the next step is to read the ASCII code of the first character in the memory bank B. [ Adjacent addresses in memory bank A represent all ASCII codes in a particular order. As the second step, the data is written in the memory bank A at the position set by the ASCII code of the first character with the value 1 indicating that the first character is to occur. The ASCII code of the second character is found in the memory bank B again and the value 2 is written to the memory bank A at the memory position set by the ASCII code. The reading of all the characters in the memory bank B and the corresponding position in the memory bank A are written to the address set by the ASCII code.

제 3 단계에서, 삽입 방법 및 프로세스로, 단어 내 존재하는 모든 2 문자 음절이 메모리 뱅크 B 및 A에 각각 삽입된다. 한 예로서, 어드레스 기록 작동의 경우, 2 문자 음절의 경우에, 우리는 메모리 블록 B 내 문자의 수와 등가일 수 있는 메모리 블록 A의 수를 필요로한다. 추가 단계로서, 첫번째 2개의 문자 음절의 판독이 이루어지며, 그 후, 제 1 문자의 ASCII 코드의 결정이 수행된다. 이러한 ASCII 코드는 이러한 2문자 음절의 위치가 위치하도록 메모리 블록 번호를 결정한다. 제 2 문자의 ASCII 값을 얻기 위해, 이 값은 선택된 메모리 블록 내 어드레스를 부여한다. 여기서 두 문자 음절의 어드레스가 본 메모리 블록에 기록된다. In a third step, with the insertion method and the process, all two-letter syllables present in the word are inserted into memory banks B and A, respectively. As an example, in the case of an address write operation, in the case of a two letter syllable, we need the number of memory blocks A that can be equal to the number of characters in memory block B. As a further step, a reading of the first two letter syllables is made, and then the determination of the ASCII code of the first character is performed. These ASCII codes determine the memory block number so that the positions of these two letter syllables are located. To obtain the ASCII value of the second character, this value gives the address in the selected memory block. Here, the addresses of two character syllables are recorded in the present memory block.

제 4 단계에서, 다수의 메모리 뱅크 내 모든 3문자 음절들이 또한 삽입 및 기록된다. 이러한 3문자 음절의 어드레스 기록을 위해, 우리는 모든 2문자 음절의 수와 대등한 다수의 메모리 블록을 필요로한다. 첫번째 2 문자를 판독하고, 그 후, 앞선 단락에서 이루어지는 바와 같이 2 문자 음절의 어드레스를 얻는다. 메모리 뱅크 수 결정을 위해 판독된 값을 이용하여, 3개의 철자 음절의 어드레스가 위치한다. ASCII 값은 선택된 메모리 뱅크 내 위치를 결정하고, 3문자 음절의 어드레스가 배치될 것이다. In a fourth step, all three letter syllables in a number of memory banks are also inserted and recorded. For address recording of these three letter syllables, we need a number of memory blocks equal to the number of all two letter syllables. The first two characters are read, and then the address of the two-letter syllable is obtained as in the preceding paragraph. Using the values read to determine the number of memory banks, the addresses of the three spelling syllables are located. The ASCII value determines the location in the selected memory bank, and the address of the three letter syllable will be placed.

이러한 판독 및 기록 프로세스는 모든 크기의 모든 음절이 판독되고 그 위치가 기록되어 이들이 명시한 위치로 기록될 때까지 이러한 판독 및 기록 프로세스가 계속된다. 길이 N의 음절의 경우에, 길이 N-1의 음절의 어드레스와 대등한 메모리 블록 내에서 어드레스가 기록될 것이다. 문자 N의 ASCII는, N개의 문자를 가진 음절의 어드레스가 위치하도록 선택된 메모리 블록 내 위치를 결정한다. This reading and writing process continues this reading and writing process until all syllables of all sizes have been read and their positions recorded and written to the specified location. In the case of a syllable of length N, the address will be recorded in a memory block equal to the address of the syllable of length N-1. ASCII of the letter N determines the position in the selected memory block so that the address of the syllable having N characters is located.

일 실시예에서, 검색이 수행되고, 검색은 역방향 삽입 작동이다. 예를 들어, N 문자 음절이 주어졌을 때, 우리는 먼저, 메모리 블록 B 내 위치에 도달하기 위해 메모리 블록 A 내 ASCII 코드를 이용하여 그 첫번째 2 문자 음절의 위치를 얻는다. 2문자 음절의 위치를 판독하기 위해 이러한 2 위치 값을 이용한다. 제 3 문자의 위치와 함께 2문자 음절의 위치를 이용하여, 3문자 음절의 위치를 얻을 수 있다. 다시, 제 4 문자의 위치와 함께, 3개의 문자 음절의 위치를 이용하여, 우리는 4문자 음절의 위치를 얻는다. 검색은 길이 N의 음절 위치에 도달할 때까지, 간접적 메모리 어드레싱 및 ASCII 인코딩 방법을 이용하여 계속된다. 그 값이 0이 아닐 경우, 이 음절이 발견되고, 그 위치가 주어지며, 그렇지 않을 경우 값은 0이고 음절은 발견되지 않는다. In one embodiment, a search is performed, and the search is a reverse insertion operation. For example, given an N-letter syllable, we first use the ASCII code in memory block A to arrive at the location in memory block B to obtain the position of the first two-letter syllable. These two position values are used to read the position of the two-character syllable. The position of the three-letter syllable can be obtained by using the position of the two-letter syllable with the position of the third character. Again, with the position of the fourth character, using the position of the three character syllables, we obtain the position of the four-letter syllable. The search continues using an indirect memory addressing and ASCII encoding method until a syllable position of length N is reached. If the value is not zero, this syllable is found and its position is given; otherwise, the value is zero and syllables are not found.

포괄 검색 방법(generic search method)은 정렬된 삽입 기술을 이용하며, 삽입은 제대로 단어를 배치시키는데 시간이 걸린다. 본 기술은 검색 프로세스 중 이러한 지연을 제공할 수 없도록 보다 더 많은 수의 거래를 수반하는 애플리케이션 및 데이터 구조들을 구축하기위해 시간을 소요한다. The generic search method uses aligned insertion techniques, and insertion takes time to properly place words. The technology takes time to build applications and data structures that involve a greater number of transactions so as not to be able to provide this delay during the search process.

포괄 검색 방법은 단어 또는 단어 그룹을 검색하며, 이러한 데이터가 소팅을 통해 정렬되어 빠른 검색이 실현될 수 있다고 가정한다. 예를 들어, 이미 정렬된 또는 소팅된 데이터 그룹의 이진 검색 방법이 효율적이다. 그러나, 소팅을 통해 데이터를 정렬시키는 것은 시간이 걸린다. 검색 엔진과 같은 값비싼 검색 애플리케이션들이 항시 최신으로 정렬된 데이터를 유지시키도록 제공될 수 없다. The global search method searches for a word or a group of words, and assumes that such data can be sorted through sorting to enable fast searching. For example, a binary search method of already sorted or sorted data groups is efficient. However, it takes time to sort the data through sorting. Costly search applications such as search engines can not always be provided to keep the latest sorted data.

포괄 검색 방법은 단어들의 집합이 특정 단어에 대해 검색되어야할 경우에, 메모리 뱅크를 이용하여 단어들의 어레이 또는 단일 소팅된 데이터 구조를 지닌다. 우리의 제안 방법에서, 효율적 메모리 뱅크에 저장되는 복수 개수의 어레이가 검색 프로세스용으로 사용된다. 메모리 뱅크를 통한 일 어레이가 검색될 단어의 저장에 사용되고, 다차원 어레이는 모든 단어, 음절 및 문자의 위치 저장에 사용된다. The global search method has an array of words or a single sorted data structure using a memory bank when a set of words is to be searched for a particular word. In our proposed method, a plurality of arrays stored in an efficient memory bank are used for the retrieval process. One array through the memory bank is used to store the words to be searched, and a multidimensional array is used to store the positions of all words, syllables, and characters.

제안 방법에서, 단어를 데이터 구조에 삽입시키는 것과, 데이터 구조 내 단어의 검색이 취급된다. 단어는 길이 1, 길이 2, 또는 최대구별가능값(MaxDist) 미만으로 분류된다. MaxDist는 이미 존재하고 있는 검색 단어의 가장 긴 일치 요건의 길이다. In the proposed method, the insertion of a word into a data structure and the retrieval of a word in the data structure are handled. A word is classified as length 1, length 2, or less than the maximum distinguishable value (MaxDist). MaxDist is the longest matching requirement of an already existing search word.

도 1은 검색 작동의 하이 레벨 아키텍처를 도시하며, 속성들의 집합 가운데서 일 속성을 검색하기 위해 일 검색 방법이 사용된다.
도 2는 포괄 검색 방법을 도시하며, 애플리케이션으로부터의 입력이 정렬되지 않은 데이터 구조에 먼저 삽입된다. 데이터 구조는 포괄 검색 방법이 속성 발견을 위해 해당 데이터에 대해 작동하기 전에 사전-소팅된다.
도 3은 제안되는 고속 인덱스 기반 검색 방법을 보여주며, 이 경우 단어들은 메모리 뱅크에 기초하여 음절 및 문자 위치로 메인 어레이에 저장된다.
도 4는 메인 어레이 메모리 뱅크 충전을 위한 제안 방법을 보여준다.
도 5는 메인 어레이에 삽입 전 단어의 최대 구별가능 길이를 찾아내는 과정을 보여준다.
도 6은 최대 구별가능 길이를 찾은 후 메인 어레이 충전 방법을 보여준다.
도 7은 다양한 크기의 단어 삽입을 위한 과정을 보여준다.
도 8은 단문자 음절 삽입을 위한 과정을 보여준다.
도 9는 1보다 큰 길이의 음절 삽입 과정을 보여준다.
도 10은 제 1 음절 후 음절의 추출을 도시한다.
도 11은 최종 음절 추출 과정을 도시한다.
도 12는 다양한 음절 및 단어를 저장하기 위한 데이터 구조를 도시한다.
도 13은 단문자 음절의 삽입 프로세스를 예를 이용하여 도시한다.
도 14는 메인 어레이 메모리 뱅크에 새 단어의 삽입을 예를 이용하여 도시한다.
도 15는 단문자로 이루어지지 않은 새 단어들의 삽입을 예를 이용하여 도시한다.
도 16은 새 단어의 검색 프로세스를 예를 이용하여 도시한다.
도 17은 일 실시예에 따라, 여기서 개시되는 실시예들을 수행할 수 있는 컴퓨터 디바이스 도면의 개략적 시스템도다.
도 18은 하나 이상의 실시예에 따른, 삽입 및 검색 방법을 처리하기 위한 전체 시스템을 보여준다.
Figure 1 illustrates a high-level architecture of search operations in which one search method is used to search for one attribute among a set of attributes.
Figure 2 shows a generic search method in which the input from an application is first inserted into an unordered data structure. The data structure is pre-sorted before the generic search method operates on the data for property discovery.
Figure 3 shows a proposed fast index based search method in which words are stored in the main array at syllable and character positions based on memory banks.
4 shows a proposed method for charging a main array memory bank.
Figure 5 shows the process of finding the maximum distinguishable length of a word before insertion into the main array.
Figure 6 shows a method of charging the main array after finding the maximum distinguishable length.
FIG. 7 shows a process for inserting words of various sizes.
FIG. 8 shows a process for inserting a single character syllable.
FIG. 9 shows a syllable inserting process with a length greater than one.
Fig. 10 shows the extraction of syllables after the first syllable.
11 shows a final syllable extraction process.
12 shows a data structure for storing various syllables and words.
FIG. 13 shows an example of a process for inserting a single character syllable.
14 shows an example of insertion of a new word into the main array memory bank.
FIG. 15 shows an example of insertion of new words that are not made up of single letters.
Fig. 16 shows an example of a search process of a new word.
17 is a schematic system diagram of a computer device diagram capable of performing the embodiments disclosed herein, in accordance with one embodiment.
18 shows an overall system for processing an insertion and retrieval method, in accordance with one or more embodiments.

본 개시는 일 단어 또는 단어 그룹의 삽입 및 검색을 빠르게 수행하기 위한 방법 및 프로세스에 관한 것이다. 특히, 단어 또는 철자 그룹 또는 단어 그룹에 대해 각각의 문자에 대한 ASCII 값을 효율적으로 레코딩 및 할당하는데 메모리 뱅크가 사용된다. 삽입 및 검색 방법 및 프로세스 동안 데이터에 소팅이 없다. The present disclosure relates to methods and processes for quickly performing insertion and retrieval of a word or group of words. In particular, a memory bank is used to efficiently record and assign ASCII values for each character for a word or spelling group or group of words. There is no sorting of data during insertion and retrieval methods and processes.

현재 당해 업계 상태에서, 소팅은 메모리를 최소화시키기 위한 프리커서로 도입된다. 그러나 메모리는 최근에 저렴해지고 있고, 이러한 제약은 고속 및 실시간 연산 실현을 위해 완화될 수 있다. In the present state of the art, sorting is introduced as a precursor to minimize memory. However, memory has become cheaper in recent years, and such constraints can be mitigated for realizing high-speed and real-time computation.

데이터 집약 애플리케이션: 본 발명은 일 단어 또는 단어 세트가 데이터의 대형 리스트에 삽입되고 데이터의 대형 리스트 내에서 검색되는, 삽입 및 검색 방법 및 프로세스에 관한 것이다. 삽입 및 검색을 위한 본 방법 및 프로세스가 사용될 수 있는 이러한 데이터 집약 애플리케이션의 예는, 뱅킹, 호텔 관리, 검색 엔진, 대학 등록, 및 창고 재고, 등에 존재한다. Data-Intensive Application: The present invention relates to an insertion and retrieval method and process in which a word or a set of words is inserted into a large list of data and retrieved within a large list of data. Examples of such data-intensive applications in which the present methods and processes for insertion and retrieval may be used include banking, hotel management, search engines, university registries, and warehouse inventories.

본 방법 및 프로세스에서, 검색이 실시간으로 신속하게 이루어지면서 정렬되지 않은 데이터 리스트에서 고속으로 삽입하는 방법의 설명이 설명된다. 이 방법은 주로, 정렬되지 않은 데이터의 선행 메모리 제약을 이용하여 신속하게 즉각적으로 검색하는 것이다. In the present method and process, a description of a method of fast insertion in an unordered data list is presented with the search being performed in real time quickly. This is primarily a quick and immediate retrieval using the preceding memory constraints of unaligned data.

프로세서 속도는 1980년에 2.4MHz에서 2013년에 2.4GHz로 천배 이상 증가하였다. 동일 기간 동안, 주 메모리는 1980년에 4KB로부터 2013년에 4GB로 백만배 이상 성장하였다. 추가적으로, 휴대형 메모리 공간이 데이터를 작동시키기에 풍부하게 가용해졌다. 예를 들어, 단순 메모리 스택이 오늘날 128GB 에 이른다. 따라서, 본 방법 및 프로세스는 속도 실현을 위해 메모리를 이용한다. 전통적인 검색법은 예전의 실시간 연산에 의해 시간 및 공간을 최적화한다. 그러므로, 안정한 데이터에 대해 작동하거나 공간 최적화에 시간이 더 걸린다. 그러나, 제안되는 방법을 이용하면, 우리는 메모리 공간 요건을 완화시킴으로써 속도 및 실시간 온전하게 작동할 수 있다. 제안되는 방법은 클라우드 컴퓨팅과 같은 공간-집약적 애플리케이션, 대학 기록, 항공, 검색 엔진 및 은행과 같은 대형 데이터베이스 애플리케이션에도 잘 적용된다. Processor speed has increased more than a thousand times from 2.4MHz in 1980 to 2.4GHz in 2013. During the same period, main memory grew more than a million times from 4KB in 1980 to 4GB in 2013. In addition, a portable memory space has become available to operate the data abundantly. For example, the simple memory stack today reaches 128 GB. Thus, the method and process utilize memory for speed realization. Traditional search methods optimize time and space by using the old real-time operation. Therefore, it takes more time to work on stable data or to optimize space. However, using the proposed method, we can operate at full speed and in real time by alleviating memory space requirements. The proposed method works well for large database applications such as space-intensive applications such as cloud computing, university records, airlines, search engines and banks.

전형적인 검색 엔진은 하루 수십조 단위의 검색 작동에 대해 하루에 2백만번의 히트를 가진다. 데이터를 매일 단위로 미리 소팅하여 유지시키는 것은 실제적으로 불가능하다. 소팅된 데이터의 주기적 스냅샷이 가능하지만, 최신 소팅된 데이터는 아니다. 따라서, 이진 검색과 같은 방법이, 이러한 애플리케이션에 대해 작동되기에는 어렵고 복잡하다.A typical search engine has 2 million hits a day for tens of thousands of search operations per day. It is practically impossible to pre-sort and maintain data on a daily basis. Periodic snapshots of the sorted data are possible, but not the latest sorted data. Thus, methods such as binary search are difficult and complex to operate for such applications.

우리는 단어 검색을 위해 정렬되지 않는 데이터를 이용하는 검색 방법을 제시한다. 간단히 말해서, 검색될 단어들의 리스트가 주어졌을 대, 우리는 검색될 단어, 음절, 및 단어의 문자 세트를 저장하기 위한 복수의 스트링 어레이를 생성한다. 데이터 구조는 복수 치수의 단어 어레이를 이용하여 구성되어, 검색이 단일 작동의 최선의 경우, 즉, 0(1)과, 해당 단어의 길이의 최악의 경우, 즉, 0(L)를 갖는 임의의 시간에 이루어질 수 있다. We present a search method that uses unsorted data for word search. Briefly, given a list of words to be searched, we create a plurality of string arrays to store the set of words, syllables, and words to be searched. The data structure is constructed using a word array of a plurality of dimensions so that the retrieval is performed in the best case of a single operation, that is, 0 (1) and the worst case of the length of the word, Time.

방법은 사전 내 대형 단어들의 수가 작기 때문에 빠르다. 실제로, 사전 내 단어들의 다수는 16개의 문자 미만이다. 한 방법으로서, 16개 문자 이상의 모든 단어들이 16개 문자 미만의 단어로 트리밍될 수 있고 그러면서도 여전히 별개이고 구별가능한 상태를 유지할 수 있다. 대형 단어들은 우리가 최대 구별가능값이라 불리는 크기로 트리밍된다. 마지막으로, 평균 단어 길이는 약 4.5문자다. 더욱이, 영문 위키피디아는 25조개의 단어를 넘고, 평균 단어 크기는 단어 당 5문자다. 이는 우리의 방법이 약 0(5)를 실현할 수 있고, 또는, 검색 당 5개의 연산의 평균치를 실현할 수 있음을 나타낸다. The method is fast because of the small number of large words in the dictionary. In practice, many of the words in the dictionary are less than 16 characters. As a method, all words over 16 characters can be trimmed to less than 16 characters and still be in a distinct and distinguishable state. Large words are trimmed to the size we call the maximum distinguishable value. Finally, the average word length is about 4.5 characters. Moreover, English Wikipedia has more than 25 trillion words, and the average word size is 5 characters per word. This indicates that our method can realize approximately 0 (5), or can realize an average of 5 operations per search.

실시간 데이터를 가진 애플리케이션: 검색 엔진과 같은 애플리케이션은 실시간 데이터 조작을 필요로한다. 이는 데이터가 연속적으로 검색 및 삽입되고 있고 데이터를 오프-라인으로 취하여 소팅할 수 있는 "자유" 시간이 없음을 의미한다. 이와 같은 애플리케이션들은 신속한 방식으로 이루어질 수 있는 스마트한 검색 및 삽입 방법을 필요로한다. 빠르게 하기 위해, 어레이는 보다 더 빠른 액세스 및 전송을 위해 메모리 하드웨어에 메모리 뱅크로 저장된다. 메모리 뱅크는 프로세서, 컴퓨터 하드웨어, 및 클라우드에 위치할 수 있다. Applications with real-time data: Applications such as search engines require real-time data manipulation. This means that there is no "free" time for data to be searched and inserted continuously and the data can be taken off-line and sorted. Such applications require smart search and insertion methods that can be done in a rapid manner. To speed things up, arrays are stored in memory banks in memory hardware for faster access and transmission. Memory banks may be located in the processor, computer hardware, and the cloud.

애플리케이션의 검색 요건: 검색 엔진과 같은 애플리케이션들은 단어 또는 단어 세트(문장)가 소정 시간 주기에 걸쳐 수집된 데이터의 큰 데이터 세트로 검색될 것을 통상적으로 필요로한다. 데이터 집약적 애플리케이션은 속도 요건을 갖고 검색 및 삽입을 통상적으로 수행한다. 애플리케이션은 단어 또는 단어 세트가 대향 데이터 수집의 세트에 위치할 것을 요한다. 전통적인 메커니즘은 이러한 대량 데이터 수집을 소팅된 상태로 유지시킴으로서 이러한 속도를 실현시키길 기대하며, 따라서, 검색 요건이 존재할 때마다 쉽게 된다. 그러나, 애플리케이션이 연속적으로 업데이트되고 데이터가 실시간으로 변화할 경우, 데이터를 소팅된 상태로 유지시키기 위해 프로세스를 중단시키는 것이 대단히 어렵다. 따라서, 함수를 고속으로 수행함에 있어서 효율적인 삽입 및 검색 방법 및 프로세스를 찾아낼 필요가 있다. Applications search requirements: Applications such as search engines typically require a word or word set (sentence) to be retrieved with a large data set of collected data over a period of time. Data-intensive applications typically perform searches and inserts with speed requirements. The application requires a word or word set to be placed in the set of opposing data collections. The traditional mechanism expects to realize this speed by keeping such large data collection sorted, and thus becomes easier each time a search requirement exists. However, if an application is continuously updated and the data changes in real time, it is very difficult to stop the process to keep the data in a sorted state. Therefore, there is a need to find efficient insertion and retrieval methods and processes in performing a function at high speed.

애플리케이션의 삽입 요건: 검색 엔진과 같은 애플리케이션은 데이터 검색을 원할 뿐 아니라, 검색되고 있는 단어 또는 단어 세트를 또한 삽입하고자 한다. 그 지식 기반은 검색되고 있는 새 단어들을 학습함으로써 최신으로 유지된다. 추가적으로, 뱅킹과 같은 다른 애플리케이션들은 단어(성명) 또는 단어 세트(주소)를 검색하기 위해 특정 기능을 필요로하고, 삽입 기능은 새 단어를 데이터에 구체적으로 삽입하기 위해 사용된다. 실시간 애플리케이션은 삽입 기능을 신속하게, 검색에도 사용될 수 있는 데이터 구조로 삽입시킬 것을 요한다. 제안되는 방법에서, 우리는 삽입 방법이 검색의 서브세트임을 보여준다. 새 단어를 삽입하기 위해, 우리는 해당 단어의 미래 검색이 신속하게 이루어질 수 있도록 제대로 검색 및 삽입한다. 제안되는 방법은 고속 액세스 및 전송을 위해 메모리 뱅크에 저장되는 단어들을 저장하기 위해 데이터 구조로 정렬되지 않은 리스트 어레이를 이용한다. Application insertion requirements: Applications such as search engines not only want to retrieve data, but also want to insert a word or word set being searched. The knowledge base is kept up to date by learning new words being searched. Additionally, other applications, such as banking, require specific functions to search for a word (name) or word set (address), and the insertion function is used to specifically insert new words into the data. Real-time applications require inserting the insertion function quickly into a data structure that can be used for retrieval. In the proposed method, we show that the insertion method is a subset of the search. In order to insert new words, we search and insert them so that future searches of the words can be done quickly. The proposed method utilizes a non-aligned list array to store words stored in a memory bank for fast access and transmission.

데이터 소팅: 포괄 소팅 기술은 데이터 정렬을 위해 트리와 같은 복잡한 데이터 구조를 이용한다. 이를 실현하기 위해, 완전한 데이터 세트가 선험적으로 가용할 것을 기대한다. 퀵 소트와 같은 소팅 기술은, 검색이 이루어지는 데이터를 정렬하는데 사용된다. 이 방법이 빠를 수 있지만(N개의 요소들로 구성되는 데이터 세트에 대해 0(N 로그 N)만큼 낮을 수 있지만), 기대치는 거래가 이루어지지 않는 시간 주기 동안 데이터 세트가 가용해야하는 것이다. 실시간 애플리케이션에서, 이러한 일시중지를 찾는 것은 거래 시간의 예측불가능한 속성으로 인해 매우 어렵다. 따라서, 사전-조건으로 소팅보다는 데이터의 정렬되지 않은 리스트에 대해 작동하는 고속 검색 방법을 찾아낼 필요가 있다. Data sorting: The generic sorting technique uses a complex data structure such as a tree for data sorting. To achieve this, we expect full data sets to be a priori available. A sorting technique, such as quick sort, is used to sort the data where the search is made. Although this method can be fast (although it can be as low as 0 (N log N) for a data set consisting of N elements), the expectation is that the data set should be available for a period of time when no transactions are made. In a real-time application, finding such a pause is very difficult due to the unpredictable nature of the transaction time. Therefore, there is a need to find a fast search method that works on an unordered list of data rather than sorting by pre-condition.

정렬된 데이터를 이용한 포괄 검색 방법: 포괄 검색 기술은 데이터 정렬을 위해 데이터 구조에 대해 소팅 과정을 이용한다. 데이터가 정렬되면, 검색이 쉽고 빨라진다. N개의 요소들을 가진 데이터 세트에 대해, 검색은 적어도 0(N 로그 N)을 이용하여 데이터를 소팅 후 0(로그 N)에서 실현될 수 있다. 정렬된 데이터를 갖는 문제는, 데이터가 안정될 필요가 있을 때 소팅 메커니즘을 별개로 완료시키기 위해 거래를 중지시켜야 한다는 점이다. 거래가 계속되고 데이터의 사본이 소팅될 경우, 소팅된 데이터에 대한 검색이 안정한 데이터를 이용하여 이루어진다. 제안되는 방법은 별개의 소팅을 필요로하지 않고, 데이터의 구성은 정렬되지 않은 리스트를 이용하여 이루어진다. 사전-소팅없이 이루어지는 고속 검색이 인덱싱 기반 어레이 검색이며, 데이터는 고속 액세스를 위해 메모리 뱅크에 저장된다. 이 과정은 이중 이용을 유도하는 삽입에 사용된다. A comprehensive search method using sorted data: A comprehensive search technique uses a sorting process on the data structure to sort the data. Once the data is sorted, the search is easy and quick. For a data set with N elements, the search can be realized at 0 (log N) after sorting the data using at least 0 (N log N). The problem with sorted data is that the transaction must be stopped to complete the sorting mechanism separately when the data needs to be stable. If the transaction continues and a copy of the data is sorted, the retrieval of the sorted data is done using stable data. The proposed method does not require separate sorting, and the data is composed using an unordered list. A fast search without pre-sorting is an indexing-based array search, and the data is stored in a memory bank for fast access. This process is used for insertion to induce dual use.

포괄 검색 방법의 복잡성: N개의 요소들의 데이터 세트와 관련하여 정렬된 데이터에 대한 검색을 실현하는 것은 0 (로그 N)만큼 낮다. 그러나, 이는 데이터 선험성을 조건으로 하도록 복잡성을 고려하지 않는다. 제안되는 방법은 매우 빠르며, 정렬되지 않는 데이터에서 0 (1)의 최선의 경우와, 0 (단어 길이)의 최악의 경우를 가진다. 영어가 보다 적은 수의 문자와 함께 보다 많은 수의 단어를 지님에 주목하는 것이 중요하다. Complexity of the global search method: It is as low as 0 (log N) to realize the search for sorted data in relation to the data set of N elements. However, this does not take complexity into account for data a priori. The proposed method is very fast and has the worst case of 0 (1) and 0 (word length) for unaligned data. It is important to note that English has a larger number of words with fewer characters.

데이터 저장 - 데이터 구조: 데이터 저장에 사용되는 데이터 구조는 일반적으로 추상적 데이터 유형에 기초한다. 그러나, 사전-저장을 위한 트리와 같은, 데이터 유형을 이용하는 것은, 실시간 애플리케이션이 제공할 수 없는 데이터의 스냅샷을 필요로한다. 제안되는 방법은 편의성 및 속도를 위한 어레이 구조를 이용하여 구현되는, 데이터 유형으로 정렬되지 않은 리스트를 이용한다. Data storage - Data structures: The data structures used to store data are typically based on abstract data types. However, using a data type, such as a tree for pre-storing, requires a snapshot of the data that real-time applications can not provide. The proposed method utilizes an unordered list of data types, implemented using an array structure for convenience and speed.

데이터 저장 - 인덱스 기반 어레이: 제안되는 방법에 사용되는 인덱스 기반 어레이는 단일 단계로 특정 단계를 어드레싱하기 위한 유연성을 제공하며, 이를 논리적으로 연속적이도록 유지시킨다. 크기의 선험적 선언으로 인해 어레이 내 메모리의 높은 이용이 위협사항이다. 그러나, 앞서 설명된 바와 같이 메모리는 점점더 저렴해지고 있고 속도 및 정확도 실현을 위해 절충될 수 있다. 추가적으로, 우리는 전송 속도를 얻기 위해 데이터 작동 및 인덱스 기반 어레이 저장을 위한 고속 메모리 뱅크의 이용을 제안한다. Data storage - Index-based arrays: The index-based arrays used in the proposed method provide the flexibility to address certain steps in a single step and keep them logically continuous. Due to the a priori declaration of size, the high utilization of memory in the array is a threat. However, as previously described, memory is becoming cheaper and can be compromised for speed and accuracy. In addition, we propose the use of high-speed memory banks for data operation and index-based array storage to achieve the transfer rate.

시간 대 공간 복잡도: 포괄 검색 방법은 필요할 대 오프라인으로 작업하려 시도하면서도, 시간 및 공간 모두를 최적화시켰다. 그러나, 과거 10년간, 실시간 데이터 집약 검색 애플리케이션이 응답 시간에 상당히 민감한 경우에, 소팅과 같은, 이러한 오프라인 연산이 가능하지 않았다. 따라서, 검색 및 소팅 알고리즘 단독의 시간 및 공간 최적화가 충분하지 않았다. 알고리즘 속도 및 응답의 최적화가 중요하다. 우리 방법에서, 우리는 오프라인 소팅 요건없이 순간적 응답을 제공하는 고속 검색 메커니즘을 도입한다. Time-to-space complexity: The comprehensive search method has optimized both time and space, while trying to work offline as needed. However, over the past decade, such offline computations, such as sorting, were not possible when real-time data-intensive search applications were fairly sensitive to response time. Thus, the time and space optimization of the search and sorting algorithms alone was not sufficient. Optimization of algorithm speed and response is important. In our approach, we introduce a fast search mechanism that provides instantaneous response without off-line sorting requirements.

도 1은 검색 작동의 하이 레벨 구조를 나타내는 도면이다. 검색 작동은 검색 방법(102), 검색될 필요가 있는 속성(104), 및 특별한 방식으로 연결된, 기결정된 속성 어레이(106)로 구성된다. 예를 들어, 본 출원에서, 우리는 어레이들의 정렬되지 않은 리스트로 배열되는 이미 학습된 속성(106)들의 집합 중에서 일 속성(104) 또는 속성 세트를 효율적으로 검색하는 새로운 검색 방법을 도입한다. 1 is a diagram showing a high-level structure of a search operation. The search operation consists of a search method 102, an attribute 104 that needs to be searched, and a predetermined attribute array 106 that is linked in a special way. For example, in the present application, we introduce a new search method that efficiently retrieves one attribute 104 or attribute set from a set of already learned attributes 106 that are arranged in an unordered list of arrays.

도 2는 데이터 기반 구축을 위해 정렬되지 않은 데이터 구조의 일부분으로 삽입되는 단어 세트에 기여하는 애플리케이션(202)의 경우에 해당하는, 포괄 검색 방법의 도해다. 이는 검색 준비 완료를 위해 다른 소팅 스테이지(206)를 거친다. 단어 또는 단어 세트가 검색될 필요가 있을 때마다, 이진 검색과 같은 포괄 검색 방법(210)이 소팅된 데이터(208)에 대해 작동하여, 단어 또는 단어 세트가 존재하는지 여부를 찾아내게 된다. 따라서, 두 스테이지의 프로세싱이 수반되는데, 첫번째는 단어를 삽입하는 것이고, 두번째는 완성된 데이터 구조를 소팅하여 최신으로 유지시키고 소팅된 데이터에 대한 고속 검색을 실현하는 것이다. 불행하게도, 2개의 스테이지는 더 많은 연산 시간이 걸리고, 검색 엔진 또는 주식 시장 데이터와 같은, 실시간으로 입력되는 애플리케이션에 대해 소팅 데이터를 최신으로 유지시키는 것이 어렵거나 불가능하다. 2 is an illustration of a generic search method corresponding to the case of an application 202 contributing to a word set that is inserted as part of an unaligned data structure for a data foundation build. It goes through another sorting stage 206 for readying the search. Whenever a word or word set needs to be searched, the global search method 210, such as a binary search, operates on the sorted data 208 to find out if a word or word set is present. Thus, two stages of processing are involved, the first being to insert words, the second is to sort the completed data structure to keep it up-to-date and to realize fast searching for the sorted data. Unfortunately, the two stages take more computation time and it is difficult or impossible to keep the sorting data up-to-date for real-time input applications, such as search engines or stock market data.

도 3은 제안되는 고속 인덱스 기반 검색 방법의 도해다. 이는 데이터 저장 및 데이터에 대한 작동을 위해 메모리 뱅크를 이용함으로써 이루어진다. 애플리케이션 입력(202)은 단어 또는 단어 리스트를 입력한다. 우리의 제안 방법은 새 단어를 정렬되지 않은 인덱스-기반 데이터 구조 어레이(306)에 삽입함으로써 삽입 및 검색 기능(304)을 모두 제공한다. 메인 어레이(306)는 검색될 단어 세트로 구성된다. 삽입시, 새 단어가 위치 Z에서 메인 어레이(Main array) 메모리 뱅크에 위치한다. 이 새 단어의 최종 문자는 위치 Y에서 일 문자 음절(One Character Syllable)에 배치된다. 나머지 음절은 위치 X의 음절 저장소(Syllable Store)에 위치한다. 그 후 값 Z는 X 및 Y로 인덱싱되는 위치에서 다차원 메모리 뱅크 어레이 FindWordLodcation(308)에 배치된다. 3 is a diagram of a proposed fast index based search method. This is done by using a memory bank for data storage and operation on the data. The application input 202 inputs a word or word list. Our proposed method provides both an insert and search function 304 by inserting a new word into an unordered index-based data structure array 306. The main array 306 consists of a set of words to be searched. Upon insertion, a new word is placed in the Main array memory bank at location Z. The final character of this new word is placed in the One Character Syllable at position Y. The remaining syllables are located in a syllable store at location X. The value Z is then placed in the multidimensional memory bank array FindWordLodcation 308 at a location indexed by X and Y. [

검색될 필요가 있는 단어의 최종 문자를 검색할 때, 첫번째로, 일 문자 음절에서 찾고(위치 X에서 찾는다고 말함), 그 후 나머지 음절이 (위치 Y에서) 음절 저장소에서 찾는다. 메인 어레이 메모리 뱅크 내 단어의 위치(또는 인덱스 Z)를 얻기 위해 FindWordLocation 메모리 뱅크(308) 내 인덱스로 X 및 Y를 이용한다. When searching for the last character of a word that needs to be searched, the first syllable is searched for (found at position X), and then the remaining syllables are searched in syllable store (at position Y). X and Y are used as indices in the FindWordLocation memory bank 308 to obtain the position (or index Z) of the word in the main array memory bank.

정렬되지 않은 데이터를 이용한 제안 검색 방법: 이 방법의 빠른 응답은 정렬되지 않은 데이터 구조를 이용함으로써 실현되고, 데이터 세트는 새 단어가 삽입됨에 따라 생성되어, 차후 검색을 위해 도움이 된다. 추가적으로, 데이터는 빠른 액세스를 위해 고속 메모리 뱅크에 저장된다. 빠른 응답은 검색 및 삽입 모두를 위해 공통의 기능을 이용함으로써 또한 실현된다. 정렬되지 않은 데이터는 단 3 세트의 단어 어레이(306) - 즉, 단어 저장을 위한 메인 어레이 메모리 뱅크, 단문자 발생을 저장하기 위한 일 문자 음절, 및 음절 저장을 위한 음절 저장소 - 로 구성된다. 이러한 3개의 어레이는 제안되는 방법을 이용하여 모든 단어를 저장하고 신속하게 검색하도록 조작된다. Proposed retrieval method with unaligned data: The fast response of this method is realized by using an unaligned data structure, and a data set is generated as new words are inserted, which is helpful for subsequent retrieval. In addition, the data is stored in a high-speed memory bank for quick access. Fast response is also realized by using common functions for both searching and inserting. The unaligned data consists of just three sets of word arrays 306 - a main array memory bank for word storage, one character syllables for storing single character occurrences, and a syllable store for syllables storage. These three arrays are manipulated to store all the words and retrieve them quickly using the proposed method.

검색 과정의 최적화: 제안되는 방법은 데이터 세트 내 단어(404)의 최대 구별가능 길이를 파악함으로써 검색 과정을 최적화시킨다. 이에 따라 검색 과정은 검색될 단어의 총 길이보다 최대 구별가능 길이로 검색을 국한시킨다. 삽입될 필요가 있는 모든 단어들이 단어 어레이(306)인 메인 어레이 메모리 뱅크 내로 충전된다. Optimization of the search process: The proposed method optimizes the search process by knowing the maximum distinguishable length of the words 404 in the data set. Accordingly, the search process limits the search to the maximum distinguishable length of the total length of the words to be searched. All the words that need to be inserted are filled into the main array memory bank, which is the word array 306. [

도 4는 검색될 단어들로 메인 어레이 메모리 뱅크를 충전(406)하는 제안 방법을 보여준다. 어레이를 완전한 단어로 충전시키고 데이터베이스를 검색하는 것은, 긴 단어에 대한 검색 시간을 증가시킨다. 따라서, 우리는 단어의 최대 구별가능 길이 - 즉, 단어를 트리밍할 수 있도록 구별가능한 단어의 서브세트의 길이 - 를 찾아낸다(404). Figure 4 shows the proposed method of charging (406) the main array memory bank with the words to be searched. Charging the array with full words and searching the database increases the search time for long words. Thus, we find 404 the maximum distinguishable length of a word-that is, the length of a subset of words that can be distinguished to trim a word.

도 5는 메인 어레이 메모리 뱅크에 삽입(406)하기 전에 단어의 최대 구별가능 길이를 찾아내기 위한 과정을 도시한다. 여기서의 아이디어는 이러한 크기로 트리밍될 경우 별개일 모든 긴 단어의 길이를 찾아내는 것이다. 다른 어떤 단어도 이러한 트리밍된 단어와 일치하지 않는다. 다음 과정의 출력은 모두 최대구별가능(MaxDist) 길이이고 별개인, 트리밍된 단어들의 어레이다. 이 과정의 단계들은 다음과 같다:FIG. 5 illustrates a process for finding the maximum distinguishable length of a word before inserting 406 into the main array memory bank. The idea here is to find the length of every long word that is distinct when trimming to this size. No other word matches these trimmed words. The output of the next process is all MaxDist lengths and is an array of individual, trimmed words. The steps in this process are as follows:

제 1 MaxDist 값의 초기화: 검색될 새 단어의 어레이를 획득하고, 모든 어레이를 초기화시킨다(502). 새 단어의 리스트로부터 다음 새 단어를 연속적으로 판독한다(504). 단어 길이가 관측된 최대 거리보다 크거나 같을 경우, 즉, 멀 경우(506), 새 단어가 삽입된다(508). 단어가 삽입 중 이미 거기 있는 것이 발견된 경우(510), 최대 거리가 증분되고 과정은 다시 시작으로부터 모두 시작되고 삽입을 다시 진행한다. 그렇지 않을 경우(516), 다음 단어로 진행한다(514). 모든 단어가 점검되면, 찾아낸 최종 최대 거리가 최대 구별가능 길이일 것이다(518). Initialization of the first MaxDist value: Obtain an array of new words to be searched and initialize all arrays (502). The next new word is successively read from the list of new words (504). If the word length is greater than or equal to the observed maximum distance, i.e., if the word length is far (506), a new word is inserted (508). If the word is found to be already there (510), the maximum distance is incremented and the process begins all over again and proceeds with the insertion again. Otherwise (516), proceed to the next word (514). If all the words are checked, the final maximum distance found will be the maximum distinguishable length (518).

도 6은 최대 구별가능 길이를 찾아낸 후 메인 어레이 메모리 뱅크의 충전 방법을 도시한다. 이 방법은 검색될 단어를 판독하고(604), 삽입 과정(606)을 이용하여 모든 단어가 삽입(608)될 때까지 메인 어레이 메모리 뱅크를 충전한다. Figure 6 illustrates a method of charging a main array memory bank after finding the maximum distinguishable length. This method reads the word to be searched 604 and charges the main array memory bank until all the words are inserted 608 using the insertion process 606. [

도 7은 새 단어에 대한 삽입 과정(606)을 보여준다. 단어가 길이 1일 경우, 즉, 단문자 단어일 경우(702), 단어가 일 문자 음절 데이터 구조 내로 삽입된다(708). 단어가 1보다 큰 길이의 단어일 경우, 즉, 단어가 단문자 단어(704)가 아닐 경우, 단어는 복수 문자 음절을 위한 데이터 구조에 삽입된다(710). 단어가 최대 구별가능 길이보다 큰 경우, 프리픽스(prefix) 및 포스트픽스(postfix)로 파싱(parsing) 후 그리고 MaxDist 크기로 트리밍 후 삽입된다(706). FIG. 7 shows an inserting process 606 for a new word. If the word is length 1, i. E., A short character word (702), the word is inserted 708 into the single character syllable data structure. If the word is a word of length greater than one, i. E. The word is not a short character word 704, then the word is inserted 710 into the data structure for the plural character syllables. If the word is greater than the maximum distinguishable length, it is inserted 706 after parsing with prefix and postfix and after trimming with MaxDist size.

새 단어 삽입에 이용되는 방법은, 새 단어 삽입(606)이다. 삽입될 새 단어는 단 문자 단어(702)인지 또는 더 긴 단어(704)인지 점검된다. 새 단어 검색은 새 단어 삽입과 동일한 과정을 따른다. 새 단어 삽입을 위한 위치가 이미 존재할 경우 비어있지 않을 것이며, 긍정적 검색을 이끈다. The method used for new word insertion is new word insertion (606). The new word to be inserted is checked whether it is a short character word 702 or a longer word 704. New word search follows the same process as new word insertion. If a location for a new word insertion already exists, it will not be empty, leading to a positive search.

도 8은 단문자 단어, 즉, 일 문자 음절의 단어를 삽입(708)하기 위한 과정의 순서도다. 첫번째로, 문자의 위치가 어레이에서 점검된다(802). 위치 플래그가 비어있을 경우(804), 위치 플래그는 증분되고(810), 데이터 구조가 업데이트(812)되어, 삽입 반영을 위해 메인 어레이 메모리 뱅크의 업데이트에 이어지는 새 단문자 단어의 학습을 반영하기 위해 업데이트된 데이터 구조(812)와, 이후 삽입을 반영하기 위해 메인 어레이 메모리 뱅크의 업데이트(814)가 이어진다. Figure 8 is a sequence of steps for inserting (708) a single letter word, i.e., a single letter syllable word. First, the position of the character is checked in the array (802). If the position flag is empty 804, the position flag is incremented 810 and the data structure is updated 812 to reflect the learning of the new short character word following the update of the main array memory bank for insertion reflection Updated data structure 812, and an update 814 of the main array memory bank to reflect subsequent insertion.

도 9는 1보다 큰 길이의 단어를 삽입(702)하기 위해 취해지는 단계들을 도시한다. 초기 단계는 단어의 제 1 문자를 판독하고(902), 제 1 문자가 단 문자 데이터 구조에 존재하는지를 점검한다(804). 존재하지 않을 경우, 단 문자의 삽입과 유사한 과정이 이어진다(810, 812). 이어서, 단어 길이가 2이상인 경우에 나머지 음절이 추출된다(912). 단어 길이가 2일 경우, 나머지 음절 역시 단 문자이며, 이 경우에 별개 과정으로 추출된다(914). FIG. 9 illustrates the steps taken to insert 702 a word of length greater than one. The initial step reads the first character of the word (902) and checks if the first character is in the single character data structure (804). If not, a similar process is followed (810, 812) with the insertion of a single character. Then, when the word length is 2 or more, the remaining syllables are extracted (912). If the word length is 2, the remaining syllables are also single letters, in which case they are extracted as a separate process (914).

도 10은 나머지 음절의 추출 과정(912)을 보여준다. 나머지 음절의 제 1 문자가 판독되고(1002), 이 단문자 위치 플래그가 점검되며(804), 빈 경우 위치가 증분되고(810), 데이터 구조가 업데이트된다(812). 제 1 문자 위치 플래그가 비어있지 않은 경우, 나머지 음절이 문자 단위로 구성되어, 궁극적으로 최종 문자가 추출된다(914). FIG. 10 shows the extraction process 912 of the remaining syllables. The first character of the remaining syllable is read (1002), the short character position flag is checked (804), the position is incremented (810), and the data structure is updated (812). If the first character position flag is not empty, the remaining syllables are configured in character units, and ultimately the final character is extracted (914).

도 11은 최종 문자 추출 과정(914)을 보여준다. 문자가 위치하지 않을 경우 단문자를 삽입(804, 810, 812)하는 것과 유사한 단계들을 따른다. 단어 위치가 결정되고, 단어를 찾아내면(1112), 메인 어레이 메모리 뱅크가 업데이트되고(1114), 단어 위치가 새 단어 삽입 과정(1116)으로 되돌아와서, 단어가 발견되었음을 알린다. 단어가 발견되지 않은 경우, 새 단어가 삽입되고 단어 위치가 되돌아온다. Fig. 11 shows a final character extraction process 914. Fig. If the character is not located, follow steps similar to inserting a single character (804, 810, 812). Once the word position is determined and a word is found 1112, the main array memory bank is updated 1114 and the word position is returned to the new word insertion process 1116 to indicate that the word was found. If no word is found, the new word is inserted and the word position is returned.

도 12는 검색 및 삽입 과정의 일부분으로 사용되는, 상이한 스트링 데이터 구조 어레이를 보여준다. 메인 어레이 메모리 뱅크가 새 단어를 이용하여 구성된다(1202). Figure 12 shows a different string data structure array used as part of the search and insert process. The main array memory bank is configured with new words (1202).

일 문자 심벌 어레이(OneChSylbl array)는 단문자(1204)로 이루어지고, 음절 저장소(SylblStore)(1206)는 나머지 음절로 이루어진다. 추가적으로, 3개의 정수 어레이가 사용된다 - 즉, 단문자 음절의 위치를 플래그하기 위한 OneChSylblLoc와, 음절의 어드레스 제공을 위한 SylblAdd와, 메인 어레이 메모리 뱅크 내 단어 위치를 플래그하기 위한 FindwordLocation 메모리 뱅크(308)의 어드레스를 제공하기 위한 SylblAdd가 사용된다. The OneChSylbl array consists of a single character 1204 and the syllable store 1206 comprises the rest of the syllables. In addition, three integer arrays are used - OneChSylblLoc to flag the position of the single character syllable, SylblAdd to provide the address of the syllable, and a FindwordLocation memory bank 308 to flag the word position in the main array memory bank. SylblAdd < / RTI >

도 13은 단문자의 삽입 프로세스의 한 예를 보여준다. OneChSylbl은 이미 학습된 고유 단문자의 어레이다. 예를 들어, 4개의 단어, 즉, I, AM, A, MAN이 삽입될 때, OneChsylbl 어레이는 별개인 I, A, M, N의 문자를 가질 것이다(1302). 마찬가지로, 정수 어레이 OneChSylblLoc는, 문자가 지금껏 나타난 횟수를 보여준다. 이 문자는 그 ASCII 값 마다 추적된다(1304). Figure 13 shows an example of a single character insertion process. OneChSylbl is an array of already learned intrinsic characters. For example, when four words, I, AM, A, and MAN, are inserted, the OneChsblbl array will have the letters I, A, M, and N that are distinct (1302). Likewise, the integer array OneChSylblLoc shows the number of times characters have ever appeared. This character is traced for each ASCII value (1304).

도 14는 메인 어레이(1402)라 불리는 스트링 어레이의 일부분으로 새 단어를 삽입하는 예를 보여준다. I, AM, A, MAN이 첫번째 4개의 인덱스를 차지하고, 0번째 인덱스는 다음 가용한 자유 인덱스를 보여줌을 명확하게 알 수 있다. 14 shows an example of inserting a new word into a part of a string array called the main array 1402. Fig. It is clear that I, AM, A, and MAN occupy the first four indices, and the zeroth index shows the next available free index.

단문자 단어가 일 문자 음절 데이터 구조에 추가된다(812). 데이터 구조 내 문자의 위치는 일 문자 음절 위치(812)에서 캡처된다. 이 위치는 관련 문자 중 얼마나 많은 문자들이 레코딩되었는지를 파악하는 ASCII 문자들의 어레이에서 플래깅된다(1304). 음절은 문자의 어레이에 저장된다(1302). 메인 어레이 메모리 뱅크는 단어로 또한 업데이트된다(814, 1402). A single character word is added to the single character syllable data structure (812). The position of the character in the data structure is captured at the one character syllable position 812. This position is flagged (1304) in an array of ASCII characters that determines how many of the related characters have been recorded. Syllables are stored in an array of characters (1302). The main array memory bank is also updated with words (814, 1402).

1보다 긴 길이의 단어는 제 1 문자 및 나머지 음절로 나누어진다. 제 1 문자는 단문자 발생으로 취급되고(812), 나머지 음절은 문자 단위로 취급된다(1002). 음절들은 통합되어 데이터 구조 음절 저장소에 추가되고, 음절의 위치는 음절 위치 데이터 구조에서 추적된다(1010). A word longer than 1 is divided into a first character and a remaining syllable. The first character is treated as a single character occurrence (812), and the remaining syllables are treated as character units (1002). Syllables are integrated and added to the data structure syllable store, and the position of the syllable is tracked in the syllable position data structure (1010).

도 15는 단문자가 아닌 새 단어의 삽입 예를 보여준다. SylblStore는 음절을 저장하는 스트링 어레이 메모리 뱅크(1502)다. 예를 들어, "MAN"을 삽입하기 위해, 음절 "MA"가 [1, 2] 위치에서 SylblStore 메모리 뱅크에 저장되며, 이는 2개의 문자를 가진, 첫번째 만난 단어이기 때문이다. 삽입되면, 위치 [0, 2]가 2로 증분되어 다음 두 문자 음절을 삽입하기 위한 다음 가용 자유 공간을 보여준다. 마찬가지로, 정수 어레이 SylblAdd(1504)가 SylblAdd(2, 위치 "M", 위치 "A")에 대해 [3, 2]의 위치를 플래깅하는데, 이는 "M"이 OneChsylbl 어레이 내 3번째 위치를 차지하고, "A"는 OneChsylbl 어레이 내 두번째 위치를 차지하기 때문이다. "MAN" 대신에, 단어가 "MANY"일 경우, SylblStore는 "MA" 및 "N"의 위치를 가질 것이다. Fig. 15 shows an example of insertion of a new word not a single character. SylblStore is a string array memory bank 1502 that stores syllables. For example, to insert "MAN", the syllable "MA" is stored in the SylblStore memory bank at the [1, 2] position, because it is the first met word with two characters. When inserted, position [0, 2] is incremented to 2 to show the next available free space for inserting the next two letter syllables. Similarly, integer array SylblAdd 1504 flags the location of [3, 2] for SylblAdd (2, position "M", position "A"), which means that "M" occupies the third position in the OneChsylbl array , "A" occupies the second position in the OneChsblbl array. If the word is "MANY" instead of "MAN ", then SylblStore will have positions of" MA "

도 16은 새 단어의 검색을 도시한다. 예를 들어, 단어 "MAN"이 FindWordLocation(3, "MA" 위치, "N" 위치)을 이용하여 발견되어야 할 경우, "MA"의 위치는 1이고, sylblAdd(2, "M", "A")로부터 한 단계에서 결정된다. "N"의 위치는 4이며, OneChSylblLoc(ASCII(N))로부터 결정된다. 따라서, FindwordLocation 메모리 뱅크는 메인 어레이 메모리 뱅크 내 단어의 위치를 되돌려보낸다. 인덱스가 0일 경우, 단어는 존재하지 않는다. 따라서, 검색이 극도로 빠르고, 어레이 메모리 뱅크를 단지 조작함으로써 단계들의 커플에서 검색이 완료될 수 있음을 알 수 있다. 이는 검색 전 스트링의 소팅을 요하는 포괄 방법에 비해 상당히 쉽다. Figure 16 shows a search for a new word. For example, if the word "MAN" is to be found using FindWordLocation (position 3, "MA "," N "), the position of MA is 1 and sylblAdd "). ≪ / RTI > The position of "N" is 4, and it is determined from OneChSylblLoc (ASCII (N)). Thus, the FindwordLocation memory bank returns the location of the word in the main array memory bank. If the index is 0, the word does not exist. Thus, it can be seen that the retrieval is extremely fast and the retrieval can be completed in a couple of steps by simply manipulating the array memory bank. This is considerably easier than the comprehension method that requires string sorting before searching.

마지막 문자가 추출되고 단어를 추적하는 단어 위치 발견(Find Word Location) 표가 구성된다. 단어 위치 발견(Find Word Location)은 상이한 길이의 단어들에 대한 표의 집합을 구성한다. 단어 위치 표(1602)는 검색되는 3개의 철자 단어의 위치가, 즉, 4가, 제 4 위치에서 메인 어레이 메모리 뱅크 내에 있음을 보여준다. 이 엔트리가 4가 아니라 0일 경우, 이는 검색된 단어가 존재하지 않음을 의미한다. 이 시점에서, 단어는 메인 어레이 메모리 뱅크를 업데이트하면서 검색에 사용되는 동일 과정을 이용하여 삽입될 수 있다. The last character is extracted and a Find Word Location table is constructed which tracks the word. Find Word Location constitutes a set of tables for words of different lengths. The word position table 1602 shows that the positions of the three spelling words being searched, i.e., 4, are in the main array memory bank at the fourth position. If this entry is 0 rather than 4, it means that the retrieved word does not exist. At this point, the word may be inserted using the same procedure used for the search while updating the main array memory bank.

예를 들어, "MAN"은 2개의 문자 음절(1502) 에 이은 최종 문자 "N" 하에서 음절 저장 데이터 구조에서 "MA"로 그룹화된다. "M"과 "A"의 위치는 음절 어드레스 표(1504)에서 추적된다. 단어 "MAN"은 메인 어레이 메모리 뱅크(1602) 내 꽉찬 단어의 위치를 명확하게 보여주는 단어 위치 파악 과정에서 추적된다. 우리가 한 예로서 "MANY"를 취할 경우, 음절 "MA" 및 "N"의 위치는 마지막 단일 단어 "Y"와 함께 음절 어드레스에서 추적될 것이다. 단어 "MANY"는 단어 위치표 발견에서 "MAN" 및 "Y"의 위치를 이용하여 발견될 것이다. For example, "MAN" is grouped into "MA" in syllable storage data structure under two letter syllables 1502 followed by the final letter "N ". The positions of "M" and "A" are tracked in syllable address table 1504. The word "MAN " is tracked in a word locating process that clearly shows the location of the full word in the main array memory bank 1602. [ When we take "MANY" as an example, the positions of the syllables "MA" and "N" will be tracked at the syllable address with the last single word "Y". The word "MANY" will be found using the positions of "MAN " and" Y "

도 17은 일 실시예에 따라, 네트워크를 통해 사용자와 서버간 통신을 보여주는 데이터 관리(1700)용 통합 시스템의 계통도다. 일 실시예에서, 일 사용자 또는 복수의 사용자는 시스템 내 멀티미디어 툴을 호스팅하는 서버에 연결될 수 있다. 다른 실시예에서, PDA, 모바일 장치, 가령, 태블릿, 등, 컴퓨터 또는 이동 전화 또는 임의의 무선 장치, 또는 전자북(e-북)과 같은 사용자 하드웨어가 서로 연결될 수 있고, 또는, 독립적으로 작동하여, 사용자가 교육, 학습, 및/또는 상호작용형 재생 게임을 위해 사용자가 멀티미디어 툴을 이용할 수 있다. 네트워크(1701)는 LAN, WAN, 이동, 전파통신, 인터넷, 인트라넷, 와이파이, 및/또는 지그비 네트워크, 등일 수 있다. 사용자/개인(1705, 1704, 1703), 모든 정보를 저장하기 위한 데이터베이스(1702), 등은 개인, 부모, 과학자, 작가일 수 있으나, 이러한 포크 그룹만으로 제한되지 않는다. 사용자 및 개인은 호환가능하게 사용되고 동일함을 의미한다. 사용자는 도면에서 상이한 경우의 시나리오에서 언급되는 바와 같이 다양한 활동들을 위해 데이터 관리 시스템에 액세스하는 임의의 사람일 수 있다. 클라우드 서버가 데이터 저장 및 프로세싱을 위해 또한 사용될 수 있다. 검색, 콘텐트 생성, 콘텐트 업로드, 콘텐트 뷰, 콘텐트 이용, 및/또는 콘텐트 삭제를 위해 데이터 관리 툴에 액세스할 수 있다. 서버는 독립형, 클라우드 기반, 또는 호스팅되는 서비스일 수 있다. Figure 17 is a schematic diagram of an integrated system for data management 1700 that illustrates communication between a user and a server over a network, in accordance with one embodiment. In one embodiment, one user or a plurality of users may be connected to a server hosting a multimedia tool in the system. In another embodiment, user hardware such as a PDA, a mobile device, such as a tablet, etc., a computer or mobile phone or any wireless device, or an electronic book (e-book) , The user can use multimedia tools for training, learning, and / or interactive play games. Network 1701 may be a LAN, WAN, mobile, radiocommunication, Internet, intranet, WiFi, and / or ZigBee network, The user / individual 1705, 1704, 1703, the database 1702 for storing all information, etc. may be an individual, a parent, a scientist, or a writer, but is not limited to such a fork group. Users and individuals are used interchangeably and mean the same. The user can be any person who has access to the data management system for various activities as mentioned in the scenario of the different case in the figures. A cloud server may also be used for data storage and processing. Access data management tools for searching, creating content, uploading content, viewing content, using content, and / or deleting content. The server may be a stand-alone, cloud-based, or hosted service.

도 18은 일 실시예에 따라, 여기서 논의되는 실시예를 수행할 수 있는 컴퓨터 장치도의 개략적 시스템도(1800)다. 특히, 컴퓨터 시스템도(1800)는 일 실시예에 따라, 프로세서(1802), 메인 메모리(1804), 정적 메모리(1806), 버스(1812), 비디오 디스플레이(1820), 수문자 입력 장치(1822), 커서 제어 장치(1824), 드라이버 유닛(1826), 신호 발생 장치(1828), 네트워크 인터페이스 장치(1808), 기계 판독가능 매체(1830), 명령어(1832), 및 네트워크(1701)를 도시한다. FIG. 18 is a schematic system diagram 1800 of a computer device diagram capable of performing the embodiments discussed herein, in accordance with one embodiment. In particular, computer system diagram 1800 includes a processor 1802, a main memory 1804, a static memory 1806, a bus 1812, a video display 1820, a numeric character input device 1822, A cursor control device 1824, a driver unit 1826, a signal generating device 1828, a network interface device 1808, a machine readable medium 1830, an instruction 1832, and a network 1701.

컴퓨터 시스템도(1800)는 여기서 개시되는 하나 이상의 작동들을 수행하는 개인용 컴퓨터 및/또는 데이터 처리 시스템(가령, 서버)을 표시할 수 있다. 프로세서(1802)는 마이크로프로세서, 상태 기계, 애플리케이션 전용 집적 회로, 필드 프로그래머블 게이트 어레이, 등일 수 있다. 메인 메모리(1804)는 컴퓨터 시스템의 동적 랜덤 액세스 메모리 및/또는 주 메모리일 수 있다. 정적 메모리(1806)는 하드 드라이브, 플래시 드라이브, 및/또는 컴퓨터 시스템과 연관된 기타 메모리 정보일 수 있다. 버스(1812)는 컴퓨터 시스템의 다양한 회로 및/또는 구조들 사이의 상호연결부일 수 있다. 비디오 디스플레이(1820)는 데이터 처리 시스템에 대한 정보의 그래픽 표현을 제공할 수 있다. 수문자 입력 장치(1822)는 키패드, 키보드, 및/또는 그외 다른 텍스트 입력 장치(가령, 물리적 장애우를 돕기 위한 전용 장치)일 수 있다. 커서 제어 장치(1824)는 마우스와 같은 포인팅 장치일 수 있다. The computer system diagram 1800 may represent a personal computer and / or a data processing system (e.g., a server) that performs one or more of the operations described herein. The processor 1802 may be a microprocessor, state machine, application specific integrated circuit, field programmable gate array, or the like. Main memory 1804 may be a dynamic random access memory and / or main memory of a computer system. The static memory 1806 may be a hard drive, flash drive, and / or other memory information associated with the computer system. The bus 1812 may be an interconnect between various circuits and / or structures of a computer system. The video display 1820 may provide a graphical representation of the information for the data processing system. The numeric character input device 1822 may be a keypad, a keyboard, and / or any other text input device (e.g., a dedicated device for facilitating physical impairment). The cursor control device 1824 may be a pointing device such as a mouse.

드라이브 유닛(1826)은 하드 드라이브, 저장 시스템, 및/또는 기타 더 장기간 저장 서브시스템일 수 있다. 신호 발생 장치(1828)는 데이터 처리 시스템의 기능적 운영 체제 및/또는 바이오스일 수 있다. 네트워크 인터페이스 장치(1808)는 네트워크(1801) 내외로의 통신에 요구되는 코드 변환, 프로토콜 변환, 및/또는 버퍼링과 같은 인터페이스 기능을 수행할 수 있다. 기계 판독가능 매체(1830)는 여기서 개시되는 방법들 중 하나를 수행할 수 있는 명령어를 제공할 수 있다. 명령어(1832)는 여기서 개시되는 하나 이상의 작동들을 실현시키도록 프로세서(1802)에 소스 코드 및/또는 데이터 코드를 제공할 수 있다. Drive unit 1826 may be a hard drive, storage system, and / or other longer-term storage subsystem. The signal generating device 1828 may be a functional operating system and / or a bios of the data processing system. The network interface device 1808 may perform interface functions such as code conversion, protocol conversion, and / or buffering, which are required for communication into and out of the network 1801. The machine-readable medium 1830 can provide instructions that can perform one of the methods described herein. The instructions 1832 may provide the source code and / or data code to the processor 1802 to implement one or more of the operations described herein.

본 시스템, 방법, 및 프로세스를 이용하여, 정확한 시간에 정확한 정보를 지능적으로 안전하게 업데이트할 수 있고, 유지할 수 있으며, 데이터베이스 및 전송 채널 간에 동적으로 재결합시킬 수 있다. 제한사항 및 규칙은 임의의 사용자/사용자 조직에 맞도록 구현될 수 있다. 따라서, 명세서 및 도면은 제한적인 것보다 예시적인 측면으로 간주되어야 한다. 발명은 단일 단어 또는 단어 세트의 삽입 및 검색을 필요로하는 범용 애플리케이션에 대해 유효하다. Using the present systems, methods, and processes, accurate information can be intelligently and securely updated, maintained, and dynamically reconnected between the database and the transport channel at the right time. Limitations and rules may be implemented to suit any user / user organization. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense. The invention is valid for a general purpose application that requires the insertion and retrieval of a single word or set of words.

Claims (16)

단어 형태로 사용자로부터 입력을 수신하는 단계와,
메모리 뱅크 B로 하드웨어 메모리 내 발생 순서로 순차적으로 단어 내 모든 별개의 문자들(characters)을 저장하는 단계와,
메모리 뱅크 B 내 문자의 위치를 메모리 뱅크 A의 저장소 및 문자의 ASCII 코드에 의해 명시되는 위치로 재조합하는 단계와,
문자를 대응하는 ASCII 코드로 변환함으로써, 그리고, 대응하는 ASCII 코드를 이용하여 메모리 뱅크 B로 하드웨어 메모리로부터 문자의 위치를 불러들임으로써, 메모리 뱅크 B로부터 단어 내 순차적으로 문자를 검색하는 단계와,
메모리 뱅크 A에 어드레스 형태로 대응하는 ASCII 코드로 단어 내 문자의 발생 순서를 저장하는 단계를 포함하는, 방법.
Receiving input from a user in word form;
Sequentially storing all the distinct characters in the word in order of occurrence in the hardware memory with the memory bank B,
Reassembling the location of the character in memory bank B to the location specified by the store of memory bank A and the ASCII code of the character,
Retrieving the characters sequentially in the word from the memory bank B by translating the characters into corresponding ASCII codes and retrieving the location of the characters from the hardware memory to the memory bank B using the corresponding ASCII code;
Storing an order of occurrence of characters in the word in an ASCII code corresponding to the address in memory bank A;
제 1 항에 있어서,
메모리 뱅크 A 및 B의 크기가 적어도 256 바이트인, 방법.
The method according to claim 1,
Wherein the memory banks A and B are at least 256 bytes in size.
제 1 항에 있어서,
UNICODE가 ASCII 코드 대신에 사용되고, 메모리 뱅크 A가 적어도 16KB, 메모리 뱅크 B가 16KB 미만인, 방법.
The method according to claim 1,
Wherein UNICODE is used instead of ASCII code, and memory bank A is at least 16 KB and memory bank B is less than 16 KB.
제 1 항에 있어서,
입력 단어의 모든 별개의 첫번째 2개 이상의 문자 음절의 저장은 메모리 뱅크 B의 배수에 대응하는 크기의 메모리 뱅크에 저장되고, 모든 별개의 2개 이상의 문자 음절의 위치가 메모리 뱅크 A의 메모리 위치에 위치하며, 크기 N의 제 1 시작 음절을 위한 위치 저장에 요구되는 크기 A의 메모리 뱅크의 수는 크기 (N-1)의 별개의 음절의 수와 동일한, 방법.
The method according to claim 1,
The storage of all the distinct first two or more character syllables of the input word is stored in a memory bank of a size corresponding to a multiple of memory bank B and the location of all two or more distinct character syllables is located in the memory location of memory bank A , And the number of memory banks of size A required for location storage for a first starting syllength of size N is equal to the number of distinct syllables of size (N-1).
제 4 항에 있어서,
2개 이상의 문자의 모든 별개의 입력 단어들의 저장은, 메모리 뱅크 B의 배수에 대응하는 크기의 메모리 뱅크에 저장되는, 방법.
5. The method of claim 4,
Wherein the storing of all the separate input words of two or more characters is stored in a memory bank of a size corresponding to a multiple of the memory banks B.
제 5 항에 있어서,
메모리 내 위치를 위해 크기 N의 입력 단어를 찾아내는 것은, 이 단어를 위한 크기 N-1의 시작 음절의 위치와, 이 단어의 최종 문자의 위치에 의해 결정되는 위치에서, 이루어지는 방법.
6. The method of claim 5,
Locating an input word of size N for an in-memory location is at a location determined by the position of the start syllable of size N-1 for that word and the position of the last character of the word.
제 6 항에 있어서,
메모리에 저장되는 위치를 요구하는 크기 N의 단어를 검색하는 단계를 더 포함하는, 방법.
The method according to claim 6,
Retrieving a word of size N that requires a location to be stored in memory.
제 4 항에 있어서,
크기 A 및 B의 복수의 메모리 뱅크에 저장되는 정렬되지 않은 리스트에 기초하여 입력 단어의 삽입을 위한 시간 및 그 대응하는 위치를 최적화하는 단계를 더 포함하는, 방법.
5. The method of claim 4,
Further comprising optimizing the time for insertion of an input word and its corresponding location based on an unaligned list stored in a plurality of memory banks of size A and B.
제 1 항에 있어서,
메모리 뱅크는 데이터베이스 또는 임의의 추상적 데이터 유형 또는 데이터 구조로 위치할 수 있는, 방법.
The method according to claim 1,
Wherein the memory bank can be located in a database or any abstract data type or data structure.
제 1 항에 있어서,
고속 액세스와, 코드 복잡도를 감소시키는 삽입 및 검색에 모두 사용될 수 있는 공통 방법은 크기 A 및 B의 복수의 메모리 뱅크 및 간접적 메모리 어드레싱으로 인한 것인, 방법.
The method according to claim 1,
A common method that can be used for both fast access and insertion and retrieval to reduce code complexity is due to multiple memory banks of size A and B and indirect memory addressing.
제 1 항에 있어서,
검색 및 삽입됨에 따라 데이터 세트를 생성하도록, 정렬되지 않은 리스트를 이용하여 실시간 검색을 위한 시간을 최적화하는 단계를 더 포함하는, 방법.
The method according to claim 1,
Further comprising optimizing time for a real-time search using an unordered list to generate a data set as it is searched and inserted.
제 1 항에 있어서,
메모리 뱅크 A 및 메모리 뱅크 B에 어드레스 형태로 대응하는 ASCII 코드를 가진, 단어 내 문자의 발생 순서로 매우 큰 단어들의 검색 및 삽입이, MaxDist 연산을 이용하여 이루어지는, 방법.
The method according to claim 1,
Wherein the retrieval and insertion of very large words in the order of occurrence of the letters in the word with the ASCII code corresponding to the addresses in the memory bank A and the memory bank B are made using the MaxDist operation.
제 1 항에 있어서,
데이터가 메모리 뱅크 A에 고속 액세스를 위해 저장되도록, 인덱스 기반 어레이에 기초하여 검색을 수행하는 단계를 더 포함하는, 방법.
The method according to claim 1,
Further comprising performing a search based on an index-based array such that data is stored in memory bank A for fast access.
단어 형태로 사용자로부터 입력을 수신하는 단계와,
메모리 뱅크 B로 데이터 구조 내 발생 순서에서 순차적으로 단어를 저장하는 단계와,
메모리 뱅크 B로부터 단어 내에서 순차적으로 문자에 액세스하는 단계와,
메모리 뱅크 B의 배수에 저장되는 정렬되지 않은 리스트에 기초하여 삽입을 위한 시간을 최적화하는 단계와,
검색 복잡도가 최적화될 수 있도록 삽입 애플리케이션 또는 검색 애플리케이션을 중단시켜서 데이터 및 순서의 스냅샷을 취하는 것을 요구하지 않는 단어 또는 단어 세트를 삽입하는 단계를 포함하는, 방법.
Receiving input from a user in word form;
Sequentially storing words in the order of occurrence in the data structure with the memory bank B,
Sequentially accessing the characters in the word from the memory bank B,
Optimizing the time for insertion based on an unaligned list stored in a multiple of memory banks B,
Inserting a word or set of words that does not require taking an snapshot of the data and the order by interrupting the insert application or the search application so that the search complexity can be optimized.
제 14 항에 있어서,
문자를 메모리 뱅크 A로 하드웨어 메모리 내로 삽입하기 위한 대응하는 ASCII 코드로 변환하는 단계와,
메모리 뱅크 A에 어드레스 형태로 대응하는 ASCII 코드로, 단어 내 문자의 발생 순서를 저장하는 단계와,
선험적 소팅없이 메모리 뱅크 A에 위치하는 어드레스에 기초하여 단어 내 문자의 발생 순서를 일치시킴으로써 관련 단어를 검색하는 단계와,
검색 및 삽입됨에 따라 데이터 세트가 생성되도록, 정렬되지 않은 리스트를 이용하여 실시간 검색을 위한 시간을 최적화시키는 단계를 더 포함하는, 방법.
15. The method of claim 14,
Converting the character into a corresponding ASCII code for insertion into memory memory A into the hardware memory,
Storing a generation order of characters in a word in an ASCII code corresponding to an address form in the memory bank A;
Retrieving a related word by matching the order of occurrence of characters in the word based on the address located in the memory bank A without a priori sorting;
Further comprising optimizing the time for a real-time search using an unaligned list such that the data set is generated as it is searched and inserted.
제 15 항에 있어서,
상기 메모리 뱅크 A 및 메모리 뱅크 B에
어드레스 형태로 대응하는 ASCII 코드와 함께 단어 내 문자의 발생 순서를 검색 및 정렬하는 단계는 MaxDist 연산을 이용하여 이루어지는, 방법.
16. The method of claim 15,
In the memory bank A and the memory bank B
Wherein the step of retrieving and sorting the occurrence order of the characters in the word with the corresponding ASCII code in the address form is performed using the MaxDist operation.
KR1020167033202A 2014-05-17 2014-05-17 A method of searching text based on two computer hardware processing properties: indirect memory addressing and ascii encoding KR20170005428A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2014/001824 WO2015177588A1 (en) 2014-05-17 2014-05-17 A method of searching text based on two computer hardware processing properties: indirect memory addressing and ascii encoding

Publications (1)

Publication Number Publication Date
KR20170005428A true KR20170005428A (en) 2017-01-13

Family

ID=54553477

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033202A KR20170005428A (en) 2014-05-17 2014-05-17 A method of searching text based on two computer hardware processing properties: indirect memory addressing and ascii encoding

Country Status (5)

Country Link
EP (1) EP3014494A4 (en)
KR (1) KR20170005428A (en)
AU (1) AU2014394628A1 (en)
CA (1) CA2949343A1 (en)
WO (1) WO2015177588A1 (en)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2003043C (en) * 1988-11-18 1994-04-05 Masataka Nakasuji Information searching apparatus
US5758148A (en) * 1989-03-10 1998-05-26 Board Of Regents, The University Of Texas System System and method for searching a data base using a content-searchable memory
US5931940A (en) * 1997-01-23 1999-08-03 Unisys Corporation Testing and string instructions for data stored on memory byte boundaries in a word oriented machine
US7565362B2 (en) * 2004-11-11 2009-07-21 Microsoft Corporation Application programming interface for text mining and search
US8423533B2 (en) * 2011-02-08 2013-04-16 International Business Machines Corporation Multiple rule bank access scheme for use in a pattern matching accelerator
CN102262669B (en) * 2011-07-28 2013-03-13 西安空间无线电技术研究所 Fast outputting method from Chinese Pinyin to Chinese character internal code

Also Published As

Publication number Publication date
WO2015177588A1 (en) 2015-11-26
CA2949343A1 (en) 2015-11-26
EP3014494A1 (en) 2016-05-04
EP3014494A4 (en) 2017-03-15
AU2014394628A1 (en) 2016-12-15

Similar Documents

Publication Publication Date Title
KR101465770B1 (en) Word probability determination
US9406381B2 (en) TCAM search unit including a distributor TCAM and DRAM and a method for dividing a database of TCAM rules
CN107329987A (en) A kind of search system based on mongo databases
WO2009021204A2 (en) Autocompletion and automatic input method correction for partially entered search query
CN107844493B (en) File association method and system
CN115391495B (en) Method, device and equipment for searching keywords in Chinese context
JP2012230713A (en) Retrieval method, similarity calculation method, similarity calculation and identical document collation system, and program therefor
CN101751430A (en) Electronic dictionary fuzzy searching method
CN106649286B (en) One kind carrying out the matched method of term based on even numbers group dictionary tree
EP3926484B1 (en) Improved fuzzy search using field-level deletion neighborhoods
CN112612845A (en) Method and device for realizing organization mechanism view, electronic equipment and readable storage medium
CN104281275A (en) Method and device for inputting English
CN105404677A (en) Tree structure based retrieval method
KR20150083961A (en) The method for searching integrated multilingual consonant pattern, for generating a character input unit to input consonants and apparatus thereof
CN113678122A (en) Caching of potential search results
CN109885641B (en) Method and system for searching Chinese full text in database
CN112199408A (en) Reference distance similarity search
CN105426490A (en) Tree structure based indexing method
US9009200B1 (en) Method of searching text based on two computer hardware processing properties: indirect memory addressing and ASCII encoding
CN105426389A (en) Fuzzy retrieval locating method based on UI directory tree view
KR101694179B1 (en) Method and apparatus for indexing based on removing vowel
KR20170005428A (en) A method of searching text based on two computer hardware processing properties: indirect memory addressing and ascii encoding
CN112380445A (en) Data query method, device, equipment and storage medium
US10546061B2 (en) Predicting terms by using model chunks
CN101470712A (en) English words query system and method by mathematical operation

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination