WO2023210643A1 - 全文検索プロセッサ - Google Patents

全文検索プロセッサ Download PDF

Info

Publication number
WO2023210643A1
WO2023210643A1 PCT/JP2023/016310 JP2023016310W WO2023210643A1 WO 2023210643 A1 WO2023210643 A1 WO 2023210643A1 JP 2023016310 W JP2023016310 W JP 2023016310W WO 2023210643 A1 WO2023210643 A1 WO 2023210643A1
Authority
WO
WIPO (PCT)
Prior art keywords
full
character
text search
text
circuit
Prior art date
Application number
PCT/JP2023/016310
Other languages
English (en)
French (fr)
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
Priority claimed from JP2022147080A external-priority patent/JP7475078B2/ja
Application filed by 克己 井上 filed Critical 克己 井上
Publication of WO2023210643A1 publication Critical patent/WO2023210643A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements

Definitions

  • the present invention relates to a full-text search processor that performs a full-text search using keywords on text data within a semiconductor device.
  • full-text search or keyword search the process of searching for specific document data from a large amount of document data (including texts, literature, texts, etc.) is called full-text search or keyword search, and includes web searches, patent information searches, and in-house document databases. It is frequently used in all fields, including PCs and smartphones.
  • full-text search and keyword search are information processing that is the basis of natural language processing.
  • Full-text search processing involves specifying keywords (key characters or character strings such as “search”, “retrieval”, “information”, etc.) as search conditions, and checking whether these characters or character strings are included in the document. This is to search for and identify the data of the documents included.
  • the commonly used transposed index is a method in which a dictionary term is used as a heading (index), or a method in which a character string called an N-gram is used as a heading (index).
  • Morphological indexes are characterized by a small number of indexes, and although forward matching is good, it is difficult to perform full-text searches for middle matches and suffix matches, and it is difficult to support new terms such as buzzwords.
  • N-gram index was devised by Claude Elwood Shannon, who is famous as the founder of information theory, for the purpose of natural language analysis.
  • US 2010/0185647 A1 is a semiconductor device for the purpose of searching character data, but when supporting only 256 types of characters such as ASKII code, the XY matrix consisting of a row decoder and feature cells is 256 ⁇ 256 may be small, but in the case of a 3-byte or 4-byte structure such as Japanese text in UTF-8 code, the XY matrix becomes enormous and is difficult to realize.
  • this patent is aimed at searching stream data such as detecting malware, and cannot be used for both storage-type data and stream-type data as in the present application.
  • Patent No. 4588114 A memory equipped with an information narrowing down detection function, a method for using the same, and a device including this memory.
  • Patent No. 5981666 Memory with information search function, its usage method, device, and information processing method.
  • the purpose of this application is to provide a hardware accelerator processor for full-text search that eliminates the need to create an index such as a transposed index, and has the same full-text search performance as a system using an N-gram transposed index.
  • the goal is to fundamentally solve various technological issues, improve natural language processing technology, and aim for global standardization of full-text search.
  • a full-text search processor consisting of a semiconductor device for the purpose of full-text keyword search, A character memory element that receives text data to be searched, assigns each byte of encoded character strings included in this text data to addresses 1 to N, and temporarily stores them; and one or more encoded characters included in the search keyword.
  • a character memory element that receives text data to be searched, assigns each byte of encoded character strings included in this text data to addresses 1 to N, and temporarily stores them; and one or more encoded characters included in the search keyword.
  • a full-text search processor comprising: a result output circuit that outputs a start position or an end position of the continuous character string.
  • the character detection circuit is connected to each address of the character storage element, and compares the 1-byte/8-bit code of the text data stored at each address with the 1-byte/8-bit code forming the comparison data. , N sets of eight 1-bit match or mismatch calculation circuits that detect match or mismatch for each bit, and 8-bit result outputs from each set of 1-bit match or mismatch calculation circuits are received, and each address is N logical operation (logical product (AND), logical sum (OR) logical negation) circuits for detecting a match or mismatch between the coded characters of the text data stored in the text data and the coded characters constituting the comparison data;
  • a full-text search processor having the following features.
  • the character string detection circuit is configured to continuously determine the validity of the arrays of FGs (flags) of character storage locations continuously detected by the character detection circuit and FGs (flags) of the detected character storage locations. , consists of two circuits: an FG shift circuit and an FG winning circuit.
  • the FG shift circuit and the FG winning circuit refer to the array of encoded characters included in the search keyword, and allocate and store the coded characters from the 1st address to the Nth address.
  • the character string detection circuit stores the calculation result of the character detection circuit as a flag, and also includes N FG shift circuits that shift the stored FG in N parallels.
  • N FG winning circuits that perform N parallel logic operations with the FG before shifting while shifting in parallel, and perform winning calculations on the FG by repeating this for all encoded characters included in the search keyword.
  • a full-text search processor featuring:
  • a full-text search processor characterized in that the number of shifts by the FG shift circuit and the number of times the FG winning calculation circuit performs winning calculations accordingly are n-1 times.
  • a full-text search processor characterized in that the FG winning circuit has a function of making it possible to mask (ignore) operations, and makes it possible to perform a full-text search when a wild card is used in a search keyword.
  • a full-text search processor characterized in that the FG winning circuit incorporates two sets of registers and enables full-text search including character gaps in a search keyword.
  • a full-text search processor characterized in that it performs a logical sum (OR) operation on the N parallel (all parallel) detection results output by the result output circuit, and outputs the presence or absence of a full-text detection result.
  • a full-text search processor that performs or does not perform a full-text search operation when a pre-specified character code is included in a character string of a search keyword given from the outside.
  • Full-text search is characterized by comparing part of the text being created with a full-text search processor that has accumulated a large amount of text data containing the latest information, and determining that there is no precedent if there is no hit text. processor.
  • Full-text search processing such as web searches, patent searches, in-house data searches, and data searches on PCs and smartphones, is closely related to our work and life, and is an indispensable form of information processing.
  • the full-text search processor of the present invention By using the full-text search processor of the present invention, there is no need to use a transposed index, and it is possible to perform a full-text search with performance comparable to methods using transposed indexes.
  • FIG. 1 is a diagram illustrating the basic configuration of a full-text search processor according to an embodiment (first example) of the present invention.
  • the full-text search processor 101 which is an embodiment of the present invention, can be used with any character code and provides a configuration that can realize advanced and efficient full-text searches.
  • character text data 132 included in a document is expressed using various encoded characters, or character codes, such as ASCII (American Standard Code for Information Interchange), Shift JIS, and UTF-8 (UCS Transformation Format 8).
  • ASCII American Standard Code for Information Interchange
  • Shift JIS Shift JIS
  • UTF-8 UTF-8
  • ASCII has a 7-bit or 1-byte configuration
  • Shift JIS has a 2-byte configuration
  • UTF-8 has a variable length.
  • the character text data 132 to be searched is stored in a storage element for each byte (8 bits), and the "characters" and “characters” of the character string of the given search keyword 125 are stored in the memory element.
  • the system compares the matches and mismatches of the "sequence" in parallel byte by byte, and returns the position (address) of character text data 132 corresponding to the beginning or end of the character string of the given search keyword 125 as a full-text search result.
  • FIG. 1 shows the basic configuration of a full-text search processor.
  • This full-text search processor 101 is connected to a host computer (hereinafter referred to as "HOST"), and searches for character text data 132 to be searched given from this HOST using search keywords 125 similarly given from HOST.
  • a parallel full-text search operation is executed using the search condition , and the position (address) of the character text data 132 detected as a result is returned to HOST.
  • the full text search processor 101 has a configuration in which a full text search circuit 103 and a command generation circuit 127 are connected to an input/output interface 115 connected to the HOST.
  • the full text search circuit 103 includes a character storage element 102 that stores character text data 132 to be searched, and a character storage element 102 for detecting characters included in a search keyword 125 from the character text data 132 stored in the character storage element 102. a character detection circuit 105; and a character string detection circuit 106 for specifying the position (address) of a character in the character text data 132 that corresponds to the first character or the last character of the character string of the search keyword 125 based on the character detection result. and a result output circuit 107 for outputting the detection result of the character string detection circuit 106 in a predetermined format.
  • the command generation circuit 127 includes a system clock generation circuit 131 that generates a system clock 131 and a comparison circuit that generates comparison data 123 to be given to the character detection circuit 105 based on the search keyword 125. a data generation circuit 123; a shift clock generation circuit 130 that determines the timing for applying the winning calculation condition 129 to the character string detection circuit 106 after character detection; The winning calculation condition generating circuit 129 generates winning calculation conditions.
  • the system clock generation circuit 131 of the command generation circuit 127 generates a system clock 131 that is the basis for the full text search processor 101 to perform full text search operations at predetermined operation timings, for example, a continuous clock every 10 ns or 20 ns. Using (synchronizing with) this system clock 131, the comparison data generation circuit 123, shift clock generation circuit 130, and winning calculation condition generation circuit 129 operate.
  • the above comparison data generation circuit 123, shift clock generation circuit 130, and winning calculation condition generation circuit 129 convert the character detection circuit 105 and character string detection circuit 106 based on the search keyword 125 set by the keyword setting function 128 of HOST.
  • Full-text search calculation conditions 114 are generated, which are composed of three types of calculation conditions: comparison data 123, shift clock 130, and winning calculation conditions 129.
  • the search keywords 125 include English keywords each character consisting of one byte, Japanese keywords consisting of one character three bytes, and other multilingual languages.
  • search keyword 125 when the search keyword 125 is the English word "search”, this keyword includes the following characters: “s”, “e”, “a”, “r”, “c”, and “h”. It consists of a character code of 1 byte and a total of 6 bytes.
  • each kanji data is 3 bytes, that is, for "ken”, “ken: 1/3”, “ken: 2/3”, “ken: :3/3'', and ⁇ sword'' is composed of ⁇ sword: 1/3'', ⁇ sword: 2/3'', and ⁇ sword: 3/3'', resulting in a total of 6 bytes of character code.
  • the comparison data generation circuit 123 of the command generation circuit 127 decomposes the search keyword 125 into one byte, that is, eight bit data (0 or 1), and each byte is divided into eight bit data (0 or 1).
  • the comparison data 123 is generated and supplied to the character detection circuit 105.
  • the comparison data generation circuit 123 uses special characters (wildcard symbol " ? ", gap (hereinafter also referred to as Gap) included in the search keyword 125) to generate the comparison data 123. ) operator " * “ etc.), the special character is ignored or replaced with a predetermined character code.
  • search keyword 125 contains a specific wild card (for example, " ? ")
  • the characters corresponding to this wild card are masked (hereinafter also expressed as mask or ignore) is performed.
  • processing according to such special character codes can be carried out by using, for example, a special character lookup table to distinguish between normal characters and special characters.
  • this comparison data generation circuit 123 is configured to count the number of bytes of the character string composing the search keyword 125 and pass the result to the winning calculation condition generation circuit 129.
  • the shift clock generation circuit 130 generates a shift clock 130 that is a timing for providing the character string detection circuit 106 with a specific calculation condition for character string detection. Specifically, the shift clock generation circuit 130 supplies the FG (flag) shift circuit 112 of the character string detection circuit 106 shown in FIG. This is a circuit that provides a signal.
  • the search keyword 125 when the search keyword 125 is 6 bytes, the number of shifts given to the FG shift circuit 112 is 6-(minus) 1, which is 5 times. This also applies when the search keyword 125 contains special characters such as a wild card symbol or a gap operator.
  • this shift clock generation circuit 130 is configured to also determine the timing for providing the calculation conditions to the winning calculation condition generation circuit 129.
  • the winning calculation condition generation circuit 129 provides calculation conditions to the character string detection circuit 106 in conjunction with the shift clock generation circuit 130 described above.
  • the predetermined winning calculation condition 129 is "directly input”, “logical product”, “logical sum”, “exclusive OR”, It is given by selecting from “mask (ignoring)”, “gap operation”, “logical negation”, etc.
  • the search keyword is 6 bytes and consists of regular characters that do not include special characters such as wild cards, when detecting characters (in the first step), at the time of character string search (5th step to 11th step), the ⁇ logical product'' operation command is selected and given to the FG winning circuit 113.
  • This selection of calculation conditions can be determined by, for example, referring to a lookup table.
  • the character storage element 102 of the full-text search circuit 103 is like a flip-flop that temporarily stores the character text data 132 provided from the HOST through the input/output interface 115 in units of 8 bits, that is, 1 byte. It is a register or memory configured to store N pieces of 1-byte data from address 1 to address N in total.
  • the character text data 132 includes web text data, text data such as novels, magazines, and papers, patent literature text data, in-house document text data, and any text data such as e-mail text data from PCs and smartphones, Word, Excel, etc. will be targeted.
  • These character text data 132 have various sizes, ranging from several bytes to hundreds of thousands of bytes or more per item.
  • character text data 132 are configured as a large number of document data (text data), ranging from a few items to several tens of billions.
  • the character storage element 102 from among the character text data 132 of various sizes as described above, part of it, for example, 32K bytes of character text data 132, is stored in the character storage element 102 from address 1 to address N.
  • the system is configured to perform a full-text search on the character text data 132 that has been searched.
  • FIG. 2 shows, as an example, a case where the character string "est" after “y” in the character string “yesterday” is stored in the character storage element 102.
  • the 1st address of address 126 is “e”
  • the 2nd address is “s”
  • the 3rd address is "t”
  • the N address is "h”
  • the 1st address is "01100101” and the 2nd address is " 01110011''
  • the 3rd address is ⁇ 01110100''
  • the N address is ⁇ 01110100''
  • the UTF-8 character codes are stored in the character storage element 102.
  • the character detection circuit 105 of this full text search circuit 103 is connected to a 1-bit match detection circuit 109 connected to the comparison data generation circuit 123 of the command generation circuit 127, and this 1-bit match detection circuit 109, and an 8-input AND circuit 110 connected to the terminal 109.
  • the 1-bit coincidence detection circuit 109 is provided corresponding to each of the 1 byte/8 memory element cells constituting the character memory element 102, and one input is connected to each of the memory cells. The other input is connected to each bit data of 1 byte/8 bits received as the comparison data 123. Then, it is configured to perform a bit-by-bit coincidence detection operation on both inputs and output the result to an 8-input AND circuit 110.
  • the 1-bit match detection calculation circuit 109 is made up of N ⁇ 8 matching circuits connected in parallel, and executes N parallel calculations on the N-byte character text data 132.
  • the 8-input AND circuit 110 is provided for each byte, receives outputs from 1 byte, that is, eight 1-bit coincidence detection circuits 109, performs an AND operation on these, and outputs the result. This is what is output.
  • the 1-bit match detection circuit 109 and the 8-input AND circuit 110 compare the 1-byte comparison data 123 given from the command generation circuit 127 with the N-byte character text data 132 over all bytes. will be executed in parallel.
  • FG a flag indicating a match of 8-bit data is output as "1" from the 8-input AND circuit 110 corresponding to address 2 of address 126 of the matching full-text search circuit, and a match is made. This indicates that "0" is output for addresses that do not.
  • character detection is performed based on match detection, but a non-match detection circuit (XOR), an 8-input logical sum (OR) circuit 111, a logic NOT (NOT) circuit, and other circuits are used. This can be achieved through a combination.
  • the character string detection circuit 106 is composed of an FG shift circuit 112 and an FG winning circuit 113.
  • the FG shift circuit 112 is composed of N shift registers with a preset function, corresponding to the number of the 8-input AND circuits 110.
  • the output of the 8-input AND circuit 110 is connected to the preset input "P" of this FG shift circuit 112.
  • the data output "Q" of the shift register at the first address is connected to the data input "D" of the shift register at the second address, and the data output "D” of the shift register at the second address is connected to the shift register at the third address. connected to data input “Q” of
  • each shift register is connected to the shift clock 130 given from the command generation circuit 127.
  • the search keyword is detected.
  • the FG winning circuit 113 calculates the number of bytes of the search keyword 125. It is possible to detect the positions of consecutive flags, that is, the character sequence 122 (character string).
  • the FG winning circuit 113 is provided with N circuits corresponding to the FG shift circuit 112, and includes logic negation, direct input, AND, OR, exclusive OR, mask, and gap. It is composed of a logic circuit group (or element) that can perform calculations, a select circuit to select calculation conditions, and a winning register to store calculation results.
  • calculation condition input of the selection circuit is connected to the winning calculation condition generation circuit 129 of the command generation circuit 127, and includes logical negation, direct input, logical product, logical sum, exclusive OR, mask (ignoring), and gap. Which calculation condition to use for the calculation is determined by the winning calculation condition generation circuit 129 of the command generation circuit 127.
  • the winning calculation condition 129 determines the calculation condition in the character string detection circuit 106 based on the character string and character type specified as the search keyword 125, as described above. As described above, a winning calculation process is performed according to the character string included in the search keyword 125, and each time the winning calculation is performed, the winning calculation result is stored as an FG in the winning register.
  • the winning register that survived the number of bytes of the character string of the search keyword 125 x 2 - 1 winning winning calculations is set to logic "1", and the others are set to "0", and the final winning winning FG is stored in the winning register. become.
  • the result output circuit 107 is provided with N circuits corresponding to the N circuits of FG winning circuits 113, and outputs the operation result of "1" or "0" in the winning register of the FG winning circuit 113.
  • This is a circuit configured to output.
  • a configuration may also be adopted in which if there is a ⁇ 1'', then ⁇ there is a calculation result'', and if there is no ⁇ 1'', then ⁇ there is no calculation result'', that is, only a ⁇ presence/absence'' result is output.
  • the output from the result output circuit 107 is configured to be returned to the HOST as the calculation result through the input/output interface 115 as shown in FIG.
  • the character text data 132 is transferred directly from the CPU of the HOST to the character storage element 102 via the input/output interface 115 or by a DMA (Direct Memory Access) method, and an N-byte character code is stored.
  • DMA Direct Memory Access
  • the entire code representing one character can be expressed in 3 bytes for many characters, so approximately N/3 characters are stored in the character storage element 102.
  • characters are detected based on the comparison data 123 provided from the command generation circuit 127.
  • the character detection circuit 105 includes eight 1-bit coincidence detection circuits 109 per byte connected to the output of each memory cell of the character storage element 102, and one bit coincidence detection circuit 109 connected to the outputs of the eight 1-bit coincidence detection circuits 109. Since it is configured with one 8-input AND circuit 110 per byte, if the character code of the specified comparison data 123 matches the character code of the character storage element 102, it becomes the target. The output of the AND circuit 110 at address 126 of the full text search circuit becomes logic "1".
  • This result is stored as a character detection result for each byte in the FG shift circuit 112, which will be described later, as a logic "1" FG (flag), and since the address 126 of the other full-text search circuits does not match, the character does not match. This is stored in the FG shift circuit 112 as logic "0".
  • the character string is detected based on the shift clock 130 and the winning calculation condition 129 commands given from the command generation circuit 127.
  • the character string detection circuit 106 is composed of the FG shift circuit 112 and the FG winning circuit 113.
  • the FG shift circuit 112 outputs the match results of parallel character match detection by the character detection circuit 105, such as the aforementioned “s”, “e”, “a”, “r”, “c”, “h”, and " Character matches such as "Search: 1/3", “Search: 2/3”, “Search: 3/3”, “Search: 1/3", “Search: 2/3”, “Search: 3/3” It has the function of storing results (FG) and shifting data.
  • the FG shift circuit 112 stores N FGs preset from the output of the character detection circuit 105 in full parallel (N parallel) every time the shift clock 130 for the shift operation given from the command generation circuit 127 is applied. This is a shift. (Specific examples of this data shift will be described later with reference to FIGS. 5 to 12.)
  • the FG winning circuit 113 outputs the detected "s", “e”, “a”, “r”, “c”, “h” or "Detection: 1/3", “Detection: 2/3".
  • a sequence of character codes such as “Search: 3/3", “Search: 1/3", “Search: 2/3", “Search: 3/3” is the character code given as the search keyword 125.
  • This FG winning circuit 113 includes logic elements for AND, OR, exclusive OR, and logical NOT for performing advanced winning calculations, and a selection circuit for selecting logical operations of the above logic elements. It consists of a winning register that stores the calculation results output from the selection circuit.
  • the selection circuit receives input from the winning calculation condition generation circuit 129 of the command generation circuit 127, and selection signals for operation conditions, logical NOT, logical product, logical sum, exclusive OR, mask (ignoring), and gap calculation.
  • the winning register consists of two registers: a winning main register and a winning subregister that holds the intermediate results of the winning calculation, in order to improve the convenience and performance of calculations.
  • the configuration is such that the command generation circuit 127 controls which one to use.
  • the winning main register is used, and in the case of a special operation such as a gap calculation, both the winning main register and the winning sub-register can be operated.
  • this circuit configuration shows the concept of winning calculation, so it shows conceptual contents such as the configuration of logic circuits and registers, and is not limited to this configuration.
  • the input received from the output of the FG shift circuit 112 is directly assigned to the winning selection register of the FG winning selection circuit 113.
  • address 2 of address 126 of the full text search circuit becomes logic "1", and other addresses become logic "0".
  • the winning register output of the FG winning circuit 113 at address 126 of the winning full-text search circuit becomes logic "1", and the outputs of other registers become logic "0".
  • search is the search keyword 125
  • the address 126 of the winning full-text search circuit stores the character code corresponding to the first address "s" of the search keyword 125 character string to be searched.
  • the result output circuit 107 has a function of outputting the output of the FG winning circuit 113 where there is a predetermined number of character sequences 122 (character string) to the HOST as logic "1" and otherwise as logic "0".
  • the above logic state of the FG winning circuit 113 is output from the full text search operation result output circuit 107 to the HOST via the input/output interface 115. Any method may be used to output the result, such as a method of outputting the logical states of all addresses or a method of outputting the number (address) of the winning address.
  • N full-text search circuits 103 composed of a character storage element 102, a character detection circuit 105, and a character string detection circuit 106 perform full-text search operations with a degree of parallelism N. to realize efficient and fast full-text search.
  • the command generation circuit 127 generates a predetermined command based on the search keyword 125 given from the HOST.
  • the command generation circuit 127 generates full-text search commands based on various search conditions such as not only a search keyword 125 such as "search” but also a wild card and a search keyword 125 that includes a character gap (character position tolerance). It has the function to generate.
  • each table shows the operation steps (order) of the full-text search operation, and shows what kind of command (instruction) is given to the full-text search circuit 103 at which step.
  • each step is executed in synchronization with the system clock 131.
  • the “comparison data” 123 on the second line includes “s”, “e”, “a”, “r”, “c”, “h”, “test: 1/3”, etc. given to the character detection circuit 105. Comparison data such as “Search: 2/3”, “Search: 3/3”, “Search: 1/3”, “Search: 2/3”, and “Search: 3/3” are shown.
  • the clock sent from the shift clock generation circuit 130 to the FG shift circuit 112 is indicated by an "O" mark.
  • comparison data is given in the first six steps, and in the next steps 7 to 11, the FG shift circuit 112 performs a shift operation.
  • the "winning calculation condition” 129 on the fourth line contains winning calculation conditions such as "direct input”, “logical product”, “mask (ignored)", and “gap calculation” to be given to the FG winning circuit 113. It is shown.
  • full-text search for the English standard and (2) full-text search for the Japanese standard are examples of standard full-text searches.
  • an example of a full-text search command is shown in which English text is 1-byte 6-character "search” and Japanese text is 3-byte 2-character "search” (both are 6 bytes).
  • the command generation circuit 127 is placed inside the full-text search processor 101, but the command generation circuit 127 can also be sent from the CPU of the HOST to the full-text search processor 101 at each step by software processing. You are also free to send them in bulk.
  • full-text search operations are shown below: full-text search for English standard, full-text search for Japanese standard, full-text search for English wildcard, and full-text search for English character gaps.
  • FIG. 5 illustrates data state transition-A (character detection step) in a standard full-text search for English text.
  • FIG. 6 illustrates data state transition-B (character string detection step) in a standard full-text search for English text.
  • 16-character English text data "full text search" in UTF-8 character code is input from the i+1 byte of the relative address 104 of the full text search circuit of the character storage element 102 (hereinafter simply referred to as relative 1 address). It is assumed that 16 bytes are stored in the character storage element 102 of the book full text search processor 101 up to the i+16th byte (hereinafter simply referred to as relative 16th address).
  • step 1 to step 11 are controlled by the full text search circuit 103 using commands (comparison data 123, shift clock 130, winning calculation condition 129) given from the command generation circuit 127.
  • Steps 1 to 6 shown in FIG. 5 correspond to steps 1 to 6 in (1) of FIG. 4. From the stored character text data 132 of "full text search", "search” is It shows the processing steps for detecting characters.
  • step 1 the character "s" consisting of one byte is detected, and in this embodiment, the character detection circuit 105 at relative address 11 detects "s".
  • the detected FG is preset in the FG shift circuit 112, and the FG shift circuit 112 at relative address 11 becomes logic "1", and the others become logic "0". Furthermore, this FG is the first winning FG, and by selecting "direct input” as the calculation condition for the FG winning circuit 113, the logic value "1" is set in (the register of) the FG winning circuit 113 at relative address 11. be done.
  • step 2 the character "e” consisting of one byte is detected, and in this embodiment, the character detection circuits 105 at relative addresses 7 and 12 detect "e".
  • the detected FG is set in the FG shift circuit 112. At this time, as shown in FIG. 4(1), no calculation conditions are given to the FG winning circuit 113, and the logical value "0" remains set in the corresponding winning circuit.
  • Steps 3 to 5 are a repetition of the same calculation as step 2, so they will be omitted.
  • the character "h” consisting of one byte is detected, and in this embodiment, the character detection circuit 105 at relative address 16 detects "h".
  • a logical value "1" is set in the FG shift circuit 112 as the detected FG.
  • step 6 the six consecutive FGs "1111111" from relative address 11 to relative address 16 of the FG shift circuit 112 and the FG at relative address 11 of the FG winning circuit 113 set in step 1 are "1111111”. 1”.
  • FIG. 6 shows data state transition-B (continuous detection of character sequences) after step 6.
  • Step 6 in FIG. 6 is the same as the final result of character detection described earlier.
  • Steps 7 to 11 correspond to (1) in FIG. 4, and perform a "character string detection” process to detect the character sequence 122 (character string) of "search” detected in steps 1 to 6 above. It shows.
  • step 7 the FG of the FG shift circuit 112 shown in step 6 is shifted to the left by 1 byte by giving the FG shift circuit 112 one clock signal from the shift clock generation circuit 130, and the shifted FG and the FG
  • the calculation condition of the winning circuit 113 to "logical product" (see FIG. 4 (1))
  • the logical product (AND) operation with the FG of the FG winning circuit 113 is performed.
  • Steps 8 to 10 are a repetition of similar calculations, so they will be omitted.
  • the FG of the FG shift circuit 112 shown in step 10 is further shifted to the left by 1 byte (5 shifts to the left in total), and the shifted FG and the FG of the FG winning circuit 113 are ANDed ( AND) Perform the operation.
  • the given search keyword 125 condition is used in the string of characters 122 (character string) from address 1 to address N of the character storage element 102. This means that character strings that match (are identical to) the character sequence 122 (character string) are successively detected.
  • the final winning FG is achieved only when all detected characters are consecutive, so in step 2 two "e” characters are detected at relative address 7 and relative address 11. , "e” at relative address 7 is treated as noise because the character sequence 122 (character string) does not hold.
  • the HOST determines whether the character string "search" exists in addresses 1 to N of the target character text data 132. In addition, it becomes possible to know at which position the first address of the character string of the search keyword 125 exists.
  • characters are continuously detected in the same number of steps as the number of bytes n in the character string of the given comparison data 123, and a shift operation is performed minus the number of bytes n of the character string of the given comparison data 123. It is particularly important that character sequences 122 (character strings) can be detected by successively repeating the logical AND winning operation.
  • Such a shift operation can be easily realized by using a reversible shift register (a shift register that can rotate forward/reverse).
  • FIG. 7 illustrates data state transition-A (character detection step) in a standard full-text search for Japanese sentences.
  • FIG. 8 illustrates data state transition-B (character string detection step) in a standard full-text search for Japanese sentences.
  • the commands shown in (2) of FIG. 4 are sequentially given to the full text search circuit 103 for each step, and the full text search circuit 103 performs full text search processing based on this command. This is what we do.
  • the five-character character code of the Japanese sentence "Full text search is" in UTF-8 character code is the i+1 byte of the relative address 104 of the full text search circuit of the character storage element 102. 15 bytes are stored in the character storage element 102 of the full text search processor 101 from the i+15th byte (hereinafter referred to simply as the relative 15th address).
  • the full text search circuit 103 performs a full text search operation based on the command given from the command generation circuit 127.
  • Steps 1 to 6 show the process of detecting the characters "Ken” and “Saku” from the stored character text data 132 of "Full text search is”.
  • step 1 the first 1 byte "sensing: 1/3" of the 3-byte “sensing" character code is detected.
  • the character detection circuit 105 at the relative address 7 detects "sensing”. :1/3" is detected.
  • the detected FG is preset in the FG shift circuit 112 as described above. Further, this FG is set in the FG winning circuit 113 as the first winning winning FG, as described above.
  • Steps 2 to 5 are omitted because they involve repetition of similar calculations.
  • the third 1-byte “search: 3/3" of the 3-byte “search” character code is detected, and in this embodiment, the character detection circuit 105 at the relative address 12 is detected. detects “Search: 3/3”.
  • the detected FG is set in the FG shift circuit 112.
  • step 6 the six consecutive FGs "1111111” from the relative address 7 to the relative address 12 of the FG shift circuit 112, and the FG at the relative address 7 of the FG winning circuit 113 set in step 1 are "1111111”. 1”.
  • FIG. 8 illustrates data state transition-B (character string detection step) in a standard full-text search for Japanese sentences.
  • Step 6 is the final result of detecting the characters previously described.
  • Steps 7 to 11 show the process of detecting the character sequence 122 (character string) of "search" detected above.
  • the FG of the FG shift circuit 112 shown in step 6 is shifted to the left by 1 byte as described above, and the result of performing an AND operation on the shifted FG and the FG of the FG winning circuit 113 is obtained. It is shown.
  • Steps 8 to 10 are a repetition of similar calculations, so they will be omitted.
  • the FG of the FG shift circuit 112 shown in step 10 is further shifted to the left by 1 byte (5 shifts to the left in total), and the shifted FG and the FG of the FG winning circuit 113 are ANDed ( AND) operation.
  • the characters of the given search keyword 125 are stored in the string of characters 122 (character string) from address 1 to address N of the character storage element 102. This means that it is continuously detected whether there is a character string that matches (is the same as) the sequence 122 (character string).
  • the HOST determines whether or not the character string "search" exists in addresses 1 to N of the target character text data 132, and which It becomes possible to know whether the first address of a character string exists at a position (address).
  • characters are detected continuously in the same number of steps as the number of bytes n of the given comparison data 123, and the shift operation is performed minus 1 times of the number of bytes of the given comparison data 123. It is particularly important that the character sequence 122 (character string) can be detected by successively repeating the AND operation.
  • FIG. 9 illustrates data state transition-A (character detection step) in full-text search in which wildcards are applied to English sentences.
  • FIG. 10 explains data state transition-B (character string detection step) in full-text search in which wildcards are applied to English sentences.
  • Wildcards are used when the spelling is uncertain.
  • Steps 1 and 2 of character detection are as explained above.
  • the command generation circuit 127 does not give the comparison data 123 to the full text search circuit 103, and skips these third and fourth characters. and the character detection step is not performed.
  • FIG. 10 explains data state transition-B (character string detection step) in full-text search in which wildcards are applied to English sentences.
  • Step 4 is the final result of detecting the characters previously described.
  • Steps 5 to 9 are character string detection steps.
  • the search keyword 125 including the above-mentioned wild card is 6 bytes
  • the character detection step is executed by the five steps 6-1 (steps 5 to 9).
  • step 5 since step 5 is not subject to wild cards, the operation of the FG winning circuit 113 is the AND operation described above.
  • step 6 and step 7 are wild card target steps, the AND operation of the FG winning circuit 113 is masked (ignored), and the FG winning circuit 113 of steps 6 and 7 remains as the remaining winning circuit, and the process proceeds to step 8. Move.
  • steps 8 and 9 are steps that are not subject to wildcards, a normal AND operation is performed, and in the final step 11, "s" at the relative address 11 remains the winner.
  • this example shows a case where a wildcard is specified in the middle of a character string, it is possible to use a wildcard not only in the middle of a character string but also in any position such as the beginning or end.
  • this method enables wild card processing by omitting the processing that is subject to the wild card.
  • FIG. 11 illustrates data state transition-A (character detection step) in full-text search in which character gaps are applied to English sentences.
  • FIG. 12 illustrates data state transition-B (character string detection step) in full-text search in which character gaps are applied to English sentences.
  • Allowance of character position (gap) is also used when spelling is uncertain.
  • the special character " * h" 3Gap and the position of the character indicate the permissible position of the "h” character. If it is assumed that the letter “h” is present at the position (gap 3), that is, any of “seah”, “sea*h”, and “sea**h” is a calculation method that matches. A specific example is shown below.
  • step 4 gap 3 is specified for the special character " * h”.
  • FIG. 12 shows data state transition-B in the character string detection step.
  • Step 4 is the final result of detecting the characters previously described.
  • the character string detection step 5 is the same as the conventional method.
  • the gap calculation is performed using both the winning main register and the winning sub-register of the FG winning register.
  • step 6 the winning subregister of the relative address that has won so far is set to logic "1".
  • the winning sub-register at relative address 11 becomes logic "1".
  • Step 7 is to search for the character sequence 122 (character string) of "seah".
  • the winning sub-register remains at logic "1".
  • Step 8 is to search for the character sequence 122 (character string) of "sea*h".
  • the winning sub-register remains at logic "1".
  • Step 9 is to search for the character sequence 122 (character string) of "sea**h".
  • the winning sub-register at relative address 11 is logic "1".
  • the FG shift circuit 112 at relative address 11 becomes logic "1". Since both the logical product (AND) conditions are satisfied, the winning main register is restored to logic "1".
  • the FG shift circuit 112 at the relative address 11 is a logic "1" and the winning sub-register's logic “1” and the logical product (AND) operation condition is not satisfied, the FG shift circuit 112 at the relative address 11 is The winning main register cannot survive.
  • step 10 the result output circuit 107 outputs the calculation result.
  • wildcard and gap functions can be processed in the same or fewer steps than a standard full-text search.
  • the biggest feature of this method is the full-text search operation with a degree of parallelism N.
  • N the degree of parallelism
  • prefix match, middle match, and postfix match that are essential for various full-text search needs (including keyword searches)
  • it also supports character wildcard functions and gap functions. It is possible to perform adaptive and advanced full-text searches.
  • this method requires n character detection operations + (n-1) shift operations for character string detection, as shown in Figures 5 to 12, for a total of n x 2-1 full-text searches. It can perform pattern matching processing.
  • this method is particularly advantageous when the character string of the search keyword 125 is long, and calculations including wildcard functions and gap functions are also simple and efficient.
  • FIG. 13 shows an example of the overall configuration of a full-text search processor.
  • the character text data 132 indicated by input 1 from the HOST is transferred directly from the CPU of the HOST via the input/output interface 115 or by the DMA (Direct Memory Access) method, and the character text data 132 is stored in the character storage element 102 as N bytes. Character code is memorized.
  • DMA Direct Memory Access
  • a search keyword 125 for the full text search indicated by input 2 from the HOST is given from the HOST through the input/output interface 115.
  • This search keyword 125 is converted into a full-text search calculation condition 114 by a command generation circuit 127.
  • One of the full-text search operation conditions 114 is comparison data 123 created by the comparison data generation circuit 123, and this comparison data 123 is given to the input of the character detection circuit 105.
  • the other of the full text search operation conditions 114 is a shift clock 130 created by the shift clock generation circuit 130 and a winning calculation condition 129 created by the winning calculation condition generation circuit 129, and these two signals are used by the character string detection circuit. given to the input of
  • the 8-bit data "s": "01110011” of the comparison data 123 is compared bit by bit as shown above, and the comparison operation result is shown as the operation result of the 1-bit coincidence detection circuit 109. .
  • This calculation result indicates that the shift register of the FG shift circuit 112 is set as logic "1".
  • the register of the FG winning circuit 113 at address 126 of the full-text search circuit 2 remains a winner and has logic "1", and the registers other than address 2 are logic "0".
  • the above logic state of the FG winning circuit 113 is output from the full text search operation result output circuit 107 to the HOST via the input/output interface 115.
  • the method of outputting the results is as described above. An efficient method for outputting results will be described later.
  • FIG. 14 illustrates the configuration of a full-text search processor when performing a narrowed search.
  • this is a block diagram when a search is narrowed down using multiple keywords such as "search,”"information," and "detection.”
  • the logical sum (OR) circuit 111 performs a logical sum (OR) on the outputs of all the result output circuits 107, and sets the total result output circuit 108 if there is a winner in any one place.
  • the narrowing search operation is as follows.
  • the comprehensive result output circuit 108 is set.
  • the method of performing this and outputting the presence/absence of full text detection results to the HOST as a comprehensive result output greatly reduces the result output processing on the HOST side.
  • the configuration is shown in which the logical sum 111 of the entire result output 1 to N is taken and outputted to the outside, but 1 to N are divided into appropriate sizes, and the logical sum circuit 111 and the general It is also possible to configure the result output circuit 108 to output the result to the outside.
  • the character strings can be stored in each divided range and the full text search operation can be performed. You can obtain full text search results for each stored character string. Furthermore, if the data size is limited, it becomes easy to find where the character string is located on the HOST side.
  • the FG winning circuit 113 performs 1-bit operations with the FG shift circuit 112.
  • various Boolean operations such as NOT operations, exclusive operations, and counter operations as necessary, more sophisticated full-text searches become possible.
  • the overall result output circuit 108 is configured to be able to perform other necessary operations such as logical product (AND) operation, logical sum (OR) operation, NOT operation, winning sub-register, and counting operation. More convenient full-text searches are possible, such as by collectively outputting the detection results of multiple batch operations (operations on long sentences) using batch processing, which will be described later.
  • this method performs full-text search processing equivalent to an N-gram transposed index using hardware, and a transposed index of arbitrary character length is possible.
  • the N-gram inverted index has a wide variety of full-text search functions and is characterized by fewer search omissions.
  • the full-text search algorithm of this full-text search processor 101 enables ultra-high-speed full-text searches.
  • FIG. 15 explains the outline of an external memory type full-text search processor.
  • N full-text search circuits 103 perform operations with a degree of parallelism N (total parallelism) to realize efficient and high-speed character string searches.
  • the number of full-text search circuits 103 cannot be increased without limit.
  • the solution to this problem is the batch processing method.
  • a HOST computer is shown above the full text search processor 101.
  • FIG. 21 The details are shown in FIG. 21, but memory or storage is arranged in this HOST computer.
  • the character text data 132 stored in these memories or storages is configured to be able to be transferred to the book full text search processor 101 through a standard interface 116 such as PCIe or USB.
  • search keyword 125 from the HOST and the result output to the HOST are also communicated through the standard interface 116.
  • N of the full text search circuit 103 is 32K (32 ⁇ 1,024) and the data amount of one batch is 32K bytes.
  • Patent Document 3 Patent No. 5981666
  • FPGA field-programmable gate array
  • this memory is a DRAM memory.
  • DRAM memory is the main storage device of modern computers and is used in all types of computers, from servers and PCs to smartphones. These DRAM memories are rarely used alone, but as memory modules (DIMMs) that comply with standards such as JEDEC (Solid State Technology Association).
  • DIMMs memory modules
  • the current mainstream DIMM is a DRAM with a standard called DDR4, which has a memory capacity of about 8 GB and a data transfer capacity of 10 GB/sec to 40 GB/sec.
  • FIG. 16 provides an overview of data transfer between the external memory type full text search processor 101 and external memory or storage.
  • This example shows the concept of writing text data in a DIMM memory or storage into the character storage element 102 of the full-text search processor 101.
  • the HOST manages where and which document's character text data 132 is stored based on the FAT (File Allocation Table), as in normal information processing.
  • the FAT For reading from the memory, the FAT is similarly referred to, the text data of the target sentence is read from the DIMM memory, and a predetermined capacity of character text data 132 is written to the full text search processor 101.
  • the character text data 132 written in the DIMM memory is normally burst transferred (written) to the character storage element 102 of the full-text search processor 101 in units of 64 bits (8 bytes).
  • target character text data 132 is larger than 32K bytes, it is sufficient to divide the character text data 132 and send the data to the book full text search processor 101 for batch processing.
  • one batch may be one file of character text data 132.
  • target character text data 132 is significantly smaller than 32K bytes, multiple files of character text data 132 may be written in one batch.
  • FIG. 17 illustrates a time chart of batch processing of the external memory type full-text search processor.
  • the total data transfer time is 250 msec.
  • the remaining maximum of 750 msec can be used for search calculations.
  • the degree of parallelism N of the full text search circuit 103 shown above is 32K and the data amount of one batch is 32K bytes, the number of 8G byte batches X is 250,000.
  • the maximum batch processing time is 4 microseconds. In the case of a data transfer capacity of 32 Gbytes/sec, the data transfer time for one batch of 32 Kbytes is 1 ⁇ sec.
  • the remaining 3 microseconds can be used for the search time of the full text search processor 101.
  • the full text search processor 101 can perform one detection process in several tens of steps (clocks). The details will be explained in FIG. 18, but in a general full text search, 50 steps are sufficient because the keywords are 2 to 3 types of 3 to 4 characters, and the system clock 131 is set to 10 ns and one batch of 50 steps is processed.
  • batch processing is performed 250,000 (250K) times (8 GB)
  • the calculation processing time is 125 msec.
  • a total of 375 msec is a computational performance comparable to full-text search using an index.
  • the search load is small and the power consumption of the entire system can be reduced.
  • the full text search processor 101 independently performs the search process, so the full text search time remains the same even if the memory capacity increases.
  • SSDs Solid State Drives
  • character text data 132 it is preferable to use not only character text data 132 but also various data such as audio, video, log files, location information, sensor information, etc. in the 1 T-byte memory space.
  • the character text data 132 must be stored in some storage.
  • a major feature of this method is that the character text data 132 stored in the SSD can be used for full text search in real time immediately after the power is turned on, without changing the text data 132.
  • the batch-type full text search processor 101 with external memory or storage described above can be realized not only with ASIC but also with FPGA.
  • FIG. 18 summarizes the computational capabilities of the external memory type full-text search processor described so far.
  • the performance of the present invention is determined by the batch data transfer ability, the degree of parallelism N of the full text search circuit 103, the speed of the system clock 131 of the arithmetic function, and the number of batches X.
  • one character is approximately a 3-byte character code, so one set consists of 12 bytes.
  • a keyword search for an English text with a total of 24 characters and 24 bytes requires 24 steps to detect the characters, and 23 steps to detect the 122 character sequence (character string), and includes outputting results, clearing registers, etc. It takes about 50 steps including the processing of .
  • the external memory method-A (low speed) shown in the upper part of the chart is based on the full-text search processor 101 explained in FIG. ), the data transfer with the external memory is 32 Gbytes/second (low speed), and the calculation time is the calculation time for each batch when the system clock 131 is 10 ns (low speed) and 50 steps.
  • External memory method-B high-speed shown in the lower part of the chart summarizes the calculation time for each batch when using HBM (High Band Memory), which has been developed with ASIC and has a high data transfer capacity.
  • the number of processes per batch is 32K bytes (parallelism is 32K)
  • data transfer with external memory is 320Gbytes/second (high speed)
  • calculation time is 5ns (with system clock 131). This figure shows the computation time for each batch in the case of 50 steps at high speed).
  • FIG. 19 provides an overview of the internal memory type full text search processor. In the case of the external memory method described so far, the memory or storage and the full-text search processor 101 are separated, and data transfer takes time due to bus bottlenecks.
  • the full-text search processor 101 is converted into an ASIC, and the internal memory 120 or internal storage 121 with a data width of N equal to the character storage element 102 and addresses from 1 to M is incorporated inside the full-text search processor 101. It is something.
  • an internal memory 120 or internal storage 121 having a data width equal to the number of data in the character storage element 102 is built into the full-text search processor 101, and an arbitrary address By selecting , data in the row direction can be assigned to the character storage elements 102 in full parallel.
  • the data can be transferred by selecting an arbitrary address from 1 to M and assigning (accessing) it to the character storage element 102. Since the transfer is performed, it is possible to realize full-text search processing that is faster than the batch processing described so far.
  • the internal memory 120 is the DRAM or SRAM described so far, and the internal storage 121 is not only NAND type or NOR type SSD memory, but also spintronics type memory and resistance change type memory.
  • NOR-type SSDs can be expected to have faster access times than NAND-type SSDs.
  • Batch processing and full text search calculation contents are the same as those of the external memory type full text search processor 101 described above. The performance of this system will be explained below.
  • FIG. 20 summarizes the computational capabilities of the internal memory type full-text search processor described above.
  • Internal memory method A (low speed) shown in the upper part of the chart is based on the full-text search processor 101 explained in FIG.
  • the data transfer time of the internal memory 120 is 100 ns (low speed) assuming a memory of .
  • the processing time of this method is 7.5 times faster than external memory method-A (low speed).
  • the processing time is about 1.75 times faster.
  • Internal memory method B (high-speed) shown at the bottom of the chart is the same as before, with the number of processes per batch being 32K bytes (parallelism degree is 32K), and is based on the assumption that 120 high-speed internal memories such as DRAM memory are used.
  • the calculation time indicates the calculation time for each batch when the transfer time is 10 ns (high speed) and the system clock 131 is 1 ns (high speed) with 50 steps.
  • This method has a processing time 3.3 times faster than internal memory method-A (low speed).
  • This method has a processing time 25 times faster than external memory method-A (low speed).
  • Processing time is 5.8 times faster than external memory method-B (high speed).
  • external memory method A lower speed
  • external memory method B high speed
  • full text search of 2M batches and 64G bytes of data is possible.
  • the performance shown in the diagram is the performance of one full-text search processor 101, so by connecting and using multiple full-text search processors 101 in parallel, it is possible to increase the amount of data searched in the same amount of time.
  • the memory used by the full-text search processor 101 is not limited to the DRAM, NAND type, or NOR type storage described so far, and new memories expected in the future can also be used. .
  • FIG. 21 illustrates an example of a system configuration when using a full-text search processor.
  • System configuration example A is a system configuration example of the external memory type full-text search processor 101 shown in FIG.
  • a DRAM memory is mounted on the system board 124, and a storage is externally connected.
  • the full text search processor 101 receives and receives the transfer of character text data 132 from the DRAM memory or storage, the search keyword 125 from the HOST, and the calculation result output signal to the HOST via the standard interface 116.
  • the current maximum transmission band for USB is a maximum of 5 Gbps (USB 3.0).
  • PCIe in the case of PCIe, it has various wideband transmission capabilities from several tens of Gbytes/second to several hundred Gbytes/second, so it is better to use the PCIe standard that matches the performance of the system.
  • System configuration example-B is a system configuration example of the internal memory type full-text search processor 101 shown in FIG. .
  • a full text search is performed using the full text search processor interface 119 inside the system board 124.
  • the HOST sends the search keyword 125 to the full-text search processor 101, the command generation circuit 127 sends command (control) signals for each step shown in FIGS.
  • the explanation is based on the assumption that a full-text search operation is performed and the output of the operation result is received by the HOST.
  • the HOST receives the search results for each batch sent from the full-text search processor 101, and if it knows which batches the result output of the comprehensive result output circuit 108 is "Yes", it determines which part of the batch data contains the search target character. You can check if there is a queue using HOST.
  • this corresponds to 60 ⁇ s of 1K batch (32M bytes) of internal memory method-B shown above.
  • this type of processor may be used, it is also possible to write the same data to 1,000 full-text search processors 101 for 1M batches (32GB) of 60msec to perform distributed processing.
  • 1-gram number indicates one character, and it includes not only commonly used kanji and English characters, but also characters and symbols used all over the world, as well as environmental characters, and there are 2.56 million kinds of characters. This means that it has appeared.
  • book full text search processor 101 since the book full text search processor 101 only needs to store text data of a website that includes characters that are rarely used, the number of book full text search processors 101 can also be reduced.
  • a corpus is a database used for natural language research.
  • a corpus is a database that uses an index, it is revised regularly, similar to the compilation of a dictionary, so it often does not include the latest words such as "corona disaster.”
  • a corpus can be made into text data that always includes the latest terms and information.
  • the present invention can be expected to shed light on systems that have problems with full-text search using indexes, and on fields that have not yet been systemized. It can be expected to be applied to full-text search of stream-type text data, which allows finding value from new information.
  • the frequency of characters used in text data flowing as stream data is essential for AI analysis.
  • recognition candidates for speech recognition and translation candidates for translation For example, by comparing recognition candidates for speech recognition and translation candidates for translation with the full text search processor 101, if there is no hit text, it is determined that there is no precedent (miss) and an alert is output, or if the hit text is the largest It can be used for intelligent information processing (AI field), such as selecting objects and improving speech recognition accuracy.
  • AI field intelligent information processing
  • the full-text search according to the present invention does not require any specialization, and it is expected that the standardization of software with various functions will progress.
  • the human genome contains approximately 6 billion base pairs of DNA within the nucleus.
  • This method is optimal because the wildcard function and gap function are indispensable for genome analysis of the nucleotide sequence of "ATGC" in the genome.
  • the time to create an index is a waiting time.
  • the full text search according to the present invention can be commonly used for characters from all over the world by using world standard character codes such as UTF-8.
  • the ASIC chip for the full-text search processor 101 can be supplied at low cost, and a large demand is expected.
  • Full text search can be standardized worldwide with UTF-8 character codes - Can be used in SQL and NonSQL databases Practicality - Can be put into practical use with FPGAs - Can be incorporated into full-text search systems using indexes - Contributes to information processing by creating a corpus containing the latest terms - Reduces the specialization of full-text search technology and allows experts to ⁇ Accelerating the evolution of natural language processing technologies such as speech recognition and translation ⁇ World standardization of full-text search technology More than that, there are actual or latent needs for full-text search and natural language processing technology.
  • the full text search circuit 103 should be used for each byte of character text data 132, but in this method the cost performance of the full text search semiconductor chip and full text search system will be extremely poor.
  • the present invention is intended to strike a balance between index-free full-text search performance and system cost by providing a large number of character text data 132 to the full-text search circuit 103 in a time-sharing manner.
  • all the circuits (functions) of the command generation circuit 127 are provided inside the full-text search processor 101, but some circuits (functions) of the command generation circuit 127 and all It is also possible to have a configuration in which the circuit (function) is provided on the HOST side, and the full text search processor 101 executes calculations based on the calculation conditions for each step given from the HOST side, and notifies the HOST side of an acknowledge (ACK) for each step. do not have.
  • ACK acknowledge
  • the command generation circuit 127 When the command generation circuit 127 is placed inside the full-text search processor 101, a CPU and a memory for storing programs are built into the full-text search processor 101, and the full-text search calculation conditions 114 are generated by software processing. It is also possible to control.
  • the character text data to be searched is stored in a storage element for each byte (8 bits), and the "characters" of the character string of the given search keyword are stored. It compares matches and mismatches of "character sequences" in parallel byte by byte, and returns the position (address) of character text data corresponding to the beginning or end of the given search keyword 125 character string as a full-text search result. be.
  • the character string detection circuit 106 performs the shift operation after the character detection circuit 105 completes character detection, whereas in the second example, the character string detection circuit 105 performs the shift operation.
  • the character detection by the character string detection circuit 106 and the shift operation by the character string detection circuit 106 are performed "alternately”.
  • the character detection circuit 105 selects a character or a character part (1-byte code) that matches all the characters included in the search keyword 125 from the character text data 132 as a match flag (FG). After the initial detection, the character string detection circuit 106 sequentially shifts the position of this flag by the number of bytes n-1 times (corresponding to the number of shift clocks) of the character string of the search keyword 125. The position of consecutive flags corresponding to the number of bytes, that is, the character sequence 122 (character string) was detected.
  • FIG. 22 shows the basic configuration of a full-text search processor for executing this second example.
  • step conditions 133 in this example, logic "0" for step 1, logic "0" for steps other than step 1
  • a step condition generation circuit 133 is added that generates a signal (described later) that becomes logic "1" when the time is off.
  • FIG. 23 corresponds to the first example shown in FIG. 3, and the character string detection circuit 106 in FIG. .
  • This step condition generation circuit 133 and step condition-specific AND circuit 134 enable alternate processing.
  • step condition-specific AND circuit 134 is not limited to this configuration, but as shown in FIG. (NOT) circuit.
  • FIG. 24 corresponds to FIG. 4 and shows specific examples (1) to (4) of full-text search operation condition commands generated by the command generation circuit 127 in this second example.
  • this second example unlike the first example (FIG. 4), the command generation circuit 127 configures the commands in steps 1 to 11 so that character and character string detection operations are performed alternately.
  • this second example differs from the first example because: 1) the step condition 133 (in this example, step 2) The shift direction of the flag is to the right instead of the left, 3) The winning position is given. The point is that all calculation conditions are "direct input".
  • search target is the same as in the first example (FIGS. 5 and 6), and is to search for the search characters "search" from the character text data 132 "full text search".
  • the number of processing steps is also 11, as in the first example.
  • each step (1 to 11) is executed by the full text search circuit 103 based on the command (comparison data 123, shift clock 130, step condition 133, winning calculation condition 129) given from the command generation circuit 127. .
  • step 1 the character "s" consisting of one byte is detected, and as in step 1 of the first example, the character detection circuit 105 at relative address 11 detects "s". This detection result is preset in the FG shift circuit 112 as a flag (FG).
  • FG flag
  • this FG value (calculation result) is further processed by the step condition specific AND circuit 134 and input to the FG winning circuit 113.
  • the step condition 133 (in this example, logic "0" for step 1, logic “1” for steps other than step 1) Since the signal) is "0”
  • the two-input logical product (AND) circuit of the logical product circuit 134 for each step condition is enabled, and the result of this operation is sent to the FG winning circuit through the logical sum (OR) circuit. 113.
  • step 1 the calculation result of the character detection circuit 105 is set to the FG winning circuit 113 as is.
  • step 2 all FGs set in the FG shift circuit 112 are relatively shifted by one address in the right direction by the shift clock 130 signal, and the FG is set in the FG shift circuit on the right (Fig. 25 step 2). At this time, the logic state of the FG winning circuit 113 does not change.
  • step 1 character detection is performed, and in step 2, flag shifting for character string detection is performed.
  • step 2 flag shifting for character string detection is performed.
  • step 3 the second character "e” is detected.
  • the second character "e" is detected.
  • FIG. 25 since "e" is located at relative addresses 7 and 12, these are detected.
  • both the logical value input from the character detection circuit 105 and the logical value preset to the FG shift circuit 112 are "1"
  • the fourth command 127 Since the signal which is logic “0" at step 1 and logic “1” at times other than step 1 is "1”, the three-input AND circuit of the step condition-specific AND circuit 134 is The operation result (logic "1") is input to the FG winning circuit 113 through the OR circuit.
  • the FG winning circuit 113 is given a "direct input” command, so in this example, the logical value of the relative address 12 set in the FG winning circuit 113 is “1". ” (see the value at address 12 in step 3 in FIG. 25).
  • the FG winning circuit 113 at the relative address 11, where the logic "1" was set up to step 2 is cleared to "0" because the AND condition of both the character detection circuit 105 and the FG shift circuit 112 is not satisfied. be done.
  • step 3 the FG winning circuit 113 at the address where the logical product (AND) condition of the character detection circuit 105 and the FG shift circuit 112 is satisfied is the remaining one.
  • the major difference from the conventional method is that the FG is updated.
  • Step 10 shows a state in which the FG of the FG shift circuit 112 shown in Step 9 is further shifted to the right by 1 byte (5 shifts to the right in total).
  • the logical values of addresses 11 and 16 of the FG shift circuit 112 are set to "1", and the FG winning circuit 113 determines that the relative address 15 is the winning address at this point. There is.
  • step 11 since the FGs of both the character detection circuit 105 and the FG shift circuit 112 at the relative address 16 exist and the AND condition is satisfied, the relative address 16 of the FG winning circuit 113 becomes "1". , relative address 15 is rewritten to "0".
  • the validity of the array can be determined for each detected character code and each character code.
  • the number of calculation steps to be executed is the number of bytes of the character string of the given comparison data 123 n ⁇ 2 ⁇ 1 times, which is 11 steps in this example, which is the same as in the first example. That is, compared to the first example, more accurate calculations can be performed with the same number of steps.
  • the winning remaining FG is updated every time a new character is detected, so the validity of the array of all searched character strings can be guaranteed, and the search accuracy is high and the search speed is fast. This is a characteristic.
  • step 12 the above calculation results are output from the result output circuit 107, but unlike the first example, what is output is not the first address but the last address.
  • the command 127 (comparison data 123, step condition 133, shift clock 130, winning calculation condition 129) shown in FIG.
  • the full text search circuit 103 performs full text search processing.
  • Steps 1 to 5 are the character codes of "Ken: 1/3", “Ken: 2/3", and “Ken: 3/3" from the stored character text data 132 of "Full text search is”.
  • Step 6 shows a shift operation as preprocessing for detecting the character code "search: 1/3".
  • FIGS. 29 and 30 illustrate the data state transition of a full text search applying English wildcards according to the second example, which corresponds to FIGS. 9 and 10 of the first example.
  • the command 127 (comparison data 123, step condition 133, shift clock 130, winning calculation condition 129) shown in FIG.
  • the full text search circuit 103 performs full text search processing.
  • steps 1 to 4 of character detection are as described above.
  • the FG winning circuit 113 is given a Mask (ignoring) calculation condition as shown in FIG. By giving this, the FG winning circuit 113 executes a predetermined winning calculation.
  • this example shows a case where a wildcard is specified in the middle of a character string, it is possible to use a wildcard not only in the middle of a character string but also in any position such as the beginning or end.
  • the processing for the wild card is configured so that the winning condition is satisfied regardless of the character. This allows wildcard processing.
  • FIGS. 31 and 32 illustrate the data state transition of a full-text search adapted to the English sentence gap according to the second example, which corresponds to FIGS. 11 and 12 of the first example.
  • the command 127 (comparison data 123, step condition 133, shift clock 130, winning calculation condition 129) shown in FIG.
  • the full text search circuit 103 performs full text search processing.
  • step 1 the detection of the character "sea" from step 1 to step 6 is as explained above.
  • Gap3 of Gap0, 1, and 2 is specified as the special character " * h".
  • Gap processing determines that a character string is valid and matches if the character "h" is present in any of steps 7, 9, and 11.
  • sub-registers of the FG winning circuit 113 are used in this second example.
  • step 7 when "h” is designated in step 7 as shown in FIG. No matter what character it is, it is processed so that the winning calculation is established.
  • the sub-register is operated, and the fact that the relative address 14 is not "h" is stored in the sub-register of the relative address 16, which is two addresses ahead of the remaining relative address 14. Therefore, the subregister at relative address 16 is set to "0".
  • step 11 When "h” is specified in step 11, the logic of the character detection circuit 105 at the relative address 16 becomes “1", and the main register at the relative address 16 of the FG winning circuit 113 becomes “1".
  • the address 126 of the full text search circuit corresponding to the last character code of the given search keyword 125 is detected.
  • the present invention is not limited to the two embodiments described above, and can be modified in various ways without changing the gist.

