KR0133406B1 - Dynamic conversion method of retrieval statement concerning korean language information retrieval - Google Patents
Dynamic conversion method of retrieval statement concerning korean language information retrievalInfo
- Publication number
- KR0133406B1 KR0133406B1 KR1019940036345A KR19940036345A KR0133406B1 KR 0133406 B1 KR0133406 B1 KR 0133406B1 KR 1019940036345 A KR1019940036345 A KR 1019940036345A KR 19940036345 A KR19940036345 A KR 19940036345A KR 0133406 B1 KR0133406 B1 KR 0133406B1
- Authority
- KR
- South Korea
- Prior art keywords
- search
- query
- statement
- token
- word
- Prior art date
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 한글정보검색시스템을 구현할 때 이용자가 원하는 정보를 찾기 위하여 입력하는 검색문(질의어)을 시스템 내부적으로 분석하고 실제로 데이타베이스내에 저장된 정보를 가져올 수 있도록 입력된 검색문에 대해서 DBMS 질의어인 SQL(Structured Query Language)로 동적변환해가는 방법에 관한 것이다.According to the present invention, when a Korean information retrieval system is implemented, a search query (query) inputted by a user to find desired information is analyzed internally in a system, and SQL, which is a DBMS query word, is input to a search statement inputted to actually retrieve information stored in a database. It is about how to convert dynamically with Structured Query Language.
검색문을 변환하고 질의의 결과를 제공하기 위해 6단계의 과정으로 나누었으며, 특히 렉시칼분석 및 연산자 우선순위에 의한 Bottom-Up 파싱방법, 중간코드생성 방법 등은 새로운 알고리즘을 고안하여 구현하였다.In order to convert the search statement and provide the result of the query, the process is divided into six steps. In particular, the lexical analysis, the bottom-up parsing method based on the operator priority, and the intermediate code generation method are devised and implemented.
정보검색시스템을 이용할때 이용자가 입력하는 검색문은 성향에 따라 다양하게 구성되며, 검색문은 정적(Static) 프로그램으로도 어느 정도까지는 경우의 수를 고려하여 미리 질의어를 구성해 놓을 수도 있으나 이용자들의 다양한 성향에 의해 작성되는 모든 경우의 검색문을 고려하여 미리 프로그램을 작성하는 것은 거의 불가능하다.When using the information retrieval system, the search statements entered by the user are composed in various ways, and the search statements can be constructed in advance by considering the number of cases even in a static program. It is almost impossible to write a program in advance in consideration of search statements in all cases created by various inclinations.
또한 특정 DBMS를 이용할때 DBMS에 의존하지 않고 적합율(Hit Rate)과 재현율을 높일수 있도록 검색시스템을 구현하기 위해서는 정적 프로그램으로 처리하기에는 많은 한계가 있다.In addition, when using a specific DBMS, there are many limitations in processing a static program in order to implement a search system so that the hit rate and reproducibility can be increased without depending on the DBMS.
본 발명에 따라 이러한 문제점들이 해결되어질 수 있고 입력되어지는 검색문을 그때그때 시스템에서 분석하여 실제 DBMS의 해당 질의어로 동적변환을 하는 것이다.According to the present invention, these problems can be solved and the inputted search statement is analyzed by the system at that time to dynamically convert to the corresponding query of the actual DBMS.
정보검색시스템에서의 검색문작성은 시스템의 구성에 따라 상이하지만 여기서는 DBMS를 이용하고 논리연산자(AND, OR, NOT 등)의 조합에 의한 검색문을 작성하도록 되어있는 정보검색시스템에 한해서 적용되도록 하였다.Search statement creation in the information retrieval system differs depending on the system configuration, but it is applied here only to the information retrieval system that is intended to use the DBMS and to create a search statement by a combination of logical operators (AND, OR, NOT, etc.). .
Description
제 1 도는 검색문의 동적변환 및 검색수행과정을 도시한 블럭도이다.1 is a block diagram illustrating a dynamic conversion and a search execution process of a search statement.
제 2 도는 유한오토메타를 이용한 상태천이도이다.2 is a state transition diagram using a finite autometa.
제 3 도는 파싱후 스택에 저장된 토근의 내용도이다.3 is a schematic diagram of the soil stored in the stack after parsing.
제 4 도는 연산자 우선순위 관계도이다.4 is an operator priority relationship diagram.
제 5 도는 테이블형태로 스택에 저장된 중간코드의 내용도이다.5 is a diagram of the intermediate code stored in the stack in the form of a table.
제 6 도는 키워드, 키워드인버티드 및 접두코드 릴레이션의 내용도이다.6 is a diagram illustrating the keywords, keyword inverted, and prefix code relations.
본 발명은 명령어 방식의 한글정보검색시스템을 구현할 때 이용자가 원하는 정보를 찾기 위하여 입력되는 검색문을 시스템 내부적으로 분석하고 실제로 데이타베이스내에 저장된 정보를 가져올 수 있도록 입력된 검색문과 대응되는 DBMS 질의어인 SQL(Structured Query Language) 문장으로 동적변환해가는 방법에 관한 것이다.In the present invention, when the command-type Hangul information retrieval system is implemented, SQL, which is a DBMS query word corresponding to the input search statement, can be analyzed to internally analyze a search statement inputted by a user to find desired information and to actually retrieve information stored in a database. (Structured Query Language) relates to dynamic conversion into statements.
일반적으로 정보검색시스템이란 정보를 파일이나 데이타베이스를 이용하여 가공후 저장하여 놓고 이용자들이 필요에 따라 원하는 정보를 꺼내볼 수 있도록 하는 것으로, 이용방법에 따라 명령어(Command) 또는 메뉴(Menu) 방식, 그리고 이들을 혼합한 형태, 최근에 와서는 윈도우 환경하에서 그래픽 유저인터페이스를 이용한 하이퍼텍스트 방식(마우스 또는 방향키 이용), 터치 스크린 방식, 음성인식의 시스템들이 개발되었거나 연구개발중에 있다.In general, an information retrieval system is to store information after processing it using a file or a database, and to allow users to retrieve the desired information as needed. Depending on the method of use, a command or menu method, In addition, a mixture of them, and recently, a hypertext method (mouse or direction key), a touch screen method, and a voice recognition system using a graphical user interface under a window environment have been developed or under development.
여기서는 명령어 방식의 한글정보검색시스템을 대상으로 하며, 이용자들이 정보를 찾기 위하여 이러한 시스템을 이용할 때 자신들의 성향에 따라 검색문을 다양하게 작성하거나 오류를 범할 수가 있게 된다.In this section, we will focus on the command-based Hangul information retrieval system, and when users use these systems to find information, they will be able to make various search statements or make errors according to their inclination.
따라서 시스템은 입력된 검색문에 대한 해석 및 분석을 정확히 하여 즉시 해당 정보를 제공하거나 다시 작성하도록 알려 주어야 한다. 해당 정보를 제공하기 위해서는 시스템은 검색문을 대응되는 데이타베이스 질의어로 변환하여 데이타베이스에 저장된 정보를 가져와야 한다.Therefore, the system must accurately interpret and analyze the entered search text and provide the information to be provided or rewritten immediately. To provide that information, the system must translate the search statement into the corresponding database query to get the information stored in the database.
정보를 가져오기 위해서 시스템 개발자는 정적(Static) 프로그램으로도 어느정도까지는 경우의 수를 고려하여 미리 입력되어질 수 있는 검색문을 예상하여 대응되는 데이타베이스 질의어를 구성하여 검색을 수행하도록 할 수도 있다.In order to get the information, the system developer may perform a search by constructing a corresponding database query in anticipation of a search statement that can be input in advance, considering the number of cases even in a static program.
그러나 정보서비스는 소수의 집단 또는 불특정 다수의 이용자들에게 정보를 제공해주기 때문에 이용자들의 직업, 학력, 시스템을 이용해 본 경험자 또는 전문가등 다양한 성향에 의해 작성되는 모든 경우의 검색문을 고려하여 미리 데이타베이스 질의어를 프로그램 내에 작성하여 놓는 것이 거의 불가능하게 되는 문제점이 있다.However, the information service provides information to a small number of groups or a large number of unspecified users. Therefore, the database is considered in advance in consideration of all cases of search written by various tendencies, such as the user's occupation, education, and experiences or experts using the system. There is a problem that it is almost impossible to write a query in a program.
따라서, 본 발명의 목적은 이러한 문제점을 해결하고 입력되어지는 검색문을 상기 입력 당시에 시스템에서 분석하여 실제적인 DBMS의 질의어로 동작변환을 함과 동시에 최적화(Optimize)하여 응답시간을 단축시켜줄 수 있도록 하는 것이다.Accordingly, an object of the present invention is to solve such a problem and to analyze the search text inputted by the system at the time of the input and to optimize the operation at the same time as the query query of the actual DBMS and to optimize the response time to shorten the response time. will be.
상기 목적을 달성하기 위하여 본 발명은 명령어 방식의 정보검색 시스템에서의 검색문작성은 시스템의 구성에 따라 상이하지만 DBMS를 이용하고 논리연산자(AND, OR, NOT 등)의 조합에 의한 검색문을 작성하도록 되어 있는 정보검색시스템에 한해서 검색문의 동적변환을 해가는 과정에 있어서 구문분석단계과, 시멘틱스 분석단계와, 중간코드 생성단계, 그리고 동적 SQL생성단계와 SQL처리단계, 및 검색결과 출력단계로 구성되어 이용자가 입력한 검색문을 질의어(Query)로 동적 변환을 한 후 검색수행결과를 출력하는 방법을 그 특징으로 한다.In order to achieve the above object, the present invention creates a search statement in an instruction type information retrieval system according to the configuration of the system, but uses a DBMS and creates a search statement by a combination of logical operators (AND, OR, NOT, etc.). The information retrieval system is composed of parsing step, semantic analysis step, intermediate code generation step, dynamic SQL generation step, SQL processing step, and search result output step. It is characterized by the method of outputting the search result after dynamic conversion of the search statement input by the user into a query.
이하, 첨부한 도면을 참조하여 본 발명의 일 실시예를 상세히 설명한다.Hereinafter, with reference to the accompanying drawings will be described an embodiment of the present invention;
우선 본 발명에 관해 정의하면 다음과 같다.First, the present invention will be defined as follows.
정의 1 렉시칼 분석 (Lexical Analysis)Definition 1 lexical analysis
입력된 검색문을 각 단어(Word)별로 분리하여 각 단어에 상당하는 토큰(Token) 형태를 후위표현(Postfix Expression) 형태의 트리(Tree) 구조로 만들어 준다.By separating the input search word by each word, Token type corresponding to each word is made into Tree structure of Postfix Expression type.
예를 들면 미국 * (이동통신 + 컴퓨터)라고 연산자가 중간에 위치한 중간표현형태를 이동통신 컴퓨터 + 미국 *과 같이 연산자 우선순위에 의해서 연산자가 후위에 오도록 후위표현형태의 트리구조로 만들어 스택(Stack)에 저장해 주는 것을 말한다.For example, the middle expression form with the operator * (mobile communication + computer) in the middle is formed into a tree structure in the form of the postfix expression so that the operator comes after the operator priority like mobile communication computer + United States *. ) To save.
정의 2 시멘틱스 분석 (Symantics Analysis)Definition 2 Symantics Analysis
구문분석 단계인 파싱(Parsing)에서 트리구조를 따라 노드(Node)에서 노드로 움직일 때 필요한 해석이나 분석을 하여 논리연산자의 유무를 판단하며, 이것에 따라 검색문을 질의어로 동적변환해 가는 과정을 논리연산자가 있는 경우와 없는 경우로 나누어 다르게 처리한다.Parsing, a parsing stage, determines the presence or absence of logical operators by performing the necessary interpretation or analysis when moving from node to node along the tree structure. The processing is divided differently with and without logical operators.
정의 3 중간코드 생성 (Intermediate Code Generation)Definition 3 Intermediate Code Generation
중간코드 생성은 논리연산자가 있는 경우에 한하며, 스택에 저장되어 있는 후위표현 형태의 트리구조를 가지고 실제적인 DBMS의 질의어로 변환하기 전에 중간과정으로 검색문내에 포함되어 있는 논리연산자, 주제어, 연산자우선순위에 따른 연산순서 등의 정보를 스택에 저장한다.Intermediate code generation is limited to the case where there are logical operators, and the logical operators, subjects, and operators that are included in the search statement in the intermediate process before converting to the actual DBMS query form with the post-expression tree structure stored on the stack. Store information such as the operation order according to the rank on the stack.
정의 4 질의어 생성Definition 4 Query Generation
스택에 저장된 중간코드 정보를 가지고 실제 DBMS의 질의어로 동적변환하는 것을 말하며, 단 질의어 최적화(Optimization)는 미리 프로그램내에 정의되어 있어야 한다.Dynamic conversion with query information of actual DBMS with intermediate code information stored on the stack. Query optimization must be defined in the program in advance.
정의 5 검색수행 및 결과제공Definition 5 Perform search and provide results
생성된 질의어로 검색을 수행하고 그 결과에 대해 검색 세트(Set)을 구성하고 출력해 준다.Performs a search with the generated query and constructs a search set and outputs the result.
예를 들면 이동통신 329For example, mobile communication 329
컴퓨터 534Computer 534
미국 232American 232
S1 미국 * (이동통신 + 컴퓨터) 176S1 United States * (telecommunications + computers) 176
S1은 검색순서이며, 각 주제어나 검색문 뒤의 숫자는 데이타베이스에 저장된 레코드건수를 나타내고 있다.S1 is a search order, and the number after each subject or search statement indicates the number of records stored in the database.
이상과 같은 정의에 따라 본 발명에 대한 정보검색시스템의 검색문을 질의어로 동적변환을 해가는 방법에 대한 상세한 설명을 하면 다음과 같다.According to the above definition, a detailed description of a method of dynamically converting a search sentence of an information retrieval system according to the present invention into a query language is as follows.
제 1 도는 검색문의 동적변화 및 검색수행 과정을 도시한 블럭도로서, 본 발명과 관련하여 정보검색은 특정 주제에 관한 자료가 데이타베이스 내에 몇건이나 존재하는지 알아보는 것으로 시스템의 구성을 6단계의 과정 즉, 구문분석기, 시멘틱스분석기, 중간코드생성기, 동적 SQL 생성기, SQL 처리기, 검색결과 출력기를 거쳐 이용자가 입력한 검색문을 질의어(Query)로 동적변환을 한 후 검색을 수행(검색 SET 구성)하고 그 결과를 출력하도록 하였다.1 is a block diagram showing a dynamic change of a search statement and a process of performing a search. In the present invention, information retrieval is to find out how many data on a particular subject exist in a database. In other words, after converting the search statement entered by the user into a query through a parser, semantic parser, intermediate code generator, dynamic SQL generator, SQL processor, and search result outputter, it performs a search (composes a search SET). The result was output.
제 1 도에서, 첫번째 단계인 구문분석기는 검색문을 구성하고 있는 주제어 또는 검색키들과 논리연산자(AND, OR), NOT 연산자, 연산우선순위를 변경할 수 있는 괄호 연산자들은 단어 형태의 토큰(Token)으로 분리한 다음 시스템에 정의된 검색문의 문법에 적법한지를 검사한 후, 연산자가 주제어들의 중간에 존재하는 중위표현(Infix Expression) 형태의 검색문을 연산자가 주제어 또는 검색키들의 뒤에 존재하는 후위표현(Postfix Expression) 형태로 변환한다.In FIG. 1, the first step, the parser, is a word or token consisting of a search word, a logical operator (AND, OR), a NOT operator, and parentheses operators that can change the operation priority. After checking the validity of the syntax of the search statement defined in the system, and checking the form of Infix Expression in which the operator is in the middle of the main words, Postfix Expression).
예를 들면 전자통신 AND 미국 OR 영국이라는 검색문은 전자통신 미국 AND 영국 OR로 변환된다.For example, the search for telecommunications AND US OR UK is converted to telecommunications US AND UK OR.
이러한 구문분석기를 크게 렉시칼분석 모듈과 파싱모듈로 나누었으며, 렉시칼분석 모듈의 기능은 입력된 검색문을 토큰이라는 기본단위로 분리하여 파싱모듈에 넘겨주는 일을 한다.The parser is divided into lexical analysis module and parsing module. The function of lexical analysis module divides input search statements into basic units called tokens and passes them to the parsing module.
생성되는 토큰의 종류로는 주제어와 논리연산자 AND(*), OR(+), NOT(^), 괄호(()), 범위(:), 인접어(ADJ), 접두코드(년도:PY, 저저:AU), 검색 SET번호(SNO), 확장검색어(ENO)등이 있다.The types of tokens generated are the main word and the logical operators AND (*), OR (+), NOT (^), parentheses (()), ranges (:), adjacent words (ADJ), and prefix codes (year: PY, Low: AU), search SET number (SNO), and extended search term (ENO).
제 2 도는 유한 오토메타를 이용한 상태천이도로서, 토큰을 생성하기 위해서는 토큰을 인식해야 하는데 본 발명과 관련하여 제 2 도와 같이 유한 오토메타(Finite Automata)를 이용한 상태 천이도(State Transition Diagram)를 이용하여 토큰을 인식하도록 하였다.FIG. 2 is a state transition diagram using a finite automata. To generate a token, a token must be recognized. As shown in FIG. 2, a state transition diagram using a finite automata is described. Token recognition was used.
제 3 도는 파싱후 스택에 저장된 토큰의 내용도로서, 본 발명과 관련하여 상태천이도에 의해 인식된 토큰은 제 3 도와 같이 테이블 형태로 스택에 저장된 후 파싱모듈로 전달된다.3 is a diagram of tokens stored in a stack after parsing. Tokens recognized by the state diagram according to the present invention are stored on the stack in a table form as shown in FIG. 3 and then transferred to a parsing module.
또한 파싱모듈의 기능은 입력된 검색문이 시스템에서 정의한 문법에 적합한지 여부를 검사하고 이를 분석하기 위하여 렉시칼모듈로부터 토큰을 전달받아 파싱(Parsing)을 수행하며 중위표현형태의 검색문을 후위표현형태로 변환한다.Also, the function of parsing module performs parsing by receiving token from lexical module to check whether input search statement conforms to the grammar defined by the system and analyzes it. Convert to form
파싱방법은 Bottom-up 파싱방법에 일종인 연산자 우선순위(Operator Precedence Parsing)을 이용하였다.The parsing method uses operator precedence parsing, a kind of bottom-up parsing method.
연산자 우선순위 파싱이란 터미널(Terminal)간에 연산순위 관계를 이용하여 감축(Reduction)을 반복하면서 파스트리(Parse Tree)를 생성하는 방식이다.Operator priority parsing is a method of generating a parse tree by repeating reduction by using operation priority relations between terminals.
본 발명과 관련하여 제 4 도는 연산자 우선순위 관계도로서, 파싱을 수행하기 위해 형식문법(Formal Grammar)의 일종인 연산자 문법(Operator Grammar)를 이용하여 검색문을 정의하면 다음과 같다.4 is an operator priority relation diagram. When a search statement is defined using an operator grammar, which is a kind of formal grammar, parsing is performed as follows.
E → E+E:E*E:idE → E + E: E * E: id
여기서 E는 비터미널(Non Terminal), +는 OR 연산자, *는 AND 연산자, id는 주제어를 나타낸다.Where E is a non-terminal, + is the OR operator, * is the AND operator, and id is the main word.
이 문법을 이용하여 연산자우선순위 관계를 정의하면 제 4 도와 같다.Using this grammar to define operator priority relationships is the same as in fourth.
연산자 우선순위에서 괄호 AND는 괄호가 AND보다 연산순위가 높고, OR 괄호는 OR가 괄호보다 연산순위가 낮다는 의미이며, 공백일 때는 검색반 오류가 된다.In operator precedence, parentheses AND means that the parentheses have higher precedence than AND, OR parentheses mean that OR has lower precedence than the parentheses.
여기서 $ 는 토큰이 아니라 검색문의 끝을 나타낸다.Where $ represents the end of the search statement rather than the token
이러한 연산자우선순위 파싱을 이용하여 검색문의 문법을 검사하고 중위표현형태의 검색문을 후위표현형태로 변환하는 알로리즘은 다음과 같다.The algorithm that checks the grammar of the search statement using this operator priority parsing and converts the search statement of the median expression to the postfix expression is as follows.
PROCEDURE Parser (S)PROCEDURE Parser (S)
/* 입력 : 연산자 우선순위관계(제 4 도), 검색문(S) *// * Input: operator precedence relationship (4th degree), search statement (S) * /
/* 출력 : 후위표현형태의 검색문(Store_Parsing_Token 모듈 *// * Output: post-expression search statement (Store_Parsing_Token module * /
/* 검색문은 A1A2A3......An$으로 이루어지고 스택에는 $만 존재 *// * The search statement consists of A1A2A3 ...... An $ and there is only $ on the stack * /
/* Get_Token 모듈은 검색문으로 부터 다음 토큰을 넘겨줌 *// * The Get_Token module passes the next token from the search statement * /
/* Opeator_precedence는 프로그램내에 정의된 연산자 우선순위 테이블 *// * Opeator_precedence is the operator priority table defined in the program * /
Current Token Type = '$' /* 현재의 토큰의 종류에 검색문의 끝표시 */Current Token Type = '$' / * Mark the end of the search statement for the current token type * /
Call Search_Token /* 토큰을 찾아오는 모듈 */Call Search_Token / * Module to retrieve tokens * /
Initialize_Stack /* 토큰을 저장할 스택의 초기화 */Initialize_Stack / * Initialize the stack to store tokens * /
Top of Stack = 0Top of Stack = 0
Token Type, Token Type Index = '$'Token Type, Token Type Index = '$'
Call Push_Stack /* 스택에 토큰을 저장 */Call Push_Stack / * Save token on stack * /
Token Counter = 0Token Counter = 0
Call Get_Token (Current Token Type, Curren Token Type Index)Call Get_Token (Current Token Type, Curren Token Type Index)
Call Search_TokenCall Search_Token
Do While (^(Token Type Index of Stack(Top of Stack) ='$'Do While (^ (Token Type Index of Stack (Top of Stack) = '$'
Current Token Type Index = '$'))Current Token Type Index = '$'))
End_Reduce = Top of Stack /* Set end of 감축(Reduction) */End_Reduce = Top of Stack / * Set end of Reduction * /
Do I = Top of Stack To 1 By -1 Until (Token Type Index ofDo I = Top of Stack To 1 By -1 Until (Token Type Index of
Stack (I)^ = Non_Terminal) /* Search Terminal on Top of Stack */Stack (I) ^ = Non_Terminal) / * Search Terminal on Top of Stack * /
If Token Type Index of Token (I) ^ = Non_TerminalIf Token Type Index of Token (I) ^ = Non_Terminal
ThenThen
Index of Stack = IIndex of Stack = I
End /* End of /Do Loop */End / * End of / Do Loop * /
If Operator_Precedence (Token Type Index of Stack (Index of Stack),If Operator_Precedence (Token Type Index of Stack (Index of Stack),
Current Token Type Index) = ''Current Token Type Index) = ''
Then /* Reduce */Then / * Reduce * /
DoDo
Do Until (Operator_Precedence(Token Type Index of Stack(Top ofDo Until (Operator_Precedence (Token Type Index of Stack (Top of
Stack), Terminal) = ''Stack), Terminal) = ''
Do Until (Token Type ^= Non_Terminal Token Type ^= ')'Do Until (Token Type ^ = Non_Terminal Token Type ^ = ')'
Call Pop_Stack /* 스택으로 부터 토큰을 꺼내옴 */Call Pop_Stack / * retrieve token from stack * /
If Token Type ^=Non_Terminal Token Type ^= ''If Token Type ^ = Non_Terminal Token Type ^ = ''
ThenThen
Do ;Do;
Terminal = Token TypeTerminal = Token Type
If Token Tyep ^= ' ('If Token Tyep ^ = '('
ThenThen
Call Store_Parsing_Token /* 후위표현형태의 검색문을 테이블에 저장하는Call Store_Parsing_Token / * Saves the search statement in the table
모듈 */module */
EndEnd
End /* Do Until */End / * Do Until * /
Do While (Token Type Index of Stack(Top of Stack) = Non_Terminal)Do While (Token Type Index of Stack (Top of Stack) = Non_Terminal)
Call Pop_StackCall pop_stack
EndEnd
End /* Do Until */End / * Do Until * /
Call Valid_Reduction /* 감축의 유효여부를 검사하는 모듈 */Call Valid_Reduction / * Module that checks for reduction * /
If ^ (Token Type Index of Stack(Top of Stack) = '$'If ^ (Token Type Index of Stack (Top of Stack) = '$'
Current Token Type = '$'Current Token Type = '$'
ThenThen
DoDo
Token Type, Token Type Index = Non_TerminalToken Type, Token Type Index = Non_Terminal
Call Push_StackCall push_stack
EndEnd
End /* Do */End / * Do * /
ElseElse
If Operator_Precedence(Token Type Index of Stack(Index of Stack),If Operator_Precedence (Token Type Index of Stack (Index of Stack),
Current Token Type) = '' orCurrent Token Type) = `` or
Operator_Precedence(Token Type Index of Stack(Index of Stack),Operator_Precedence (Token Type Index of Stack (Index of Stack),
Current Token Tyep) = '='Current Token Tyep) = '='
ThenThen
Do /* Push Current Token into Stack */Do / * Push Current Token into Stack * /
Token Type = Current Token TypeToken Type = Current Token Type
Token Index = Current Token IndexToken Index = Current Token Index
Call Push_StackCall push_stack
Call Get_Token(Current Token Type, Current Token Type Index)Call Get_Token (Current Token Type, Current Token Type Index)
Call Search_TokenCall Search_Token
EndEnd
ElseElse
Call Syntax Error /* 검색문 에러 처리 모듈 */Call Syntax Error / * Search Statement Error Handling Module * /
End /* Do While */End / * Do While * /
본 발명과 관련하여 상기 제 1 도에서 두번재 단계인 시멘틱스 분석기(Symantics Analaysis)는 상기와 같이 구문분석기의 파싱(Parsing) 모듈에서 트리구조를 따라 노드(Node)에서 노드를 움직일 때 필요한 해석이나 분석을 하여 논리연산자의 유무를 판단한다.In relation to the present invention, the second step of the semantics analyzer (Symantics Analaysis) in FIG. To determine the existence of logical operators.
이러한 논리연산자의 유무는 다음 단계인 중간코드 생성기를 거치거나 거치지 않도록 하여 검색문을 질의어로 동적변환해 가는 과정을 논리연산자가 있는 경우와 없는 경우로 나누어 다르게 처리하도록 한다.The presence or absence of such a logical operator makes the process of dynamically converting a search statement into a query to a query with or without the intermediate code generator as a next step to be processed differently.
또한, 세번째 단계인 중간코드 생성기는 논리 연산을 포함하고 있는 중위표현형태의 복합검색문이 구문분석기에 의해 후위표현형태의 검색문으로 변환되어 스택구조의 메모리에 저장된 검색문에 대해서, 완전한 동적 SQL 문의 생성을 위해 시스템내에 정의된 연산자를 중심으로 한 연산방법에 대해서 순차적으로 연산을 수행할 수 있도록 연산자 단위로 분해하여 중간 단계의 코드를 만들어 스택의 구조를 갖는 임시 메모리에 저장하는 일을 한다.In addition, the third step, the intermediate code generator, is a complete dynamic SQL for the search statement stored in the stack structure by converting the compound expression of the infix expression type to the postfix expression type by the parser. In order to create a statement, it is divided into operator units so that operations can be performed sequentially based on the operators defined in the system, and the intermediate level code is created and stored in temporary memory with a stack structure.
본 발명과 관련하여 제 5 도는 테이블형태로 스택에 저장된 중간코드의 내용도로서, 제 5 도를 참고하여 예를 들면 미국 AND 이동통신 OR 일본 AND 이동통신이라는 검색문이 구문 분석기에 의해서 미국 이동통신 AND 일본 이동통신 AND OR 형태의 검색문으로 변환하여 미국 AND 이동통신의 연산 방법을 T1, 일본 AND 이동통신의 연산방법을 T2에 그리고 T1 OR T2의 연산방법을 T3에 저장한다.FIG. 5 is a diagram illustrating the intermediate code stored in the stack in the form of a table. Referring to FIG. 5, for example, a search statement of US AND mobile communication OR Japan AND mobile communication is performed by a parser. AND Japanese mobile communication AND OR-type search statement is converted into T1, US AND mobile communication method T1, Japanese AND mobile communication method T2 and T1 OR T2 operation method T3.
이러한 중간코드를 생성하는 알고리즘은 다음과 같다.The algorithm for generating this intermediate code is as follows.
PROCEDURE Internediate_Code_Generation(E)PROCEDURE Internediate_Code_Generation (E)
/* 입력 : 후위표현형태의 검색문 E *// * Input: Postfix E * /
/* 출력 : 테이블에 저장된 중간코드 *// * Output: intermediate code stored in table * /
/* Count_NextToken_Index : 다음 토큰의인덱스를 찾아옴 *// * Count_NextToken_Index: Find index of next token * /
/* Search_NextToken(Token_Index) : 연산자를 찾아옴 *// * Search_NextToken (Token_Index): find operator * /
Top of Stack = 0 /* 스택포인터를 초기화 */Top of Stack = 0 / * Initialize stack pointer * /
Intermediate_Code_Index = 0Intermediate_Code_Index = 0
Temp_Index = 0 /* 중간코드의 임시저장장소 위치값 */Temp_Index = 0 / * Temporary storage location of intermediate code * /
Do While (토큰 수 = 0)Do While (token number = 0)
Token_Index = Count_NextToden_IndexToken_Index = Count_NextToden_Index
Next_Token = Search_Next_Token(Token_Index)Next_Token = Search_Next_Token (Token_Index)
If Next_Token = Operand /* 다음 토큰이 연산자인지 검사 */If Next_Token = Operand / * Check if the next token is an operator * /
ThenThen
Call Push_Stack /* 스택에 오버랜드의 형태(I : 토큰, T : Temp)와 토큰의Call Push_Stack / * Overland types (I: Token, T: Temp) and Tokens on the stack
인덱스 또는 Temp의 위치 저장 */Save location of index or temp * /
ElseElse
DoDo
Intermediate_Code_Index = Intermediate_Code_Index + 1Intermediate_Code_Index = Intermediate_Code_Index + 1
Intermediate Code Operator(Intermediate_Code_Index) = Next_TokenIntermediate Code Operator (Intermediate_Code_Index) = Next_Token
Call Pop_Stack /*스택에서 토큰(오퍼랜드 2)을 꺼내옴 */Call Pop_Stack / * Take token (Operland 2) from stack * /
/* Operand1_Type (I : 토큰, T : Temp) *// * Operand1_Type (I: Token, T: Temp) * /
/* Operand1_Index : 토큰의 인덱스 또는 Temp위치 *// * Operand1_Index: Index or Temp position of the token * /
IntermediateCodeOp2Type(Intermediate_Code_Index) = Operand2_IntermediateCodeOp2Type (Intermediate_Code_Index) = Operand2_
TypeType
IntermediateCodeOp2Type(Intermediate_Code_Index) = Operand2_IntermediateCodeOp2Type (Intermediate_Code_Index) = Operand2_
IndexIndex
Call Pop_Stack /* 스택에서 토큰(오퍼랜드 1)을 꺼내옴 */Call Pop_Stack / * Retrieve token (Operland 1) from stack * /
/* Operand1_Type (I: 토큰, T: Temp) *// * Operand1_Type (I: Token, T: Temp) * /
/* Operand1_Index : 토큰의 인덱스 또는 Temp위치 *// * Operand1_Index: Index or Temp position of the token * /
IntermediateCodeOp1Type(Intermediate_Code_Index) = Operand2_IntermediateCodeOp1Type (Intermediate_Code_Index) = Operand2_
TypeType
IntermediateCodeOp1Type(Intermediate_Code_Index) = Operand2_IntermediateCodeOp1Type (Intermediate_Code_Index) = Operand2_
IndexIndex
Temp_Index = Temp_Index =+ 1Temp_Index = Temp_Index = + 1
IntermediateCodeResType(Intermediate_Code_Index) = 'T'IntermediateCodeResType (Intermediate_Code_Index) = 'T'
IntermediateCodeResType(Intermediate_Code_Index) = Temp_IndexIntermediateCodeResType (Intermediate_Code_Index) = Temp_Index
Call Push_Stack /* 스택에 중간코드 저장 : 'T' 및 Temp_Index */Call Push_Stack / * Save intermediate code on stack: 'T' and Temp_Index * /
EndEnd
End /* Do While (토큰 수) */End / * Do While * /
이와같이 중간코드생성기에 의해 중간코드가 생성되고 난후 다음 단계로 실제로 데이터베이스내의 정보를 가져오기 위해 SQL 생성기를 통해 시스템에서 이용하는 DBMS의 질의어인 SQL 문장으로 변환한다.After the intermediate code is generated by the intermediate code generator, the next step is to convert the SQL statement, which is a query word of the DBMS used by the system, through the SQL generator to get the information in the database.
DBMS의 질의어인 SQL은 국제표준화기구인 ISO와 ANSI에서 채택한 DBMS 표준어로 일반적인 관계형 DBMS의 관계형 대수와 관계형 해석의 구성요소 및 특징을 결합한 질의어이다.SQL, a query language of DBMS, is a DBMS standard adopted by ISO and ANSI, which combines the relational algebra of relational DBMS and components and features of relational interpretation.
또한 SQL은 이러한 질의어 기능외에도 데이타베이스 구조를 정의하는 데이터 정의어(DDL : Data Definition Language) 기능, 데이타베이스 내의 데이터를 수정하는 데이터 조작어(DML : Data Control Language) 기능, 데이타베이스의 보안 및 통제를 하는 제어어(DCL : Data Control Language) 기능 등을 갖는 강력한 데이터베이스 언어이다. 본 발명과 관련하여 제 6 도는 키워드, 키워드인버티드 및 접두코드 릴레이션을 나타낸 내용도로서, SQL 생성기에 의해 주제어와 논리연산자 AND, OR, NOT, 그리고 범위검색, 절단검색, 접두코드, 검색 세트번호, 확장검색어로 구성된 검색문을 제 6 도와 같은 3개의 릴레이션이 존재한다는 가정하에 SQL의 SELECT 문장으로 동적변환 해가는 알고리즘과 방법을 보면 다음과 같다.In addition to these query functions, SQL also supports data definition language (DDL) functions that define database structures, data manipulation language (DML) functions that modify data in the database, and security and control of the database. It is a powerful database language with features such as Data Control Language (DCL). FIG. 6 is a diagram showing keywords, keyword inverted, and prefix code relations in the context of the present invention. The keywords and logical operators AND, OR, NOT, and range search, truncation search, prefix code, and search set by the SQL generator are shown in FIG. The following is the algorithm and method for dynamically converting a search statement consisting of number and extended search terms into a SELECT statement in SQL, assuming that there are three relations as shown in Figure 6.
먼저 SELECT 문장은 관계형 대수연산인 합집합, 교집합, 차집합 등에 해당하는 집합연산인 Union, Intersect, Minus를 제공하는데 검색시스템은 질의기능이 주를 차지하기 때문에 질의기능을 제공하는 SELECT 문장을 이용하며, SELECT 문장의 기본구조는 SELECT, FROM, WHERE의 세절로 구성된다.First, the SELECT statement provides union, intersect, and minus, which are relational algebraic unions, unions, intersections, and difference sets. The basic structure of a SELECT statement consists of three clauses: SELECT, FROM, and WHERE.
- SELECT 절 : 관계형대수의 추출연산에 해당하며, 질의의 결과에 나타나기를 원하는 애트리뷰트(필드)들을 열거한다.SELECT clause: Corresponds to the extraction operation of relational algebra and enumerates the attributes (fields) that you want to appear in the query results.
- FROM 절 : 관계형대수의 선택술어를 이절에 표현해주며, FROM절에 열거된 릴레이션들의 애트리뷰트들의 제한조건에 관한 술어(Predicate)를 열거한다.-FROM clause: This clause expresses the relational algebraic selection predicate, and predicates on the constraints of the attributes of the relations listed in the FROM clause.
SELECT A1, A2,..........,AnSELECT A1, A2, .........., An
FORM R1, R2,..........,RnFORM R1, R2, .........., Rn
WHERE PWHERE P
여기서 A1, A2,..........,An은 애트리뷰트, R1, R2,..........,Rn은 릴레이션, P는 술어를 나타내며, DBMS는 SELECT 문장을 처리하기 위해서 FROM 절에 열거한 릴레이션들의 카티젼곱(Cartesian Product)을 구한후 이 결과를 WHERE 절에 열거한 술어로 선택연산을 수행한다. 그리고 마지막으로 위의 결과를 SELECT 절에 열거한 애트리뷰트들에 대해 해당값들을 추출한다.Where A1, A2, .........., An represents an attribute, R1, R2, .........., Rn represents a relation, P represents a predicate, and DBMS represents a SELECT statement. To process, get Cartesian products of the relations listed in the FROM clause, and then perform the select operation with the predicates listed in the WHERE clause. Finally, extract the values for the attributes listed above in the SELECT clause.
PROCEDURE SQL_Generation(C)PROCEDURE SQL_Generation (C)
/* 입력 : 중간코드형태의 검색문 C *// * Input: intermediate search form C * /
/* 출력 : SQL의 SELECT 문장 *// * Output: SELECT statement in SQL * /
Do While(중간코드 ^= '$') /* $ : 중간코드의 끝 */Do While (middle code ^ = '$') / * $: end of middle code * /
Count_IntermediateCode_Index /* 중간코드의 인덱스를 계산 */Count_IntermediateCode_Index / * Calculate the index of the intermediate code * /
If 중간코드의 인덱스 2 /* 검색문내에 연산자가 하나인 경우 */If index 2 of the intermediate code / * If there is one operator in the search statement * /
ThenThen
DoDo
Call Query_Generation /* 질의문(SQL) 생성 */Call Query_Generation / * Generate Query (SQL) * /
ReturnReturn
EndEnd
Else /* 검색문내에 연산자가 2 이상인 경우 */Else / * If the operator is 2 or more in the search statement * /
DoDo
Call Query_Generation /* 질의문(SQL) 생성 */Call Query_Generation / * Generate Query (SQL) * /
Store_Intermediate_SQL /* 중간형태의 SQL문을 Temporay에 저장 */Store_Intermediate_SQL / * Store intermediate SQL statements in Temporay * /
EndEnd
Query_Generation /* 질의어(SQL)문을 생성하는 순환 프로시쥬어 */Query_Generation / * A circular procedure that generates a query (SQL) statement * /
Switch(Operator) /* 연산자 */Switch (Operator) / * Operator * /
Case 1 (AND) : Generate SELECT 문장 with 'INTERCT' 기능Case 1 (AND): Generate SELECT statement with 'INTERCT' function
Case 2 (OR ) : Generate SELECT 문장 with 'UNION' 기능Case 2 (OR): Generate SELECT statement with 'UNION' function
Case 3 (NOT) : Generate SELECT 문장 with 'NOT' 기능Case 3 (NOT): Generate SELECT statement with 'NOT' function
Case 4 (절단) : Generate SELECT 문장 with '절단' 기능Case 4 (cutting): Generate SELECT statement with 'cutting' function
Case 5 (범위) : Generate SELECT 문장 with '범위' 기능Case 5 (Range): Generate SELECT statement with 'Range' function
Case 6 (접두코드) : Generate SELECT 문장 with '접두코드' 기능Case 6 (prefix code): Generate SELECT statement with 'prefix code' function
Otherwise :Otherwise:
End /* End of Switch(Operator) */End / * End of Switch (Operator) * /
End /* End of Query_Generation PROCEDURE */End / * End of Query_Generation PROCEDURE * /
CompleteOptimize_SQL_Statement /* 최종 SQL문 생성 및 최적화 */CompleteOptimize_SQL_Statement / * Final SQL Statement Generation and Optimization * /
End /* End of Do While (중간코드 = '$') */End / * End of Do While (middle code = '$') * /
- 주제어 검색-Keyword search
컴퓨터에 관련된 정보를 찾으시오 라는 질의의 검색문을 SELECT 문장으로 변환하면 다음과 같다.The following example shows how to convert a search statement to find a computer related information into a SELECT statement.
Select 레코드건수Select Record Count
From 키워드 릴레이션From keyword relation
Where 키워드 = 컴퓨터Where keyword = computer
- 접두코드 검색-Prefix Code Search
제목내에 컴퓨터란 주제어가 포함된 정보를 찾으시오 라는 질의의 검색문을 SELECT 문장으로 변환할 때 Count는 총 레코드수를 계산해주는 내장함수이고, T1는 제목내의 단어중에서 라는 시스템에서 정의한 접두코드라고 할때 다음과 같다.Count is a built-in function that calculates the total number of records when converting a search statement to find information containing a subject in the subject computer. T1 is a system-defined prefix code among the words in the subject. When
Select Count(레코드번호)Select Count (record number)
From 접두코드 릴레이션From prefix relation
Where T1 = 컴퓨터Where T1 = Computer
- 절단( ? ) 검색-Cut (?) Search
주제어가 통신으로 시작되는 모든 정보를 찾으시오 라는 질의의 검색문을 SELECT 문장으로 변환할 때 LIKE는 절단기능을 처리해주는 질의어중의 파라메터라고 할때 다음과 같다.When converting a query to find SELECT information whose main word starts with communication into a SELECT statement, LIKE is a parameter among query words that handle truncation function.
Select Count(레코드번호)Select Count (record number)
From 키워드 릴레이션From keyword relation
Where 키워드 LIKE ?= 통신Where keyword LIKE? = Communication
- AND 연산AND operation
컴퓨터와 반도체에 모두 관련된 레코드를 찾으시오 라는 질의를 검색문으로 표현하면 컴퓨터 AND 반도체이 된다.The query to find records related to both computers and semiconductors is computer AND semiconductor.
상기 제 6 도의 릴레이션들에서 컴퓨터의 키워드번호 (또는 등의어 번호)가 1이고 반도체의 키워드번호(또는 동의어번호)가 2라고 가정하면 이 검색문을 SELECT 문장으로 표현하면 다음과 같다.If the keyword number (or synonym number) of the computer is 1 and the keyword number (or synonym number) of the semiconductor is 2 in the relations of FIG. 6, the search statement is expressed as a SELECT statement as follows.
(Select 레코드번호(Select record number
From 키워드 인버티드 릴레이션From keyword Inverted relation
Where 키워드번호(또는 동의어번호) = 1)Where keyword number (or synonym number) = 1)
INTERSECTINTERSECT
Select 레코드번호Select record number
From 키워드 인버티드 릴레이션From keyword Inverted relation
Where 키워드번호(또는 동의어번호) = 2)Where keyword number (or synonym number) = 2)
여기에서 INTERSECT 연산은 DBMS에 따라 제공하거나 안하는 경우가 있을 수 있으며, 제공하지 않을 경우에는 JOIN 연산을 이용하여 다음과 같이 변환할 수 있다.In this case, the INTERSECT operation may or may not be provided depending on the DBMS. If not, the INTERSECT operation may be converted using the JOIN operation as follows.
Select A. 레코드번호Select A. Record Number
From 키워드 인버티드 릴레이션 A, 키워드 인버티드 릴레이션 BFrom Keyword Inverted Relation A, Keyword Inverted Relation B
Where A. 키워드번호(또는 동의어번호) = 1Where A. Keyword Number (or Synonym Number) = 1
AND B. 키워드번호(또는 동의어번호) = 2AND B. Keyword Number (or Synonym Number) = 2
- OR 연산OR operation
컴퓨터 또는 반도체에 모두 관련된 레코드를 찾으시오 라는 질의를 검색문으로 표현하면 컴퓨터 OR 반도체이 된다.The query to find records related to both computers and semiconductors is computer OR semiconductors.
제 6 도의 릴레이션들에서 컴퓨터의 키워드번호(또는 동의어번호)가 1이고 반도체의 키워드번호(또는 동의어번호)가 2라고 가정하면 이 검색문을 SELECT 문장으로 표현하면 다음과 같다.In the relations of FIG. 6, if the keyword number (or synonym number) of the computer is 1 and the keyword number (or synonym number) of the semiconductor is 2, the search statement is expressed as a SELECT statement as follows.
(Select 레코드번호(Select record number
From 키워드 인버티드 릴레이션From keyword Inverted relation
Where 키워드번호(또는 동의어번호) = 1)Where keyword number (or synonym number) = 1)
UNIONUNION
Select 레코드번호Select record number
From 키워드 인버티드 릴레이션From keyword Inverted relation
Where 키워드번호(또는 동의어번호) = 2)Where keyword number (or synonym number) = 2)
NOT(^) 연산NOT (^) operation
이동통신에 관한 자료중 미국을 제외한 각국의 모든 자료를 검색하는 경우의 질의를 검색문으로 표현하면 이동통신^미국이 된다.When searching all the data of each country except the US among the data related to mobile communication, the query would be mobile communication → USA.
이동통신에 관한 키워드번호(또는 동의어번호)가 1이고 미국이라는 키워드번호(또는 동의어번호)가 2라고 가정하고 이 검색문을 DL2 SQL문으로 표현할 때 실제로 NOT 연산을 제공하는 직접적인 SQL문은 없으므로 제공되는 기능을 조합시켜 생성하였다.When the keyword number (or synonym number) related to mobile communication is 1 and the keyword number (or synonym number) of USA is 2 and this search statement is expressed as DL2 SQL statement, there is no direct SQL statement that actually provides NOT operation. It was created by combining the functions.
Select Distinct 레코드번호Select Distinct Record Number
From 키워드 인버티드 릴레이션From keyword Inverted relation
Where 키워드번호(또는 동의어번호) In ( 1 )Where Keyword Number (or Synonym Number) In (1)
And A.레코드 번호 NOT In ( Select A. 레코드번호And A. Record Number NOT In (Select A. Record Number
From 키워드 인버티드 릴레이션 A, 키워드 인버티드 릴레이션 BFrom Keyword Inverted Relation A, Keyword Inverted Relation B
Where A. 키워드번호(또는 동의어번호) = 1Where A. Keyword Number (or Synonym Number) = 1
And B. 키워드번호(또는 동의어번호) = 2And B. Keyword Number (or Synonym Number) = 2
And A. 레코드번호 = B. 레코드번호And A. Record Number = B. Record Number
- 범위(:) 연산Range (:) operation
범위연산(:)은 1991년에서 1993년까지의 이동통신에 관한 자료를 찾고자 할 경우 의 질의를 검색문으로 표현하고자 할 때, AND와 OR 연산 조합만으로는 PY=1991 AND 이동통신 OR PY=1992 AND 이동통신 OR PY=1993 AND 이동통신 과 같이 찾고자 하는 년도(검색키)가 많아질 경우 검색문이 복잡하게 되나, 범위연산을 이용할 경우에는 이동통신 AND PY=1991:1993 처럼 간단하게 구성할 수 있게 된다.The range operation (:) is PY = 1991 AND mobile communication OR PY = 1992 AND only when AND and OR combinations are used to express the query when searching for data related to mobile communication from 1991 to 1993. Mobile search OR PY = 1993 AND If the number of years (search key) you want to find like mobile communication becomes more complicated, the search statement becomes more complicated.However, if you use range operation, you can easily configure mobile communication AND PY = 1991: 1993 do.
여기에서 이동통신에 관한 키워드번호(또는 동의어번호)가 1이고, 년도 검색키의 접두코드를 PY라고 가정하면Here, suppose that the keyword number (or synonym number) for mobile communication is 1 and the prefix code of the year search key is PY.
Select Distinct 레코드번호Select Distinct Record Number
From 키워드 인버티드 릴레이션 A, 검색키 릴레이션 BFrom Keyword Inverted Relation A, Search Key Relation B
Where A. 키워드번호(또는 동의어번호) In ( 1 )Where A. Keyword Number (or Synonym Number) In (1)
And B. PY Between '1991' And '1993'And B. PY Between '1991' And '1993'
And A. 레코드번호 = B. 레코드번호And A. Record Number = B. Record Number
- 괄호(()) 연산-Parentheses (())
미국의 이동통신이나 컴퓨터에 관한 자료를 찾고자 할 경우 의 질의를 검색문으로 표현하고자 할때, AND와 OR 조합만으로는 미국 AND 이동통신 OR 미국 AND 컴퓨터 과 같이 생성할 수도 있으나, 미국 AND (이동통신 OR 컴퓨터)와 같이 괄호 연산을 이용하여 간단하게 생성하게 된다.When you want to find a query about US mobile communication or computer, you can create a query with US AND mobile OR OR US AND computer with only AND and OR combinations. As in the case of computers).
여기에서 미국에 관한 키워드번호(또는 동의어번호)가 1이고, 이동통신에 관한 키워드번호가 2, 컴퓨터에 관한 키워드번호가 3이라고 가정하면Here, assume that the keyword number (or synonym number) for the United States is 1, the keyword number for mobile communication is 2, and the keyword number for computer is 3.
Select Distinct 레코드번호Select Distinct Record Number
From 키워드 인버티드 릴레이션 A, 키워드 인버티드 릴레이션 BFrom Keyword Inverted Relation A, Keyword Inverted Relation B
Where 키워드번호(또는 동의어번호) In ( 1 )Where Keyword Number (or Synonym Number) In (1)
And (키워드번호(또는 동의어번호) = 2And (keyword number (or synonym number) = 2
Or 키워드번호(또는 동의어번호) = 3Or keyword number (or synonym number) = 3
And A. 레코드번호 = B. 레코드번호And A. Record Number = B. Record Number
이상과 같이 검색문에 해당하는 질의어가 생성되면 다음단계로 SQL 처리기는 해당 데이터베이스로 부터 정보를 가져오고 그 결과에 대해 검색 세트(SET)를 구성한다.As above, when the query word corresponding to the search statement is generated, the SQL processor takes information from the database and constructs a search set for the result.
검색 세트는 검색이 수행되는 순서이며, 이 정보는 검색문의 일종으로 이용될 수도 있다.The search set is an order in which a search is performed, and this information may be used as a kind of search statement.
최종단계로 검색결과 출력기는 검색결과를 화면에 보여준다.In the final step, the search result displayer displays the search results on the screen.
예를 들어 첫번째로 입력된 검색문이 미국 AND (이동통신 OR 컴퓨터) 인 경우에 컴퓨터란 주제어만 동등어라고 가정할때 검색결과는, 아래와 같은 형태를 갖는다.For example, in the case where the first inputted search sentence is a US AND (mobile communication OR computer), assuming that only the main term computer is the equivalent, the search result has the following form.
239 이동통신 -------- [1]239 Mobile Communications -------- [1]
157 @컴퓨터 -------- [2]157 @Computer -------- [2]
37 미국 AND (이동통신 OR 컴퓨터) -------- [3]37 US AND (Mobile Communication OR Computer) -------- [3]
[1]은 주제어 이동통신에 관한 레코드건수가 총 239건이라는 의미이고, [2]에서 @ 표시는 컴퓨터란 주제어는 동등어 처리가 되었다는 의미이고 컴퓨터에 관한 레코드건수가 총 157건이라는 의미이다.[1] means that the total number of records related to the mobile communication of the main word is 239. In the [2], the @ symbol means that the main word has been treated as an equivalent and the total number of records about the computer is 157.
그리고 [3]은 검색문 미국 AND (이동통신 OR 컴퓨터)가 첫번째의 세트로 구성(S1)되고 총 37 건의 레코드건수가 시스템내의 전문정보데이터베이스에 저장되어 있다는 의미이다.And [3] means that the search statement US AND (Mobile Communication OR Computer) is composed of the first set (S1) and a total of 37 records are stored in the expert information database in the system.
이상 설명한 바와 같이 본 발명에 의하여 입력되어지는 검색문을 상기 입력 당시에 시스템에서 분석하여 실제 DBMS의 해당 질의어를 동적변환을 함과, 동시에 최적화시켜 응답시간을 단축시키는 효과를 볼 수 있다.As described above, the search statement input by the present invention can be analyzed in the system at the time of the input, and the corresponding query of the actual DBMS can be dynamically transformed and simultaneously optimized to shorten the response time.
Claims (3)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019940036345A KR0133406B1 (en) | 1994-12-23 | 1994-12-23 | Dynamic conversion method of retrieval statement concerning korean language information retrieval |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019940036345A KR0133406B1 (en) | 1994-12-23 | 1994-12-23 | Dynamic conversion method of retrieval statement concerning korean language information retrieval |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960025181A KR960025181A (en) | 1996-07-20 |
KR0133406B1 true KR0133406B1 (en) | 1998-05-15 |
Family
ID=19403190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019940036345A KR0133406B1 (en) | 1994-12-23 | 1994-12-23 | Dynamic conversion method of retrieval statement concerning korean language information retrieval |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR0133406B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020030545A (en) * | 2000-10-18 | 2002-04-25 | 남 데이비드 이 | Automatic answer and search method - based on artificial intelligence and natural languane process technology - for natural and sentencial questions. |
KR100741283B1 (en) * | 1999-12-14 | 2007-07-19 | 주식회사 케이티 | Apparatus and method for searching pattern matching information in information searching system |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100659542B1 (en) * | 2006-03-13 | 2006-12-19 | 주식회사 퓨전소프트 | Method and system for searching the korean alphabet, and computer readable storage |
KR101989485B1 (en) * | 2017-12-28 | 2019-06-14 | 주식회사 케이티 | System for extracting user defined event based global standard one and method thereof |
CN113268495A (en) * | 2021-05-25 | 2021-08-17 | 深圳壹账通智能科技有限公司 | Data searching method and device, electronic equipment and storage medium |
-
1994
- 1994-12-23 KR KR1019940036345A patent/KR0133406B1/en not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100741283B1 (en) * | 1999-12-14 | 2007-07-19 | 주식회사 케이티 | Apparatus and method for searching pattern matching information in information searching system |
KR20020030545A (en) * | 2000-10-18 | 2002-04-25 | 남 데이비드 이 | Automatic answer and search method - based on artificial intelligence and natural languane process technology - for natural and sentencial questions. |
Also Published As
Publication number | Publication date |
---|---|
KR960025181A (en) | 1996-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2170235C (en) | Method and apparatus for the modeling and query of database structures using natural language-like constructs | |
Abiteboul et al. | Querying documents in object databases | |
Carroll | Practical unification-based parsing of natural language | |
EP0610760B1 (en) | Document detection system with improved document detection efficiency | |
US4829423A (en) | Menu-based natural language understanding system | |
EP0439937B1 (en) | A direct manipulation interface for boolean information retrieval | |
EP1399842B1 (en) | Creation of structured data from plain text | |
JP2000315216A (en) | Method and device for retrieving natural language | |
CN114528846A (en) | Concept network for artificial intelligence and generation method thereof | |
EP0118187B1 (en) | Menu-based natural language understanding system | |
KR0133406B1 (en) | Dynamic conversion method of retrieval statement concerning korean language information retrieval | |
Abiteboul et al. | A logical view of structured files | |
Ghodke et al. | Fangorn: A system for querying very large treebanks | |
CN115345153A (en) | Natural language generation method based on concept network | |
Keller | Programming for Corpus Linguistics with Python and Dataframes | |
Cox et al. | Representing and accessing extracted information | |
Lange | dACL: the deep constraint and action language for static and dynamic semantic definition in Melanee | |
JPH07244669A (en) | Document retrieval system | |
Goodman | PyDelphin Documentation | |
Voisin | A bottom-up adaptation of Earley's parsing algorithm | |
Abiteboul et al. | Querying the file | |
Sengupta | Structured Document Databases | |
Antidze et al. | Software tools for computer realization of morphological and syntactic models of georgian texts | |
JPH0561679A (en) | Interactive interface system | |
JPH0225970A (en) | Kana/kanji converter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20111004 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20111031 Year of fee payment: 20 |
|
EXPY | Expiration of term |