Landscapes

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

Abstract

【解決課題】 全文検索用ハードウェアアクセラレータプロセッサを提供する。 【解決手段】 検索対象のテキストデータを1バイト毎に1番地からN番地に割り付けて一時記憶する文字記憶素子と、検索キーワードに含まれる符号化文字を1バイト毎の比較データとして受け取り、この検索キーワードに含まれる全ての符号化文字の上記文字記憶素子上での記憶位置を順次検出する文字検出回路と、前記検索キーワードに含まれる全ての符号化文字の配列とマッチする、上記文字記憶素子上での符号化文字の位置を順次検出する文字列検出回路と、前記文字列検出回路の検出結果を受け取って前記検索キーワードにマッチする文字列の先頭位置若しくは終了位置を出力する結果出力回路とを有する全文検索プロセッサが提供される。

Description

全文検索プロセッサ
 本発明は、半導体デバイス内でテキストデータに対するキーワードを用いた全文検索を実行する全文検索プロセッサに関するものである。
 一般に、大量の文書類(文章・文献・文などを含む)のデータの中から特定の文書類のデータを探し出す処理は全文検索やキーワード検索と呼ばれ、WEB検索や特許情報検索、社内文書データベース、更にはPCやスマートフォンに至るまであらゆる分野で頻繁に利用されている。
 ここで、全文検索やキーワード検索は自然言語処理の基本となる情報処理である。
 全文検索の処理は、キーワード(「search」、「検索」、「情報」などのキーとなる文字や文字列)を検索条件として与え、これらの文字や文字列が文書類に含まれているかどうかを探索し、含まれている文書類のデータを特定するものである。
 従来型のプロセッサであるCPUやGPUは、一般的に、検索など情報を探し出す処理が得意でなく、見出し(インデックス)なしで全ての文書データを読み込み検索しようとすると大量の時間を要する。このため、通常、転置インデックスと呼ばれるインデックスを時前に作成しておき、この転置インデックスを利用して検索を高速化する方法がとられており、これが検索を高速化する唯一の方法である。
 ここで、転置インデックスは、辞書の用語を見出し(インデックス)とする方法や、N-gramと呼ばれる文字列を見出し(インデックス)とする手法が一般的である。
 辞書用語をインデックスとして用いる場合については、英文は単語(用語)毎にスペースをはさみ文章を作成する方式、いわゆる「分かち書き」方式であるので単語(用語)の検出は容易であるが、日本語や中国語の場合、この「分かち書き」のルールが適応出来ない。
 従って日本語の場合、形態素と呼ばれる解析方法で日本語の文法に照らし合わせて単語(用語)を切り出す複雑な方法を採っている。
 形態素方式インデックスはインデックスの数が少ないのが特徴であるが、前方一致は良いものの、中間一致や後方一致の全文検索が困難、流行語など新しい用語への対応が困難である。
 一方のN-gram方式インデックスは、情報理論の創始者として名高いクロード・エルウッド・シャノン(Claude Elwood Shannon)が自然言語解析を目的に考案したものである。
 前方一致、中間一致、後方一致、新しい用語の全文検索いずれにも対応が出来るのが特徴であるが、インデックスの数が膨大になるのが欠点である。
 以上のような背景から、形態素方式インデックスとN-gram方式インデックスの良いところをミックスして利用するなど様々な手法が開発されている。
 このようなインデックスを用いることにより、全文検索やキーワード検索を高速化することが出来るが、幾つかの大きな課題を抱えている。
 ・文書類のテキストデータが用意されていても、転置インデックスが出来るまで検索が出来ない。従って、ストリーム情報(データ)の全文検索や全文検索そのもののリアルタイム処理が困難である。
 ・インデックスのためにメモリエリアやストレージエリアが拡大される、インデックスがあるので増設がしにくい。
 以上様々な課題があるため、全文検索は専門家以外ハードルが高く、言語の違いから世界レベルでの標準化がしにくいという問題があった。
 全文検索を半導体化した先願技術について説明する。
 US 2010/0185647 A1は、文字データの検索を目的とした半導体デバイスであるが、ASKIIコードのように256種類の文字のみに対応させる場合には行デコーダーと特徴セルで構成されるXYマトリックスが256×256と少なくて済むが、UTF-8コードの和文のような3バイトや4バイト構成の場合、XYマトリックスが膨大になり実現困難である。
 またこの特許はマルウエアの検出などストリームデータの検索が目的であり、本願のように蓄積型データ並びにストリーム型データ双方に利用することは出来ない。
 本願発明者は、以上のような情報検出の様々な問題を解決するために、インメモリコンピューティング、PIM(Process in Memory)、アーキテクチャによる様々な発明を行い、以下の特許文献2から5に示す通り、特許を取得してきた。
 しかしながら、以上の発明の中には全文検索に適したアルゴリズムはなかった。
US 2010/0185647 A1 DEVICES, SYSTEMS, AND METHODS FOR COMMUNICATING PATTERN MATCHING RESULTS OF A PARALLEL PATTERN SEARCH ENGINE 特許第4588114号 情報絞り込み検出機能を備えたメモリ、その使用方法、このメモリを含む装置。
特許第5981666号 情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法。
特許第6014120号 集合演算機能を備えたメモリ及びこれを用いた集合演算処理方法 特許第6393852号 データ比較演算プロセッサ及びそれを用いた演算方法。
 本願出願の目的は、転置インデックスのようなインデックスの作成が不要となり、しかもN-gram方式の転置インデックスを利用したシステムと同等な全文検索性能の全文検索用ハードウェアアクセラレータプロセッサを提供し、全文検索技術が抱えた様々な課題を抜本的に解決し、自然言語処理技術の向上を図り、全文検索のグローバルな標準化を目指すことである。
 上記課題を解決するため、本発明の主要な観点によれば、以下の発明が提供される。
 (1) 全文キーワード検索を目的とした半導体デバイスからなる全文検索プロセッサであり、
 検索対象のテキストデータを受け取り、このテキストデータに含まれる符号化文字列を1バイト毎に1番地からN番地に割り付けて一時記憶する文字記憶素子と
 検索キーワードに含まれる1以上の符号化文字を1バイト毎に比較データとして順次受け取り、各比較データを上記文字記憶素子に記憶された符号化文字列とN並列に比較し、それを前記検索キーワードに含まれる全ての符号化文字分繰り返すことで、この検索キーワードに含まれる全ての符号化文字の上記文字記憶素子上での記憶位置を検出する文字検出回路と、
 前記検索キーワードに含まれる全ての符号化文字が、この検索キーワードに含まれる順番で連続する上記文字記憶素子上での位置を検出する文字列検出回路と
 前記文字列検出回路の検出結果を受け取って前記連続する文字列の先頭位置若しくは終了位置を出力する結果出力回路と
 を有することを特徴とする全文検索プロセッサ。
 (2) 前記(1)記載の全文検索プロセッサにおいて、
 前記文字検出回路は
 前記文字記憶素子の各番地に接続され、各番地に記憶されたテキストデータの1バイト/8ビットの符号と前記比較データを構成する1バイト/8ビットの符号とを比較し、1ビット毎の一致若しくは不一致を検出する8個の1ビット一致若しくは不一致演算回路のN組のセットと
 1ビット一致若しくは不一致演算回路の各セットからの8ビット分の結果出力を受け取り、各番地に記憶されたテキストデータの符号化文字と前記比較データを構成する符号化文字との一致若しくは不一致を検出するN個の論理演算(論理積(AND)、論理和(OR)論理否定)回路と
 を有するものである
 ことを特徴とする、全文検索プロセッサ。
 (3)前記(1)記載の全文検索プロセッサにおいて、
 前記文字列検出回路は
 前記文字検出回路で連続的に検出された文字記憶位置のFG(フラグ)と検出された文字記憶位置のFG(フラグ)の配列の妥当性を連続的に判定するための、FGシフト回路とFG勝ち抜き回路の2つの回路で構成され
FGシフト回路とFG勝ち抜き回路は前記検索キーワードに含まれる符号化文字の配列を参照し、前記1番地からN番地に割り付けて記憶された文字記憶素子上の文字列の中から隣接する文字コード同士の配列の妥当性を繰り返し判定することで、前記検索キーワードで指定された文字列にマッチする、前記文字記憶素子上の文字列の先頭位置(番地)若しくは末尾位置(番地)をN並列で検出する回路である
 ことを特徴とする全文検索プロセッサ。
 (4) 前記(1)記載の全文検索プロセッサにおいて、
 前記文字列検出回路は
 前記文字検出回路の演算結果をフラグとして記憶すると共に、当該記憶されたFGをN並列にシフトするN個のFGシフト回路と
 前記FGシフト回路により前記記憶されたFGをN並列にシフトさせながらシフト前のFGとのN並列論理演算を行い、これを検索キーワードに含まれる全符号化文字分繰り返すことで前記FGの勝ち抜き演算を行うN個のFG勝ち抜き回路と
 を有することを特徴とする全文検索プロセッサ。
 (5) 前記(1)記載の全文検索プロセッサにおいて、
 前記検索キーワードがnバイトの符号化文字で構成される場合、
 前記FGシフト回路のシフト回数及びそれに伴うFG勝ち抜き演算回路による勝ち抜き演算の回数はn-1回数である
 ことを特徴とする全文検索プロセッサ。
 (6) 前記(1)記載の全文検索プロセッサにおいて、
 前記FG勝ち抜き回路は、演算のマスク(無視)を可能にする機能を有し、検索キーワード中にワイルドカードを用いた場合の全文検索を可能にするものである
 ことを特徴とする全文検索プロセッサ。
 (7) 前記(1)記載の全文検索プロセッサにおいて、
 前記FG勝ち抜き回路は、2組のレジスタが組み込まれ、検索キーワード中に文字のギャップを含む全文検索を可能にするものである
 ことを特徴とする全文検索プロセッサ。
 (8) 前記(1)記載の全文検索プロセッサにおいて、
 前記結果出力回路により出力される前記N並列(全並列)の検出結果の論理和(OR)演算を行い、全文検出結果の有無を出力するものである
 ことを特徴とする全文検索プロセッサ。
 (9) 前記(1)記載の全文検索プロセッサにおいて、
 前記全文検索プロセッサの外部のメモリもしくはストレージのテキストデータを前記Nバイトの文字テキストデータを一時記憶する文字記憶素子にバッチデータとして転送し、前記N並列(全並列)による全文検索演算を繰り返すことを特徴とする全文検索プロセッサ。
 (10) 前記(1)記載の全文検索プロセッサにおいて、
 前記全文検索プロセッサの内部のメモリもしくはストレージのテキストデータを前記Nバイトの文字テキストデータを一時記憶する文字記憶素子にバッチデータとして転送し、前記N並列(全並列)による全文検索演算を繰り返すことを特徴とする全文検索プロセッサ。
 (11) 前記(1)記載の全文検索プロセッサにおいて、
 ASIC並びにFPGAに実装したことを特徴とする
 全文検索プロセッサ。
 (12) 前記(1)記載の全文検索プロセッサにおいて、
 CPUを内蔵したことを特徴とする全文検索プロセッサ。
 (13) 前記(1)記載の全文検索プロセッサにおいて、
 UTF-8など世界標準の文字コードを適応することにより、世界の言語に共通な全文検索を可能にすることを特徴とする全文検索プロセッサの利用方法。
 (14) 前記(1)記載の全文検索プロセッサにおいて、
 外部から与えられる検索キーワードの文字列に、事前に指定した文字コードが含まれていた場合には全文検索演算を実行、もしくは実行しないものであることを特徴とする全文検索プロセッサ。
 (15) 前記(1)記載の全文検索プロセッサにおいて、
 作成中の文章の一部を、大量で最新情報が盛り込まれたテキストデータが蓄積された全文検索プロセッサに照合することにより、ヒットするテキストがなければ前例なしと判定することを特徴とする全文検索プロセッサ。
 (16) 前記(1)記載の全文検索プロセッサにおいて、
 音声認識の複数の認識候補の中から最適な認識結果を選択するにあたり、大量で最新情報が盛り込まれたテキストデータが蓄積された全文検索プロセッサに照合し、ヒットするテキストの多い用語を選択することにより、音声認識の精度を高めることを特徴とする全文検索プロセッサ。
 WEB検索、特許検索、企業内データ検索、PCやスマートフォン内のデータ検索など、全文検索処理は我々の仕事や生活に密着し、無くてはならない情報処理である。
 しかしながら現在のコンピューティングによる全文検索処理は、転置インデックスなどのインデックスに頼らざるを得ない状況であるのでリアルタイム処理が困難、専門家以外システム構築が出来ない、言語の違いで世界的なレベルでの標準化が進まないなど様々な課題を抱えている。
 本願発明の全文検索プロセッサを利用すると、転置インデックスを使用する必要がなく、しかも転置インデックスを使った方式に遜色ない性能の全文検索が可能になる。
 従って自然言語処理(知識処理)技術の進化が加速し、各国の言語に共通に利用出来るので、全文検索技術をグロ-バルに標準化することが出来る。
本発明の一実施形態(第1の例)に係る全文検索プロセッサの基本構成を説明する図である。
同じく、全文検索プロセッサの文字記憶素子並びに文字検出回路の詳細構成を説明する図である。
同じく、全文検索プロセッサの文字列検出回路並びに結果出力回路の詳細構成を説明する図である。
同じく、コマンド生成回路による全文検索演算条件作成の具体例を説明する図である。
同じく、英文の標準的な全文検索におけるデータ状態遷移-A(文字検出工程)を説明する図である。
同じく、英文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明する図である。
同じく、和文の標準的な全文検索におけるデータ状態遷移-A(文字検出工程)を説明する図である。
同じく、和文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明する図である。
同じく、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-A(文字検出工程)を説明する図である。
同じく、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明する図である。
同じく、英文に文字のギャップを適応した全文検索におけるデータ状態遷移-A(文字検出工程)を説明する図である。
同じく、英文に文字のギャップを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明する図である。
同じく、全文検索プロセッサの全体構成を説明する図である。
同じく、絞り込み検索を行う場合の全文検索プロセッサの構成を説明する図である。
同じく、外部メモリ方式全文検索プロセッサの概要を説明する図である。
同じく、外部メモリ方式全文検索プロセッサと外部メモリもしくはストレージとのデータ転送の概要を説明する図である。
同じく、外部メモリ方式全文検索プロセッサのバッチ処理のタイムチャートを説明する図である。
同じく、外部メモリ方式全文検索プロセッサの演算能力を取り纏めした図である。
同じく、内部メモリ方式全文検索プロセッサの概要を説明する図である。
同じく、内部メモリ方式全文検索プロセッサの演算能力を取り纏めした図である。
同じく、全文検索プロセッサを利用する場合のシステム構成例を説明する図である。
この発明の一実施形態の第2の例に係る全文検索プロセッサの基本構成を説明する図である。
同じく、第2の例における全文検索プロセッサの文字列検出回路並びに結果出力回路の詳細構成を説明する図である。
同じく、第2の例におけるコマンド生成回路による全文検索演算条件作成の具体例を説明する図である。
同じく、第2の例における英文の標準的な全文検索の各機能のデータ状態遷移-Aを説明する図である。
同じく、第2の例における英文の標準的な全文検索の各機能のデータ状態遷移-Bを説明する図である。
同じく、第2の例における和文の標準的な全文検索の各機能のデータ状態遷移-Aを説明する図である。
同じく、第2の例における和文の標準的な全文検索の各機能のデータ状態遷移-Bを説明する図である。
同じく、第2の例における英文のワイルドカードを適応した全文検索のデータ状態遷移-Aを説明する図である。
同じく、第2の例における英文のワイルドカードを適応した全文検索のデータ状態遷移-Bを説明する図である。
同じく、第2の例における英文のギャップを適応した全文検索のデータ状態遷移-Aを説明する図である。
同じく、第2の例における英文のギャップを適応した全文検索のデータ状態遷移-Bを説明する図である。
 以下、本発明の一実施形態を図面を参照しつつ説明する。
 本発明の実施形態である全文検索プロセッサ101は、どのような文字コードにも利用可能で、しかも高度で効率の良い全文検索が実現出来る構成を提供するものである。
 この実施形態の構成を説明する前に、本発明で実施される全文検索の概念について説明する。
 (本発明の全文検索の概念)
 まず、文書に含まれる文字テキストデータ132は、ASCII(American Standard Code for Information Interchange)、シフトJIS、UTF-8(UCS Transformation Format 8)など様々な符号化文字つまり文字コードを使用して表現される。
 ASCIIは7ビットまたは1バイト構成、シフトJISは2バイト構成、国際標準のUTF-8は可変長である。
 UTF-8の場合、日本語の多くの文字は3バイト構成となる。
 従って、一般的には、文書データに含まれる文字列を適切に読み出すには、文字コードを識別し、それに基づいて任意の文字列を読み取る必要がある。
 また、検索待ち時間の少ない高速な全文検索を実施するためには、文字テキストデータ132をもとに転置インデックスを作成し、この転置インデックスを利用して全文検索を行う必要がある。
 これに対して、この実施形態では、検索対象の文字テキストデータ132を、1バイト(8ビット)毎に記憶素子に記憶させ、与えられた検索キーワード125の文字列の「文字」と「文字の並び」の一致不一致を1バイト毎に並列に比較し、与えられた検索キーワード125の文字列の先頭もしくは末尾に該当する文字テキストデータ132の位置(番地)を全文検索結果として返すものである。
 これによれば、文字コードに関わらず、単純な回路構成で全文検索を実行可能とする共に、転置インデックスを作成しなくとも高速な全文検索が可能になる。
 以下、この実施形態の具体的構成について説明する。
 (基本回路構成(第1の例))
 図1は、全文検索プロセッサの基本構成を示すものである。
 この全文検索プロセッサ101は、ホストコンピュータ(以下、「HOST」と称する)に接続されており、このHOSTから与えられた検索対象の文字テキストデータ132に対し、同様にHOSTから与えられた検索キーワード125を検索条件として並列全文検索演算を実行し、その結果検出された文字テキストデータ132の位置(番地)をHOSTに返すものである。
 この処理を実行するため、この全文検索プロセッサ101は、上記HOSTと接続された入出力インターフェース115に、全文検索回路103とコマンド生成回路127とが接続されてなる構成を有する。
 全文検索回路103は、検索対象の文字テキストデータ132を記憶する文字記憶素子102と、上記文字記憶素子102に記憶された文字テキストデータ132の中から検索キーワード125に含まれる文字を検出するための文字検出回路105と、上記文字検出結果に基づいて検索キーワード125の文字列の先頭文字もしくは末尾文字に該当する上記文字テキストデータ132の文字の位置(番地)を特定するための文字列検出回路106と、上記文字列検出回路106の検出結果を所定の形式で出力するための結果出力回路107を有する。
 コマンド生成回路127は、図1に拡大して示すように、システムクロック131を生成するシステムクロック生成回路131と、前記検索キーワード125に基づいて前記文字検出回路105に与える比較データ123を生成する比較データ生成回路123と、文字検出後に前記文字列検出回路106に対して勝ち抜き演算条件129を与えるタイミングを決定するシフトクロック生成回路130と、前記文字列検出回路106に対して与える勝ち抜き演算条件129を生成する勝ち抜き演算条件生成回路129と、で構成される。
 (コマンド生成回路)
 以下、全文検索回路103とコマンド生成回路127の構成について詳しく説明するが、説明の便宜上、まず、コマンド生成回路127について説明する。
 コマンド生成回路127のシステムクロック生成回路131は、全文検索プロセッサ101を所定の演算タイミングで全文検索演算を実施する上で基本となるシステムクロック131、例えば10n秒や20n秒毎の連続したクロックを生成するものであり、このシステムクロック131を利用して(同期して)、比較データ生成回路123、シフトクロック生成回路130、勝ち抜き演算条件生成回路129が動作する。
 以上の比較データ生成回路123、シフトクロック生成回路130、勝ち抜き演算条件生成回路129はHOSTのキーワード設定機能128で設定される検索キーワード125に基づいて、前記文字検出回路105及び文字列検出回路106に与える、比較データ123、シフトクロック130、勝ち抜き演算条件129の3種類の演算条件からなる全文検索演算条件114を生成するものである。
 この実施形態の例では、前記検索キーワード125は、1文字1バイトで構成される英文キーワードや、1文字3バイトで構成される和文キーワード、その他の多国語を含む。
 図2に示す通り、例えば、検索キーワード125が英文の「search」である場合、このキーワードは、「s」、「e」、「a」、「r」、「c」、「h」という1文字1バイト、合計6バイトの文字コードで構成される。
 また、検索キーワード125が和文の「検索」の2文字である場合、各漢字データは3バイト、すなわち、「検」については「検:1/3」、「検:2/3」、「検:3/3」、「索」については「索:1/3」、「索:2/3」、「索:3/3」で構成されるので、全部で6バイトの文字コードとなる。
 (コマンド生成回路の比較データ生成回路)
 そして、前記コマンド生成回路127の前記比較データ生成回路123は、図2に示すように、上記の検索キーワード125を1バイト、すなわち8つのビットデータ(0若しくは1)に分解して、1バイト毎に比較データ123として生成して上記文字検出回路105に与えるように構成されている。
 具体的には、システムクロック生成回路131により生成されるシステムクロック131信号に同期して上記検索キーワード125の先頭もしくは末尾から1バイト文字コードを順番に取り出し比較データ123として、上記文字検出回路105に与えるものである。
 なお、後で説明するように、この比較データ生成回路123は、前記比較データ123を生成する際、上記検索キーワード125に含まれる特殊文字(ワイルドカード記号「」、ギャップ(以下Gapとも表現する)演算子「*」等)に応じて、当該特殊文字を無視したり、所定の文字コードに置き換える等の処理を行う。
 詳しくは後の動作の説明にて詳述するが、例えば、検索キーワード125中に特定のワイルドカード(例えば「」)が含まれている場合には、このワイルドカードに該当する文字をマスク(以降Maskや無視とも表現する)する処理を行う。このような特殊文字コードに応じた処理は、図示はしないが例えば特殊文字ルックアップテーブルを用いて、通常文字と特殊文字の選別を行うことが出来る。
 また、この比較データ生成回路123は、検索キーワード125を構成する文字列のバイト数をカウントし、その結果を前記勝ち抜き演算条件生成回路129に渡すように構成されている。
 (コマンド生成回路のシフトクロック生成回路)
 次に、シフトクロック生成回路130は、文字列検出回路106に、文字列検出のための特定の演算条件を与えるタイミングとなるシフトクロック130を生成するものである。具体的には、このシフトクロック生成回路130は、図3に示す文字列検出回路106のFG(フラグ)シフト回路112に、前述のシステムクロック131に同期して所定のシフトタイミングを示すシフトクロック130信号を与える回路である。
 具体的には、検索キーワード125が6バイトの場合、上記FGシフト回路112に与えられるシフト回数は、6バイトの場合、6-(マイナス)1の5回である。これは、検索キーワード125中にワイルドカード記号やギャップ演算子等の特殊文字が入っている場合も同様である。
 また、このシフトクロック生成回路130は、前記勝ち抜き演算条件生成回路129に演算条件を与えるタイミングも決定するように構成されている。
 (コマンド生成回路の勝ち抜き演算条件生成回路)
 勝ち抜き演算条件生成回路129は、前述のシフトクロック生成回路130と連動して文字列検出回路106に演算条件を与えるものである。
 具体的には、図3に示す文字列検出回路106のFG勝ち抜き回路113に対して所定の勝ち抜き演算条件129を「直接入力」、「論理積」、「論理和」、「排他論理和」、「マスク(無視)」、「ギャップ演算」、「論理否定」等から選択して与えるものである。
 詳しくは後で詳述するが、例えば、検索キーワードが6バイトでワイルドカード等の特殊文字を含まない通常文字からなる場合には、文字検出時(最初のステップ(第1ステップ))では「直接入力」、文字列検索時(第5ステップ~第11ステップ)では「論理積」の演算指令が選択されてFG勝ち抜き回路113に与えるものである。
 この演算条件の選択は、例えば、ルックアップテーブルを参照することで決定することが出来る。
 (全文検索回路)
 次に全文検索回路103について説明する。
 (全文検索回路の文字記憶素子)
 まずこの全文検索回路103の文字記憶機素子102は、図2に示すように、入出力インターフェース115を通じてHOSTから与えられる文字テキストデータ132を、8ビットつまり1バイト単位で一時記憶するフリップフロップのようなレジスタやメモリであり、全体で1番地からN番地までN個の1バイトデータを記憶するように構成されたものである。
 ここで文字テキストデータ132とは、WEBテキストデータ、小説や雑誌、論文などのテキストデータ、特許文献テキストデータ、社内文書テキストデータ、更にはPCやスマートフォンのメールテキストデータやWord、Excelなどあらゆるテキストデータが対象になる。
 これらの文字テキストデータ132は1件あたり数バイトから数十万バイトもしくはそれ以上と様々なサイズがある。
 さらにこれらの文字テキストデータ132は数件から数百億件など多数の文書データ(テキストデータ)として構成されるものである。
 この実施形態では、以上のように大小様々な文字テキストデータ132の中から、その一部、例えば32Kバイト分の文字テキストデータ132を、1番地からN番地まで文字記憶素子102に記憶させ、記憶された文字テキストデータ132を対象に全文検索を行うように構成されたものである。
 図2は、一例として「yesterday」の文字列の「y」以降の「est…」の文字列が文字記憶素子102に記憶されている場合を示すものである。この場合、番地126の1番地が「e」、2番地が「s」、3番地が「t」・・・N番地が「h」である場合、1番地は「01100101」、2番地は「01110011」、3番地は「01110100」、N番地は「01110100」としてUTF-8文字コードが文字記憶素子102に記憶される。
 (全文検索回路の文字検出回路)
 次に、この全文検索回路103の文字検出回路105は、図2に示すように、コマンド生成回路127の比較データ生成回路123に接続された1ビット一致検出回路109と、この1ビット一致検出回路109に接続された8入力論理積回路110とで構成されている。
 (文字検出回路の1ビット一致検出回路)
 前記1ビット一致検出回路109は、図2に示すように、上記文字記憶素子102を構成する1バイト/8個の各記憶素子セルに対応して設けられ、一方の入力がそれらの各記憶セルに接続されており、もう一方の入力が上記比較データ123として受け取った1バイト/8ビットの各ビットデータに接続されている。そして、両入力に対して1ビット毎の一致検出演算を行いその結果を8入力論理積回路110に出力するよう構成されている。
 従って、1ビット一致検出演算回路109は、N×8個の一致回路が並列に接続されてなり、Nバイトの文字テキストデータ132に対してN並列演算を実行するものである。
 (文字検出回路の8入力論理積回路)
 前記8入力論理積回路110は、1バイト毎に1つ設けられており、1バイトつまり8つの1ビット一致検出回路109からの出力を受け取り、これらに対して論理積演算を行ってその結果を出力するものである。
 従って、これら1ビット一致検出回路109と8入力論理積回路110とにより、コマンド生成回路127から与えられた1バイトの比較データ123とNバイトの文字テキストデータ132との比較が、全バイトに亘って並列に実行されることになる。
 図2に示す例では、一致する全文検索回路の番地126の2番地に対応する上記8入力論理積回路110から8ビットのデータの一致を示すフラグ(FG)が「1」として出力され、一致しない番地に関しては「0」が出力されることを示している。なお、この実施形態では一致検出をもとに文字検出を行っているが、不一致検出回路(XOR)と、8入力論理和(OR)回路111と論理否定(NOT)回路や、その他の回路の組み合わせで実現出来る。
 (全文検索回路の文字列検出回路)
 次に、図3を参照して前記文字列検出回路106を説明する。
 文字列検出回路106は、FGシフト回路112と、FG勝ち抜き回路113とで構成される。
 (文字列検出回路のFGシフト回路)
 まず、FGシフト回路112は、前記8入力論理積回路110の個数に応じてN個のプリセット機能付きシフトレジスタで構成される。
 この例では、前記8入力論理積回路110の出力が、このFGシフト回路112のプリセット入力「P」に接続されている。そして、1番地目のシフトレジスタのデータ出力「Q」は2番地目のシフトレジスタのデータ入力「D」に接続され、2番地目のシフトレジスタのデータ出力「D」は3番地目のシフトレジスタのデータ入力「Q」に接続される。
 以降同様にN番地目のシフトレジスタまで接続されると共に、各シフトレジスタにはコマンド生成回路127から与えられるシフトクロック130が接続されている。
 このような構成により、上記文字検出回路105により文字テキストデータ132の中から検索キーワード125と一致する文字若しくは文字の部分(1バイトのコード)が一致フラグ(FG)として検出された後、検索キーワード125の文字列のバイト数n-1回(前記シフトクロック数に対応)だけこのフラグの位置を順番にシフトさせていくことで、次に説明するFG勝ち抜き回路113で検索キーワード125のバイト数分連続するフラグの位置、すなわち文字の並び122(文字列)を検出することが出来る。
 (文字列検出回路のFG勝ち抜き回路)
 FG勝ち抜き回路113は、図3に示すように、前記FGシフト回路112に対応してN回路設けられたものであり、論理否定、直接入力、論理積、論理和、排他論理和、マスク、ギャップ演算の演算を行える論理回路群(若しくは素子)と、演算条件を選択するためのセレクト回路と、演算結果を格納するための勝ち抜きレジスタとで構成される。
 このような構成により、あとで詳説するように、前記FGシフト回路112に記憶された一致フラグのデータから、検索キーワード125のバイト数分n連続するフラグの先頭フラグ位置を検出することが出来る。
 なお、上記選択回路の演算条件入力は前記コマンド生成回路127の勝ち抜き演算条件生成回路129に接続されており、論理否定、直接入力、論理積、論理和、排他論理和、マスク(無視)、ギャップ演算のどの演算条件を使用するかが、前記コマンド生成回路127の前記勝ち抜き演算条件生成回路129によって決定されるようになっている。
 すなわち、前記勝ち抜き演算条件129は、上述したように、検索キーワード125として指定される文字列および文字種別に基づいて、文字列検出回路106における演算条件を決定するものであり、これにより後で詳述するように、検索キーワード125に含まれる文字列に応じた勝ち抜き演算処理がなされ、前記勝ち抜き演算の都度、勝ち抜き演算結果がFGとして、勝ち抜きレジスタに格納されるものである。
 標準的には検索キーワード125の文字列のバイト数n×2-1回の勝ち抜き演算で生き残った勝ち抜きレジスタは論理「1」、その他は「0」として最終勝ち抜きFGが勝ち抜きレジスタに格納されることになる。
 (全文検索回路の結果出力回路)
 結果出力回路107は、図3に示すように、上記N回路のFG勝ち抜き回路113に対応してN回路設けられ、上記FG勝ち抜き回路113の勝ち抜きレジスタの「1」または「0」の演算結果を出力するよう構成された回路である。全ての番地の「1」と「0」を出力する構成以外、上記勝ち抜きレジスタが「1」となっている番地のみを出力する構成や、後述する通りN個の演算結果の中に1つでも「1」がある場合には「演算結果あり」、1つも「1」がない場合には「演算結果なし」つまり「有り/無し」の結果のみを出力する構成でも構わない。
 この結果出力回路107からの出力は、演算結果として、図1に示すように入出力インターフェース115を通じてHOSTに返すよう構成されている。
 (全文検索プロセッサの動作)
 以下、上記の構成を、この装置の動作を通してさらに詳しく説明する。
 (テキストデータ記憶動作)
 まず、検索の対象となる文字テキストデータ132が文字記憶素子102に記憶される。
 この際、文字テキストデータ132は入出力インターフェース115を通じてHOSTのCPUから直接もしくはDMA(Direct Memory Access)方式で文字記憶素子102に対するデータ転送がなされ、Nバイトの文字コードが記憶される。
 ASCIIの英文の場合の多くは1バイトで文字コードの全部を表現出来るので、前記文字記憶素子102には、N文字が記憶されることになる。
 一方、シフトJISの和文の場合には2バイトで1文字を表すコードが表現出来るので、文字記憶素子102には、N/2文字が記憶されることになる。
 また、UTF-8の和文の場合の多くの文字は3バイトで1文字を表すコードの全部が表現出来るので、文字記憶素子102には約N/3文字が記憶されることになる。
 なお、文字記憶素子102には、上記複数種類の文字コードを混在して記憶することも可能である。
 (文字検出動作)
 ついで、前記HOSTから与えられる検索キーワード125に基づいて文字検出動作が実行され、次いで文字列の検出が実行される。
 文字検出動作においては、コマンド生成回路127から与えられる、比較データ123をもとに文字の検出が行われる。
 文字検出回路105は、文字記憶素子102の各メモリセルの出力に接続された、1バイトあたり8つの1ビット一致検出回路109と、この8つの1ビット一致検出回路109の出力に接続された1バイトあたり1つの8入力論理積(AND)回路110とで構成されているので、指定された比較データ123の文字コードと、文字記憶素子102の文字コードがマッチ(一致)する場合、対象となる全文検索回路の番地126の論理積回路110の出力は論理「1」になる。
 図2の例では、「s」:「01110011」としてコマンド生成回路127から与えられた比較データ123と全文検索回路の番地126の2番地は8つの1ビット一致検出回路109の全てがマッチし、論理積回路110のAND条件が成立(8ビットマッチ)することを示している。
 この結果は、1バイト毎に文字検出結果として後述するFGシフト回路112に論理「1」のFG(フラグ)として記憶され、その他の全文検索回路の番地126の番地はマッチしないので、文字の不一致としてFGシフト回路112に論理「0」として記憶される。
 (文字列検出動作)
 次に、上記文字検出の結果に基づいて文字列検出動作が実行される。
 この際、コマンド生成回路127から与えられる、シフトクロック130並びに勝ち抜き演算条件129のコマンドをもとに文字列の検出が行われる。
 上述したように、文字列検出回路106はFGシフト回路112並びにFG勝ち抜き回路113で構成される。
 FGシフト回路112は、以上の文字検出回路105による並列文字マッチ検出のマッチ結果、例えば前述の「s」、「e」、「a」、「r」、「c」、「h」や、「検:1/3」、「検:2/3」、「検:3/3」、「索:1/3」、「索:2/3」、「索:3/3」などの文字マッチ結果(FG)を記憶並びにデータシフトする機能を有する。
 FGシフト回路112はコマンド生成回路127から与えられるシフト演算のためのシフトクロック130の度に、文字検出回路105の出力からプリセットされたN個のFGを全並列(N並列)に記憶並びにそのデータをシフトするものである。(このデータシフトの具体例は図5から図12で後述する。)
 一方、FG勝ち抜き回路113は、検出された「s」、「e」、「a」、「r」、「c」、「h」もしくは「検:1/3」、「検:2/3」や、「検:3/3」、「索:1/3」、「索:2/3」、「索:3/3」などの文字コードの並びが、検索キーワード125として与えられる文字コードの文字の並び122(文字列)にマッチするか否か(文字の配列が妥当であるか否か)を判定し、検索キーワード125の文字列の先頭番地もしくは末尾番地に該当する全文検索回路の番地126を検出する機能である。
 このFG勝ち抜き回路113は、高度な勝ち抜き演算を実施するための論理積や論理和、更には排他論理和や論理否定の論理素子と、以上論理素子の論理演算を選択するための選択回路、そして選択回路から出力された演算結果を格納する勝ち抜きレジスタで構成されている。
 選択回路には、コマンド生成回路127の勝ち抜き演算条件生成回路129から与えられる演算条件、論理否定、論理積、論理和、排他論理和、マスク(無視)、ギャップ演算の選択信号が入力される。
 本実施形態では、勝ち抜きレジスタは演算の利便性や性能を向上させる目的で、勝ち抜きメインレジスタと、勝ち抜き演算の途中結果を保持する勝ち抜きサブレジスタの2つのレジスタで構成されており、これらのレジスタの何れを使うかなど、コマンド生成回路127でコントロールする構成になっている。
 一例として通常の演算の場合は勝ち抜きメインレジスタを使用し、ギャップ演算のような特殊な演算の場合には、勝ち抜きメインレジスタ並びに勝ち抜きサブレジスタの双方を動作させることが可能な構成になっている。
 従って、単に勝ち抜きレジスタと表現する場合は勝ち抜きメインレジスタを意味するものであり、ギャップ演算の場合にはメイン並びにサブを区別して説明する。
 なお、この回路構成は勝ち抜き演算の考え方を示すものであるのでロジック回路やレジスタの構成など概念的な内容を示すものである、またこの構成に限定されるものではない。
 具体的な勝ち抜き演算については、図4以下を参照して後述するが、一般的な勝ち抜き演算の内容は以下のようになる。
 すなわち、文字列を検出する最初のステップとして勝ち抜き演算条件129で直接入力が選択されるとFGシフト回路112の出力から受け取った入力は直接FG勝ち抜き回路113の勝ち抜きレジスタに代入される。
 本例の場合以上の演算で、全文検索回路の番地126の2番地は論理「1」、その他の番地は論理「0」となる。
 以降のステップとしてコマンド生成回路127から与えられるシフト演算のための1シフトクロック130に同期して勝ち抜き演算条件129で論理積が選択されると、勝ち抜きレジスタの出力とFGシフト回路112から受け取った入力を論理積演算することで第1回目(初回)の勝ち抜き演算が実行される。
 所定回数のクロックシフト130と勝ち抜き演算の結果、勝ち抜いた全文検索回路の番地126のFG勝ち抜き回路113の勝ち抜きレジスタ出力は論理「1」となりその他のレジスタ出力は論理「0」となる。
「search」が検索キーワード125の場合、勝ち抜いた全文検索回路の番地126は検索対象の検索キーワード125文字列の先頭番地「s」に該当する文字コードが記憶されている。
 「search」のキーワードを「hcraes」のように後方から検出した場合には末尾番地「h」を検出することになる。
 以上が一般的な文字の並び122(文字列)の検出の動作概要である。
 全文検索の具体例は図4並びに図5から図12で詳細に説明する。
 (結果出力動作)
 結果出力回路107は、所定数の文字の並び122(文字列)があったFG勝ち抜き回路113の出力を論理「1」、その他は論理「0」としてHOSTに出力する機能である。
 以上のFG勝ち抜き回路113の論理状態は全文検索演算の結果出力回路107から入出力インターフェース115を通じてHOSTへ出力される。
結果出力の方法は、全ての番地の論理状態を出力する方法や、勝ち抜きした番地の番号(アドレス)を出力する方法など任意の方法で良い。
以上説明の通り、この全文検索プロセッサ101は文字記憶素子102並びに、文字検出回路105と文字列検出回路106で構成されるN個の全文検索回路103が並列度Nで全文検索演算を行い、高度で効率的で高速な全文検索を実現する。
 以上の構成は汎用ロジックのみで実装出来るので、ASIC(Application Specific Integrated Circuit)はもちろんFPGA(Field Programmable Gate Array)でも容易に実現することが可能である。詳細は後述する。
 (コマンド生成動作)
 次に、図4を参照してコマンド生成回路127によるコマンド生成動作、すなわち、全文検索演算条件生成動作について説明する。
 コマンド生成回路127は、上述したように、HOSTから与えられた検索キーワード125をもとに所定のコマンドを生成するものである。
 コマンド生成回路127は単に「search」などの検索キーワード125のみならず、ワイルドカードや、文字のギャップ(文字の位置の許容)を含む検索キーワード125など様々な検索条件をもとに全文検索のコマンドを生成する機能を有する。
 本例では代表例として(1)英文標準(の場合の全文検索)、(2)和文標準(の場合の全文検索)、(3)英文ワイルドカード(の場合の全文検索)、(4)英文文字のギャップ(の場合の全文検索)の4通りのコマンド(命令)を示すものとする。
 それぞれの表の1行目には全文検索演算の演算ステップ(順序)が示され、どのステップで全文検索回路103にどのようなコマンド(命令)を与えるかが示されている。ここで各ステップはシステムクロック131に同期して実行される。
 2行目の「比較データ」123には文字検出回路105に与えられる「s」、「e」、「a」、「r」、「c」、「h」や「検:1/3」、「検:2/3」、「検:3/3」、「索:1/3」、「索:2/3」、「索:3/3」などの比較データが示されている。
 3行目の「シフトクロック」130にはシフトクロック生成回路130から前記FGシフト回路112に与えられるクロック送りが「〇」印で示されている。例えば、「(1)英文標準」の例では、最初の6ステップで比較データが与えられ、次のステップ7から11でFGシフト回路112によるシフト動作が実行されることになる。
 4行目の「勝ち抜き演算条件」129にはFG勝ち抜き回路113に与える「直接入力」、「論理積」、「マスク(Mask、無視)」、「ギャップ(Gap)演算」などの勝ち抜き演算条件が示されている。
 図4中、(1)の英文標準の場合の全文検索、(2)の和文標準の場合の全文検索は、標準的な全文検索の例を示すものである。この例では、英文は1バイト6文字「search」、和文の場合3バイト2文字「検索」の全文検索のコマンドの例(いずれも6バイト)を示している。
 一方、(3)の英文ワイルドカードは、「search」の「a」、「r」がワイルドカード「」、「」に指定されており、この場合の比較データ123、シフトクロック130、勝ち抜き演算条件129は、この図4に示すようになる。この場合には、「」の特殊文字で示されるワイルドカードは、前述の特殊文字ルックアップテーブルの参照により、比較データ123としては無視され、その後、6バイト分のシフト動作が実行されるから、全体のステップ数は上記(1)と(2)の通常の検索のステップ数(この例では11)よりもワイルドカードの文字数分(この例では2文字)少ないステップ数(この例では9)となる。
 (4)の英文文字のギャップの場合の全文検索は、「h」の文字が「s」、「e」、「a」以降3ポジションのいずれかにある場合、例えば「*h」3Gapなどの特殊文字とポジションの範囲を示す演算条件で、「seah」、「sea*h」、「sea**h」の何れでもマッチとする場合のコマンドの例である。
 前述した通り本例では、コマンド生成回路127は全文検索プロセッサ101の内部に置くことで説明を行ったが、ソフトウェア処理により、HOSTのCPUから、全文検索プロセッサ101に各ステップ毎に送ることも、一括して送ることも自由である。
 以下に、英文標準の場合の全文検索、和文標準の場合の全文検索、英文ワイルドカードの場合の全文検索、英文文字のギャップの場合の全文検索の全文検索演算の内容を示す。
 (英文の場合の標準的な全文検索動作)
 図5は、英文の標準的な全文検索におけるデータ状態遷移-A(文字検出工程)を説明するものである。
 図6は、英文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
 図4の(1)で紹介のコマンドをステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものとして説明する。
 本実施形態では、N個(N番地)の全文検索回路103の一部にあたる16個(16番地)の全文検索回路103の各構成におけるデータ状態遷移を示している。
 本実施形態では、UTF-8文字コードによる16文字の英文テキストデータ「full text search」が、文字記憶素子102の全文検索回路の相対番地104のi+1バイト目(以下単に相対1番地)からi+16バイト目(以下単に相対16番地)まで16バイトで本全文検索プロセッサ101の文字記憶素子102に記憶されているものとする。
 この文字テキストデータ132に対し、「search」の6文字をバイト数nが6(6バイト長)の検索キーワード125として、全文検索を行う場合の実施形態である。
 図5から12では省略されているが、ステップ0の初期状態では、全てのFGシフト回路112並びにFG勝ち抜き回路113はクリアされ論理「0」の状態になっているものとする。
 ステップ1からステップ11までの処理は、コマンド生成回路127から与えられるコマンド(比較データ123、シフトクロック130、勝ち抜き演算条件129)により全文検索回路103が制御を行うものである。
 図5で示すステップ1からステップ6は、図4の(1)のステップ1からステップ6に対応するもので、記憶された「full text search」の文字テキストデータ132の中から、「search」の文字を検出する処理ステップを示すものである。
 注目すべき部分は文字を白黒反転し示している。
 ステップ1では、1バイトで構成される「s」の文字を検出するもので、本実施形態では相対11番地の文字検出回路105が「s」を検出する。
 検出されたFGは、FGシフト回路112にプリセットされ相対11番地のFGシフト回路112は論理「1」、その他は論理「0」となる。さらにこのFGは、初回勝ち抜きFGとして、FG勝ち抜き回路113への演算条件として「直接入力」が選択されることにより相対11番地のFG勝ち抜き回路113(のレジスタ)には論理値「1」がセットされる。
 ステップ2では、1バイトで構成される「e」の文字を検出するもので、本実施形態では相対7番地、並びに相対12番地の文字検出回路105が「e」を検出する。
 検出されたFGは、FGシフト回路112にセットされる。この際、図4(1)に示すようにFG勝ち抜き回路113への演算条件は与えられず、対応する勝ち抜き回路には論理値「0」がセットされたままである。
 ステップ3からステップ5は、ステップ2と同様の演算の繰り返しであるので割愛する。
 最後のステップ6では、1バイトで構成される「h」の文字を検出するもので、本実施形態では相対16番地の文字検出回路105が「h」を検出する。
 検出されたFGとして論理値「1」がFGシフト回路112にセットされる。
 この例では、与えられた比較データ123の文字列のバイト数nと同数の6つのステップで与えられた検索キーワード125「search」の文字すべてが相対11番地から連続で検出されたことになる。
 注目すべきは、ステップ6でFGシフト回路112の相対11番地から相対16番地までの連続した6つのFG「1111111」と、ステップ1でセットされたFG勝ち抜き回路113の相対11番地のFGが「1」となっていることである。
 図6は、ステップ6以降のデータ状態遷移-B(文字の並びの連続検出)を示したものである。
 図6のステップ6は先に説明の文字の検出の最終結果と同一である。
 ステップ7からステップ11は、図4の(1)に対応するもので、以上ステップ1~6で検出された「search」の文字の並び122(文字列)を検出する「文字列検出」処理を示すものである。
 ステップ7では、FGシフト回路112に前記シフトクロック生成回路130から1クロック信号が与えられることによりステップ6で示されるFGシフト回路112のFGを左に1バイト分シフトし、シフトしたFGと、FG勝ち抜き回路113の演算条件を「論理積」(図4(1)参照)とすることによりFG勝ち抜き回路113のFGとの論理積(AND)演算を行う。
 このステップでは、FG勝ち抜き回路113並びにFGシフト回路112の相対11番地のFGが存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対11番地はステップ6のまま(勝ち残り)、すなわち論理値「1」のままとなる。
 ステップ8からステップ10は同様な演算の繰り返しであるので割愛する。
 最後のステップ11は、ステップ10で示されるFGシフト回路112のFGをさらに左に1バイト分シフト(合計左に5シフト)し、シフトしたFGと、FG勝ち抜き回路113のFGとの論理積(AND)演算を行う。
 このステップでは、FG勝ち抜き回路113並びにFGシフト回路112の相対11番地の双方のFGは存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対11番地はステップ10のまま(論理値「1」のまま)で、勝ち残りとなる。
 以上与えられた比較データ123の文字列のバイト数n-1回=6-1=5回のシフト演算と論理積(AND)勝ち抜き演算を繰り返し、最後まで勝ち抜いた相対11番地が最終勝ち抜きFGとなる。
 以上の処理で相対11番地から相対16番地までの文字の並び122(文字列)が、与えられた検索キーワード125条件の文字の並び122(文字列)と同じであることを連続で検出したことになる。
 以上の説明は図示した範囲の演算内容であるが、実際の処理では文字記憶素子102の1番地からN番地までの文字の並び122(文字列)の中に、与えられた検索キーワード125条件の文字の並び122(文字列)にマッチする(同一である)文字列を連続で検出したことになる。
 本方式は以上のように、検出された全ての文字が連続した場合のみが最終勝ち抜きFGとなるので、ステップ2で相対7番地と相対11番地の2つの「e」の文字が検出されるが、相対7番地の「e」は文字の並び122(文字列)が成立しないのでノイズとして処理される。
 この演算結果を、ステップ12で結果出力回路107からHOSTに結果出力することにより、HOSTは対象となる文字テキストデータ132の1番地からN番地の中に「search」という文字列が存在するか否か及びに、どの位置に検索キーワード125の文字列の先頭番地が存在するかを知ることが可能になる。
 後述するが、与えられた比較データ123の文字列のバイト数nと同数のステップで連続的に文字を検出し、与えられた比較データ123の文字列のバイト数n-1回のシフト演算と論理積(AND)勝ち抜き演算を連続して繰り返すことにより、文字の並び122(文字列)を検出出来ることが特に重要である。
 与えられた検索キーワード125の文字列の検出においては、必ずしも「search」のように検索キーワード125の文字列の前方から順に検出する必要はなく、「hcraes」のように後方からの検出でも構わない。
 その場合にはシフトレジスタのシフト動作を右シフトし、末尾番地「h」を検出すれば良い。
 このようなシフト動作はリバーシブル型シフトレジスタ(正転/逆転可能なシフトレジスタ)とすることで容易に実現することが出来る。
 (和文の場合の標準的な全文検索動作)
 図7は、和文の標準的な全文検索におけるデータ状態遷移-A(文字検出工程)を説明するものである。
 図8は、和文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
 図4の(2)に示したコマンド(比較データ123、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものである。
 本実施形態では、N個の全文検索回路103の一部にあたる15個の全文検索回路103の各構成におけるデータ状態遷移を示している。
 図7に示すように、本実施形態では、UTF-8文字コードによる「全文検索は」の和文の5文字の文字コードが、文字記憶素子102の全文検索回路の相対番地104のi+1バイト目(以下単に相対1番地)からi+15バイト目(以下単に相対15番地)まで15バイトで本全文検索プロセッサ101の文字記憶素子102に記憶されている。
 以上の文字コードの中から「検索」の2文字をバイト数nが6の検索キーワード125として、全文検索を行う場合の実施形態である。
 前述同様ステップ1からステップ11までの処理は、コマンド生成回路127から与えられるコマンドにより全文検索回路103が全文検索演算を行うものである。
 ステップ1からステップ6は、記憶された「全文検索は」の文字テキストデータ132の中から「検」並びに「索」の文字を検出する処理を示すものである。
 注目すべき部分は文字を白黒反転し示している。
 ステップ1では、3バイトで構成される「検」の文字コードの最初の1バイト「検:1/3」を検出するもので、本実施形態では、相対7番地の文字検出回路105が「検:1/3」を検出する。
 検出されたFGは、前述の通りFGシフト回路112にプリセットされる。
さらにこのFGは、前述の通り初回勝ち抜きFGとしてFG勝ち抜き回路113にセットされる。
 ステップ2からステップ5は同様な演算内容の繰り返しであるので割愛する。
 最後のステップ6では、3バイトで構成される「索」の文字コードの3番目の1バイト「索:3/3」を検出するもので、本実施形態では、相対12番地の文字検出回路105が「索:3/3」を検出する。
 検出されたFGは、FGシフト回路112にセットされる。
 以上与えられた比較データ123の文字列のバイト数nと同数の6つのステップで、与えられた検索キーワード125の「検索」の文字を連続で検出したことになる。
 注目すべきは、ステップ6でFGシフト回路112の相対7番地から相対12番地までの連続した6つのFG「1111111」と、ステップ1でセットされたFG勝ち抜き回路113の相対7番地のFGが「1」となっていることである。
 図8は、和文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
 ステップ6は先に説明の文字の検出の最終結果である。
 ステップ7からステップ11は、以上検出された「検索」の文字の並び122(文字列)を検出する処理を示すものである。
ステップ7は、前述同様ステップ6で示されるFGシフト回路112のFGを左に1バイト分シフトし、シフトしたFGと、FG勝ち抜き回路113のFGとの論理積(AND)演算を行った結果が示されている。
 このステップでは、FG勝ち抜き回路113並びにFGシフト回路112の相対7番地並びに相対16番地の双方のFGが存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対7番地はステップ6のまま(勝ち残り)である。
 ステップ8からステップ10までは同様な演算の繰り返しであるので割愛する。
 最後のステップ11は、ステップ10で示されるFGシフト回路112のFGをさらに左に1バイト分シフト(合計左に5シフト)し、シフトしたFGと、FG勝ち抜き回路113のFGとの論理積(AND)演算を行うものである。
 このステップでは、前述同様FG勝ち抜き回路113並びにFGシフト回路112の相対7番地の双方のFGは存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対7番地はステップ10のまま勝ち残りとなる。
 以上与えられた比較データ123の文字列のバイト数nと同数の6つのステップ-1回=5回のシフト演算と論理積(AND)勝ち抜き演算を繰り返し、最後まで勝ち抜いた相対7番地が最終勝ち抜きFGとなる。
 以上の処理で相対7番地から相対12番地までの文字の並び122(文字列)が、与えられた検索キーワード125の文字の並び122(文字列)と同じであることを連続で検出したことになる。
 以上の説明は図示した範囲の演算内容であるが、実際の処理では文字記憶素子102の1番地からN番地までの文字の並び122(文字列)の中に、与えられた検索キーワード125の文字の並び122(文字列)にマッチする(同一である)文字列があるか否かを連続で検出したことになる。
 この全文検索プロセッサ101の演算結果をHOSTに出力することにより、HOSTは対象となる文字テキストデータ132の1番地からN番地の中に「検索」という文字列が存在するか否か及びに、どの位置(番地)に文字列の先頭番地が存在するかを知ることが可能になる。
 前述の英文の標準的な全文検索同様、与えられた比較データ123のバイト数nと同数のステップで連続的に文字を検出し、与えられた比較データ123のバイト数n-1回のシフト演算と論理積(AND)勝ち抜き演算を連続して繰り返すことにより、文字の並び122(文字列)を検出出来ることが特に重要である。
 以上英文、和文2例に過ぎないが、UTF-8などの標準文字コードを用いることにより全世界の言語共通に全文検索出来ることを示した。
 次に、高度な曖昧全文検索に不可欠なワイルドカード機能とギャップ機能を用いた応用例を示す。
 (ワイルドカードを適応した場合の全文検索動作)
 図9は、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-A(文字検出工程)を説明するものである。
 図10は、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
 図4の(3)に示したコマンド(比較データ123、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものとして説明する。
 ワイルドカードはスペルが不確かな場合等に用いられるものである。
 本例では「search」文字列の3文字目、4文字目にワイルドカード「」を適応した場合の例を示している。
 文字検出のステップ1、ステップ2はこれまでの説明通りである。
 3文字目、4文字目に特殊文字であるワイルドカード「」を適応した場合、前記コマンド生成回路127は比較データ123を全文検索回路103に与えず、これら3文字目及び4文字目はスキップされ、文字検出工程は実行されない。
 従って、ステップ3で「c」、ステップ4で「h」の文字を検出する。
 以上の4ステップで文字の検出は完了であり、必要な文字を連続で検出したことになる。
 図10は、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
 ステップ4は先に説明の文字の検出の最終結果である。
 ステップ5からステップ9が文字列検出ステップとなる。この場合、上記ワイルドカードを含めて検索キーワード125は6バイトであるから、6-1の5ステップ(ステップ5~9)により文字検出工程が実行される。
 ただし、ワイルドカードに指定されたステップ6、7については、上記コマンド生成回路127の勝ち抜き演算条件生成回路129により生成されFG勝ち抜き回路113に与えられる演算条件として「マスク(無視)」が選択される。このことで、FG勝ち抜き回路113の演算を無視させFG勝ち抜き回路113の論理状態を変化させない。
 すなわち、ステップ5はワイルドカードの対象外であるので、FG勝ち抜き回路113の演算はこれまでの説明のAND演算である。
 そして、ステップ6およびステップ7はワイルドカード対象のステップであるので、FG勝ち抜き回路113のAND演算をマスク(無視)し、ステップ6およびステップ7のFG勝ち抜き回路113を勝ち残りのままにしてステップ8に移る。
 ステップ8およびステップ9はワイルドカード対象外のステップであるので、通常のAND演算を行い、最終ステップ11で相対11番地の「s」が勝ち残る。
 以上の処理で相対11番地から相対16番地までの文字の並び122(文字列)が、与えられた検索キーワード125の文字の並び122(文字列)にマッチする(同一である)ことを連続で検出したことになる。
 以上の説明は図示した範囲の演算内容であるが、実際の処理では文字記憶素子102の1番地からN番地までの文字の並び122(文字列)の中に、与えられたキーワード条件の文字の並び122(文字列)にマッチする(同一である)文字列を連続で検出したことになる。
 本例は文字列の中間にワイルドカードを指定した場合を示したが、文字列の中間のみならず、先頭や末尾など自由な位置にワイルドカードを利用することが可能である。
 本方式は以上のように外部から与えられる検索キーワード125の文字列にワイルドカードが含まれる場合、ワイルドカードの対象となる処理を省略することにより、ワイルドカード処理を可能にする。
 (文字のギャップを適応した全文検索)
 図11は、英文に文字のギャップを適応した全文検索におけるデータ状態遷移-A(文字検出工程)を説明するものである。
 図12は、英文に文字のギャップを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
 図4の(4)で紹介のコマンドをステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものとして説明する。
 文字の位置の許容(ギャップ)もスペルが不確かな場合等に用いられるものである。
前述した通り「*h」3Gapの特殊文字と文字のポジションは「h」文字の許容位置を示すもので、本例の場合「sea」が確かで、その後、ギャップが0から2つまでの3か所(ギャップ3)に「h」の文字があると想定される場合、つまり「seah」「sea*h」「sea**h」の何れでもマッチとする演算方法である。その具体例を以下に示す。
 ステップ1からステップ3までの「sea」の文字の検出はこれまでの説明通りである。
 ステップ4では、「*h」の特殊文字にギャップ3が指定されている。
 「h」が指定されているので、相対16番地のFGシフト回路112が論理「1」にセットされる。
 以上で文字の検出は完了であり、必要な文字を連続で検出したことになる。
 図12は同じく文字列検出工程におけるデータ状態遷移-Bを示すものである。
 ステップ4は先に説明の文字の検出の最終結果である。
 文字列の検出ステップ5は従来と同じである。
 ギャップ指定の場合、ステップ6で勝ち残りとなっているFG勝ち抜き回路113はステップ7、8、9の各ステップの何れかで「h」を検出した場合にFG勝ち抜き回路113を勝ち残りとするギャップ演算が実行される。
 ギャップ演算はFG勝ち抜きレジスタの勝ち抜きメインレジスタと勝ち抜きサブレジスタを併用した演算が実行される。
 具体的には、ステップ6でこれまで勝ち抜いてきた相対番地の勝ち抜きサブレジスタを論理「1」にセットする。
 従って、本例では相対11番地の勝ち抜きサブレジスタは論理「1」となる。
 ステップ7は「seah」の文字の並び122(文字列)を探すものである。
 勝ち抜きサブレジスタは論理「1」のままになっている。
 相対11番地のFGシフト回路112の出力は論理「0」になり、勝ち抜きサブレジスタは論理「1」、双方の論理積(AND)条件は成立しないため、勝抜きメインレジスタは「1」に復活出来ない。
 ステップ8は「sea*h」の文字の並び122(文字列)を探すものである。
 勝ち抜きサブレジスタは論理「1」のままになっている。
 相対11番地のFGシフト回路112の出力は論理「0」になり、勝ち抜きサブレジスタは論理「1」、双方の論理積(AND)条件は成立しないため、前記同様、勝ち抜きメインレジスタは「1」に復活出来ない。
 ステップ9は「sea**h」の文字の並び122(文字列)を探すものである。
 相対11番地の勝ち抜きサブレジスタは論理「1」となっている。
 このステップで相対11番地のFGシフト回路112は論理「1」になる。
双方の論理積(AND)条件が成立するので勝ち抜きメインレジスタは論理「1」に復活する。
 もし、ステップ7、8、9の何れでも、相対11番地のFGシフト回路112は論理「1」と勝ち抜きサブレジスタの論理「1」論理積(AND)演算条件が成立しない場合は相対11番地の勝ち抜きメインレジスタは勝ち残れない。
 このステップの直後のステップ10で結果出力回路107により演算結果を出力する。
 以上の演算並びに出力により、「seah」「sea*h」「sea**h」のように文字間のギャップを含む文字列の全文検索が可能になる。
 説明は省略するが、後方からの文字列検出により、任意の位置にギャップ設定が可能である。
 以上のようなワイルドカード機能やギャップ機能で、全文検索操作の利便性を高めることが可能になる。
 本方式は以上の説明の通り、外部から与えられる検索キーワード125の文字列に文字のギャップ許容が含まれる場合、勝ち抜き回路に2組のレジスタを組み込むことにより、ギャップ許容処理が可能になる。
 ワイルドカード機能やギャップ機能も、標準的な全文検索と同様もしくはそれ以下のステップ数で処理出来ることが特に重要である。
 本実施形態ではワイルドカード機能やギャップ機能を指定する特殊文字を「」や「*」で示したがこれに限るものではない。
 本方式の最大の特徴は並列度Nによる全文検索演算で、多様な全文検索(キーワード検索含む)のニーズに不可欠な前方一致、中間一致、後方一致はもとより、文字のワイルドカード機能やギャップ機能を適応した高度な全文検索が可能であることである。
 形態素方式インデックスではないので、流行語のような新しい用語にもリアルタイム対応が可能である。
 さらに本方式は、文字コードがバイト(8ビット)の整数倍単位で定義されるものであれば、どのような文字コードであっても全文検索が可能である。
従って本方式により、全文検索システムを世界の言語共通に標準化することが可能になる。
 (本実施形態のアルゴリズムの新規性と高速性)
 本実施形態のアルゴリズムの新規性と高速性について説明する。
 特許文献2で示した「特許第4588114号 情報絞り込み検出機能を備えたメモリ、その使用方法、このメモリを含む装置」において、シフトレジスタによるパターンマッチングの手法が示されている。
 この手法による画像のハードウェアパターンマッチングは、従来のCPUによるソフトウェアパターンマッチングに比較して1万倍高速化出来ることが確認されている。
 然しながらこの先願発明のパターンマッチングは、画像のパターンマッチングが主目的であるので、画像処理に伴う様々なマッチング条件を満たす必要があり、多くのステップが必要な構成になっている。
 従って従来方式でnバイト連続した文字列を検出する場合、n回の文字検出演算と、1+2+3+・・・(n-1)回の文字列検出のためのシフト演算が必要になる。
 これに比較して本方式は図5から図12で示した通りn回の文字検出演算+(n-1)回の文字列検出のためのシフト演算、合計n×2-1回で全文検索のパターンマッチング処理が出来る。
 従って本方式は従来方式の演算回数に比較して例えば、日本語2文字6バイトの場合、従来方式は6(文字の検出)+15(5+4+3+2+1)(文字列の検出)=21回の演算に対し、本方式は6(文字の検出)+5(文字列の検出)=11回の演算となるので、演算回数が21/11=約1/2に削減される。
 日本語4文字12バイトの場合、従来方式は12(文字の検出)+78(11+10・・・+2+1)(文字列の検出)=90回の演算に対し、本方式は12(文字の検出)+11(文字列の検出)=23回の演算となるので、演算回数が90/23=約1/4に削減される。
 日本語8文字24バイトの場合、従来方式は24(文字の検出)+300(23+22・・・2+1)(文字列の検出)=324回の演算に対し、本方式は24(文字の検出)+23(文字列の検出)=47回の演算となるので、演算回数が324/47=約1/7に削減される。
 以上のように本方式は、特に検索キーワード125の文字列が長い場合に有利であり、ワイルドカード機能やギャップ機能を含んだ演算もシンプルで効率的である。
 従って、このアルゴリズムを利用することにより全文検索の性能が大幅に向上し、インデックスがなくとも高速な全文検索システムが実現する。
 (全文検索プロセッサの全体構成)
 図13は全文検索プロセッサの全体構成の一例を示す。
 この例では、HOSTからの入力1で示す文字テキストデータ132は入出力インターフェース115を通じてHOSTのCPUから直接もしくはDMA(Direct Memory Access)方式でデータ転送がなされ、文字記憶素子102には、Nバイトの文字コードが記憶されている。
 HOSTからの入力2で示す全文検索の検索キーワード125は入出力インターフェース115を通じてHOSTから与えられる。
 この検索キーワード125はコマンド生成回路127で全文検索演算条件114に変換される。
 全文検索演算条件114の1つは比較データ生成回路123で作成される比較データ123であり、この比較データ123は文字検出回路105の入力に与えられる。
 全文検索演算条件114のもう1つはシフトクロック生成回路130で作成されるシフトクロック130並びに、勝ち抜き演算条件生成回路129で作成される勝ち抜き演算条件129であり、この2つの信号は文字列検出回路の入力に与えられる。
 本例では比較データ123の8ビットのデータ「s」:「01110011」が先に示した通りビット毎に比較演算され、その比較演算結果が1ビット一致検出回路109の演算結果として示されている。
 全文検索回路の番地126の2番地は1バイトの1ビット一致検出回路109の演算結果が「11111111」であるので、8入力論理積回路110の出力は論理「1」となる。
 この演算結果は、FGシフト回路112のシフトレジスタに論理「1」としてセットされている状態を示している。
 さらに、全文検索回路の番地126の2番地のFG勝ち抜き回路113のレジスタは勝ち残っていて論理「1」、2番地以外は論理「0」となっている状態を示している。
 以上のFG勝ち抜き回路113の論理状態は全文検索演算の結果出力回路107から入出力インターフェース115を通じてHOSTへ出力される。
結果出力の方法は、前述の通りである。
効率的な結果出力方法について後述する。
 (絞り込み検索及び総合出力を行うプロセッサの構成例)
 図14は、絞り込み検索を行う場合の全文検索プロセッサの構成を説明するものである。
 一例として、「検索」、「情報」、「検出」のように複数のキーワードで絞り込み検索を行う場合のブロックダイアグラムである。
 論理和(OR)回路111は、全ての結果出力回路107の出力を論理和(OR)するものであり、どこか一か所でも勝ち抜きがあれば、総合結果出力回路108をセットする。
 絞り込み検索演算は以下の通りである。
 初回「検索」のキーワード検索で勝ち抜きがあった場合、総合結果出力回路108はセットされる。
 次回「情報」のキーワード検索で勝ち抜きがあれば、総合結果出力回路108はセットされたままになる。
 次々回「検出」のキーワード検索で勝ち抜きがあれば、総合結果出力回路108はセットされたままになる。
 この総合結果出力をHOSTに送れば、HOSTは文字記憶素子102の1番地からN番地までの中に、「検索」と「情報」と「検出」の3つの文字列が全て存在することを知ることが出来る。
 もし次回「情報」や次々回「検出」のキーワード検索で勝ち抜きが無ければ、総合結果出力回路108はクリアされる。
 この総合結果出力をHOSTに送れば、HOSTは文字記憶素子102の1番地からN番地までの中に、「検索」と「情報」と「検出」の3つの文字列が全て一緒に存在しないことを知ることが出来る。
 以上説明の通り、複数の検索キーワード125で絞り込み検索を行い、検出した文字の並び122(文字列)の検出の結果をバイト毎にN並列に出力する機能の検出結果の論理和(OR)演算を行い、全文検出結果の有無を総合結果出力としてHOSTに出力する手法はHOST側の結果出力処理を大幅に軽減する。
 本実施形態では、結果出力1からN全体の論理和111を取り外部に出力する構成を示したが、1からNを適切なサイズに分割して、分割した範囲毎に論理和回路111並びに総合結果出力回路108を外部に出力する構成にすることも可能である。
 以上のような構成とすることにより、分割した範囲より短い文字列の文字テキストデータ132が沢山ある場合には、分割された範囲それぞれに文字列を記憶し全文検索演算を実施することにより、範囲毎に記憶された文字列の全文検索結果を得ることが出来る。また限られたデータサイズであれば、HOST側でどこに文字列があるのか探すことが容易になる。
 またFG勝ち抜き回路113は、FGシフト回路112との1ビット演算において、これまで説明の直接入力や論理積(AND)演算、論理和(OR)演算、マスク(無視)演算、ギャップ演算の他に、必要に応じて否定(NOT)演算、排他(Exclusive)演算、カウンタ演算など、各種ブール演算を実現出来る構成にすることにより、より高度な全文検索が可能になる。
 否定(NOT)演算の一例を挙げれば、検索キーワード125が「京都」の文字列の場合、「東京都」の文字列がノイズとして検索されるなどの問題を解決するにあたって、「京都」の前に「東」が含まれない文字列(「東」の論理否定)を探し出すのに有効な機能である。
 総合結果出力回路108も同様に、論理積(AND)演算、論理和(OR)演算、否定(NOT)演算、勝ち抜きサブレジスタや、カウント演算などその他必要な演算を実現出来る構成にすることにより、後述するバッチ処理による複数のバッチ演算(長い文章の演算)の検出結果をまとめて最後に出力するなど、より利便性の高い全文検索が可能になる。
 (本実施形態の全文検索の特徴)
 この全文検索プロセッサ101の全文検索の特徴を記す。
 第1に、本方式は、N-gram 転置インデックスと等価な全文検索処理をハードウェアで行うものであり、任意の文字の長さの転置インデックスが可能である。
 N-gram 転置インデックスは全文検索機能のバリエーションが広く、検索洩れが少ないのが特徴である。
 然しながらN-gram 転置インデックスはインデックスの数が大きくなりインデックスのメモリ容量が大きくなる傾向があるが、本方式はインデックスを作成する必要がないのでインデックスのメモリ容量を考慮する必要がない。
 第2に、この全文検索プロセッサ101を利用すると、転置インデックスのような複雑なアルゴリズムが不要になるので、専門性が低減し専門家が不要になる。
 また、各国の言語の壁をなくして全文検索の標準化を可能にする。
 第3に、この全文検索プロセッサ101の全文検索アルゴリズムは超高速な全文検索を可能にすることである。
 しかも前方一致、中間一致、後方一致のみならず、ワイルドカード機能やギャップ機能などの高度な処理も最少の演算回数で処理可能である。
全文検索プロセッサ101を用いた全文検索の処理時間の実例については、図18、20で後述する。
全文検索プロセッサ101の様々な特徴を活用した構成例を以下に示す。
 (外部メモリ方式全文検索プロセッサの例)
 図15は、外部メモリ方式全文検索プロセッサの概要を説明するものである。
 先に示した通り、本全文検索プロセッサ101は、N個の全文検索回路103が並列度N(全並列)で演算を行い、効率的で高速な文字列検索を実現するものであるが、N個の全文検索回路103の数を無制限に大きくすることは出来ない。
 従って、大きなサイズの文字テキストデータ132を本全文検索プロセッサ101に記憶することは出来ない。
 この問題を解決するのが、バッチ処理方式である。
 本全文検索プロセッサ101の上部にHOSTコンピュータが示されている。
 詳細は図21で示すが、このHOSTコンピュータにはメモリもしくはストレージが配置されている。
 これらのメモリもしくはストレージに記憶されている文字テキストデータ132は、PCIeやUSBなどの標準インターフェース116を通じ本全文検索プロセッサ101にデータ転送が可能な構成になっている。
 またHOSTからの検索キーワード125並びにHOSTへの結果出力も標準インターフェース116を通じて通信される構成になっている。
 以下、全文検索回路103のNが32K(32×1,024)であり1バッチのデータ量が32Kバイトの場合のバッチ処理について説明する。
 ちなみに32Kは、特許文献3「特許第5981666号」の発明で、これまで研究を行ってきたFPGAによる並列処理の並列度を参考にしたものである。
 先ずはこのメモリがDRAMメモリである場合を説明する。
 DRAMメモリは現在のコンピュータの主記憶装置であり、サーバーやPCからスマートフォンに至るまであらゆる種類のコンピュータに利用されている。
これらのDRAMメモリは単体で利用されることは少なく、JEDEC(Solid State Technology Association)などの規格に準じたメモリモジュール(DIMM)として利用される。
 現在主流のDIMM(Dual Inline Memory Module)はDDR4とよばれる規格のDRAMで、メモリ容量が8Gバイト程度であり、データ転送能力は10Gバイト/秒から40Gバイト/秒の性能を持つ。
 8GバイトをUTF-8漢字3バイトコードで使用する場合、80億バイト/3バイトで26億の和文文字を記憶することが出来る。
 (データの転送方法の例)
 図16は、外部メモリ方式全文検索プロセッサ101と外部メモリもしくはストレージとのデータ転送の概要を説明するものである。
 本例では、DIMMメモリやストレージのテキストデータを全文検索プロセッサ101の文字記憶素子102に書き込みを行う場合の概念を示す。
 この際、何処にどの文書類の文字テキストデータ132を記憶したか、もしくは記憶するかは、通常の情報処理と同様、HOSTがFAT(File Allocation Table)にもとづき管理する。
 メモリからの読み出しも同様にFATを参照し、対象となる文章のテキストデータをDIMMメモリから読み出し、所定容量の文字テキストデータ132を全文検索プロセッサ101に書き込みすることになる。
 DIMMメモリに書き込まれた文字テキストデータ132は、通常64ビット(8バイト)単位で全文検索プロセッサ101の文字記憶素子102にバースト転送(書き込み)される。
 次に外部メモリから全文検索プロセッサ101にデータを転送する場合の考え方を説明する。
 メモリから、テキストデータを転送する場合3つのケースが存在する。
 対象となる文字テキストデータ132が32Kバイトより大きい場合、文字テキストデータ132を分割して本全文検索プロセッサ101にデータを送りバッチ処理すれば良い。
 毎次のバッチデータ転送の際、前回転送した末尾の数十バイト程度(検索最大文字列数)を次回転送時に重複して転送することにより、検索洩れをなくすことが出来る。
 対象となる文字テキストデータ132が32Kバイトより小さく32Kバイトに近い場合、1バッチを1ファイルの文字テキストデータ132とすれば良い。
 対象となる文字テキストデータ132が32Kバイトより大幅に小さい場合は、1バッチに複数ファイルの文字テキストデータ132を書き込みすれば良い。
 HOSTは、どのような文字テキストデータ132のファイルをバッチ処理したか分かっているので、本全文検索プロセッサ101の演算結果と文字テキストデータ132を関連付けすることが可能である。
 (バッチ処理方法の例)
 図17は、外部メモリ方式全文検索プロセッサのバッチ処理のタイムチャートを説明するものである。
 外部メモリと本全文検索プロセッサ101をバッチ処理する場合のタイムチャートを示すものであり、1バッチからXバッチまでのバッチ処理と、1からYまでのY回の連続検索を行い、Y回目の検索結果をHOSTに出力する場合のタイムチャートが示されている。
 以下の説明は、これまで説明の汎用DIMMメモリを利用し、バッチ回数Xを250,000バッチとする場合の全文検索処理の概要を示す。
8Gバイトを250,000バッチで処理する場合、1バッチは32Kバイトとなる。
 先ずはデータ転送能力について考察する。
 8Gバイト全部のデータを32Gバイト/秒で転送する場合には、250m秒である。
 バッチ処理で分割してデータを転送する場合でも、データ転送時間の合計は250m秒である。
 仮に1秒以下をリアルタイム検索時間と定義すると、残り最大750m秒を検索演算に利用することが出来る。
 逆に1バッチ毎のデータ転送時間と検索演算時間の関係を説明する。
 先に示した全文検索回路103の並列度Nが32Kで、1バッチのデータ量が32Kバイトの場合、8Gバイトのバッチ数Xは250,000となり、1秒以内で全文検索を行う場合、1バッチの処理時間は最大4μ秒となる。
32Gバイト/秒のデータ転送能力の場合、1バッチ32Kバイトのデータ転送時間は1μ秒となる。
 従って、残り3μ秒をこの全文検索プロセッサ101の検索時間に利用することが可能になる。
 先に述べたように、本全文検索プロセッサ101は、数十ステップ(クロック)で1回の検出処理を実行することが可能である。
詳細は図18で説明するが、一般的な全文検索は3から4文字の2から3種類がキーワードであるので50ステップあれば十分であり、システムクロック131を10n秒として1バッチ50ステップの処理を250,000(250K)回バッチ処理した場合(8Gバイト)の演算処理時間は125m秒となる。
250m秒(データ転送時間)+125m秒(演算処理時間)、双方合わせて375m秒はインデックスを使った全文検索に遜色のない演算性能である。
 現在主流になっているDIMMメモリをそのまま活用出来るのも重要な特徴である。
 N-gram方式の精度の良い検索能力と検索スピード性能を活かせば、曖昧検索や同義語検索が可能になる。
 HOSTの処理はバッチ毎に出力される、検索結果あり/なしの結果を受け取るのみであるので、検索の負担が少なく、システム全体としての低消費電力化が可能になる。
 もちろん、図13で示すように検索処理毎に検索のバイト位置を含め検索結果をHOSTに送ることも可能である。
 (外部メモリ方式応用例1(増設))
 以上の説明は8GバイトDDR4のDIMMメモリ1枚に対するものであった。
 もし容量を増やす場合には、必要数(必要容量)のDIMMと同数の本全文検索プロセッサ101を利用し、HOSTからの制御を並列にすることにより容易に増設が可能になる。
 この場合、本全文検索プロセッサ101は独立して検索処理を行うので、メモリ容量が増えても全文検索時間は同じである。
 (外部メモリ方式応用例2(不揮発性メモリ))
 DRAMは揮発性のメモリであるので、電源を切ると記憶されたデータは消去されてしまい再度記憶し直す必要がある。
 不揮発性のメモリ(ストレージ)を使用する場合について説明をする。
 近年のSSD(Solid State Drive)はデータ転送能力が改善されて、7Gバイト/秒のように高速なデータ転送能力を持つものも存在する。
 然しながら先ほど説明の32Gバイト/秒の転送能力を持つDRAM方式に比較すると、数分の1の転送能力しか持ち合わせしていない。
 このような場合、複数のSSDをRAID(Redundant Arrays of Inexpensive Disks)-0接続して利用することにより、データ転送能力がDRAMと同様な性能を持ち、不揮発性のシステムを実現することが出来るようになる。
SSDの記憶容量は1モジュール1Tバイトなど、先に示した8GバイトのDRAM方式のメモリより100倍以上記憶容量が大きい。
 従って、1Tバイトのメモリ空間全てを文字テキストデータ132として利用する場合、バッチ処理回数が100倍以上になり検索時間が大幅に遅くなる。
 1Tバイトのメモリ空間には文字テキストデータ132だけでなく、音声、ビデオ、ログファイル、位置情報、センサ情報等のさまざまなデータも利用すると良い。
 DRAMは不揮発性データであることから、文字テキストデータ132は必ずどこかのストレージに保管しなくてはならない。
 本方式は、SSDに保管した文字テキストデータ132をそのままの状態で、しかも電源立ち上げ直後からリアルタイムで全文検索に利用出来るのが大きな特徴である。
 以上説明の外部メモリまたはストレージとのバッチ方式の全文検索プロセッサ101は、ASICのみならずFPGAで実現出来る。
 FPGAは機能の追加や削除が柔軟に出来るので、システムに最適な全文検索プロセッサ101を実現することが可能になる。
 (外部メモリ方式全文検索プロセッサの演算能力について)
 図18は、これまで説明の外部メモリ方式全文検索プロセッサの演算能力を取り纏めしたものである。
 本願発明の性能は、バッチデータの転送能力、全文検索回路103の並列度N、並びに演算機能のシステムクロック131速度、そしてバッチ回数Xで定まる。
 一例として「情報処理」と「全文検索」の和文4文字で2組の全文検索の場合を想定する。
 和文UTF-8文字コードの場合、1文字ほぼ3バイト文字コードになるので、1組は12バイト構成になる。
 従って4文字1組の文字列の検出は、12×2-1=23ステップ、4文字2組の場合、結果出力やレジスタのクリアなどの処理を含め約50ステップ程度となる。
 「full text search process」など合計24文字、24バイト構成の英文のキーワード検索は、文字の検出が24ステップ、文字の並び122(文字列)の検出が23ステップとなり、結果出力やレジスタのクリアなどの処理を含め約50ステップ程度である。
 一般的な検索では以上のような検索条件となるので、50ステップ(クロック)を標準的な全文検索のステップ数(クロック数)として、これまで説明の全文検索プロセッサ101の代表的な性能を取り纏めする。
 図表の上段に示す外部メモリ方式-A(低速)は、図15で説明の全文検索プロセッサ101によるもので、本例ではこれまでの説明の通り1バッチの処理数が32Kバイト(並列度は32K)で外部メモリとのデータ転送が32Gバイト/秒(低速)、演算時間はシステムクロック131が10n秒(低速)で50ステップとした場合のバッチ毎の演算時間を示したものである。
 図表には以上の条件をもとにしてバッチ処理数、その検索データ量、そしてこのデータを転送するための転送時間、検索演算時間、合計処理時間=データ転送時間+検索演算時間、以上が示されている。
 本方式は後述する内部メモリ方式に比較すると処理時間は遅いが、市場に出回っているDRAMやSSD並びにFPGAで直ぐにでも利用出来るのが特徴である。
 図表の「バッチ処理数250Kで、合計処理時間が375m秒」の部分が先に図17で示した演算能力である。
 図表の下段に示す外部メモリ方式-B(高速)は、ASICを開発しデータ転送能力の高いHBM(High Band Memory)を使用した場合のバッチ毎の演算時間を取り纏めしたものである。
 本例ではこれまでの説明の通り1バッチの処理数が32Kバイト(並列度は32K)で、外部メモリとのデータ転送が320Gバイト/秒(高速)、演算時間はシステムクロック131が5n秒(高速)で50ステップとした場合のバッチ毎の演算時間を示したものである。
 外部メモリ方式-A(低速)に比較して4.3倍高速である。
 (内部メモリ方式全文検索プロセッサ)
 図19は、内部メモリ方式全文検索プロセッサの概要を説明するものである。
これまで説明の外部メモリ方式の場合はメモリもしくはストレージと全文検索プロセッサ101が分離され、バスボトルネックの影響でデータ転送時間に時間がかかっていた。
 図は全文検索プロセッサ101のASIC化を行い、データの幅が文字記憶素子102と同数のNで、アドレスが1からMまでの内部メモリ120もしくは内部ストレージ121を本全文検索プロセッサ101の内部に組み込んだものである。
 図では、アドレス1からMまで、データ幅が文字記憶素子102のデータ数と同数のデータ幅を持った内部メモリ120もしくは内部ストレージ121が本全文検索プロセッサ101内部に組み込みされており、任意のアドレスを選択することにより行方向のデータを全並列に文字記憶素子102に代入出来る構成としている。
 以上の構成にすることにより、外部から転送していた文字テキストデータ132のデータ転送に替わり、アドレスが1からMの任意のアドレスを選択し文字記憶素子102に代入処理(アクセス)することでデータ転送が行われることになるので、これまで説明のバッチ処理より高速な全文検索処理を実現することが出来る。
 内部メモリ120はこれまで説明のDRAMやSRAM、内部ストレージ121はNAND型やNOR型のSSDのメモリのみならず、スピントロニクス型メモリや抵抗変化型メモリが対象になる。
 言うまでもなくアクセス時間が速い方が有利である。
 不揮発性FLUSH メモリの場合、NAND型に比較してNOR型のSSDは速いアクセス時間が期待出来る。
 また半導体製造技術では、SoC(System-on-a-Chip)、SiP(System in Package)、さらにはWoW(Wafer on Wafer)や3D実装など最新の半導体技術を駆使した全文検索プロセッサ101が期待出来る。
 FPGAの内部に、これらの全文検索が可能な内部メモリ120や内部ストレージ121を組み込むことも可能である。
 バッチ処理や全文検索演算内容は、これまで説明の外部メモリ方式の全文検索プロセッサ101と同様である。
本方式のシステムの性能について以下に説明する。
 (内部メモリ方式全文検索プロセッサの演算能力)
 図20は、これまで説明の内部メモリ方式全文検索プロセッサの演算能力を取り纏めしたものである。
 図表の上段に示す内部メモリ方式-A(低速)は、図19で説明の全文検索プロセッサ101によるもので、これまでと同様1バッチの処理数が32Kバイト(並列度は32K)で、ストレージ型のメモリを想定し内部メモリ120のデータ転送時間が100n秒(低速)で、演算時間はシステムクロック131が2n秒(低速)で50ステップとした場合のバッチ毎の演算時間を示したものである。
 図表には以上の条件をもとにしてバッチ処理数、その検索データ量、そしてこのデータを転送するための転送時間、検索演算時間、合計処理時間=データ転送時間+検索演算時間、以上が示されている。
 本方式は外部メモリ方式-A(低速)に比較すると処理時間が7.5倍高速である。
 外部メモリ方式-B(高速)に比較すると処理時間が1.75倍程高速である。
図表の下段に示す内部メモリ方式-B(高速)は、これまでと同様1バッチの処理数が32Kバイト(並列度は32K)で、DRAMメモリ等、高速な内部メモリ120を想定したものでデータ転送時間が10n秒(高速)で、演算時間はシステムクロック131が1n秒(高速)で50ステップとした場合のバッチ毎の演算時間を示したものである。
 本方式は内部メモリ方式-A(低速)に比較すると処理時間が3.3倍高速である。
 本方式は外部メモリ方式-A(低速)に比較すると処理時間が25倍高速である。
 外部メモリ方式-B(高速)に比較すると処理時間が5.8倍高速である。
 内部メモリ方式-A(低速)、内部メモリ方式-B(高速)、双方の検索データ量は全文検索プロセッサ101内部に集積するメモリの容量になるので、メモリの搭載技術が今後の研究テーマとなる。
 もし1秒以内の検索時間を期待するのであれば、外部メモリ方式-A(低速)の場合には500Kバッチ、16Gバイトのデータ量の全文検索が可能になる。
外部メモリ方式-B(高速)の場合には2Mバッチ、64Gバイトのデータ量の全文検索が可能になる。
 内部メモリ方式-A(低速)の場合には4Mバッチ、128Gバイトのデータ量の全文検索が可能になる。
 内部メモリ方式-B(高速)の場合には16Mバッチ、512Gバイトのデータ量の全文検索が可能になる。
 図表に示した性能は1つの全文検索プロセッサ101の性能であるので、全文検索プロセッサ101を複数並列接続して利用することにより、同一時間でデータ検索量を増やすことが可能になる。
 また図表に示した各諸元は現在の半導体技術レベルの推定値によるものであるので、今後の半導体技術の向上により高性能な全文検索プロセッサ101が期待出来る。
 内部メモリ方式の全文検索プロセッサ101を開発するにあたっては、高速・小容量/中速・中容量/低速・大容量など幾つかのタイプに分類し、発熱やチップサイズや経済性を考慮して最適な方式を選択すると良い。
 チップが開発されれば、利用者はどのような性能や機能を必要とするかにより最適なチップを選択すれば良い。
 本方式のメリットの一つは、以上のように全文検索時間を事前に予測出来ることである。
 前述した通り、全文検索プロセッサ101に利用されるメモリは、これまで説明のDRAMやNAND型やNOR型のストレージに限定されるものではなく、今後期待される新しいメモリを利用することも自由である。
 前述した通り、ASICのみならずFPGAに組み込むことも可能である。
 以上の図18、20に示す演算能力は、実現性を保証するものではない。
また理論値であるので、一定のオーバーヘッドを加味する必要がある。
 (全文検索プロセッサを利用する場合のシステム構成例)
 図21は、全文検索プロセッサを利用する場合のシステム構成例を説明するものである。
 図15で示した外部メモリ方式全文検索プロセッサ101並びに、図19で示した内部メモリ方式全文検索プロセッサ101の利用方法は様々な方式があるが、代表的な2例を紹介する。
 システム構成例-Aは、図15で示した外部メモリ方式全文検索プロセッサ101のシステム構成例で、システムボード124の外部に全文検索プロセッサ101を接続し利用する場合の例である。
 システムボード124から、DRAMメモリのデータもしくはストレージのデータをPCIeやUSBなどの標準インターフェース116に接続して利用する場合の例である。
 システムボード124には、DRAMメモリが搭載されると共にストレージが外部接続されている。
 この場合、全文検索プロセッサ101には標準インターフェース116を通じて、DRAMメモリもしくはストレージからの文字テキストデータ132の転送と、HOSTからの検索キーワード125、並びにHOSTへの演算結果出力信号が授受される。
 USBの場合の現時点での最大伝送帯域は最大5Gbps(USB3.0)である。
 一方、PCIeの場合、数十Gバイト/秒から数百Gバイト/秒まで様々な広帯域の伝送能力を持っているので、システムの性能に合わせたPCIeの規格を利用すると良い。
 システム構成例-Bは、図19で示した内部メモリ方式全文検索プロセッサ101のシステム構成例で、システムボード124の内部にメモリやストレージを内蔵した全文検索プロセッサ101を組み込み利用する場合の例である。
 この例では、システムボード124内部に全文検索プロセッサ用インターフェース119を使用して全文検索を行う場合の例である。
 これまでの説明は、HOSTが検索キーワード125を全文検索プロセッサ101に送り、コマンド生成回路127が図5から12に示す各ステップのコマンド(コントロール)信号を全文検索回路103に送り、全文検索回路103は全文検索演算を行い、その演算結果出力をHOSTが受信することとして説明をしている。
 HOSTは、全文検索プロセッサ101から送られてくるバッチ毎の検索結果を受信し、総合結果出力回路108の結果出力が「有り」のバッチが分かれば、当該バッチデータのどの部分に検索対象の文字列があるかHOSTで確認することが出来る。
 システムを構築するにあたっては、求められる演算性能や機能並びに全文検索プロセッサ101の並列数に応じて適切なHOSTやアプリケーションソフトウェアを準備することは言うまでもない。
 以下に全文検索プロセッサ101のシステム応用実施形態を示す。
 (WEB検索システム-1)
 WEB検索サイトの全文検索は極めて過酷である。
 WEB検索サイトの場合、対象となる文字テキストデータ132のデータ容量が膨大であること、さらに極めて多くの人々が時間に関係なく利用するからである。
 仮に日本人5千万人が平均1日10回日本語の検索サイトの検索を行う場合、500M回(50M人×10回)/86,400秒=1秒間に約5,787回の検索が行われることになる。
 逆算すれば一回当たりの処理時間は1/5,787=173μ秒になる。
 従って、少なくともこの時間の半分以下の時間で検索処理を完了出来るようにする必要がある。
 以上の場合、先に示した内部メモリ方式-Bの1Kバッチ(32Mバイト)の60μ秒がこれに相当する。このタイプのプロセッサを利用することでも良いが、1Mバッチ(32Gバイト)の60m秒の全文検索プロセッサ101の1,000個に同一のデータを書き込み、分散処理することも可能である。
 半導体チップへの実装やプリント基板にその半導体チップを実装する場合、小さなチップを沢山利用するより大きなチップを利用する方が有利になる。
以上のようなマルチアクセスを考慮し、適切な性能の本全文検索プロセッサ101を利用すると良い。
 一般的なWEB検索サイトは、現在システムコスト削減の観点からHDD方式のストレージを利用したシステムとしているが、今後SSDタイプのストレージのコストが低減された場合には徐々にSSD方式のストレージに置き換わるものと思われる。
 その場合には、本方式の全文検索エンジンを利用するとインデックスの様々な制約から解放されるので、システムの運用コストを削減しリアルタイム性の高いWEB検索システムとすることが期待出来る。
 (WEB検索システム-2)
 以上説明のようなWEB検索サイトを本方式に置き換えするには、導入コストや運用コストなど経済性の検討など相当の時間がかかると思われる。
 比較的容易に実現可能で、この技術の特徴を上手く利用することが出来る方法を紹介する。
 大手WEB検索サイトの情報によると、日本語N-gram方式の異なり数(インデックスの最大数)は以下のようにNET情報で公開されている。
https://japan.googleblog.com/2007/11/n-gram.html
総単語数: 255,198,240,937 (2,550億)
総文数:20,036,793,177 (200億)
異なり 1-gram 数:2,565,424
異なり 2-gram 数:80,513,289
異なり 3-gram 数:394,482,216
異なり 4-gram 数:707,787,333
異なり 5-gram 数:776,378,943
異なり 6-gram 数:688,782,933
異なり 7-gram 数:570,204,252
異なりはインデックスの最大数に相当する。
 異なり1-gram 数は1文字を示すものであり、通常使用されている漢字や英文字のみならず全世界で利用される文字や記号さらには環境文字などが含まれ、256万種類もの文字が出現していることになる。
 出現頻度の少ないインデックスであっても無視すると検索洩れが発生する。
 総文数200億の中に1回しか利用されていない特殊な文字や記号でもインデックスを持つ必要があるので、N-gram方式でインデックスを作ると全体で32億もの膨大なインデックスが必要になる。
 考慮すべきは、以上のように32億ものインデックスのほとんどがめったに利用されないインデックスであっても、無視すると検索洩れが発生することである。
 従って、形態素方式インデックスなど別な方式のインデックスを併用するなど複雑なインデックス構成とせざるを得ない。
 永年のこのインデックスの難題を解決する方法を紹介する。
 一例として薔薇(ばら)、饂飩(うどん)、侃々諤々(かんかんがくがく)の「薔」、「薇」、「饂」、「飩」、「侃」、「諤」の文字や特殊記号などめったに使われない文字が1つでも含まれている場合に本全文検索プロセッサ101を使用し、含まれていない場合にはこれまでの通りインデックス方式による全文検索とすることにより、システムを大幅に効率化することが出来る。
めったに使われない文字を含んだ全文検索の頻度は極端に少なくなるので、全文検索プロセッサ101はその検索頻度に適した検索速度のものを選べば良い。
 めったに使われない文字を含んだインデックスを不要とすれば、インデックスの数は極端に少なくなる。
 また、本全文検索プロセッサ101には、めったに使われない文字を含んだWEBサイトのテキストデータのみを記憶すれば良いので、本全文検索プロセッサ101の数も削減することが出来る。
 例えばインデックスを使用頻度の高い上位10万と決めて、これらはインデックスを使用した全文検索とし、これ以外の使用頻度の少ないインデックスに関わる検索を本全文検索プロセッサ101に任せる方式とする、など様々な応用が可能である。
 これまで最大32億以上も必要であったインデックスの数を10万に削減することが出来てインデックスの追加が不要になれば、WEB検索システムはこれまでの複雑性が一変する。
 以上のように、インデックス方式の利点と本全文検索方式の利点を組み合わせすることにより、検索性能を落とすことなくインデックスの数を極限まで削減し、WEB検索システムをスリム化することが可能になる。
 以上説明のインデックスの数の問題は、WEB検索システムに限らず全文検索共通の課題である。
 先ほどの例では、特殊記号やめったに使われない文字が1つでも含まれている場合に本全文検索プロセッサ101を利用するシステム構成を示したが、その反対に全文検索を行わない場合や、特殊記号やめったに使われない文字以外の特定の文字に対応させることも可能である。
 システムの特徴を分析して最適な利用方法を考えると良い。
 (ローカルWEB検索システム)
 論文や文献等に含まれる文字を検索する場合、通常のWEB検索サイトの検索手法では物足りない場合がある。
 このような場合、WEBから必要な情報を集め、本願発明の全文検索プロセッサ101を利用すると、grep(global regular expression print)などの高度な方法での全文検索が可能になる。
 (文字や用語のミス検出、誤訳検出)
 コーパス(corpus)は自然言語研究用に利用されるデータベースである。
 コーパスはインデックスを用いたデータベースであるので、辞書の編纂同様に定期的に改訂がなされるため、「コロナ禍」のような最新の言葉は含まれていない場合が多い。
 本願発明を用いることにより、コーパスを常に最新の用語や情報が含まれるテキストデータとすることが出来る。
 作成中の文章の一部を内部や外部のメモリに蓄積された大量で最新情報が盛り込まれたテキストデータと照合することにより、ヒットするテキストがなければ前例なし(ミス)と判定しアラートを出力するなどの利用の仕方もある。
 (大規模インフラ系システム 大規模社内検索システム)
 本願発明は、特許検索や大企業の社内検索システムなど大規模インフラ系や大規模組織の全文検索システムに最適であることは言うまでもない。
 以上説明のWEB検索サイトの内容を参考にしてシステムを構築すると良い。
 (未開拓実施分野)
 本願発明はインデックスを用いた全文検索で問題を抱えたシステムや、まだシステム化されていない分野に光明を照らすものと期待出来る。
新しい情報の中から価値を見つけだすようなストリーム型テキストデータの全文検索への応用が期待出来る。
 ストリームデータとして流れてくるテキストデータの中に使用される文字の頻度は、AI分析に欠かせないものである。
 現在の方式では対応困難な、自然言語処理や統計システム等のリアルタイム処理に焦点を当てて検討すると良い。
 例えば音声認識の認識候補や翻訳の際の翻訳候補を全文検索プロセッサ101に照合することにより、ヒットするテキストがなければ前例なし(ミス)と判定しアラートを出力することや、ヒットするテキストが最大のものを選択するなど、音声認識精度を高めるなどの知的情報処理(AI分野)に利用出来る。
 (個人利用)
 PCを利用する多くの人々は頻繁にメールの検索、ワードやエクセル、パワーポイントなどのテキストデータなど様々な全文検索を日常茶飯事のように利用している。
 然しながらこれらの全文検索はPCに標準的に添付されたソフトウェアによるものであり、高度な検索条件を設定することは出来ない。
 本願発明による全文検索は、全く専門性が不要になり、様々な機能を備えたソフトウェアの標準化が進むことが期待される。
 これらのソフトウェアを利用すれば、全文検索の専門家やソフトウェアの専門家でなくとも個人個人思い思いの全文検索を利用することが可能になる。
 (ゲノム解析)
 これまでの説明では文字テキストデータ132の検索であったが、ゲノムの解析にも本全文検索プロセッサ101を利用することが出来る。
 人のゲノムは約60億塩基対のDNAを核内に持っている。
 従って、8Gバイトの容量があれば人ゲノム全てを記憶し、一括解析をすることが可能になる。
 ゲノムの「ATGC」の塩基配列ゲノム解析では、ワイルドカード機能やギャップ機能が必要不可欠であるので本方式は最適である。
 現在のゲノム解析の殆どはインデックスを利用し高速化を図っており、インデックスの作り方により検索洩れや検索結果のばらつきが生じ問題になっている。
 またインデックスを作成する時間は待ち時間となる。
 本全文検索プロセッサ101を利用すると、インデックス無し、つまりインデックス作成の待ち時間がなく、検索洩れや検索結果のばらつきがなく、しかも高速なゲノム解析が可能になる。
 (全文検索の標準化)
 本願発明による全文検索は、UTF-8など世界標準の文字コードを利用することにより、全世界の文字に共通に利用することが出来る。
 SQLやNonSQLのgrep等の正規化表現など文字パターンマッチングのルールを導入することで、全世界の全文検索技術を標準化することが可能になる。
 標準化により本全文検索プロセッサ101のASICチップは安価に供給可能になり、大きな需要が期待される。
 (本願発明のメリット)
 本願発明の全文検索プロセッサ101並びにこれを利用したシステムや商品のメリットを列記する。
転置インデックス不要
・リアルタイム処理、ストリーム処理が可能になる
・インデックスのチューニングが不要になる
・インデックスのメモリやストレージが不要になる
・インデックスの更新処理が不要になる
・システムの開発が容易になる
・システムの増設が容易になる
精度・速度機能
・N-gram と同様な検索精度と検索速度を持つ
・ワイルドカード・ギャップ・中間一致・後方一致可能
(SQLのLike文やgrep(正規化表現)のような文字検索が可能)
汎用性
・ASCII 、JIS 、UTFなどの文字コードに対応可能である
・ゲノム解析などにも利用出来る
・UTF-8文字コードで全文検索の世界標準化が出来る
・SQLやNonSQLのデータベースに利用可能になる
実用性
・FPGAで実用可能である
・インデックスを利用した全文検索システムに組み込み可能になる
・最新用語入りコーパスを創ることが出来る
情報処理への貢献
・全文検索技術の専門性が低減し専門家が不要になる
・音声認識や翻訳など自然言語処理技術の進化を加速する
・全文検索技術の世界標準化が出来る
以上の多くは全文検索や自然言語処理技術の顕在的もしくは潜在的ニーズである。
 (本願発明の着眼点)
 最後に本願発明の着眼点を示す。
 文字テキストデータ132の1バイト毎に全文検索回路103を利用することが理想であるが、この方式では全文検索半導体チップや全文検索システムのコストパフォーマンスが極めて悪くなる。
 本願発明は全文検索回路103に文字テキストデータ132を時分割で多数与えることにより、インデックス不要の全文検索の性能とシステムコストのバランスをとることを意図したものである。
 なお、本例では、コマンド生成回路127の全ての回路(機能)を全文検索プロセッサ101の内部に備えることで説明を行っているが、コマンド生成回路127の一部の回路(機能)や全ての回路(機能)をHOST側に備え、全文検索プロセッサ101はHOST側から与えられたステップ毎の演算条件に基づき演算を実行し、ステップ毎にアクノリッジ(ACK)を都度HOST側に通知する構成でも構わない。
 また、コマンド生成回路127を全文検索プロセッサ101の内部に置く場合には、CPU並びにプログラムを格納するメモリを全文検索プロセッサ101内部に組み込み、ソフト処理で全文検索演算条件114を生成し全文検索回路103をコントロールすることも可能である。
 (基本回路構成(第2の例))
 次に、本願発明に係る全文検索プロセッサの第2の例について説明する。
 この第2の例は、上記第1の例と同様に、検索対象の文字テキストデータを1バイト(8ビット)毎に記憶素子に記憶させ、与えられた検索キーワードの文字列の「文字」と「文字の並び」の一致不一致を1バイト毎に並列に比較し、与えられた検索キーワード125の文字列の先頭もしくは末尾に該当する文字テキストデータの位置(番地)を全文検索結果として返すものである。
 ただし、上記第1の例では、前記文字検出回路105により文字検出が終了した後に、前記文字列検出回路106によるシフト動作を行っていたのに対し、この第2の例では、文字検出回路105による文字検出と、文字列検出回路106によるシフト動作を「交互」に実行するものである。
 すなわち、第1の例では、上記文字検出回路105に文字テキストデータ132の中から検索キーワード125に含まれる全文字と一致する文字若しくは文字の部分(1バイトのコード)を一致フラグ(FG)として最初に検出させた後、文字列検出回路106に検索キーワード125の文字列のバイト数n-1回(前記シフトクロック数に対応)だけこのフラグの位置を順番にシフトさせることで検索キーワード125のバイト数分連続するフラグの位置、すなわち文字の並び122(文字列)を検出していた。
 これに対して、この第2の例では、上記文字検出回路105により検索キーワード125の文字と一致する文字若しくは文字の部分(1バイトのコード)が検出(一致フラグ(FG))されるたびにこのフラグの位置を1つシフトさせてFG勝ち抜き回路113で当該フラグが直前に検出されたフラグの位置と連続するかを1文字コード毎に検出するものである。このような方法であっても文字の並び122(文字列)を検出することが出来る。以下、このような第2の方法による処理を「交互処理」という。
 図22はこの第2の例を実行するための全文検索プロセッサの基本構成を示すものである。この第2の例においては、第2の例コマンド生成回路127(図1)に上記交互処理を実現するためのステップ条件133(本例ではステップ1の時は論理「0」、ステップ1以外の時は論理「1」となる信号(後述))を生成するステップ条件生成回路133が追加されている。
 また、図23は第1の例の図3に対応するものであり、図3の文字列検出回路106に、前記FGシフト回路112に接続されたステップ条件別論理積回路134が設けられている。
 このステップ条件生成回路133とステップ条件別論理積回路134で交互処理を可能にするものである。
 なお、ステップ条件別論理積回路134は、この構成に限定されるものではないが、図23に示すように、2入力論理積(AND)回路、3入力論理積(AND)回路、及び論理否定(NOT)回路から構成されている。
 以下、これらの回路により交互処理について詳細に説明する。
 (第2の例の交互処理動作:コマンド生成動作)
 図24は図4に対応するもので、この第2の例におけるコマンド生成回路127により生成される全文検索演算条件コマンドの具体例(1)~(4)を示すものである。
 この第2の例では、第1の例(図4)とは異なり、前記コマンド生成回路127は、文字と文字列の検出演算が交互に実施されるようにステップ1~11のコマンドを構成する。この交互処理を可能とするため、この第2の例が第1の例と異なるのは、1)前記ステップ条件生成回路133により与えられる第4のコマンド127であるステップ条件133(本例ではステップ1の時は論理「0」、ステップ1以外の時は論理「1」となる信号)が追加されている点、2)フラグのシフト方向が左ではなく右である点、3)与えられる勝ち抜き演算条件が全て「直接入力」である点、である。
 (第2の例における英文の全文検索動作について)
 次に、この第2の例における全文検索のデータ状態遷移を、図25及び図26について説明する。
 なお、検索対象は、前記第1の例(図5、図6)と同じであり、「full text search」の文字テキストデータ132の中から、「search」の検索文字を検索するものである。そして、処理のステップ数も、上記第1の例と同じく、11ステップである。
 そして、各ステップ(1~11)の処理は、コマンド生成回路127から与えられるコマンド(比較データ123、シフトクロック130、ステップ条件133、勝ち抜き演算条件129)により全文検索回路103が実行するものである。
 まず、ステップ1では、1バイトで構成される「s」の文字を検出するもので、前記第1の例のステップ1と同じく、相対11番地の文字検出回路105が「s」を検出する。この検出結果はフラグ(FG)としてFGシフト回路112にプリセットされる。この図25の例では、「full text search」中「s」は番地11のみであるから、相対11番地のFGシフト回路112のみが論理「1」にセットされ、他の番地のFGシフト回路112の論理は「0」となる。
 そして、さらにこのFG値(演算結果)は、ステップ条件別論理積回路134で処理されてFG勝ち抜き回路113に入力される。ステップ1の場合には、前記ステップ条件生成回路133により与えられる第4のコマンド127、ステップ条件133(本例ではステップ1の時は論理「0」、ステップ1以外の時は論理「1」となる信号)は「0」であるから、ステップ条件別論理積回路134の前記2入力論理積(AND)回路が有効になり、この演算結果が、前記論理和(OR)回路を通じて、FG勝ち抜き回路113に入力される。
 そして、図24(1)に示すように、ステップ1におけるFG勝ち抜き回路113への演算条件が「直接入力」に指定されているので、相対11番地のFG勝ち抜き回路113(のレジスタ)は論理「1」にセットされ、それ以外の番地は論理「0」にセットされる(図25のステップ1参照)。
 つまり、ステップ1(初回ステップ)では、文字検出回路105の演算結果がそのままFG勝ち抜き回路113にセットされる構成になっている。
 ステップ2では、シフトクロック130信号により、FGシフト回路112にセットされた全てのFGが右方向に1番地だけ相対的にシフトされ、右隣りのFGシフト回路にそのFGがセットされる(図25のステップ2)。この時、FG勝ち抜き回路113の論理状態は変化しない。
 これにより、ステップ1では文字検出、ステップ2では文字列検出のためのフラッグのシフトが実行される。以下、このように文字検出とシフトが交互に実行される。
 次に、ステップ3では、2文字目である「e」の文字の検出が実行される。この例では、図25に示すように、相対7番地及び12番地に「e」があるので、これらが検出される。
 7番地及び12番地における検出結果は、FGシフト回路112に入力される。この際、12番地のFGシフト回路112には上記ステップ2にて11番地からシフトされたフラグ(論理「1」)が既にセットされているので、以下の演算が実行される。
 すなわち、12番地は、文字検出回路105から入力された論理値とFGシフト回路112にプリセットされた論理値の双方「1」であり、前記ステップ条件生成回路133により与えられる第4のコマンド127(ステップ1の時は論理「0」、ステップ1以外の時は論理「1」となる信号)が「1」であるので、前記ステップ条件別論理積回路134の3入力論理積(AND)回路が有効になり、その演算結果(論理「1」)が論理和(OR)回路を通じて、FG勝ち抜き回路113に入力される。そして、図24の(1)に示すように、FG勝ち抜き回路113には「直接入力」のコマンドが与えられるので、本例の場合FG勝ち抜き回路113にセットされる相対12番地の論理値「1」となる(図25のステップ3の12番地の値参照)。
 一方、7番地については、FGシフト回路112にプリセットされた論理値は「0」であるので、上記と同様の演算の結果、FG勝ち抜き回路113にセットされる論理値は「0」となり、ノイズとして処理される。
 また、上記11番地と7番地以外の他の番地については、文字検出回路105から入力された論理値とFGシフト回路112にプリセットされた論理値の双方「0」であるので、上記と同様の演算の結果、FG勝ち抜き回路113にセットされる論理値は「0」となる。
 すなわち、ステップ2まで論理「1」がセットされた相対11番地のFG勝ち抜き回路113は、文字検出回路105とFGシフト回路112の双方の論理積(AND)条件が成立しないので「0」にクリアされる。
 つまりステップ1(初回ステップ)以降のステップ、本例の場合ステップ3において、文字検出回路105の演算結果と、FGシフト回路112の論理積(AND)条件が成立した番地のFG勝ち抜き回路113に勝ち残りFGが更新される構成になっていることが従来方式との大きな違いである。
 ステップ4からステップ9については、上記と同様の演算が繰り返されるので、説明は省略する。
 ステップ10は、ステップ9で示されるFGシフト回路112のFGをさらに右に1バイト分シフト(合計右に5シフト)した状態が示されている。このステップ10では、図26に示すようにFGシフト回路112の11番地と16番地の論理値が「1」にセットされ、FG勝ち抜き回路113は相対15番地がこの時点での勝ち抜き番地となっている。
 ステップ11では、相対番地16番地の文字検出回路105並びにFGシフト回路112の双方のFGが存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対16番地は「1」になり、相対15番地は「0」に書き換えられる。
 従って相対16番地が、最終勝ち残り番地となる。
 以上の処理で相対11番地から相対16番地までの文字の並び122(文字列)は、与えられた検索キーワード125条件の文字の並び122(文字列)と同じであることを検出したもので、与えられた検索キーワード125の末尾の文字コードにマッチする番地を検出したことになる。
 この第2の例では、第1の例と異なり、検出した文字コード、1文字コード毎に配列の妥当性を判定することが出来る。一方で実行する演算ステップ数は、与えられた比較データ123の文字列のバイト数n×2-1回、本例の場合11ステップで、第1の例と同じである。すなわち、第1の例と比較すると、同数のステップ数でより精度の高い演算が行えることになる。すなわち、この第2の例は、新たに文字を検出する度に勝ち残りFGを更新する方法であるので検索された全文字列の配列の妥当性を保証出来き、検索精度が高く検索速度が速いことが特徴である。
 なお、ステップ12で以上の演算結果が結果出力回路107から出力されるが、出力されるのは第1の例と異なり先頭番地ではなく最終番地である。
 ただし、与えられた検索キーワード125の文字列の検出においては、必ずしも「search」のように検索キーワード125の文字列の前方から順に検出する必要はなく、「hcraes」のように後方からの検出でも構わない。その場合にはシフトレジスタのシフト動作を左シフトし、先頭番地「s」を検出すれば良い。
 (第2の例における和文の標準的な全文検索動作)
 図27、28は、第1の例の図7、8に対応する第2の例による和文の標準的な全文検索の各機能のデータ状態遷移を説明するものである。
 この処理は、図24の(2)に示したコマンド127(比較データ123、ステップ条件133、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものである。
 上記コマンドに基づいた詳細な処理については説明を省略するが、和文の場合一つの文字が複数バイト(本例では3バイト)になるが動作内容は英文と同様である。
 ステップ1からステップ5は、記憶された「全文検索は」の文字テキストデータ132の中から「検:1/3」、「検:2/3」、「検:3/3」の文字コードを検出するもので、ステップ6では「索:1/3」の文字コードを検出するための前処理としてのシフト動作を示している。
 最後のステップ11は、比較条件「索:3/3」を与えることにより、前述同様文字検出回路105と、FGシフト回路112の相対12番地の双方のFGは存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対11番地は「1」となり、相対11番地は最終の勝ち抜きアドレスとなっている。
 以上の処理で相対7番地から相対12番地までの文字の並び122(文字列)が、与えられた検索キーワード125の文字の並び122(文字列)にマッチすることが検出され、与えられた検索キーワード125の末尾の文字コードにマッチする全文検索回路の番地126が検索結果として出力される。
 (第2の例におけるワイルドカードを適応した場合の全文検索動作)
 図29、30は第1の例の図9,10に対応する第2の例による英文のワイルドカードを適応した全文検索のデータ状態遷移を説明するものである。
 この処理は、図24の(3)に示したコマンド127(比較データ123、ステップ条件133、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものである。
 上記コマンドに基づいた詳細な処理については説明を省略するが、本例では「search」文字列の3文字目、4文字目にワイルドカード「」を含むものであるが、動作内容は、基本的に前の2つの例と同様である。
 すなわち、文字検出のステップ1からステップ4はこれまでの説明通りである。
 ステップ5および7がワイルドカードの場合、FG勝ち抜き回路113には図24で示すようにMask(無視)演算条件を与え、何の文字であっても文字検出回路105が一致したと同様の処理を与えることにより、FG勝ち抜き回路113は、所定の勝ち抜き演算を実行することになる。
 以降の処理はこれまでの説明と同じであるので説明を省略するが、本例の場合も与えられた検索キーワード125の末尾の文字コードに該当する番地を検出したことになる。
 本例は文字列の中間にワイルドカードを指定した場合を示したが、文字列の中間のみならず、先頭や末尾など自由な位置にワイルドカードを利用することが可能である。
 本方式は以上のように外部から与えられる検索キーワード125の文字列にワイルドカードが含まれる場合、ワイルドカードの対象となる処理を、文字に無関係に勝ち抜き条件が成立するように構成することより、ワイルドカード処理を可能にしたものである。
 (文字のGapを適応した全文検索)
 図31、32は、第1の例の図11、12に対応する第2の例による英文のギャップを適応した全文検索のデータ状態遷移を説明するものである。
 この処理は、図24の(4)に示したコマンド127(比較データ123、ステップ条件133、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものである。
 上記コマンドに基づいた詳細な処理については説明を省略するが、本例の場合「sea」が確かで、その後、Gapが0から2つまでの3か所(Gap3)に「h」の文字があると想定される場合、つまりGap0:「seah」、Gap1:「sea*h」、Gap2:「sea**h」の何れでもマッチとする場合で、それ以外の演算は前の3つの例と同様である。
 すなわち、ステップ1からステップ6までの「sea」の文字の検出はこれまでの説明通りである。
 ステップ7、9、11では、「*h」の特殊文字として、Gap0、1、2のGap3が指定されている。Gap処理は、ステップ7、9、11の何れかに「h」の文字があれば文字列が妥当、マッチであると判断するものである。
このような演算を行うため、この第2の例では、FG勝ち抜き回路113のサブレジスタを利用する。
 すなわち、図24で示すようにステップ7で「h」が指定された場合、FG勝ち抜き回路113にはGap演算条件が与えられ、ワイルドカードと同じように、本例の場合相対14番地の文字が何の文字であっても、勝ち抜き演算が成立するよう処理する。
 さらにサブレジスタを動作させ、勝ち残りになっている相対14番地の2番地先の相対16番地のサブレジスタに、相対14番地は「h」ではなかったことを記憶する。従って相対16番地のサブレジスタは「0」にセットされる。
 ステップ9で「h」が指定された場合も上記同様である。このステップでも相対15番地は「h」ではないので、勝ち残りになった相対15番地の1番地先の相対16番地のサブレジスタは「0」が書き込まれ、論理「0」のままである。
 ステップ11で「h」が指定された場合、相対16番地の文字検出回路105の論理は「1」となり、FG勝ち抜き回路113の相対16番地のメインレジスタは「1」になる。
 さらに相対16番地のサブレジスタは「1」が書き込まれ論理が「1」になり、メインレジスタも「1」である。
 メイン/サブ双方のレジスタの論理が「1」であるので、Gap指定3か所の内少なくとも1か所に「h」の文字が含まれると判定し相対番地16番地は最終勝ち残り番地となる。
 これまでの説明同様、本例の場合も与えられた検索キーワード125の末尾の文字コードに該当する全文検索回路の番地126を検出したことになる。
 以上の説明はGap2の最終ステップでの条件成立であったが、Gap0すなわちステップ7、Gap1すなわちステップ9でサブレジスタが「1」にセットされていた場合も、勝ち残りとなるように演算可能であることは言うまでもない。
 以上の演算並びに出力により、「seah」「sea*h」「sea**h」のように文字間のGapを含む文字列の全文検索が可能になる。
 説明は省略するが、後方からの文字列検出により、任意の位置にGap設定が可能である。
 以上のようなワイルドカード機能やGap機能で、全文検索操作の利便性を高めることが可能になる。
 ワイルドカード機能やGap機能などの高度な全文検索も、標準的な全文検索と同様のステップ数で処理出来ることが特に重要である。
 本発明は上記した2つの実施形態に限定されるものではなく、要旨を変更しない範囲で種々変形可能である。
101…全文検索プロセッサ
102…文字記憶素子
103…全文検索回路
104…全文検索回路の相対番地
105…文字検出回路
106…文字列検出回路
107…結果出力回路
108…総合結果出力回路
109…1ビット一致検出回路
110…論理積(AND)回路
111…論理和(OR)回路
112…FG(フラグ)シフト回路
113…FG(フラグ)勝ち抜き回路
114…全文検索演算条件
115…入出力インターフェース
116…標準インターフェース
117…DRAMインターフェース
118…ストレージインターフェース
119…全文検索プロセッサ用インターフェース
120…内部メモリ
121…内部ストレージ(SSD含む)
122…文字の並び
123…比較データ(生成回路)
124…システムボード
125…検索キーワード
126…全文検索回路の番地
127…コマンド生成回路
128…キーワード設定機能
129…勝ち抜き演算条件(生成回路)
130…シフトクロック(生成回路)
131…システムクロック(生成回路)
132…文字テキストデータ
133…ステップ条件(生成回路)
134…ステップ条件別論理積回路

Claims (16)

  1.  全文キーワード検索を目的とした半導体デバイスからなる全文検索プロセッサであり、
     検索対象のテキストデータを受け取り、このテキストデータに含まれる符号化文字列を1バイト毎に1番地からN番地に割り付けて一時記憶する文字記憶素子と
     検索キーワードに含まれる1以上の符号化文字を1バイト毎に比較データとして順次受け取り、各比較データを上記文字記憶素子に記憶された符号化文字列とN並列に比較し、それを前記検索キーワードに含まれる全ての符号化文字分繰り返すことで、この検索キーワードに含まれる全ての符号化文字の上記文字記憶素子上での記憶位置を検出する文字検出回路と、
     前記検索キーワードに含まれる全ての符号化文字が、この検索キーワードに含まれる順番で連続する上記文字記憶素子上での位置を検出する文字列検出回路と
     前記文字列検出回路の検出結果を受け取って前記連続する文字列の先頭位置若しくは終了位置を出力する結果出力回路と
     を有することを特徴とする全文検索プロセッサ。
  2.  請求項1記載の全文検索プロセッサにおいて、
     前記文字検出回路は
     前記文字記憶素子の各番地に接続され、各番地に記憶されたテキストデータの1バイト/8ビットの符号と前記比較データを構成する1バイト/8ビットの符号とを比較し、1ビット毎の一致若しくは不一致を検出する8個の1ビット一致若しくは不一致演算回路のN組のセットと
     1ビット一致若しくは不一致演算回路の各セットからの8ビット分の結果出力を受け取り、各番地に記憶されたテキストデータの符号化文字の文字コードと前記比較データを構成する符号化文字の文字コードとの一致若しくは不一致を検出するN個の論理演算(論理積(AND)、論理和(OR)、論理否定(NOT))回路と
     を有するものである
     ことを特徴とする全文検索プロセッサ。
  3. 請求項1記載の全文検索プロセッサにおいて、
     前記文字列検出回路は
     前記文字検出回路で検出された文字記憶位置のFG(フラグ)と検出された文字記憶位置のFG(フラグ)の配列の妥当性を判定するための、FGシフト回路とFG勝ち抜き回路の2つの回路で構成され
    FGシフト回路とFG勝ち抜き回路は前記検索キーワードに含まれる符号化文字の文字コードの配列を参照し、前記1番地からN番地に割り付けて記憶された文字記憶素子上の文字列の文字コードの中から隣接する文字コード同士の配列の妥当性を繰り返し判定することで、前記検索キーワードで指定された文字列にマッチする、前記文字記憶素子上の文字列の文字コードの先頭位置(番地)若しくは末尾位置(番地)をN並列で検出する回路である
     ことを特徴とする全文検索プロセッサ。
  4.  請求項1記載の全文検索プロセッサにおいて、
     前記文字列検出回路は
     前記文字検出回路の演算結果をフラグとして記憶すると共に、当該記憶されたFGをN並列にシフトするN個のFGシフト回路と
     前記FGシフト回路により前記記憶されたFGをN並列にシフトさせながらシフト前のFGとのN並列論理演算を行い、これを検索キーワードに含まれる全符号化文字分繰り返すことで前記FGの勝ち抜き演算を行うN個のFG勝ち抜き回路と
     を有することを特徴とする全文検索プロセッサ。
  5.  請求項1記載の全文検索プロセッサにおいて、
     前記検索キーワードがnバイトの符号化文字で構成される場合、
     前記FGシフト回路のシフト回数及びそれに伴うFG勝ち抜き演算回路による勝ち抜き演算の回数はn×2-1回である
     ことを特徴とする全文検索プロセッサ。
  6.  請求項1記載の全文検索プロセッサにおいて、
     前記FG勝ち抜き回路は、演算のマスク(無視)を可能にする機能を有し、検索キーワード中にワイルドカードを用いた場合の全文検索を可能にするものである
     ことを特徴とする全文検索プロセッサ。
  7.  請求項1記載の全文検索プロセッサにおいて、
     前記FG勝ち抜き回路は、2組のレジスタが組み込まれ、検索キーワード中に文字のギャップを含む全文検索を可能にするものである
     ことを特徴とする全文検索プロセッサ。
  8.  請求項1記載の全文検索プロセッサにおいて、
     前記結果出力回路により出力される前記N並列(全並列)の検出結果の論理和(OR)演算を行い、全文検出結果の有無を出力するものである
     ことを特徴とする全文検索プロセッサ。
  9.  請求項1記載の全文検索プロセッサにおいて、
     前記全文検索プロセッサ外部のメモリもしくはストレージのテキストデータを前記Nバイトの文字テキストデータを一時記憶する文字記憶素子にバッチデータとして転送し、前記N並列(全並列)による全文検索演算を繰り返すことを特徴とする全文検索プロセッサ。
  10.  請求項1記載の全文検索プロセッサにおいて、
     前記全文検索プロセッサの内部のメモリもしくはストレージのテキストデータを前記Nバイトの文字テキストデータを一時記憶する文字記憶素子にバッチデータとして転送し、前記N並列(全並列)による全文検索演算を繰り返すことを特徴とする全文検索プロセッサ。
  11.  請求項1記載の全文検索プロセッサにおいて、
     ASIC並びにFPGAに実装したことを特徴とする
     全文検索プロセッサ。
  12.  請求項1記載の全文検索プロセッサにおいて、
     CPUを内蔵したことを特徴とする全文検索プロセッサ。
  13.  請求項1記載の全文検索プロセッサにおいて、
     UTF-8など世界標準の文字コードを適応することにより、世界の言語に共通な全文検索を可能にすることを特徴とする全文検索プロセッサの利用方法。
  14.  請求項1記載の全文検索プロセッサにおいて、
     外部から与えられる検索キーワードの文字列に、事前に指定した文字コードが含まれていた場合には全文検索演算を実行、もしくは実行しないものであること、を特徴とする全文検索プロセッサ。
  15.  請求項1記載の全文検索プロセッサにおいて、
     作成中の文章の一部を、大量で最新情報が盛り込まれたテキストデータが蓄積された全文検索プロセッサに照合することにより、ヒットするテキストがなければ前例なしと判定することを特徴とする全文検索プロセッサ。
  16.  請求項1記載の全文検索プロセッサにおいて、
     音声認識の複数の認識候補の中から最適な認識結果選択するにあたり、大量で最新情報が盛り込まれたテキストデータが蓄積された全文検索プロセッサに照合し、ヒットするテキストの多い用語を選択することにより、音声認識の精度を高めることを特徴とする全文検索プロセッサ。
PCT/JP2023/016310 2022-04-26 2023-04-25 全文検索プロセッサ WO2023210643A1 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2022072188 2022-04-26
JP2022-072188 2022-04-26
JP2022-147080 2022-09-15
JP2022147080A JP7475078B2 (ja) 2022-04-26 2022-09-15 全文検索プロセッサ

Publications (1)

Publication Number Publication Date
WO2023210643A1 true WO2023210643A1 (ja) 2023-11-02

Family

ID=88519091

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2023/016310 WO2023210643A1 (ja) 2022-04-26 2023-04-25 全文検索プロセッサ

Country Status (2)

Country Link
JP (1) JP2024102073A (ja)
WO (1) WO2023210643A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4152762A (en) * 1976-03-03 1979-05-01 Operating Systems, Inc. Associative crosspoint processor system
WO2012090584A1 (ja) * 2010-12-28 2012-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索開始点を決定する装置及び方法
WO2012090564A1 (ja) * 2010-12-28 2012-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーション データ要素列を処理する装置及び方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4152762A (en) * 1976-03-03 1979-05-01 Operating Systems, Inc. Associative crosspoint processor system
WO2012090584A1 (ja) * 2010-12-28 2012-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索開始点を決定する装置及び方法
WO2012090564A1 (ja) * 2010-12-28 2012-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーション データ要素列を処理する装置及び方法

Also Published As

Publication number Publication date
JP2024102073A (ja) 2024-07-30

Similar Documents

Publication Publication Date Title
US5452451A (en) System for plural-string search with a parallel collation of a first partition of each string followed by finite automata matching of second partitions
US7392229B2 (en) General purpose set theoretic processor
EP2386093B1 (en) Buses for pattern-recognition processors
US8260987B2 (en) Methods and systems to accomplish variable width data input
US20220083487A1 (en) Custom compute cores in integrated circuit devices
JP2011511366A (ja) データの検索および索引付けの方法およびそれを実施するシステム
CN110825464A (zh) 用于提供由状态机引擎接收的数据的方法及设备
KR20140102290A (ko) 상태 기계에서의 검출을 위한 방법들 및 시스템들
US20170193351A1 (en) Methods and systems for vector length management
US20240241736A1 (en) Systems and devices for accessing a state machine
JP6229024B2 (ja) 情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法。
CN108268596B (zh) 搜索存储在存储器中的数据的方法和系统
JP3213244B2 (ja) データ圧縮方法およびデータ処理システム
WO2023210643A1 (ja) 全文検索プロセッサ
US20230385258A1 (en) Dynamic random access memory-based content-addressable memory (dram-cam) architecture for exact pattern matching
Burkowski A hardware hashing scheme in the design of a multiterm string comparator
JP2023162093A (ja) 全文検索プロセッサ
JP2825009B2 (ja) 記号列検索方法および装置
Singh et al. Achieving magnitude order improvement in porter stemmer algorithm over multi-core architecture
JPH03131969A (ja) 記号列検索方法および検索装置
JPH04308B2 (ja)
JPH04348472A (ja) 数値検索装置およびその方法
Jacob et al. Language classification using n-grams accelerated by fpga-based bloom filters
Kieu-Do-Nguyen et al. A High-Performance Non-Indexed Text Search System
JPH0752450B2 (ja) 辞書デ−タ検索装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23796383

Country of ref document: EP

Kind code of ref document: A1