WO2013069149A1 - データ検索装置、データの検索方法及びプログラム - Google Patents
データ検索装置、データの検索方法及びプログラム Download PDFInfo
- Publication number
- WO2013069149A1 WO2013069149A1 PCT/JP2011/076061 JP2011076061W WO2013069149A1 WO 2013069149 A1 WO2013069149 A1 WO 2013069149A1 JP 2011076061 W JP2011076061 W JP 2011076061W WO 2013069149 A1 WO2013069149 A1 WO 2013069149A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- search
- index
- unit
- character string
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
Definitions
- the present invention relates to a data search apparatus and method for extracting desired document data from a large-scale document database.
- search for document data uses not only a single search keyword represented by a character string but also a complex search condition that combines data attributes. Searching is widely done. By using complex search conditions, the search results can be narrowed down to the number that can be browsed by the user who handles the computer.
- a search system that handles a large amount of document data
- a search system that searches patent publications and the like is known. In this search system, a search is performed not only by a character string in the text but also by a combination of search conditions combining attribute information indicating a technical field such as “G06F”, and the search results are narrowed down to the number that can be selected by the user.
- the attribute search condition is searched by an index that is good at attribute search such as B-tree index (for example, non-search).
- B-tree index for example, non-search.
- Patent Document 1 On the other hand, for the character string search condition, a search result is extracted by searching a character string search index.
- the computer generates a search result by obtaining a logical product of the search result by the attribute search and the search result by the character string search.
- An index search for searching a specific data string existing in document data is known as a character string search technique (for example, Patent Document 1). Also, a method for searching document information with a search condition configured by a logical product of a plurality of search keywords is known (for example, Patent Document 2).
- Non-Patent Document 2 As a technique for extracting a character string from document data and extracting a character string from document data in order to create an index, a technique for extracting a suffix array (suffix array) from the text of the document data is known. (For example, Non-Patent Document 2).
- the character string search index stores the appearance position in all document data for each character string as a key.
- sequential read is faster than random read in the disk drive that constitutes the storage device, and the document data capacity is the number that can be processed for all data, so the string index is the key.
- An index for all data was created for each character string.
- a method of sequentially reading and searching an index related to a search keyword has been adopted.
- Patent Document 2 discloses a search technique for extracting candidate documents by referring to an index from a search keyword with a small number of appearing documents (small index) in a search condition composed of a logical product of a plurality of search keywords. Is disclosed. Then, a search is performed while appropriately skipping the index until a candidate document identifier appears for a search keyword with a large number of appearing documents. In Patent Document 2, the search processing is reduced by skipping.
- the index created in Patent Document 2 also stores the appearance positions for all data for each key, and even if the appearance position information other than the candidate document is skipped, the index for all document data is read from the disk drive.
- Patent Document 2 has a problem that in addition to the determination of whether or not to skip, narrowing down under other conditions (search keywords with a small number of appearing documents) cannot be efficiently processed.
- the present invention has been made in view of the above problems, and an object thereof is to perform a high-speed search from a large amount of data using a plurality of search conditions.
- the present invention includes a processor, a storage device, and a communication control unit, and includes data including a character string, a registration unit that stores a character string search index of the data in the storage device, and a search condition including the character string.
- a search unit that receives and executes a search using the index, wherein the registration unit generates the index in a predetermined unit for narrowing down the data, and the search unit includes the search unit The data is narrowed down for each unit from a search condition, and the index is searched with a character string included in the search condition for each unit of the narrowed data.
- an index for character string search is generated for each unit for narrowing search target data, the data is narrowed down by the data narrowing unit from the search condition, and the narrowed data is searched using the index for character string search.
- the reference range of the character string can be limited by performing the above search and outputting the search result.
- PAD Problem
- PAD figure which shows the 1st Embodiment of this invention and shows an example of the process performed by the data registration control part of a data search server. It is a PAD figure which shows the 1st Embodiment of this invention and shows an example of the process performed by the index creation part for every data of a data search server. It is a block diagram which shows the 1st Embodiment of this invention and shows an example of the whole structure of an index for every data. It is a figure which shows the 1st Embodiment of this invention and shows an example of an individual index. It is a figure which shows the 1st Embodiment of this invention and shows an example of the index management table for every data.
- FIG. 5 is a PAD showing an example of processing performed in the B-tree index search unit of the data search server according to the first embodiment of this invention. It is a PAD figure which shows the 1st Embodiment of this invention and shows an example of the process performed by the index search part for every data of a data search server. It is a block diagram which shows the 2nd Embodiment of this invention, specifies the index for every data with the presence or absence of the character information of a search character string, and outputs a search result by the index search of the specified character string.
- PAD figure which shows the 2nd Embodiment of this invention and shows an example of the process performed in the bitmap search part of a data search server. It is a block diagram which shows the 3rd Embodiment of this invention, sorts the search result of an attribute, specifies the index for every data, and outputs a search result by the index search of the specified character string. It is a PAD figure which shows the 3rd Embodiment of this invention and shows an example of the process performed by the system control part of a data search server. It is a PAD figure which shows the 3rd Embodiment of this invention and shows an example of the process performed by the data search control part of a data search server.
- PAD which shows the 3rd Embodiment of this invention and shows an example of the process performed by the index searching part for every data of a data search server.
- PAD which shows the 4th Embodiment of this invention and shows an example of the process performed by the data registration control part of a data search server.
- PAD which shows the 4th Embodiment of this invention and shows an example of the process performed in the appearance frequency table preparation part of a data search server. It is a figure which shows the 4th Embodiment of this invention and shows an example of an appearance frequency table
- FIG. 1 is a block diagram showing an example of the configuration of a search system according to the first embodiment of the present invention.
- a data search server (data search device) 1 creates an index at the time of registration of document data and stores it in an external storage device (or storage device) 20 and searches from a client computer 30.
- a search is performed using a plurality of indexes, and the search result is returned to the client computer 30.
- the data search server 1, the client computer 30 and the external search server 40 are connected via the network 50.
- the client computer 30 registers document data in the data search server 1, and transmits a search request to cause the data search server 1 to execute a search.
- the client computer 30 transmits a plurality of search conditions to the data search server 1 when requesting a search.
- the client computer 30 acquires part of the search condition from the external search server 40.
- Some of the search conditions include document data attributes.
- the data search server 1 is connected via a CPU 2 that executes arithmetic processing, a main storage device 3 that stores programs and data, a communication control device 5 that communicates with a network 50, and an I / O control device 4.
- An external storage device 20 stores index data 200 as auxiliary information for executing a search, and a document database 250 for accumulating search target document data.
- the main memory 3 is loaded with a data search execution unit 10 and is executed by the CPU 2.
- the CPU 2 operates as a functional unit that realizes a predetermined function by operating according to a program of each functional unit.
- the CPU 2 functions as the data search execution unit 10 by operating according to the data search execution program. The same applies to other programs.
- the CPU 2 also operates as a functional unit that realizes each of a plurality of processes executed by each program.
- Programs for realizing each function of the data search execution unit 10 and information such as tables are stored in an external storage device 20, a nonvolatile semiconductor memory, a hard disk drive, a storage device such as an SSD (Solid State Drive), an IC card, an SD It can be stored in a computer-readable non-transitory data storage medium such as a card or DVD.
- an external storage device 20 a nonvolatile semiconductor memory, a hard disk drive, a storage device such as an SSD (Solid State Drive), an IC card, an SD It can be stored in a computer-readable non-transitory data storage medium such as a card or DVD.
- the search target document database 250 is stored in the external storage device 20 of the data search server 1, but the search target document database 250 is stored in another computer or storage device (not shown). May be.
- the client computer 30 includes a CPU 32 that executes arithmetic processing, a main storage device 33 that stores programs and data, a communication control device 35 that communicates with the network 50, and an input connected via an I / O control device 34.
- the computer includes a device 36, an output device 37, and an external storage device 38.
- the main storage device 33 is loaded with the application program 300 and executed by the CPU 32.
- the CPU 32 operates as a functional unit that realizes a predetermined function by operating according to the program of each functional unit as described above.
- the application program 300 outputs a document data registration request or search request to the data search server 1, receives the search result, and outputs it to the output device 37.
- the input device 36 is configured by a pointing device such as a keyboard or a mouse operated by a user or an administrator.
- the output device 37 includes a display device such as a display.
- the application program 300 generates a complex search condition by combining the search condition received from the input device 36 and the search condition acquired from the external search server 40 and requests the data search server 1 to perform a search.
- the search condition received from the input device 36 is a character string to be searched
- the search condition acquired from the external search server 40 is an example of attribute information or identifier of document data, and is a complex generated by the application program 300.
- the search conditions include character string search conditions and attribute information or document data identifier search conditions.
- the main storage device 33 may store search results acquired from the external search server 40.
- the data search server 1 searches for document data.
- the search target data is not limited to the document database, and any data including information such as character strings and attributes can be used. Good.
- FIG. 2 is a block diagram showing an example of the software configuration of the search system according to the first embodiment.
- the data search execution unit 10 includes modules (programs) of the system control unit 100, the data registration control unit 110, and the data search control unit 120.
- the system control unit 100 controls the entire data search execution unit 10.
- the system control unit 100 determines whether the request received from the client computer 30 is a document data registration request (hereinafter referred to as a data registration request) or a document data 250 search request, and performs data registration.
- the control unit 110 or the data search control unit 120 is caused to function.
- the system control unit 100 When the system control unit 100 receives a data registration request from the client computer 30, the document data received from the client computer 30 is transmitted to the data registration control unit 110, and index data 200 is generated as will be described later. Document data is stored in the document database 250.
- the data registration control unit 110 extracts attribute information included in the document data and transmits the attribute information to the B-tree index creation unit 111.
- the B-tree index creation unit 111 generates a B-tree index 201 for the received attribute information and stores it in the index data 200.
- a method for generating the B-tree index 201 a known or well-known method may be used.
- the non-patent document 1 may be applied.
- attribute information included in document data can be associated with a data identifier of the document data.
- the attribute information of the document data may be received from the client computer 30.
- the data registration control unit 110 transmits the document data to the index creation unit 112 for each data.
- the per-data index creation unit 112 extracts a character string from the received document data, generates a per-data index 202, and stores it in the index data 200.
- a method for generating the data-by-data index 202 from the character string a known or well-known method may be used.
- the non-patent document 2 may be applied.
- each data of the data index 202 is a unit for narrowing down data including a preset character string.
- the document data stored in the document database 250 is a patent publication gazette or the like
- one gazette Data included in the number (data identifier) is a unit of data.
- the unit of document data for each data can be set as a unit of data for publications and books.
- one data can be set for each total time such as “1 day” or “3 hours”.
- the search target “by data” is narrowed down by the B-tree index 201 or the like, and then the search is performed by the character string search index (index by data 202) for searching the character string. . Therefore, the index for character string search generated by the data registration control unit 110 is created for each “data” that is a narrowing unit.
- the data registration control unit 110 When narrowing down in units of data identifiers of document data as in the present embodiment, the data registration control unit 110 generates a data index 202 for each data identifier.
- the system control unit 100 receives a search request, the composite search condition received from the client computer 30 is transmitted to the data search control unit 120 to execute the search.
- the data search control unit 120 transmits the search result to the system control unit 100.
- the system control unit 100 transmits the search result received from the data search control unit 120 to the client computer 30.
- the client computer 30 in order to extract desired document data from the document database 250, the client computer 30 generates a plurality of search conditions indicating character strings and attributes and transmits them to the data search server 1.
- the data search control unit 120 of the data search server 1 executes a search in the B-tree index search unit 121 for the attribute search condition among the complex search conditions composed of the character string and the attribute. Is searched by the index search unit 122 for each data. Then, as will be described later, the data search control unit 120 generates a search result by combining the output of the B-tree index search unit 121 and the output of the per-data index search unit 122. The data search control unit 120 transmits the search result to the system control unit 100. Further, the data search control unit 120 stores the search result in the search result data list 130.
- the client computer 30 uses the application program 300 to issue a composite search condition generation and search request and a document data registration request.
- the application program 300 accepts a character string search condition from the input device 36 when generating a composite search condition. Then, the application program 300 acquires from the external search server 40 attribute search conditions and document data data identifier narrowing conditions.
- a search condition or a narrowing condition acquired in advance from the external search server 40 is stored in the search result 301, and a complex search condition is generated based on the search condition or the narrowing condition acquired from the search result 301. May be.
- FIG. 3 shows an outline of the first embodiment of the present invention.
- the data search server 1 when registering in the document database 250 for storing document data, a plurality of character string search indexes (index for each data 202) are created in predetermined units such as for each data, Is created as a B-tree index 201 in advance.
- the data search server 1 receives a complex search condition, the data search server 1 reads only the index 202 for each data related to the document data narrowed down based on the result of the search by the attribute or the like, so that the entire search condition is met. Is determined.
- the search range of the character string index 202 is limited by narrowing down the document data to be searched for the character string index by a predetermined unit (ID1, ID3, etc. in the figure) under the attribute information search condition, thereby speeding up the search. It becomes possible to do.
- step 500 the system control unit 100 first receives a processing request from the application program 300 of the client computer 30.
- the system control unit 100 analyzes the content of the processing request received in step 501.
- step 502 it is determined whether or not the processing request is a data registration request. If it is determined that the processing request is a data registration request, in step 503, the processing request is transmitted to the data registration control unit 110, and the data registration control unit 110 is instructed to register the document data in the document database 250.
- the system control unit 100 receives the data identifier assigned to the registered document data from the data registration control unit 110 in step 504.
- step 505 the data identifier is transmitted to the application program 300, and the process ends. If it is determined in step 502 that the processing request is a data search request, in step 506, the processing request is transmitted to the data search control unit 120 to instruct the start of data search.
- the data search control unit 120 receives data identifiers that match the search conditions from the data search control unit in step 507. Receive a set.
- the data search control unit 120 transmits a set of data identifiers to the application program 300 as a search result, and ends the process.
- the system control unit 100 causes one of the data registration control unit 110 and the data search control unit 120 to function in response to a request received from the client computer 30.
- the data registration control unit 110 starts the process of FIG. 5 when receiving a data registration instruction from the system control unit 100.
- the data registration control unit 110 receives a processing request from the system control unit 100.
- the data registration control unit 110 acquires document data to be registered from the processing request received in step 600.
- the document data to be registered may be stored in the document database 250 of the external storage device 20, and the storage location of the document data may be described in the processing request, or the document data to be registered in the processing request may be directly described.
- Document data to be registered may be registered one by one, or a plurality of documents may be processed together.
- the document data to be registered consists of text information and attribute information.
- attribute information can be given to an element.
- unique attribute information is given to the data.
- step 602 the data registration control unit 110 repeats a series of processing from steps 603 to 609 until the number of document data to be registered acquired from the client computer 30 is reached.
- a data identifier is assigned to the registered document data.
- the data identifier is information unique to each document data, and when the data identifier is designated, the corresponding data is uniquely determined.
- step 604 the data registration control unit 110 extracts attribute information from the document data.
- step 605 the data identifier and attribute information are transmitted to the B-tree index creation unit 111 to instruct the creation of the B-tree index.
- B-tree is a search algorithm that speeds up the search using a tree-structured index tree.
- the search is started from the highest root page in the upper page, and the appearance data information of the search target data is acquired from the lowest leaf page.
- B-tree is described in Non-Patent Document 1, and a known and publicly known method may be used as a creation and search method.
- the data registration control unit 110 receives a completion message from the B-tree index creation unit 111 in step 606.
- step 607 the data registration control unit 110 extracts text information from the document data.
- step 608 the data registration control unit 110 transmits the data identifier and text information to the per-data index creation unit 112 and instructs the creation of the per-data index 202.
- the data registration control unit 110 receives a completion message from the data index creation unit 112 in step 609. Finally, in step 610, the data identifier is transmitted to the system control unit 100, and the data registration process by the data registration control unit 110 ends.
- the data-by-data index creation unit 112 starts processing in response to an index creation instruction from the data registration control unit 110.
- the data index creation unit 112 receives a data identifier and text information from the data registration control unit 110.
- the per-data index creation unit 112 extracts all partial character strings and the appearance positions of the partial character strings in the document data from the received body information.
- a known or well-known technique such as a word, n-gram, suffix array (suffix array) or the like can be applied.
- the data index creation unit 112 creates an individual index (see FIG. 7) described later and stores it in the data index 202 of the external storage device 20.
- the text information itself may be stored as the individual index.
- step 703 the data index creation unit 112 associates the storage destination pointer of the individual index with the data identifier of the document data received from the data registration control unit 110, and stores the data index management table described later (FIG. 7). Stored in the reference). Finally, in step 704, the data index creation unit 112 transmits a completion message to the data registration control unit 110, and the data index creation process by the data index creation unit 112 ends.
- FIG. 7 shows the overall structure of the index 202 for each data.
- the per-data index 202 includes the above-described per-data index management table 2020 and individual indexes 2021-1 to 2021-i.
- Reference numeral 2021 denotes a generic name of the individual index.
- the data-by-data index management table 2020 is a table that manages the correspondence between a data identifier that specifies document data and an individual index that includes an index of a character string in each document data.
- the individual index 2021 stores a partial character string serving as the key 20211 and an appearance position 20212 of the partial character string in the document data in association with each other.
- the partial character string is a unit for character string search such as the above-described word index, n-gram index, suffix array (suffix array), and is extracted from the text information of the document data by the above-mentioned index creation unit 112 for each data.
- a method such as morphological analysis can be used as a method for extracting words from the text information of document data.
- a method of extracting n-gram from the text information of document data a method of mechanically extracting a character string of n characters continuously as described in Patent Document 1 can be used.
- Non-Patent Document 2 A method of extracting a suffix array from text information of document data is described in Non-Patent Document 2.
- 2-gram is extracted as a partial character string key 20211, and an individual index 2021 is created with the appearance position information 20212.
- the individual index 2021 may include a B-tree index.
- the information extracted from the document data and the appearance position of the information are configured by a B-tree index.
- index management table 2020 for each data is shown in FIG. As shown in FIG. 9, in the data-by-data index management table 2020, the registered data identifier 20201 of the document data and the storage destination pointer 20202 of the individual index 2021 of the document data are stored in association with each other.
- the storage destination of the corresponding individual index 2021 can be acquired.
- the individual index 2021 is created based on the updated data, and the individual index 2021 pointer of the index management table 2020 for each data is set as the storage destination of the new individual index 2021. It can respond by changing.
- the individual index 2021 is created based on the updated data, and the individual index 2021 pointer of the index management table 2020 for each data is set as the storage destination of the new individual index 2021. It can respond by changing.
- the individual index 2021 is created based on the updated data, and the individual index 2021 pointer of the index management table 2020 for each data is set as the storage destination of the new individual index 2021. It can respond by changing.
- the individual index 2021 is created based on the updated data, and the individual index 2021 pointer of the index management table 2020 for each data is set as the storage destination of the new individual index 2021. It can respond by changing.
- the individual index 2021 is created based on the updated data, and the individual index 2021 pointer of the index
- the data search control unit 120 starts processing in response to the data search instruction received by the system control unit 100.
- the data search control unit 120 receives a processing request from the system control unit 100.
- the data search control unit 120 analyzes the received processing request.
- the data search control unit 120 determines whether an attribute search condition is included in the analyzed processing request. If the analyzed process request includes an attribute search condition, the process proceeds to step 1103. If the process request does not include an attribute search condition, the process proceeds to step 1105.
- the data search control unit 120 transmits an attribute search condition to the B-tree index search unit 121 to instruct index search.
- a completion message is received from the B-tree index search unit 121 in step 1104.
- the data identifier of the document data that is the search result by the B-tree index search unit 121 is stored in the search result data list 130.
- the data search control unit 120 stores the data identifiers of all data included in the document database 250 in the search result data list 130 in step 1105. .
- step 1106 the data search control unit 120 determines whether or not a data identifier is included in the processing request. If a data identifier is included in the processing request, the data search control unit 120 deletes the data identifier not included in the processing request from the search result data list 130 in step 1107.
- step 1108 the data search control unit 120 determines whether the processing request includes a character string search condition. If the processing request includes a character string search condition, the data search control unit 120 transmits the character string search condition to the per-data index search unit 122 in step 1109 to instruct index search.
- the data search control unit 120 receives a completion message from the data index search unit 122 in step 1110.
- the identifiers of the document data stored in the search result data list 130 are limited to those that match the character string search conditions.
- step 1111 the data search control unit 120 transmits the set of data identifiers stored in the search result data list 130 to the system control unit 100, and the data search process by the data search control unit 120 ends.
- the data search control unit 120 extracts the attribute search condition, the character string search condition, and the identifier search condition from the complex search conditions included in the processing request. Then, the data search control unit 120 causes the B-tree index search unit 121 to execute a search for the attribute search condition, and the B-tree index search unit 121 sets the identifier of the document data of the search result as the search result data list 130. To store. As a result of the search processing using the character string of the index search unit 122 for each data, the identifiers of the document data stored in the search result data list 130 are limited to those that match the character string search conditions.
- the B-tree index search unit 121 specifies the identifiers of the document data to be searched, and executes search processing using the character string of the index search unit 122 for each data for the identifiers of the document data.
- the search target of the index by the character string is further limited to search processing. Can be performed at higher speed.
- the B-tree index search unit 121 starts processing in response to an index search instruction from the data search control unit 120.
- the B-tree index search unit 121 receives an attribute search condition from the data search control unit 120.
- the B-tree index search unit 121 refers to the B-tree index 201 and acquires an identifier of document data that matches the attribute search condition.
- a known or known process may be performed.
- a method described in Non-Patent Document 1 may be applied.
- the B-tree index search unit 121 stores the identifier of the document data acquired by the reference process of the B-tree index 201 in the search result data list 130.
- step 1203 the B-tree index search unit 121 transmits a completion message to the data search control unit 120, and the search processing of the B-tree index 201 by the B-tree index search unit 121 ends.
- the per-data index search unit 122 starts processing in response to an index search instruction from the data search control unit 120.
- the data index search unit 122 receives a search condition for a character string included in a processing request (search request) from the data search control unit 120.
- the data-by-data index search unit 122 repeats a series of processing from step 1302 to step 1305 according to the number of identifiers of document data stored in the search result data list 130.
- the per-data index search unit 122 refers to the per-data index management table 2020 and acquires the storage destination pointer of the individual index 2021 corresponding to the data identifier.
- step 1303 the index search unit 122 for each data refers to the individual index 2021, and determines whether or not the search conditions for the character string are met. If it is determined in step 1304 that the character string search condition does not match the individual index 2021, the process advances to step 1305 to delete the identifier of the document data from the search result data list 130.
- step 1306 a completion message is transmitted to the data search control unit 120, and the per-data index 202 search process by the per-data index search unit 122 ends.
- the search result data list 130 stores only identifiers of document data that match the attribute search condition and the character string search condition. In the case where a data identifier is included in the processing request (search request), it is further limited to only these data.
- the existing method is used for the search condition of the above character string and the search of each data index 202.
- the individual index 2021 is a word index
- a word that matches the search keyword is searched to obtain appearance position information.
- the method described in Non-Patent Document 2 is used.
- the individual index 2021 is an n-gram index
- the method described in Patent Document 1 is used.
- the individual index 2021 is the text information itself, the text information is matched with the text information to search for a text string that matches the search keyword.
- the data-by-data index search unit 122 compares the appearance position information of “AB” and “LE” when “ABLE” is designated as a search keyword (character string search condition), A search is performed based on whether adjacent appearance positions exist.
- a data-by-data index 202 that is an index for searching for a character string is created in advance in units of narrowing down other search conditions such as attribute search conditions, search results by other systems, and past search results.
- the reference range is limited only to the character string search index (data index 202 for each data) related to the data identifier narrowed down by the search condition such as attribute information.
- the present invention by narrowing down the character string search index from the attribute information and the like as described above, even when a large-scale document database 250 is a search target, complex search conditions are efficiently processed, and high-speed processing is performed. It is possible to provide a data search apparatus that realizes a simple search process.
- the B-tree index 201 and the data index 202 are stored in the external storage device 20.
- the B-tree index 201 and the data index 202 are stored in the main storage device 3. It may be.
- the example in which the narrowing unit of document data is used as a data identifier and the index 202 for each data which is a character string search index, is generated for each data identifier. It is also possible to divide into areas and use small areas as a unit for narrowing down document data. In this case, as the character string search index, a data index 202 is generated for each small area.
- the B-tree index 201 and the data-by-data index 202 are stored in the external storage device 20, but may be stored in the main storage device 3.
- the data search server 1 when registering data in the document database 250, the data search server 1 creates in the bitmap 203 as information indicating the presence or absence of predetermined character information for each document data. . Then, the data search server 1 uses the bitmap 203 to narrow down by the presence / absence of character information included in the character string search condition in addition to narrowing down by the attribute search condition when searching for the character string. This embodiment further limits the reference range. According to the present embodiment, it is possible to narrow down the reading process and search process of the index for each data 202 from the external storage device 20 to the minimum necessary, so that the search process for the index for each data 202 in the document database 250 is performed at high speed. Is possible.
- the data registration control unit 110 the data search control unit 120, and the index data 200 are processed into a bitmap. The point which added is different.
- FIG. 14 shows the configuration of the data search server 1 in this embodiment.
- the data registration control unit 110 includes a B-tree index creation unit 111, an index creation unit 112 for each data, and a bitmap creation unit 113.
- the data search control unit 120 includes a bitmap creation unit 113 in addition to the B-tree index search unit 121 and the data-by-data index search unit 122.
- Index data 200 is stored in the external storage device 20 connected to the data search server 1, and the bitmap data 203 is stored in addition to the B-tree index 201 and the data-by-data index 202.
- the data registration control unit 110 starts processing in response to a data registration instruction from the system control unit 100.
- the B-tree index 201 is generated from the search condition of the attribute information as in FIG. 5 of the first embodiment.
- step 602 the data registration control unit 110 repeats a series of processing from step 603 to step 609 until the number of acquired document data to be registered is reached.
- step 603 the data registration control unit 110 assigns a data identifier to the document data in the same manner as in the first embodiment, and the B-tree index 201 is created.
- step 607 the data registration control unit 110 extracts text information from the document data.
- step 1600 the data registration control unit 110 transmits a data identifier and text information to the bitmap creation unit 113 and instructs creation of a bitmap 203 described later.
- the data registration control unit 110 receives a completion message from the bitmap creation unit 113 in step 1601.
- step 608 the data registration control unit 110 transmits the data identifier and text information to the per-data index creation unit 112 and instructs the creation of the per-data index 202 as in the first embodiment.
- the data registration control unit 110 receives a completion message from the data index creation unit 112 in step 609.
- step 610 the data identifier is transmitted to the system control unit 100, and the data registration process by the data registration control unit 110 ends.
- the bitmap creation unit 113 starts processing upon the creation command of the bitmap 203 from the data registration control unit 110.
- the bitmap creation unit 113 receives a data identifier and text information from the data registration control unit 110.
- the bitmap creation unit 113 extracts all character information from the received text information.
- the bitmap creation unit 113 acquires the bitmap 201 corresponding to the extracted character information from the external storage device 20, and changes the bit corresponding to the data identifier to “1”. Then, the bitmap creation unit 113 updates the bitmap 203 of the external storage device 20. When there is no character information in the bitmap 201, the bitmap creation unit 113 adds a new entry to the bitmap 203 and changes the bit corresponding to the identifier of the document data to “1”. In the bitmap 203, as will be described later, all the bits corresponding to the data identifier of the document data including certain character information are “1”.
- bitmap creation unit 113 writes the updated bitmap 203 back to the external storage device 20.
- bitmap creation unit 113 transmits a completion message to the data registration control unit 110, and the bitmap creation process by the bitmap creation unit 113 ends.
- the updated bitmap 203 may be written back to the external storage device 20 after processing a plurality of document data.
- the bit of the bitmap 203 corresponding to the identifier of the document data including character information is updated by the data registration control unit 110.
- bit map 203 shows, for each character information, a bit string in which bits set to “1” if character information exists in document data and “0” otherwise does not exist according to the position of the identifier of the document data. It is a compiled map.
- the bitmap 203 is composed of an upper node 2031 and a leaf node 2032 that holds a bit string, which is configured by a table of document data identifiers.
- the upper node 2031 has a hierarchical structure of data identifiers (ID) of document data. That is, the upper node 2031 has a plurality of sets of upper ranges 20311 and pointers 20312 for storing the range of data identifiers of document data.
- the upper range 20311 stores the data identifier of the document data within a predetermined identifier range
- the pointer 20312 stores information (address or the like) indicating the leaf node 2032.
- the leaf node 2032 is composed of a lower range 20321 that stores the range of data identifiers included in the upper range 20311 of the upper node 2031 and a map 20322 that stores character information 20323 and a bit string 20324.
- the length of the bit string 20324 is 256 bits.
- a bit string 20324 indicating 256 data identifiers for each character information 2033 is stored.
- the document data with the data identifier corresponding to the value “1” includes the character string of the character information 20323.
- One leaf node 2032 includes four lower ranges 20321.
- data identifiers are divided into 1024 pieces and stored.
- the character information 20323 is a partial character string of n characters.
- n is an integer of 1 or more, for example.
- By performing a bit AND operation between the bit strings 20324 of the plurality of character information 20323 only the bit of the data including all of the plurality of character information becomes “1”, which can be used for narrowing down the character string search.
- Increasing the value of n characters reduces the number of “1” s in the bitmap 203 and improves the narrowing rate, but increases the number of types of character information, that is, the number of entries in the bitmap 203 to be created.
- the total capacity of the map 203 increases.
- the value of n characters can be determined in consideration of the capacity of the external storage device 20 that can be used.
- bitmap Since the length of the bit string of the bitmap 203 is fixed (in the figure, 256 bits), the number of data that can be registered is limited by the length of the bitmap 203.
- a bitmap is created as a hierarchical structure as shown in FIG.
- the leaf node 2032 stores a fixed-length bitmap
- the upper node 2031 stores a pointer 20312 to the lower leaf node 2032. In this way, an increase in the number of data can be accommodated by adding leaf nodes 2032.
- the data search control unit 120 starts processing in response to a data search instruction from the system control unit 100.
- Steps 1100 to 1107 are the same as those in FIG. 10 of the first embodiment.
- the data search control unit 120 receives a processing request from the system control unit 100, creates the B-tree index 201, and searches the search result data.
- the data identifier of the list 130 is set up.
- the data search control unit 120 determines whether the processing request includes a character string search condition. If the processing request includes a character string search condition, in step 1900, the data search control unit 120 transmits the character string search condition to the bitmap search unit 123 and instructs the bitmap 203 to be searched. When the search processing of the bitmap 203 by the bitmap search unit 123 is completed, the data search control unit 120 receives a completion message from the bitmap search unit 123 in step 1901. At this time, the data identifier of the search result data list 130 is narrowed down by the search result of the bitmap 203 by the bitmap search unit 123. That is, the data identifier that does not include the character string search condition is deleted from the search result data list 130.
- step 1109 as in FIG. 10 of the first embodiment, the data search control unit 120 transmits a character string search condition to the index search unit 122 for each data and instructs index search.
- the data search control unit 120 receives a completion message from the data index search unit 122 in step 1110.
- the identifiers of the document data stored in the search result data list 130 are limited to those that match the character string search conditions.
- step 1111 the data search control unit 120 transmits the set of data identifiers stored in the search result data list 130 to the system control unit 100, and the data search process by the data search control unit 120 ends.
- the data identifier of the document data to be searched can be narrowed down by bitmap search, so the amount of the index 202 for each data to be searched is reduced, so that the search processing is further performed. It can be performed at high speed.
- bitmap search unit 123 of the second embodiment will be described with reference to the PAD diagram of FIG.
- the bitmap search unit 123 starts processing in response to a bitmap search instruction from the data search control unit 120.
- the bitmap search unit 123 receives a character string search condition from the data search control unit 120.
- the bitmap search unit 123 extracts all character information from the character string search condition.
- step 2002 the bitmap 203 corresponding to the character information extracted by the bitmap search unit 123 is acquired from the external storage device 20. Then, the bitmap search unit 123 performs an AND operation between the bit string 20324 and the character string search condition for the bitmap 203 corresponding to the data identifier of the document data.
- step 2003 the bitmap search unit 123 repeats the processes in steps 2004 and 2005 for the number of data identifiers stored in the search result data list 130.
- step 2004, the bit corresponding to the data identifier is referred to from the AND operation result of the bit string 20324. If the bit value of the bit string 20324 is determined to be “0” as a result of the AND operation, the data identifier is deleted from the search result data list 130 in step 2005.
- step 2006 the bitmap search unit 123 transmits a completion message to the data search control unit 120 and ends the bitmap search process.
- the data identifier in the search result data list 130 is limited to only data including all character information extracted from the character string search condition.
- the narrowing down rate by the bitmap search unit 123 when the narrowing down rate by the bitmap search unit 123 is poor and almost no narrowing down is possible, it may be faster to perform a search with the conventional index for each keyword, so the narrowing down rate is compared with the threshold value. Therefore, it can be used together with the conventional method.
- the narrowing rate is, for example, a value obtained by dividing the number of document data after the bitmap search by the number of document data before the bitmap search.
- the search keyword becomes long, the key character string extracted from the search keyword increases, so the number of indexes for each key that must be searched increases, and the search takes time.
- the method shown in this embodiment even if the search keyword becomes long, the number of bitmaps that can be used for bit AND operation increases, and the data narrowing rate by the bitmap improves, so that the search time is lengthened. Can be prevented.
- the B-tree index search unit 121 cannot narrow down the document data. Therefore, as in the second embodiment, by searching for a search condition using the character information bitmap 203, an index for each data 202 that is an index for the character string to be searched even if the search condition is only for the character string. Can be narrowed down.
- the B-tree index 201, the data index 202, and the bitmap 203 are stored in the external storage device 20, but may be stored in the main storage device 3.
- the search is performed using a combination of attribute search conditions such as date and price and a character string search condition
- the result of searching the B-tree index 201 which is an attribute search index
- the search is performed on the index 202 for each data in the order of the sorted data identifiers.
- the attribute sort condition, the maximum number of output items, and the number of output units are included in the search request. Is included.
- the maximum output number may be M times the number of output units.
- the sort result by B-tree or the like is used. Can be used as is.
- the results can be output when the required number of search results such as the list display unit are obtained, and the time until search result output can be shortened. .
- the third embodiment is configured similarly to the first embodiment (FIG. 1), but the processing contents of the system control unit 100 and the data search control unit 120 are different.
- processing of the system control unit 100 and the data search control unit 120 different from the first embodiment will be described.
- step 500 to 505 the system control unit 100 receives a processing request from the application program 300 of the client computer 30 and assigns a data identifier to the document data to be registered, as in FIG. 4 of the first embodiment. Responds to program 300.
- step 2200 when the system control unit 100 determines in step 502 that the processing request is a data search request, in step 2200, the processing request is transmitted to the data search control unit 120 to instruct data search.
- step 2201 the processes in step 2202 and step 2203 are repeated until the system control unit 100 receives a completion message from the data search control unit 120.
- the system control unit 100 receives a set of data identifiers that match the search condition from the data search control unit 120.
- step 2203 the system control unit 100 transmits a set of data identifiers to the application program 300 as a search result.
- the set of data identifiers received by the application program 300 is the number of output units specified in the processing request as will be described later.
- the search processing of the index for each data 202 is performed in order from the upper data of the search result set of the sorted attribute information processed by the B-tree index search unit 121.
- the data search control unit 120 outputs a search result to the system control unit 100 when data for a predetermined output unit is searched.
- the data search control unit 120 starts processing in response to a data search instruction from the system control unit 100.
- the data search control unit 120 receives a processing request from the system control unit 100.
- the data search control unit 120 analyzes the processing request received in step 2300, and extracts attribute search conditions, sort conditions, character string search conditions, the maximum number of output items, and output units.
- step 2301 the data search control unit 120 transmits the attribute search condition and the sort condition to the B-tree index search unit 121, and instructs the B-tree index 201 to be searched.
- the data search control unit 120 receives a completion message from the B-tree index search unit 121 in step 1104.
- the B-tree index search unit 121 stores the data identifier of the attribute search result in the search result data list 130 according to the sort condition.
- step 2303 the series of processing from step 2304 to step 2306 is repeated until the output for the maximum number of output items is completed or the search result data list 130 becomes empty.
- the data search control unit 120 transmits the character string search condition and the output unit to the per-data index search unit 122 and instructs to search the per-data index 202.
- the data search control unit 120 receives a completion message from the per-data index search unit 122 in step 1110.
- step 2305 the data search control unit 120 transmits the top N data identifiers (N is an output unit) stored in the search result data list 130 to the system control unit 100.
- step 2306 the data search control unit 120 deletes the output data identifier from the search result data list 130.
- step 1111 the data search control unit 120 transmits the set of data identifiers stored in the search result data list 130 to the system control unit 100, and the data search process by the data search control unit 120 ends.
- the processing contents of the B-tree index search unit 121 in step 2301 are basically the same as those in the first embodiment, but the data identifiers stored in the search result data list 130 are stored in the order specified by the sort condition. The point to do is different.
- the per-data index search unit 122 starts processing in response to an index search instruction from the data search control unit 120.
- the per-data index search unit 122 receives a character string search condition and an output unit from the data search control unit 120.
- step 1301 the per-data index search unit 122 repeats the series of processing from step 1302 to step 2402 up to the number of data identifiers stored in the search result data list 130.
- the per-data index search unit 122 refers to the per-data index management table 2020 and acquires the storage destination pointer of the individual index 2021 corresponding to the data identifier.
- the data-by-data index search unit 122 refers to the individual index 2021 and determines whether the character string search condition matches. If it is determined in step 1304 that the character string search condition does not match the individual index 2021, the data-by-data index search unit 122 deletes the data identifier from the search result data list 130 in step 1305.
- step 2401 if the per-data index search unit 122 determines that data that matches the character string search condition has been obtained for the output unit (N items), the repeat process ends in step 2402.
- step 1306 the data index search unit 122 transmits a completion message to the data search control unit 120, and the data index search process by the data index search unit 122 ends.
- the data search control unit 120 limits the top N data identifiers (N is an output unit) in the sort condition order stored in the search result data list 130 to only data that matches the processing request. For data not included in the output unit (N items), only the attribute search condition is matched, and the character string search condition is not searched.
- the results can be output, and the time until search result output can be shortened. For example, only the number of items displayed on the first page of the list display are processed and output, and the data displayed on the next second page is displayed while the user of the client computer 30 is browsing the search results. By executing the search processing in parallel on the data search server 1 side, the processing speed can be increased.
- the data identifiers of the document data are sorted in descending order of the temporary score calculated from the appearance frequency of the search condition (search keyword) of the character string, and the search processing of the index 202 for each data is performed in descending order.
- search keyword search condition
- the temporary score based on the appearance frequency of the search keyword is dynamically calculated from the search result, and is calculated and sorted in advance like static attribute information such as date and price. It is difficult.
- the appearance frequency of the character information in each document data is created, and the score is temporarily calculated for the character string search condition and the appearance frequency information using the appearance frequency of the character information created in advance.
- the character information included in the search keyword having the lowest appearance frequency is calculated for each data.
- the lowest appearance frequency is set as the minimum appearance frequency. Since the actual appearance frequency of the search keyword never exceeds the minimum appearance frequency, the value of the minimum appearance frequency is calculated as a temporary score, and the data identifiers of the document data are sorted in descending order of the temporary score.
- the index 202 for each data is searched with the search character string in the sort order, the actual appearance frequency is obtained, and the normal appearance frequency is calculated as a score.
- the search result is acquired for one page of the list display, the search result is sorted again by the normal score and output to the application program 300 of the client computer 30.
- the fourth embodiment basically has the same configuration as that of the first embodiment (FIG. 1), but the B-tree index creation unit therein is changed to the appearance frequency table creation unit 114, and the B-tree is created.
- the index search unit 121 is changed to the appearance frequency table search unit 124, and the B-tree index is changed to the appearance frequency table 204.
- FIG. 25 shows the configuration of the data search server 1 in the fourth embodiment.
- the data registration control unit 110 includes an appearance frequency table creation unit 114 and an index creation unit 112 for each data.
- the data search control unit 120 includes an appearance frequency table search unit 124 and an index search unit 122 for each data.
- Index data 200 is stored in the external storage device 20 connected to the data search server 1, and the index data 200 includes an appearance frequency table 204 and an index 202 for each data.
- Other configurations are the same as those of the third embodiment.
- the data registration control unit 110 starts processing in response to a data registration instruction from the system control unit 100.
- the data registration control unit 110 receives a processing request from the system control unit 100.
- step 601 the data registration control unit 110 acquires document data from the received processing request.
- step 602 the series of processing in steps 603 to 609 is repeated for the number of acquired document data.
- step 603 the data registration control unit 110 assigns a data identifier to the document data.
- step 607 the data registration control unit 110 extracts text information from the document data.
- step 2700 the data registration control unit 110 transmits a data identifier and text information to the appearance frequency table creation unit 114, and instructs creation of an appearance frequency table 204 described later.
- the data registration control unit 110 receives a completion message from the appearance frequency table creation unit 114 in step 2701.
- step 608 the data registration control unit 110 transmits a data identifier and text information to the per-data index creation unit 112, and commands creation of the per-data index 202.
- the data index creation process by the data index creation unit 112 is the same as that in the first embodiment.
- the data registration control unit 110 receives a completion message from the per-data index creation unit 112 in step 609.
- step 610 the data registration control unit 110 transmits a data identifier to the system control unit 100, and the data registration process by the data registration control unit 110 ends.
- the appearance frequency table creation unit 114 starts processing in response to an appearance frequency table creation instruction from the data registration control unit 110.
- the appearance frequency table creation unit 114 receives a data identifier and text information from the data registration control unit 110.
- step 2801 the appearance frequency table creation unit 114 extracts all character information and the appearance frequency of each character information from the received text information. And then.
- step 2802 the appearance frequency table creation unit 114 creates the appearance frequency table 204 from the extracted character information and the appearance frequency and stores it in the external storage device 20.
- step 2803 a completion message is transmitted to the data registration control unit 110, and the appearance frequency table 204 creation processing by the appearance frequency table creation unit 114 ends.
- the structure of the appearance frequency table 204 is shown in FIG.
- the appearance frequency table 204 is a table in which the frequency with which the predetermined character information 2041 appears in the document data is stored in association with the data identifiers 2042-0 to 2042-i.
- searching the appearance frequency table 204 the appearance frequency of the character information included in the search keyword is acquired for each document data, and the temporary score is calculated using the value with the lowest appearance frequency.
- the appearance frequencies of “B” and “C” are acquired for each of the identifiers 2042-0 to 2042-i, and the data ID 0 is “2” and the data ID 1 is the minimum value.
- the temporary score is calculated as “0”.
- the appearance frequency may be used as it is, or normalization processing such as division by the data length may be performed.
- the index 202 search for each data is performed in order from the top data in the search result set sorted by the appearance frequency table search unit 124 in the descending order of the temporary score. Then, the data search control unit 120 outputs the search result to the system control unit 100 when data for the output unit (N) included in the search request is searched. The data search control unit 120 starts processing in response to a data search instruction from the system control unit 100.
- step 1100 the data search control unit 120 receives a processing request from the system control unit 100.
- the data search control unit 120 analyzes the processing request received in step 3000, and extracts the character string search condition, the maximum number of output cases, and the output unit.
- step 3001 the data search control unit 120 transmits a character string search condition to the appearance frequency table search unit 124 and instructs to search the appearance frequency table 204.
- the data search control unit 120 receives a completion message from the appearance frequency table search unit 124 in step 3002.
- the data identifier of the search result by the appearance frequency table search unit 124 is stored in the search result data list 130 in descending order of the temporary score.
- step 2303 the data search control unit 120 repeats a series of processing from step 2304 to step 2306 until the output for the maximum number of output is completed or the search result data list 130 is empty.
- step 2304 the data search control unit 120 transmits the search condition and output unit (N items) of the character string to the per-data index search unit 122, and instructs to search the per-data index 202.
- the data search control unit 120 receives a completion message from the data index search unit 122 in step 1110. In step 2305, the data search control unit 120 transmits the top N data identifiers (N is an output unit) stored in the search result data list 130 to the system control unit 100.
- step 2306 the data search control unit 120 deletes the output data identifier from the search result data list 130.
- step 1111 the set of data identifiers stored in the search result data list 130 is transmitted to the system control unit 100, and the data search process by the data search control unit 120 ends.
- the appearance frequency table search unit 124 starts processing in response to a search instruction for the appearance frequency table 204 from the data search control unit 120.
- the appearance frequency table search unit 124 receives a character string search condition from the data search control unit 120.
- the appearance frequency table search unit 124 extracts all character information from the character string search condition.
- the processing in steps 3103 and 3104 is repeated for the data identifiers of all document data.
- the appearance frequency in the data identifier of the character information extracted by the appearance frequency table search unit 124 in step 3101 is acquired.
- the appearance frequency table search unit 124 calculates the acquired minimum appearance frequency value as a temporary score in the data identifier.
- step 3105 the appearance frequency table search unit 124 sorts the data identifiers of all the document data in descending order of the temporary score, and stores all the data identifiers and the temporary score in the search result data list 130.
- step 3106 the appearance frequency table search unit 124 transmits a completion message to the data search control unit 120, and the appearance frequency table 204 search process by the appearance frequency table search unit 124 ends.
- the data identifiers in the search result data list 130 are sorted in descending order of the temporary score, and the per-data index search unit 122 selects the per-data index in order from the higher data identifier. 202 search processing is performed.
- the data-by-data index search unit 122 starts processing in response to a search command for the data-by-data index 202 from the data search control unit 120.
- the per-data index search unit 122 receives a character string search condition and an output unit from the data search control unit 120.
- step 1301 the per-data index search unit 122 repeats a series of processing from step 1302 to step 2402 for all the data identifiers stored in the search result data list 130.
- the index search unit 122 for each data refers to the index management table 2020 for each data, and acquires the storage destination pointer of the individual index 2021 corresponding to the data identifier.
- the data-by-data index search unit 122 refers to the individual index 2021 and searches whether the character string search conditions are met. If it is determined in step 1304 that the character string search condition matches the individual index 2021, the data-by-data index search unit 122 calculates a normal score from the appearance frequency of the search keyword in step 3200. The normal score may be calculated by normalization described above.
- the per-data index search unit 122 updates the regular score calculated from the temporary score stored in the search result data list 130.
- step 1304 if it is determined that the character string search condition does not match the individual index 2021, the data-by-data index search unit 122 deletes the data identifier from the search result data list 130 in step 1305.
- step 2401 if the per-data index search unit 122 determines that only the number of output units of data identifiers that match the individual index 2021 with the character string search condition is obtained, the process proceeds to step 3202 where the per-data index search is performed.
- the unit 122 sorts the top N data identifiers (N is an output unit) stored in the search result data list 130 in descending order of the normal score.
- step 2402 the iterative process is terminated.
- step 1306 the data index search unit 122 transmits a completion message to the data search control unit 120, and the data index search unit 122 by the data index search unit 122 ends.
- the top N data identifiers (N is an output unit) stored in the search result data list 130 are limited to data that matches the processing request, and are sorted in descending order of the normal score. It will be. Data of N items or less which are output units remain sorted in descending order of the temporary score.
- the data identifiers of document data are sorted and output by dynamically generated information, such as a temporary score that satisfies a character string search condition. Even in this case, it is possible to search for a character string search condition from document data that is highly likely to be positioned higher in the temporary score.
- the search results can be output to the client computer 30 when a predetermined number of search results, such as a unit for displaying a list of search results, are obtained, and the data search server 1 shortens the time until the search results are output. Is possible.
- the search processing for outputting the results to the client computer 30 can be speeded up.
- the data identifier of the document data to be searched is narrowed down by the search condition including the attribute information and the character string, and the character string is searched with the character string search index.
- the data search speed is increased by reducing the amount of the search index for the character string. Narrowing down the search target of the character string can be performed using information included in the search condition such as attribute information and a character string.
- the index 202 for each data which is an index for character string search, is configured in units of search target narrowing, the amount of data read after narrowing down is greatly reduced compared to the conventional example. Therefore, even a large amount of data can be searched at high speed.
- the data identifier of the document data to be searched is obtained by using the bitmap 203 or the appearance frequency table 204 of the character information. By narrowing down, it is possible to speed up the data search.
- the present invention is not limited to the above-described embodiment, and includes various modifications.
- the above-described embodiment has been described in detail for easy understanding of the present invention, and is not necessarily limited to one having all the configurations described.
- a part of the configuration of an embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of an embodiment.
- each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
- Each of the above-described configurations, functions, and the like may be realized by software by interpreting and executing a program that realizes each function by the processor.
- Information such as programs, tables, and files for realizing each function can be stored in a recording device such as a memory, a hard disk, and an SSD, or a recording medium such as an IC card, an SD card, and a DVD.
- control lines and information lines in the figure indicate what is considered necessary for the explanation, and not all control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
プロセッサと記憶装置と通信制御部を備えて、文字列を含むデータと、当該データの文字列検索用のインデックスを前記記憶装置に格納する登録部と、文字列を含む検索条件を受け付けて、前記インデックスで検索を実行する検索部と、を備えたデータ検索装置であって、前記登録部は、前記データを絞り込む所定の単位で、前記インデックスを生成し、前記検索部は、前記検索条件から前記単位毎に前記データを絞り込み、前記絞り込んだデータの前記単位毎に、前記検索条件に含まれる文字列で前記インデックスを検索する。
Description
本発明は、大規模な文書データベースから、所望の文書データを抽出するデータ検索装置および方法に関する。
プロセッサの高性能化と、ストレージの大容量化に伴って、計算機が取り扱うデータ量も増大しつつある。一方、XML(eXtensible Markup Language)のようにデータの構造を記述できる言語の普及により、複数の属性情報が付与されたデータも増大している。
このようなデータの量と質の変化に対応して、計算機による文書データの検索では、文字列を代表とする単一の検索キーワードだけでなく、データの属性を組み合わせた複合的な検索条件で検索を行うことが広く行われている。複合的な検索条件を用いることにより、計算機を扱うユーザが閲覧可能な数まで検索結果を絞り込むことができる。例えば、大容量の文書データを扱う検索システムとしては、特許等の公報を検索する検索システムが知られている。この検索システムでは、本文の文字列だけではなく、"G06F"といった技術分野を示す属性情報を組み合わせた複合的な検索条件で検索を行い、ユーザが選択可能な数まで検索結果を絞り込んでいる。
複合的な検索条件を処理するために、従来の検索システムでは図32で示すように、属性の検索条件は例えばB-treeインデックスのように属性検索が得意なインデックスにより検索を行う(例えば、非特許文献1)。一方、文字列の検索条件については、文字列検索用のインデックスを検索して検索結果を抽出する。そして、計算機は属性検索による検索結果と、文字列検索による検索結果の論理積をそれぞれ求めることで、検索結果を生成していた。
文字列の検索技術としては、文書データ中に存在する特定のデータ列を検索するインデックス検索が知られている(例えば、特許文献1)。また、複数の検索キーワードの論理積で構成される検索条件で文書情報を検索する方法が知られている(例えば、特許文献2)。
また、インデックスを作成するために、文書データから文字列を抽出して文書データから文字列を抽出する技術としては、文書データの本文からサフィックスアレイ(接尾辞配列)を抽出する技術が知られている(例えば、非特許文献2)。
Transaction Processing: Concepts and Techniques(Jim Gray ,Andreas Reuter)(日本語著、トランザクション処理〈下〉―概念と技法 日経BP社(2001/10))15.4.1 B-trees:The Basic Idea
Manber, U. and Myers, G.: Suffix arrays: A new method for on-line string searches, in 1st ACM-SIAM, Symposium on Discrete Algorithms, pp. 319-327(1990)
しかしながら、前記特許文献1では、文字列検索用のインデックスはキーとなる文字列毎に全文書データにおける出現位置を格納したものである。従来の技術では、ストレージ装置を構成するディスクドライブでは、ランダムリードよりもシーケンシャルリードの方が高速であり、また文書データの容量は全データについて処理可能な件数であったため、文字列インデックスはキーとなる文字列毎に全データ分のインデックスを作成していた。そして、検索時には検索キーワードに関係するインデックスをシーケンシャルにリードして検索する方法を採用していた。特許文献1の技術では、属性などの別の検索条件での絞り込み率が高い場合であっても、全データ分のインデックスを参照する必要があり、複雑な検索条件を効率的に処理できないという課題があった。
一方、前記特許文献2には、複数の検索キーワードの論理積で構成される検索条件において、まず出現文書数の少ない(インデックスが小さい)検索キーワードからインデックスを参照し、候補文書を抽出する検索技術が開示されている。そして、出現文書数の多い検索キーワードに対して、候補文書の識別子が現れるまでインデックスを適宜スキップしながら検索する。特許文献2では、スキップすることで検索処理の削減を実現していた。しかし、特許文献2で作成されるインデックスもキー毎に全データ分の出現位置を格納したものであり、候補文書以外の出現位置情報をスキップするとしても、全文書データ分のインデックスについてディスクドライブからのリードを行う際に、文書識別子が候補文書の識別子と合致しているか否かのチェックが必須であった。このため特許文献2では、上記スキップするか否かの判定に加えて、他の条件(出現文書数が少ない検索キーワード)での絞り込みを効率的に処理することができない、という問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、複数の検索条件を用いて大量のデータの中から高速に検索を行うことを目的とする。
本発明は、プロセッサと記憶装置と通信制御部を備えて、文字列を含むデータと、当該データの文字列検索用のインデックスを前記記憶装置に格納する登録部と、文字列を含む検索条件を受け付けて、前記インデックスで検索を実行する検索部と、を備えたデータ検索装置であって、前記登録部は、前記データを絞り込む所定の単位で、前記インデックスを生成し、前記検索部は、前記検索条件から前記単位毎に前記データを絞り込み、前記絞り込んだデータの前記単位毎に、前記検索条件に含まれる文字列で前記インデックスを検索する。
本発明によれば、検索対象データの絞り込みの単位毎に文字列検索用のインデックスを生成しておき、検索条件からデータの絞り込み単位で絞り込み、絞り込んだデータについて文字列検索用のインデックスで検索条件の検索を行って検索結果を出力することで、文字列の参照範囲を限定することができる。これにより、大規模な文書データベースを対象とした場合でも、複合的な検索条件を効率的に処理し、高速な検索処理を実現するデータ検索装置を提供することができる。
以下、本発明の一実施形態について添付図面を用いて説明する。
<第1実施形態>
図1は本発明の第1の実施の形態における検索システムの構成の一例を示すブロック図である。
図1において、本発明のデータ検索サーバ(データ検索装置)1は、文書データの登録時などにインデックスを作成して外部記憶装置(またはストレージ装置)20に格納しておき、クライアント計算機30から検索要求を受け付けたときには、複数のインデックスによって検索を実行して検索結果をクライアント計算機30に応答する。このため、データ検索サーバ1とクライアント計算機30及び外部検索サーバ40は、ネットワーク50を介して接続される。クライアント計算機30は、データ検索サーバ1に文書データを登録し、また、検索要求を送信してデータ検索サーバ1に検索を実行させる。クライアント計算機30は、検索を要求する際には複数の検索条件をデータ検索サーバ1に送信する。クライアント計算機30は、外部検索サーバ40から検索条件の一部を取得する。検索条件の一部としては、文書データの属性などである。
データ検索サーバ1は、演算処理を実行するCPU2と、プログラムやデータを格納する主記憶装置3と、ネットワーク50と通信を行う通信制御装置5と、I/O制御装置4を介して接続された外部記憶装置20と、を備えた計算機である。外部記憶装置20には、検索を実行するための補助情報としてのインデックスデータ200と、検索対象の文書データを蓄積する文書データベース250が格納される。
主記憶装置3にはデータ検索実行部10がロードされて、CPU2によって実行される。CPU2は、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、CPU2は、データ検索実行プログラムに従って動作することでデータ検索実行部10として機能する。他のプログラムについても同様である。さらに、CPU2は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。データ検索実行部10の各機能を実現するプログラムや、テーブル等の情報は、外部記憶装置20や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
なお、図示の例では、検索対象の文書データベース250をデータ検索サーバ1の外部記憶装置20に格納する例を示したが、検索対象の文書データベース250は、図示しない他の計算機やストレージ装置に格納されていても良い。
クライアント計算機30は、演算処理を実行するCPU32と、プログラムやデータを格納する主記憶装置33と、ネットワーク50と通信を行う通信制御装置35と、I/O制御装置34を介して接続された入力装置36、出力装置37と外部記憶装置38と、を備えた計算機である。
主記憶装置33にはアプリケーションプログラム300がロードされて、CPU32によって実行される。CPU32は、上述したように各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。アプリケーションプログラム300は、データ検索サーバ1に対して、文書データの登録要求や検索要求を出力し、検索結果を受け付けて出力装置37に出力する。入力装置36は、ユーザまたは管理者が操作するキーボードやマウスなどのポインティングデバイスで構成される。出力装置37はディスプレイなどの表示装置などで構成される。アプリケーションプログラム300は、入力装置36から受け付けた検索条件と、外部検索サーバ40から取得した検索条件を組み合わせて複合的な検索条件を生成してデータ検索サーバ1に検索を要求する。ここで、入力装置36から受け付ける検索条件は、検索対象の文字列で、外部検索サーバ40から取得した検索条件は、文書データの属性情報や識別子の例を示し、アプリケーションプログラム300が生成する複合的な検索条件は、文字列の検索条件と、属性情報や文書データの識別子の検索条件からなる。なお、主記憶装置33には、外部検索サーバ40から取得した検索結果を格納しておいても良い。
本実施形態では、データ検索サーバ1が文書データの検索を実行する例を示すが、検索対象のデータは文書データベースに限定されるものではなく、文字列と属性等の情報を含むデータであればよい。
<ソフトウェア構成>
次に、図2は、第1の実施の形態における検索システムのソフトウェア構成の一例を示すブロック図である。
データ検索実行部10は、システム制御部100と、データ登録制御部110と、データ検索制御部120のモジュール(プログラム)で構成される。
システム制御部100は、データ検索実行部10内の全体を制御する。システム制御部100は、クライアント計算機30から受信した要求が文書データの登録要求(以下、データ登録要求とする)であるか、文書データ250の検索要求のいずれであるかを判定して、データ登録制御部110またはデータ検索制御部120を機能させる。
システム制御部100がデータ登録要求をクライアント計算機30から受信した場合には、クライアント計算機30から受信した文書データをデータ登録制御部110に送信し、後述するようにインデックスデータ200を生成してから、文書データを文書データベース250に格納する。
データ登録制御部110は、文書データに含まれる属性情報を抽出してB-treeインデックス作成部111に送信する。B-treeインデックス作成部111は受信した属性情報についてB-treeインデックス201を生成し、インデックスデータ200に格納する。なお、B-treeインデックス201の生成方法については、公知又は周知の方法を用いればよく、例えば、前記非特許文献1を適用すればよい。B-treeインデックス201の一例として、文書データに含まれる属性情報と、文書データのデータ識別子とを対応付けることができる。
なお、本実施形態では、文書データに属性情報が含まれる例を示すが、文書データの属性情報をクライアント計算機30から受け付けるようにしても良い。
データ登録制御部110は、文書データをデータ毎インデックス作成部112に送信する。データ毎インデックス作成部112は受信した文書データについて文字列を抽出してデータ毎インデックス202を生成し、インデックスデータ200に格納する。なお、文字列からデータ毎インデックス202を生成する方法については、公知又は周知の方法を用いればよく、例えば、前記非特許文献2を適用すればよい。
ここで、データ毎インデックス202のデータ毎とは、予め設定した文字列を含むデータを絞り込む単位であり、例えば、文書データベース250に蓄積された文書データが特許公開公報等であれば、ひとつの公報番号(データ識別子)に含まれるデータが、一つのデータの単位となる。なお、データ毎の文書データの単位は、刊行物や書籍では発行の単位を一つのデータの単位とすることができる。あるいは、テキストデータなどのように収集するデータでは、「1日」あるいは「3時間」などの集計時間毎に、ひとつのデータとすることができる。
そして、本発明のデータ検索サーバ1では、「データ毎」の検索対象をB-treeインデックス201等により絞り込んでから、文字列の検索を行う文字列検索用インデックス(データ毎インデックス202)で検索する。したがって、データ登録制御部110が生成する文字列検索用のインデックスは、絞り込みの単位である「データ毎」に作成されるものである。本実施形態のように、文書データのデータ識別子単位で絞り込みを行う場合には、データ登録制御部110は、データ毎インデックス202をデータ識別子毎に生成することになる。
一方、システム制御部100が検索要求を受信した場合には、クライアント計算機30から受信した複合的な検索条件をデータ検索制御部120に送信して検索を実行させる。データ検索制御部120は検索が完了するとシステム制御部100に検索結果を送信する。システム制御部100はデータ検索制御部120から受信した検索結果をクライアント計算機30へ送信する。
ここで、クライアント計算機30は、文書データベース250から所望の文書データを抽出するため、文字列と属性を示す複数の検索条件を生成してデータ検索サーバ1に送信する。データ検索サーバ1のデータ検索制御部120は、文字列と属性からなる複合的な検索条件のうち、属性の検索条件についてはB-treeインデックス検索部121で検索を実行し、文字列の検索条件についてはデータ毎インデックス検索部122で検索を実行する。そして、データ検索制御部120は、後述するように、B-treeインデックス検索部121の出力と、データ毎インデックス検索部122の出力を合わせて検索結果を生成する。データ検索制御部120は、検索結果をシステム制御部100へ送信する。また、データ検索制御部120は、検索結果を検索結果データリスト130に格納する。
クライアント計算機30は、アプリケーションプログラム300で複合的な検索条件の生成及び検索要求や、文書データの登録要求を発行する。アプリケーションプログラム300は、複合的な検索条件を生成する際には、文字列の検索条件を入力装置36から受け付ける。そして、アプリケーションプログラム300は、属性の検索条件や文書データのデータ識別子の絞り込み条件を外部検索サーバ40から取得する。あるいは、外部検索サーバ40から予め取得しておいた検索条件や絞り込み条件を検索結果301に格納しておき、検索結果301から取得した検索条件または絞り込み条件で複合的な検索条件を生成するようにしてもよい。
本発明の第1の実施形態の概要を図3に示す。データ検索サーバ1では、文書データを格納する文書データベース250へ登録する時に、データ毎などの所定の単位で文字列検索用の複数のインデックス(データ毎インデックス202)を作成しておき、また、属性のインデックスをB-treeインデックス201として作成しておく。そして、データ検索サーバ1は複合的な検索条件を受信すると、属性で検索した結果などで絞り込んだ文書データに関するデータ毎インデックス202のみを読み込んで検索することにより、検索条件全体が合致しているか否かを判別する。属性情報の検索条件で文字列のインデックス検索の対象とする文書データを所定の単位(図中ID1、ID3等)で絞り込むことで、文字列のインデックス202の参照範囲を限定し、検索を高速化することが可能となるのである。
以下、データ検索サーバ1のデータ検索実行部10を構成する各制御部の処理内容を詳細に説明する。
<システム制御部>
まず、システム制御部100の処理の一例を、図4のPAD(Problem Analysis Diagram)図を用いて説明する。システム制御部100は、まずステップ500で、クライアント計算機30のアプリケーションプログラム300から処理要求を受信する。システム制御部100は、ステップ501で受信した処理要求の内容を解析する。ステップ502では処理要求がデータ登録要求であるか否かを判定する。処理要求がデータ登録要求であると判定した場合には、ステップ503でデータ登録制御部110に処理要求を送信し、データ登録制御部110に文書データを文書データベース250へ登録するよう指令する。
データ登録制御部110によるデータ登録の処理が完了すると、ステップ504で、システム制御部100は、登録した文書データに付与されたデータ識別子をデータ登録制御部110から受信する。
そしてステップ505でアプリケーションプログラム300にデータ識別子を送信して終了する。ステップ502で処理要求がデータ検索要求であると判定した場合には、ステップ506でデータ検索制御部120に処理要求を送信し、データ検索の開始を指令する。データ検索制御部120では、後述するようにB-treeインデックス検索部121と、データ毎インデックス検索部122によるデータ検索処理が終わると、ステップ507でデータ検索制御部から検索条件に合致するデータ識別子の集合を受信する。そしてステップ508でデータ検索制御部120が、アプリケーションプログラム300にデータ識別子の集合を検索結果として送信して処理を終了する。
以上のように、システム制御部100は、クライアント計算機30から受け付けた要求に応じてデータ登録制御部110とデータ検索制御部120のうちの一方を機能させる。
<データ検索制御部>
次に、データ登録制御部110で行われる処理の一例を、図5のPAD図を用いて説明する。データ登録制御部110は、システム制御部100からデータの登録指示を受信するのを契機に図5の処理を開始する。
まずステップ600で、データ登録制御部110は、システム制御部100から処理要求を受信する。次にステップ601では、データ登録制御部110はステップ600で受信した処理要求から登録する文書データを取得する。登録する文書データは外部記憶装置20の文書データベース250に格納しておき、処理要求に文書データの格納先を記載してもよいし、処理要求に登録する文書データを直接記載してもかまわない。また登録する文書データは1件ずつ登録してもよいし、複数件まとめて処理するようにしてもよい。
登録する文書データは本文情報と属性情報で構成されている。例えば、XMLのようなデータの場合では要素に対して属性情報を付与することができる。また、クライアント計算機30のアプリケーションプログラム300で生成された文書データの場合は独自の属性情報がデータに付与されている。
次にステップ602で、データ登録制御部110は、クライアント計算機30から取得した登録する文書データの数になるまで、ステップ603から609の一連の処理を繰り返す。
繰り返し処理の中では、まずステップ603で当該登録する文書データにデータ識別子を付与する。データ識別子は文書データ毎に固有の情報であり、データ識別子を指定すると対応するデータが一意に決まる。
次にステップ604でデータ登録制御部110は、当該文書データから属性情報を抽出する。そしてステップ605でB-treeインデックス作成部111にデータ識別子と属性情報を送信し、B-treeインデックスの作成を指令する。
B-treeは木構造のインデックスツリー(索引木)により検索を高速化する検索アルゴリズムである。B-treeでは上位ページの中の最上位のルートページから検索を開始し、最下位のリーフページにて検索対象データの出現データ情報を取得する。B-treeに関しては、非特許文献1に記載されており、作成及び検索方法は周知又は公知の方法を用いればよい。
B-treeインデックス作成部111によるB-treeインデックス作成処理が終わると、データ登録制御部110は、ステップ606でB-treeインデックス作成部111から完了メッセージを受信する。
次にステップ607では、データ登録制御部110が、当該文書データから本文情報を抽出する。そしてステップ608で、データ登録制御部110はデータ毎インデックス作成部112にデータ識別子と本文情報を送信し、データ毎インデックス202の作成を指令する。
後述するデータ毎インデックス作成部112によるデータ毎インデックス202の作成処理が終わると、データ登録制御部110は、ステップ609でデータ毎インデックス作成部112から完了メッセージを受信する。最後にステップ610で、システム制御部100にデータ識別子を送信し、データ登録制御部110によるデータ登録処理が終了する。
<データ毎インデックス作成部>
データ毎インデックス作成部112で行われる処理の一例を、図6のPAD図を用いて説明する。データ毎インデックス作成部112は、データ登録制御部110からのインデックス作成指示を契機に処理を開始する。
まずステップ700で、データ毎インデックス作成部112は、データ登録制御部110からデータ識別子と本文情報を受信する。次にステップ701でデータ毎インデックス作成部112は、受信した本文情報から全ての部分文字列と、文書データ内での当該部分文字列の出現位置を抽出する。なお、部分文字列の抽出については、単語、n-gram、サフィックスアレイ(接尾辞配列)などの公知又は周知の技術を適用することができる。
そしてステップ702で抽出した部分文字列と出現位置から、データ毎インデックス作成部112は、後述する個別インデックス(図7参照)を作成して、外部記憶装置20のデータ毎インデックス202に格納する。ここで、個別インデックスとして部分文字列とその出現位置ではなく、本文情報そのものを格納してもよい。
次にステップ703で、データ毎インデックス作成部112は、個別インデックスの格納先ポインタと、データ登録制御部110から受信した文書データのデータ識別子を対応付けて、後述するデータ毎インデックス管理テーブル(図7参照)に格納する。最後にステップ704で、データ毎インデックス作成部112はデータ登録制御部110に完了メッセージを送信して、データ毎インデックス作成部112によるデータ毎インデックス作成処理が終了する。
以上の処理により、文書データを文書データベース250へ登録する際には、外部記憶装置20のインデックスデータ200にデータ毎インデックス202が生成される。
<データ毎インデックス>
データ毎インデックス202の全体構成を図7に示す。データ毎インデックス202は上述したデータ毎インデックス管理テーブル2020と個別インデックス2021-1~2021-iで構成される。なお、個別インデックスの総称を示す符号を2021とする。
個別インデックス2021は登録したデータ数だけ存在する。つまり、データ毎に個別インデックス2021が生成される。データ毎インデックス管理テーブル2020は、文書データを特定するデータ識別子と、各文書データ内の文字列のインデックスを含む個別インデックスの対応関係を管理するテーブルである。
個別インデックス2021の一例を、図8に示す。個別インデックス2021はキー20211となる部分文字列と、文書データ内での当該部分文字列の出現位置20212とを対応付けて格納したものである。部分文字列は、上述の単語インデックス、n-gramインデックス、サフィックスアレイ(接尾辞配列)といった文字列検索用の単位で、上述のデータ毎インデックス作成部112が文書データの本文情報から抽出する。文書データの本文情報から単語を抽出する方法としては形態素解析などの手法を用いることができる。文書データの本文情報からn-gramを抽出する方法としては特許文献1に記載されているように機械的にn文字の連続する文字列を抽出する手法を用いることができる。文書データの本文情報からサフィックスアレイを抽出する手法は非特許文献2に記載されている。図8に示す例では2-gramを部分文字列のキー20211として抽出し、その出現位置情報20212で個別インデックス2021を作成している。
また、文字列検索用のインデックスに加え、文書データの本文情報から連続する数字列を抽出して、個別のB-treeインデックスを作成することも可能である。このB-treeインデックスを作成することにより、文書データの本文情報に対する数値条件検索も高速に処理することができる。
なお、個別インデックス2021としては、B-treeインデックスを含むようにしてもよい。例えば、文書データから抽出した情報と、当該情報の出現位置をB-treeインデックスで構成する。
データ毎インデックス管理テーブル2020の一例を、図9に示す。図9に示すように、データ毎インデックス管理テーブル2020では登録した文書データのデータ識別子20201と、文書データの個別インデックス2021の格納先ポインタ20202とを対応付けて格納している。
データ識別子20201でデータ毎インデックス管理テーブル2020を探索することにより、対応する個別インデックス2021の格納先を取得することができる。なお、既に登録されている文書データを更新する場合は、更新後のデータを基に個別インデックス2021を作成し、データ毎インデックス管理テーブル2020の個別インデックス2021ポインタを新たな個別インデックス2021の格納先に変更することで対応できる。また、メールサーバのデータのように文書データベース250の中に内容が重複する文書データが複数存在する場合は、個別インデックス2021を1つだけ作成し、データ毎インデックス管理テーブル2020の個別のデータ識別子20201から同じ個別インデックス2021を指し示すようにしてもよい。
<データ検索制御部>
次にデータ検索制御部120で行われる処理の一例を、図10のPAD図を用いて説明する。データ検索制御部120は、システム制御部100が受信したデータ検索指示を契機に処理を開始する。
まずステップ1100で、データ検索制御部120は、システム制御部100から処理要求を受信する。次にステップ1101でデータ検索制御部120は、受信した処理要求を解析する。そしてステップ1102でデータ検索制御部120は、解析した処理要求に属性検索条件が含まれているか否かを判定する。解析した処理要求に属性検索条件が含まれている場合には、ステップ1103へ進み、処理要求に属性検索条件が含まれていない場合にはステップ1105へ進む。
ステップ1103では、データ検索制御部120がB-treeインデックス検索部121に属性検索条件を送信し、インデックス検索を指令する。B-treeインデックス検索部121によるB-treeインデックス検索処理が終わると、ステップ1104でB-treeインデックス検索部121から完了メッセージを受信する。B-treeインデックス検索部121による検索結果である文書データのデータ識別子は検索結果データリスト130に格納される。
ステップ1102の判定で、処理要求に属性検索条件が含まれていない場合には、データ検索制御部120がステップ1105で検索結果データリスト130に文書データベース250に含まれる全データのデータ識別子を格納する。
次にステップ1106では、データ検索制御部120が処理要求にデータ識別子が含まれているか否かを判定する。処理要求にデータ識別子が含まれている場合には、データ検索制御部120が、ステップ1107で検索結果データリスト130から処理要求に含まれていないデータ識別子を削除する。
上記ステップ1106と1107の処理を加えることにより、外部検索サーバ40等の別のシステムでのデータの検索結果や、過去の検索結果(図示省略)を利用した検索対象の絞込みが可能となる。
次にステップ1108では、データ検索制御部120が処理要求に文字列の検索条件が含まれているか否かを判定する。処理要求に文字列の検索条件が含まれている場合には、ステップ1109でデータ検索制御部120が、データ毎インデックス検索部122に文字列の検索条件を送信し、インデックス検索を指令する。
データ毎インデックス検索部122によるデータ毎インデックス202の検索処理が終わると、データ検索制御部120は、ステップ1110でデータ毎インデックス検索部122から完了メッセージを受信する。
データ毎インデックス検索部122による検索処理の結果、検索結果データリスト130に格納されている文書データの識別子は文字列の検索条件に合致するものだけに限定される。
最後にステップ1111で、データ検索制御部120は、検索結果データリスト130に格納されているデータ識別子の集合を、システム制御部100に送信し、データ検索制御部120によるデータ検索処理が終了する。
以上の処理によって、データ検索制御部120は、処理要求に含まれる複合的な検索条件から属性の検索条件と文字列の検索条件と識別子の検索条件を抽出する。そして、データ検索制御部120は、属性の検索条件についてはB-treeインデックス検索部121で検索を実行させ、B-treeインデックス検索部121は、検索結果の文書データの識別子を検索結果データリスト130に格納する。そして、データ毎インデックス検索部122の文字列による検索処理の結果、検索結果データリスト130に格納されている文書データの識別子は文字列の検索条件に合致するものだけに限定される。こうして、B-treeインデックス検索部121で検索対象の文書データの識別子を特定して、これらの文書データの識別子についてデータ毎インデックス検索部122の文字列による検索処理を実行させることで、前記従来例に比して高速に検索結果を求めることが可能となる。つまり、本発明では、文字列によるインデックスの検索対象を、全てのインデックスではなく、B-treeインデックス検索部121の検索結果についてのみ検索対象とすることにより、文字列のインデックスを全て検索する必要がなくなって、大容量の文書データを高速に検索することが可能となる。
さらに、ステップ1106、1107の処理要求に含まれていない文書データのデータ識別子の除外によって、検索対象の文書データの識別子を絞り込むことで、文字列によるインデックスの検索対象をさらに限定して、検索処理をさらに高速に行うことが可能となる。
<B-treeインデックス検索部>
B-treeインデックス検索部121で行われる処理の一例を、図11のPAD図を用いて説明する。B-treeインデックス検索部121は、データ検索制御部120からのインデックス検索指示を契機に処理を開始する。
まずステップ1200で、B-treeインデックス検索部121は、データ検索制御部120から属性検索条件を受信する。次にステップ1201でB-treeインデックス検索部121は、B-treeインデックス201を参照し、属性の検索条件に合致する文書データの識別子を取得する。このB-treeインデックス201の参照処理については、公知又は周知の処理を行えば良く、例えば、非特許文献1に記載されている方法を適用すればよい。
次にステップ1202では、B-treeインデックス検索部121が、B-treeインデックス201の参照処理で取得した文書データの識別子を検索結果データリスト130に格納する。
最後にステップ1203で、B-treeインデックス検索部121が、データ検索制御部120に完了メッセージを送信して、B-treeインデックス検索部121によるB-treeインデックス201の検索処理が終了する。
この処理の結果、検索結果データリスト130には属性の検索条件に合致する文書データの識別子のみが格納されることになる。こうして、属性の検索条件をB-treeインデックス201で検索して第1の検索結果を得る。
<データ毎インデックス検索部>
データ毎インデックス検索部122で行われる処理の一例を、図12のPAD図を用いて説明する。データ毎インデックス検索部122は、データ検索制御部120からのインデックス検索指示を契機に処理を開始する。
まずステップ1300で、データ毎インデックス検索部122は、データ検索制御部120から処理要求(検索要求)に含まれる文字列の検索条件を受信する。次にステップ1301で、データ毎インデックス検索部122は、検索結果データリスト130に格納されている文書データの識別子の数に応じてステップ1302からステップ1305の一連の処理を繰り返す。
繰り返し処理の中では、まずステップ1302でデータ毎インデックス検索部122は、データ毎インデックス管理テーブル2020を参照し、当該データ識別子に対応する個別インデックス2021の格納先ポインタを取得する。
次にステップ1303で、データ毎インデックス検索部122は、個別インデックス2021を参照し、文字列の検索条件が合致するか否かを判定する。そして、ステップ1304で文字列の検索条件が個別インデックス2021に合致しないと判定した場合には、ステップ1305に進んで、検索結果データリスト130から当該文書データの識別子を削除する。
最後にステップ1306で、データ検索制御部120に完了メッセージを送信して、データ毎インデックス検索部122によるデータ毎インデックス202検索処理が終了する。
この処理の結果、検索結果データリスト130には属性の検索条件および文字列の検索条件に合致する文書データの識別子のみが格納されることになる。処理要求(検索要求)にデータ識別子が含まれる場合には、さらに、これらのデータのみに限定されている。
上記の文字列の検索条件とデータ毎インデックス202の検索には既存の手法を用いる。個別インデックス2021が単語インデックスの場合には、検索キーワードと一致する単語を探索して、出現位置情報取得する。個別インデックス2021がサフィックスアレイの場合には、非特許文献2に記載されている手法を用いる。個別インデックス2021がn-gramインデックスの場合には、特許文献1に記載されている手法を用いる。個別インデックス2021が本文情報そのものの場合には、本文情報の文字列照合を行い、検索キーワードと一致する文字列を検索する。
データ毎インデックス検索部122は、図8の例で、検索キーワード(文字列の検索条件)として"ABLE"が指定された場合には、"AB"と"LE"の出現位置情報を比較し、隣り合う出現位置が存在するか否かで検索する。
以上説明したように、属性の検索条件や他のシステムによる検索結果、過去の検索結果などの他の検索条件の絞込み単位で、文字列の検索用のインデックスであるデータ毎インデックス202を予め作成しておき、属性情報等の検索条件で絞り込まれたデータ識別子に関する文字列の検索用インデックス(データ毎インデックス202)だけに参照範囲を限定する。本発明では、このように、文字列の検索用インデックスを属性情報などから絞り込むことにより、大規模な文書データベース250を検索対象とした場合でも、複合的な検索条件を効率的に処理し、高速な検索処理を実現するデータ検索装置を提供することが可能となる。
なお、上記実施形態において、外部検索サーバ40がない場合や検索条件にデータ識別子を含めない場合には、図10のステップ1106、1107の処理を省略することができる。
また、上記実施形態では、外部記憶装置20にB-treeインデックス201とデータ毎インデックス202を格納する例を示したが、B-treeインデックス201とデータ毎インデックス202を主記憶装置3に格納するようにしてもよい。
また、上記実施形態では、文書データの絞り込み単位をデータ識別子とし、文字列検索用インデックスであるデータ毎インデックス202をデータ識別子毎に生成する例を示したが、文書データベース250の全体を複数の小領域に区分けして、小領域を文書データの絞り込み単位としてもよい。この場合の文字列検索用インデックスは、小領域毎にデータ毎インデックス202を生成することになる。
なお、上記ではB-treeインデックス201やデータ毎インデックス202を外部記憶装置20に格納した例を示したが、主記憶装置3へ格納するようにしてもよい。
<第2実施形態>
次に、本発明の第2の実施例について説明する。本実施形態では図13に示すように、文書データベース250へデータを登録する際に、データ検索サーバ1は、文書データ毎に所定の文字情報の有無を示す情報としてビットマップ203に作成しておく。そして、データ検索サーバ1は、文字列の検索時には属性の検索条件による絞込みに加え、文字列の検索条件に含まれる文字情報の有無による絞込みをビットマップ203で行うことにより、データ毎インデックス202の参照範囲をさらに限定する実施形態である。本実施形態によれば、データ毎インデックス202の外部記憶装置20からの読み込み処理や検索処理を必要最低限に絞り込むことができるため、文書データベース250のデータ毎インデックス202の検索処理を高速に行うことが可能となる。
本第2実施形態は基本的な構成は前記第1の実施形態(図1)と同様であるが、データ登録制御部110とデータ検索制御部120と、インデックスデータ200にビットマップを処理する構成を加えた点が相違する。
図14に本実施形態におけるデータ検索サーバ1の構成を示す。データ登録制御部110はB-treeインデックス作成部111とデータ毎インデックス作成部112、ビットマップ作成部113で構成される。
データ検索制御部120はB-treeインデックス検索部121とデータ毎インデックス検索部122に加えて、ビットマップ作成部113で構成される。データ検索サーバ1に接続している外部記憶装置20にはインデックスデータ200が格納されており、インデックスデータはB-treeインデックス201とデータ毎インデックス202に加えてビットマップ203が格納される。
以下、第1の実施形態と異なるデータ登録制御部110とデータ検索制御部120の処理について説明する。
データ登録制御部110の処理内容を、図15のPAD図を用いて説明する。データ登録制御部110は、システム制御部100からのデータ登録指示を契機に処理を開始する。
まずステップ600~606では、前記第1実施形態の図5と同様に、属性情報の検索条件からB-treeインデックス201を生成する。
次にステップ602で、データ登録制御部110は、取得した登録する文書データの数になるまで、ステップ603から609の一連の処理を繰り返す。
繰り返し処理の中では、まずステップ603で、データ登録制御部110が当該文書データにデータ識別子を前記第1実施形態と同様に付与し、B-treeインデックス201の作成処理が行われる。
次に、ステップ607でデータ登録制御部110が当該文書データから本文情報を抽出する。そしてステップ1600では、データ登録制御部110は、ビットマップ作成部113にデータ識別子と本文情報を送信し、後述するビットマップ203の作成を指令する。ビットマップ作成部113によるビットマップ203の作成処理が終わると、ステップ1601で、データ登録制御部110はビットマップ作成部113から完了メッセージを受信する。
次にステップ608で、データ登録制御部110は、前記第1実施形態と同様に、データ毎インデックス作成部112にデータ識別子と本文情報を送信し、データ毎インデックス202の作成を指令する。データ毎インデックス作成部112によるデータ毎インデックス202の作成処理が終わると、ステップ609でデータ登録制御部110は、データ毎インデックス作成部112から完了メッセージを受信する。最後にステップ610で、システム制御部100にデータ識別子を送信し、データ登録制御部110によるデータ登録処理が終了する。
上記B-treeインデックス作成部111とデータ毎インデックス作成部112の処理内容は前記第1実施形態で説明した。以下、本第2実施形態のビットマップ作成部113で行われる処理の一例を、図16のPAD図を用いて説明する。
ビットマップ作成部113は、データ登録制御部110からのビットマップ203の作成指令を契機に処理を開始する。まずステップ1700で、ビットマップ作成部113は、データ登録制御部110からデータ識別子と本文情報を受信する。次にステップ1701では受信した本文情報からビットマップ作成部113が全ての文字情報を抽出する。
そしてステップ1702では、ビットマップ作成部113が、抽出した文字情報に対応するビットマップ201を外部記憶装置20から取得し、データ識別子に対応するビットを"1"に変更する。そして、ビットマップ作成部113は、外部記憶装置20のビットマップ203を更新する。なお、ビットマップ201に文字情報がない場合には、ビットマップ作成部113がビットマップ203に新たなエントリを追加して、当該文書データの識別子に対応するビットを"1"に変更する。ビットマップ203は、後述するように、ある文字情報を含む文書データのデータ識別子に対応するビットは全て"1"となる。
そしてステップ1703では、更新されたビットマップ203をビットマップ作成部113が外部記憶装置20に書き戻す。最後にステップ1704で、ビットマップ作成部113は、データ登録制御部110に完了メッセージを送信して、ビットマップ作成部113によるビットマップ作成処理が終了する。なおビットマップ203の作成処理の高速化のために、更新されたビットマップ203の外部記憶装置20への書き戻しは、複数件の文書データを処理した後にまとめて行ってもよい。
以上の処理により、文書データベース250へ文書データが蓄積される度に、文字情報を含む文書データの識別子に対応するビットマップ203のビットはデータ登録制御部110で更新される。
ビットマップ203の構造の一例を図17に示す。ビットマップ203は、文字情報が文書データに存在すれば"1"、存在しなければ"0"に設定されたビットを、文書データの識別子の位置に応じて並べたビット列を、文字情報毎にまとめたマップである。
ビットマップ203は、文書データの識別子のテーブルで構成された、上位ノード2031とビット列を保持するリーフノード2032から構成される。上位ノード2031は、文書データのデータ識別子(ID)の階層構造で構成される。すなわち、上位ノード2031は、文書データのデータ識別子の範囲を格納する上位レンジ20311とポインタ20312の組を複数有する。上位レンジ20311には、所定の識別子の範囲で文書データのデータ識別子が格納され、ポインタ20312にはリーフノード2032を指し示す情報(アドレス等)が格納される。
リーフノード2032は、上位ノード2031の上位レンジ20311に含まれるデータ識別子の範囲を区分けして格納する下位レンジ20321と、文字情報20323とビット列20324を格納したマップ20322で構成される。
図示の例では、ビット列20324の長さが256ビットの例を示す。リーフノード2032には、文字情報2033毎に256のデータ識別子を示すビット列20324が格納される。ビット列20324のうち、"1"の値に対応するデータ識別子の文書データが、文字情報20323の文字列を含む。
そして、ひとつのリーフノード2032は、4つの下位レンジ20321を含み、上位ノード2031の上位レンジ20311には、データ識別子が1024個毎に区分けされて格納される。
文字情報20323にはn文字の部分文字列を用いる。nは、例えば、1以上の整数である。図17の例ではn=1の文字を文字情報20323として用いている。複数の文字情報20323のビット列20324間でビットのAND演算を行うことにより、複数の文字情報を全て含むデータのビットのみ"1"となるため、文字列検索の絞込みに用いることができる。なお、n文字の値を増やすとビットマップ203中の"1"の数が減り、絞込み率が向上するが、文字情報の種類数、すなわち作成するビットマップ203のエントリの数が増えるため、ビットマップ203の全体容量が増えてしまう。n文字の値は使用可能な外部記憶装置20の容量を考慮して定めることができる。
ビットマップ203のビット列の長さは固定(図示では、256ビット)であるため、ビットマップ203の長さで登録できるデータ数が制限されてしまう。この制限を解除するために、ビットマップを図17のように階層構造として作成する。リーフノード2032には固定長のビットマップを格納し、上位ノード2031には下位のリーフノード2032へのポインタ20312を格納する。こうすることにより、リーフノード2032を追加することで、データ数の増加に対応することができる。
次にデータ検索制御部120で行われる処理の一例を、図18のPAD図を用いて説明する。データ検索制御部120は、システム制御部100からのデータ検索指示を契機に処理を開始する。
ステップ1100~1107は、前記第1実施形態の図10と同様であり、データ検索制御部120は、システム制御部100から処理要求を受信して、B-treeインデックス201の作成と、検索結果データリスト130のデータ識別子のセットアップを行う。
次にステップ1108では、データ検索制御部120が処理要求に文字列の検索条件が含まれているか否かを判定する。処理要求に文字列の検索条件が含まれている場合には、ステップ1900でデータ検索制御部120は、ビットマップ検索部123へ文字列検索条件を送信し、ビットマップ203の検索を指令する。ビットマップ検索部123によるビットマップ203の検索処理が終わると、データ検索制御部120はステップ1901でビットマップ検索部123から完了メッセージを受信する。この時点で、検索結果データリスト130のデータ識別子は、ビットマップ検索部123によるビットマップ203の検索結果で絞り込みが行われる。つまり、文字列の検索条件を含まないデータ識別子が検索結果データリスト130から削除される。
次に、ステップ1109では前記第1実施形態の図10と同様に、データ検索制御部120が、データ毎インデックス検索部122に文字列の検索条件を送信し、インデックス検索を指令する。
データ毎インデックス検索部122によるデータ毎インデックス202の検索処理が終わると、データ検索制御部120は、ステップ1110でデータ毎インデックス検索部122から完了メッセージを受信する。
データ毎インデックス検索部122による検索処理の結果、検索結果データリスト130に格納されている文書データの識別子は文字列の検索条件に合致するものだけに限定される。
最後にステップ1111で、データ検索制御部120は、検索結果データリスト130に格納されているデータ識別子の集合を、システム制御部100に送信し、データ検索制御部120によるデータ検索処理が終了する。
上記処理により、B-treeインデックス201に加えて、ビットマップ検索によって検索対象の文書データのデータ識別子を絞り込むことができるため、検索するデータ毎インデックス202の量が低減されるので、検索処理をさらに高速で行うことが可能となる。
上記B-treeインデックス検索部121とデータ毎インデックス検索部122の処理内容は前記第1の実施形態で説明した。
以下、第2実施形態のビットマップ検索部123で行われる処理の一例を、図19のPAD図を用いて説明する。
ビットマップ検索部123は、データ検索制御部120からのビットマップ検索指示を契機に処理を開始する。まずステップ2000で、ビットマップ検索部123は、データ検索制御部120から文字列検索条件を受信する。次にステップ2001でビットマップ検索部123は、文字列検索条件から全ての文字情報を抽出する。
そしてステップ2002では、ビットマップ検索部123が抽出した文字情報に対応するビットマップ203を外部記憶装置20から取得する。そして、ビットマップ検索部123は、文書データのデータ識別子が対応するビットマップ203についてビット列20324と文字列の検索条件とのAND演算を行う。
次にステップ2003では、ビットマップ検索部123は、検索結果データリスト130に格納されているデータ識別子の数だけステップ2004とステップ2005の処理を繰り返す。繰り返し処理の中では、ステップ2004でビット列20324のAND演算結果から当該データ識別子に対応するビットを参照する。ここでAND演算の結果、ビット列20324のビットの値が"0"であると判定した場合には、ステップ2005で検索結果データリスト130から当該データ識別子を削除する。最後にステップ2006で、ビットマップ検索部123は、データ検索制御部120に完了メッセージを送信して、ビットマップ検索処理を終了する。
上記処理の結果、検索結果データリスト130中のデータ識別子が文字列検索条件から抽出した文字情報が全て含まれるデータのみに限定されることになるため、B-treeインデックス201による絞り込みに、ビットマップ203による絞り込みを加えることで、データ毎インデックス検索部122が検索するデータ毎インデックス202の検索処理を高速に行うことが可能になる。
ここでビットマップ検索部123による絞込み率が悪く、ほとんど絞り込めていない場合には、従来のキーワード毎のインデックスで検索を行う方が早い可能性もあるため、絞込み率をしきい値と比較して従来方式と併用することも可能である。ここで、絞り込み率は、例えば、ビットマップ検索前の文書データの数でビットマップ検索後の文書データの数を除した値である。そして、絞り込み率が所定のしきい値以上のときには、ほとんど絞り込めていないと判定して従来のキーワード毎のインデックスで検索を行い、絞り込み率が所定のしきい値未満のときには、上記本発明の検索を実行すればよい。
以上説明したように、第1の実施形態に示した属性検索条件による絞込みに加え、文字列検索条件に含まれる文字情報の有無で、検索対象のデータ毎インデックス202を参照するデータを絞り込むことにより、インデックス参照範囲をさらに限定し、検索処理を高速化することが可能となる。
従来のインデックス検索方法では検索キーワードが長くなると、そこから抽出されるキー文字列が増えるため、検索しなければならないキー毎のインデックスの数が増え、検索に時間が掛かる。しかし本実施形態で示した方法を用いると、検索キーワードが長くなった場合でも、ビットAND演算に使用できるビットマップの数が増え、ビットマップによるデータ絞込み率が向上するため、検索時間の長大化を防ぐことが可能となる。
さらに、検索条件に属性情報が含まれず、文字列のみで検索条件が構成されている場合には、B-treeインデックス検索部121による文書データの絞り込みを行うことができない。そこで、本第2実施形態のように、文字情報のビットマップ203で検索条件を検索することで、文字列のみの検索条件であっても検索対象の文字列用のインデックスであるデータ毎インデックス202を絞り込むことが可能となる。
なお、上記ではB-treeインデックス201、データ毎インデックス202、ビットマップ203を外部記憶装置20に格納した例を示したが、主記憶装置3へ格納するようにしてもよい。
<第3実施形態>
次に、本発明の第3の実施形態について説明する。本実施形態では図20に示すように、日付や価格などの属性検索条件と文字列検索条件の組み合わせで検索を行う際に、属性検索用のインデックスであるB-treeインデックス201を検索した結果をソートし、ソートされたデータ識別子の順にデータ毎インデックス202の検索処理を行う実施形態である。特に、本第3の実施形態では、検索要求に、属性の検索条件と文字列の検索条件に加えて、属性のソート条件と、最大出力件数と、出力単位数(例えば、上位N件)とを含むものである。なお、最大出力件数は、出力単位数のM倍としてもよい。
図32に示した従来技術では、属性の検索結果と文字列の検索結果の論理積を取ったあとに、結果をソートする必要があるが、この方法によれば、B-treeなどによるソート結果をそのまま利用することができる。またソート順に文字列の検索条件を検索することにより、一覧表示単位など必要な件数分の検索結果が得られた時点で結果を出力することができ、検索結果出力までの時間短縮も可能となる。
本第3実施形態は第1の実施形態(図1)と同様に構成されるが、システム制御部100とデータ検索制御部120の処理内容が異なる。以下、第一の実施形態と異なるシステム制御部100とデータ検索制御部120の処理について説明する。
まず、システム制御部100で行われる処理の一例を、図21のPAD図を用いて説明する。システム制御部100は、まずステップ500~505で前記第1実施形態の図4と同様に、クライアント計算機30のアプリケーションプログラム300から処理要求を受信し、登録する文書データにデータ識別子を付与してアプリケーションプログラム300に応答する。
次に、ステップ502で処理要求がデータ検索要求であるとシステム制御部100が判定した場合には、ステップ2200でデータ検索制御部120に処理要求を送信し、データ検索を指令する。
そしてステップ2201で、システム制御部100がデータ検索制御部120から完了メッセージを受信するまでステップ2202とステップ2203の処理を繰り返す。繰り返し処理ではまずステップ2202で、システム制御部100は、データ検索制御部120から検索条件に合致するデータ識別子の集合を受信する。そしてステップ2203でシステム制御部100は、アプリケーションプログラム300にデータ識別子の集合を検索結果として送信する。このアプリケーションプログラム300が受信するデータ識別子の集合は後述するように処理要求にて指定された出力の単位数となっている。
次にデータ検索制御部120で行われる処理の一例を、図22のPAD図を用いて説明する。データ検索制御部120によるデータ検索では、B-treeインデックス検索部121によって処理されたソート済みの属性情報の検索結果集合の上位のデータから順に、データ毎インデックス202の検索処理を行う。そして、データ検索制御部120は所定の出力単位分のデータが検索された時点でシステム制御部100に検索結果を出力するのが、本実施形態の特徴である。
図22において、データ検索制御部120は、システム制御部100からのデータ検索指示を契機に処理を開始する。まずステップ1100で、データ検索制御部120は、システム制御部100から処理要求を受信する。次にステップ2300で受信した処理要求をデータ検索制御部120が解析し、属性検索条件、ソート条件、文字列検索条件、最大出力件数、出力単位を抽出する。
そしてステップ2301でデータ検索制御部120は、B-treeインデックス検索部121に属性検索条件とソート条件を送信し、B-treeインデックス201の検索を指令する。B-treeインデックス検索部121によるB-treeインデックス検索処理が終わると、ステップ1104でデータ検索制御部120は、B-treeインデックス検索部121から完了メッセージを受信する。
B-treeインデックス検索部121は、属性の検索結果のデータ識別子を、検索結果データリスト130にソート条件に従って格納する。
次にステップ2303では、最大出力件数分の出力が完了するか、検索結果データリスト130が空になるまでステップ2304からステップ2306の一連の処理を繰り返す。繰り返し処理ではまずステップ2304で、データ検索制御部120が、データ毎インデックス検索部122に文字列検索条件と出力単位を送信し、データ毎インデックス202の検索を指令する。
データ毎インデックス検索部122によるデータ毎インデックス202検索処理が終わると、ステップ1110でデータ検索制御部120は、データ毎インデックス検索部122から完了メッセージを受信する。
次にステップ2305でデータ検索制御部120は、検索結果データリスト130に格納されているデータ識別子の上位N件(Nは出力単位)をシステム制御部100に送信する。そしてステップ2306で、データ検索制御部120は、出力したデータ識別子を検索結果データリスト130から削除する。最後にステップ1111で、データ検索制御部120は、検索結果データリスト130に格納されているデータ識別子の集合を、システム制御部100に送信し、データ検索制御部120によるデータ検索処理が終了する。
ステップ2301のB-treeインデックス検索部121の処理内容は、基本的には前記第1の実施形態と同様であるが、検索結果データリスト130に格納するデータ識別子をソート条件で指定された順に格納する点が異なる。
データ毎インデックス検索部122で行われる処理の一例を、図23のPAD図を用いて説明する。データ毎インデックス検索部122は、データ検索制御部120からのインデックス検索指示を契機に処理を開始する。まずステップ2400で、データ毎インデックス検索部122は、データ検索制御部120から文字列の検索条件と出力単位を受信する。
次にステップ1301でデータ毎インデックス検索部122は、検索結果データリスト130に格納されているデータ識別子の数まで、ステップ1302からステップ2402の一連の処理を繰り返す。繰り返し処理の中では、まずステップ1302でデータ毎インデックス検索部122は、データ毎インデックス管理テーブル2020を参照し、当該データ識別子に対応する個別インデックス2021の格納先ポインタを取得する。次にステップ1303で、データ毎インデックス検索部122は、個別インデックス2021を参照し、文字列の検索条件が合致するか否かを判定する。そしてステップ1304で文字列の検索条件が個別インデックス2021に合致しないと判定した場合には、データ毎インデックス検索部122は、ステップ1305で検索結果データリスト130から当該データ識別子を削除する。
次にステップ2401で、データ毎インデックス検索部122は、文字列の検索条件に合致したデータが出力単位分(N件)得られたと判定した場合には、ステップ2402で繰り返し処理を終了する。
最後にステップ1306で、データ毎インデックス検索部122は、データ検索制御部120に完了メッセージを送信して、データ毎インデックス検索部122によるデータ毎インデックス202検索処理が終了する。
この処理の結果、データ検索制御部120は、検索結果データリスト130に格納されたソート条件順のデータ識別子の上位N件(Nは出力単位)は処理要求に合致したデータのみに限定される。出力単位(N件)に含まれないデータについては、属性の検索条件のみ合致しており、文字列検索条件の検索は行われていない。
以上説明したように、本第3実施形態に示した技術用いることにより、日付や価格などの属性の検索条件と文字列の検索条件の組み合わせで検索し、属性の順でソートして出力する場合に、B-treeなどによるソート結果をそのまま利用して検索対象のデータ毎インデックス202を絞り込むことができ、検索処理を高速化することが可能となる。
また、一覧表の表示単位など必要な件数分の検索結果が得られた時点で結果を出力することができ、検索結果出力までの時間短縮も可能となる。例えば、一覧表示の1ページ目に表示する件数分のみを処理して出力し、クライアント計算機30のユーザなどが検索結果の閲覧作業を行っている間に、次の2ページ目に表示するデータの検索処理をデータ検索サーバ1側で並行して実施することで、処理の高速化が可能となる。
<第4実施形態>
次に、本発明の第4の実施形態について説明する。本実施形態では図24に示すように、文字列の検索条件(検索キーワード)の出現頻度から算出されるテンポラリスコアの降順で文書データのデータ識別子をソートし、降順にデータ毎インデックス202の検索処理を行う実施形態である。本実施形態では、検索キーワードの出現頻度を基にしたテンポラリスコアは検索結果から動的に算出するものであり、日付や価格などの静的な属性情報のように予め算出してソートしておくことは困難である。
そのため、各文書データにおける文字情報の出現頻度を作成しておき、文字列の検索条件及び出現頻度情報は、予め作成しておいた文字情報の出現頻度を用いてテンポラリにスコアを算出する。具体的には検索キーワードに含まれる文字情報の中で最も出現頻度が少ないものをデータ毎に算出する。そして、最も少ない出現頻度を最小出現頻度とする。検索キーワードの実際の出現頻度はこの最小出現頻度より大きくなることはないため、この最小出現頻度の値をテンポラリスコアとして算出し、文書データのデータ識別子をテンポラリスコアの降順にソートする。その後、ソート順にデータ毎インデックス202を検索文字列で検索し、実際の出現頻度を求め、正規の出現頻度をスコアとして算出する。また、一覧表示の1ページ分について検索結果を取得すると、正規スコアで検索結果をソートし直してクライアント計算機30のアプリケーションプログラム300に出力する。
本第4の実施形態は基本的に第1の実施形態と同様の構成(図1)をとるが、その中のB-treeインデックス作成部が出現頻度表作成部114に変更され、B-treeインデックス検索部121が出現頻度表検索部124に変更され、B-treeインデックスが出現頻度表204に変更されたものである。
図25に本第4実施形態におけるデータ検索サーバ1の構成を示す。データ登録制御部110は出現頻度表作成部114とデータ毎インデックス作成部112で構成される。
データ検索制御部120は出現頻度表検索部124とデータ毎インデックス検索部122で構成される。データ検索サーバ1に接続している外部記憶装置20にはインデックスデータ200が格納されており、インデックスデータ200は出現頻度表204とデータ毎インデックス202で構成されている。その他の構成は、前記第3実施形態と同様である。
以下、第三の実施形態と処理内容が異なるデータ登録制御部110とデータ検索制御部120の処理について説明する。
データ登録制御部110の処理内容を、図26のPAD図を用いて説明する。データ登録制御部110は、システム制御部100からのデータ登録指示を契機に処理を開始する。ステップ600では、データ登録制御部110がシステム制御部100から処理要求を受信する。
次にステップ601では、受信した処理要求からデータ登録制御部110が文書データを取得する。そしてステップ602で、取得した文書データの数だけステップ603から609の一連の処理を繰り返す。繰り返し処理の中では、まずステップ603でデータ登録制御部110は、当該文書データにデータ識別子を付与する。次にステップ607では、データ登録制御部110が当該文書データから本文情報を抽出する。
そして、ステップ2700では、データ登録制御部110が出現頻度表作成部114にデータ識別子と本文情報を送信し、後述する出現頻度表204の作成を指令する。出現頻度表作成部114による出現頻度表204の作成処理が終わると、ステップ2701でデータ登録制御部110が出現頻度表作成部114から完了メッセージを受信する。
次にステップ608では、データ登録制御部110がデータ毎インデックス作成部112にデータ識別子と本文情報を送信し、データ毎インデックス202の作成を指令する。データ毎インデックス作成部112によるデータ毎インデックス202作成処理は前記第1実施形態と同様である。データ毎インデックス作成部112によるデータ毎インデックス202作成処理が終わると、ステップ609でデータ登録制御部110は、データ毎インデックス作成部112から完了メッセージを受信する。最後にステップ610で、データ登録制御部110が、システム制御部100にデータ識別子を送信し、データ登録制御部110によるデータ登録処理が終了する。
出現頻度表作成部114で行われる処理の一例を、図27のPAD図を用いて説明する。出現頻度表作成部114は、データ登録制御部110からの出現頻度表作成指示を契機に処理を開始する。まずステップ2800で、出現頻度表作成部114は、データ登録制御部110からデータ識別子と本文情報を受信する。
次にステップ2801では、受信した本文情報から出現頻度表作成部114が全ての文字情報と、各文字情報の出現頻度を抽出する。そして。ステップ2802では、抽出した文字情報と出現頻度から出現頻度表作成部114が、出現頻度表204を作成して外部記憶装置20に格納する。
最後にステップ2803、データ登録制御部110に完了メッセージを送信して、出現頻度表作成部114による出現頻度表204の作成処理が終了する。
出現頻度表204の構造を図28に示す。出現頻度表204は、既定の文字情報2041が文書データに出現する頻度をデータ識別子2042-0~2042-iと対応付けて格納した表である。文字情報2041にはn文字の部分文字列を用いる。nは1以上の整数である。図28の例ではn=1の文字を文字情報として用いている。出現頻度表204の検索時には、検索キーワードに含まれる文字情報の出現頻度を文書データ毎に取得し、出現頻度が最も少ない値を用いてテンポラリスコアを算出する。
例えば、検索キーワード"BC"の場合には"B"と"C"の出現頻度を各識別子2042-0~2042-i毎に取得し、その最小値としてデータID0は"2"、データID1は"0"として、テンポラリスコアを算出する。スコア算出には出現頻度をそのまま用いてもよいし、データ長で除算するなどの正規化処理を施してもよい。
次に、データ検索制御部120で行われる処理の一例を、図29のPAD図を用いて説明する。データ検索制御部120によるデータ検索では、出現頻度表検索部124によってテンポラリスコアの降順にソートされた検索結果集合の上位のデータから順に、データ毎インデックス202検索の処理を行う。そして、データ検索制御部120は、検索要求に含まれる出力単位(N件)分のデータが検索された時点でシステム制御部100に検索結果を出力する。データ検索制御部120は、システム制御部100からのデータ検索指示を契機に処理を開始する。
まずステップ1100で、データ検索制御部120はシステム制御部100から処理要求を受信する。次にステップ3000で受信した処理要求をデータ検索制御部120が解析し、文字列検索条件、最大出力件数、出力単位を抽出する。そしてステップ3001ではデータ検索制御部120が出現頻度表検索部124に文字列検索条件を送信し、出現頻度表204の検索を指令する。
出現頻度表検索部124による出現頻度表204検索処理が終わると、ステップ3002でデータ検索制御部120は、出現頻度表検索部124から完了メッセージを受信する。出現頻度表検索部124による検索結果のデータ識別子は検索結果データリスト130にテンポラリスコアの降順で格納されている。
次にステップ2303でデータ検索制御部120は、最大出力件数分の出力が終了するか、検索結果データリスト130が空になるまでステップ2304からステップ2306の一連の処理を繰り返す。繰り返し処理ではまずステップ2304で、データ検索制御部120がデータ毎インデックス検索部122に文字列の検索条件と出力単位(N件)を送信し、データ毎インデックス202の検索を指令する。
データ毎インデックス検索部122によるデータ毎インデックス202の検索処理が終わると、ステップ1110でデータ検索制御部120が、データ毎インデックス検索部122から完了メッセージを受信する。次にステップ2305でデータ検索制御部120は、検索結果データリスト130に格納されているデータ識別子の上位N件(Nは出力単位)をシステム制御部100に送信する。
そしてステップ2306で、データ検索制御部120は、出力したデータ識別子を検索結果データリスト130から削除する。
最後にステップ1111で、検索結果データリスト130に格納されているデータ識別子の集合を、システム制御部100に送信し、データ検索制御部120によるデータ検索処理が終了する。
次に出現頻度表検索部124で行われる処理の一例を、図30のPAD図を用いて説明する。出現頻度表検索部124は、データ検索制御部120からの出現頻度表204の検索指令を契機に処理を開始する。
まずステップ3100で、出現頻度表検索部124はデータ検索制御部120から文字列検索条件を受信する。次にステップ3101で出現頻度表検索部124は文字列の検索条件から全ての文字情報を抽出する。そしてステップ3102で全ての文書データのデータ識別子について、ステップ3103とステップ3104の処理を繰り返す。繰り返し処理は、ステップ3101で出現頻度表検索部124が抽出した文字情報の当該データ識別子における出現頻度を取得する。そしてステップ3104では、取得した出現頻度の最小値を出現頻度表検索部124が当該データ識別子におけるテンポラリスコアとして算出する。
次にステップ3105では、出現頻度表検索部124が全ての文書データのデータ識別子をテンポラリスコアの降順にソートし、全てのデータ識別子とテンポラリスコアを検索結果データリスト130に格納する。
最後にステップ3106で出現頻度表検索部124は、データ検索制御部120に完了メッセージを送信して、出現頻度表検索部124による出現頻度表204検索処理が終了する。
上記出現頻度表検索部124の処理の結果、検索結果データリスト130中のデータ識別子はテンポラリスコアの降順にソートされており、データ毎インデックス検索部122は、その上位のデータ識別子から順にデータ毎インデックス202の検索処理を行うことになる。
データ毎インデックス検索部122で行われる処理の一例を、図31のPAD図を用いて説明する。データ毎インデックス検索部122は、データ検索制御部120からのデータ毎インデックス202の検索指令を契機に処理を開始する。まずステップ2400で、データ毎インデックス検索部122は、データ検索制御部120から文字列の検索条件と出力単位を受信する。次にステップ1301でデータ毎インデックス検索部122は、検索結果データリスト130に格納されているデータ識別子の全てについて、ステップ1302からステップ2402の一連の処理を繰り返す。繰り返し処理では、まずステップ1302でデータ毎インデックス検索部122が、データ毎インデックス管理テーブル2020を参照し、当該データ識別子に対応する個別インデックス2021の格納先ポインタを取得する。次にステップ1303で、データ毎インデックス検索部122は、個別インデックス2021を参照し、文字列の検索条件が合致するか否かを検索する。そしてステップ1304で文字列の検索条件が個別インデックス2021に合致すると判定した場合には、ステップ3200でデータ毎インデックス検索部122は、検索キーワードの出現頻度から正規スコアを算出する。正規スコアの算出は、上述した正規化などで行えばよい。
そして、データ毎インデックス検索部122は、検索結果データリスト130に格納されているテンポラリスコアを算出した正規スコアで更新する。ステップ1304では、文字列の検索条件が個別インデックス2021に合致しないと判定した場合には、ステップ1305でデータ毎インデックス検索部122が検索結果データリスト130から当該データ識別子を削除する。次にステップ2401でデータ毎インデックス検索部122が、文字列の検索条件に個別インデックス2021が合致したデータ識別子が出力単位数だけ得られたと判定した場合には、ステップ3202に進んでデータ毎インデックス検索部122が検索結果データリスト130に格納されているデータ識別子の上位N件(Nは出力単位)を正規スコアの降順でソートする。そしてステップ2402で繰り返し処理を終了する。最後にステップ1306で、データ毎インデックス検索部122は、データ検索制御部120に完了メッセージを送信して、データ毎インデックス検索部122によるデータ毎インデックス202検索処理が終了する。
上記処理の結果、検索結果データリスト130に格納されているデータ識別子の上位N件(Nは出力単位)は処理要求に合致したデータのみに限定され、正規スコアの降順でソートし直されていることになる。出力単位であるN件以下のデータは、テンポラリスコアの降順でソートされたままである。
以上説明したように、本実施形態に示した方法を用いることにより、文字列の検索条件を満たすテンポラリスコアのように、動的に生成される情報で文書データのデータ識別子をソートして出力する場合でも、テンポラリスコアの上位に位置する可能性の高い文書データから文字列検索条件を検索することが可能となる。この結果、検索結果の一覧表示の単位など、所定の件数分の検索結果が得られた時点でクライアント計算機30へ結果を出力することができ、データ検索サーバ1では検索結果の出力までの時間短縮が可能となる。この結果、クライアント計算機30へ結果を出力する検索処理を高速化できる。
<まとめ>
以上のように第1~第4の実施形態では、属性情報や文字列を含む検索条件で検索対象の文書データのデータ識別子を絞り込んでから、文字列検索用インデックスで文字列の検索を行うことで、文字列の検索用インデックスの量を低減することでデータ検索の高速化を図る。文字列の検索を行う対象の絞り込みは、属性情報や文字列など検索条件に含まれる情報で行うことができる。
そして、文字列検索用のインデックスであるデータ毎インデックス202は、検索対象の絞り込みの単位でインデックスが構成されているので、絞り込みの後に読み込むデータ量は前記従来例に比して大幅に低減されるので、大容量のデータであっても高速に検索することが可能となる。
また、検索条件に属性情報などが含まれず、文字列のみで検索条件が構成されている場合は、ビットマップ203や文字情報の出現頻度表204を用いることで、検索対象の文書データのデータ識別子を絞り込むことで、データ検索の高速化を図ることができる。
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、図中の制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
Claims (19)
- プロセッサと記憶装置と通信制御部を備えて、文字列を含むデータと、当該データの文字列検索用のインデックスを前記記憶装置に格納する登録部と、文字列を含む検索条件を受け付けて、前記インデックスで検索を実行する検索部と、を備えたデータ検索装置であって、
前記登録部は、
前記データを絞り込む所定の単位で、前記インデックスを生成し、
前記検索部は、
前記検索条件から前記所定の単位毎に前記データを絞り込み、前記絞り込んだデータの前記単位毎に、前記検索条件に含まれる文字列で前記インデックスを検索することを特徴とするデータ検索装置。 - 請求項1に記載のデータ検索装置であって、
前記登録部は、
前記データを前記記憶装置へ格納する際に、前記データの絞り込み単位毎に文字列検索用の前記インデックスを生成することを特徴とするデータ検索装置。 - 請求項2に記載のデータ検索装置であって、
前記登録部は、
前記データの絞り込み単位毎に部分文字列と当該部分文字列の出現位置を抽出して個別インデックスを生成し、前記データの絞り込み単位毎にデータ識別子を付与し、前記個別インデックスと前記データの絞り込みの単位とを対応付けるインデックス管理情報を設定し、
前記インデックスは、
前記インデックス管理情報と複数の個別インデックスを含むことを特徴とするデータ検索装置。 - 請求項3に記載のデータ検索装置であって、
前記個別インデックスは、
前記部分文字列として、サフィックスアレイとn-gramインデックス及び単語インデックスのいずれかひとつを含むことを特徴とするデータ検索装置。 - 請求項4に記載のデータ検索装置であって、
前記個別インデックスは、B-treeインデックスを含み、
前記登録部は、
前記データの絞り込み単位毎に前記データから情報と当該情報の出現位置を抽出してB-treeインデックスを生成することを特徴とするデータ検索装置。 - 請求項3に記載のデータ検索装置であって、
前記登録部は、
前記データを前記記憶装置へ格納する際に、前記データから抽出した属性情報と、当該データのデータ識別子とからB-treeインデックスを生成し、
前記検索部は、
前記検索条件から属性情報を抽出して前記B-treeインデックスを検索し、前記抽出した属性情報を含むデータ識別子を有する個別インデックスを文字列の検索対象として絞り込むことを特徴とするデータ検索装置。 - 請求項3に記載のデータ検索装置であって、
前記検索部は、
前記検索条件にデータ識別子が含まれる場合には、前記データ識別子に対応する個別インデックスを文字列の検索対象として絞り込むことを特徴とするデータ検索装置。 - 請求項3に記載のデータ検索装置であって、
前記登録部は、
前記データを前記記憶装置へ格納する際に、前記データの絞り込み単位毎に前記データから抽出した部分文字列の有無とデータ識別子とを対応付けてビットマップを生成し、
前記検索部は、
前記検索条件から文字列を抽出して前記ビットマップを検索し、前記検索条件の文字列を含むデータ識別子を有する前記個別インデックスを文字列の検索対象として絞り込むことを特徴とするデータ検索装置。 - 請求項8に記載のデータ検索装置であって、
前記登録部は、
前記データを前記記憶装置へ格納する際に、前記データから抽出した属性情報と、当該データのデータ識別子とからB-treeインデックスを生成し、
前記検索部は、
前記検索条件から属性情報を抽出して前記B-treeインデックスを検索し、前記抽出した属性情報を含むデータ識別子を有する個別インデックスを文字列の検索対象として絞り込み、さらに、前記検索条件から文字列を抽出して前記ビットマップを検索し、前記検索条件の文字列を含むデータ識別子を有する個別インデックスを文字列の検索対象として絞り込むことを特徴とするデータ検索装置。 - 請求項8に記載のデータ検索装置であって、
前記登録部は、
前記ビットマップを、前記データ識別子を所定の範囲で区分けした上位ノードと、前記所定の範囲に含まれるデータ識別子と部分文字列の有無を示すビット列を含むリーフノードで構成することを特徴とするデータ検索装置。 - 請求項3に記載のデータ検索装置であって、
前記検索条件は、
前記検索結果の出力数を含み、
前記検索部は、
前記検索条件から前記単位毎に前記データを絞り込んだ後に、所定の条件で前記絞り込んだデータの単位をソートして、当該ソートされたデータの絞り込み単位毎に前記検索条件に含まれる文字列で前記インデックスを検索し、前記検索条件の文字列に合致するインデックスのデータ識別子を検索結果として出力し、当該検索結果の数が前記出力数に達した時点で検索を終了することを特徴とするデータ検索装置。 - 請求項11に記載のデータ検索装置であって、
前記登録部は、
前記データの絞り込み単位毎に部分文字列の出現頻度と前記データの絞り込み単位に対応するデータ識別子を対応付けて出現頻度情報に格納し、
前記検索部は、
前記検索条件から前記単位毎に前記データを絞り込んだ後に、前記検索条件の文字列の出現頻度を前記出現頻度情報から求めて、出現頻度が最小の部分文字列の値を検索条件の文字列のテンポラリスコアとして求め、前記絞り込んだデータの単位を前記テンポラリスコアの降順でソートし、当該ソートされたデータの絞り込み単位毎に前記検索条件に含まれる文字列で前記インデックスを検索することを特徴とするデータ検索装置。 - 請求項12に記載のデータ検索装置であって、
前記検索条件は、
前記ソート対象の件数を含み、
前記検索部は、
前記検索条件の文字列に合致するインデックスのデータ識別子を検索結果として出力し、前記ソート対象の件数に達すると、前記テンポラリスコアに代わって正規の出現頻度を算出して前記データ識別子をソートすることを特徴とするデータ検索装置。 - 請求項3に記載のデータ検索装置であって、
前記登録部は、
前記絞り込み単位のデータが更新されたときには、前記更新されたデータから前記個別インデックスを生成し、当該前記絞り込み単位のデータを管理するインデックス管理情報を更新することを特徴とするデータ検索装置。 - 請求項3に記載のデータ検索装置であって、
前記登録部は、
内容が重複する前記絞り込み単位のデータが複数存在するときには、前記データから前記個別インデックスをひとつ生成し、当該前記絞り込み単位のデータを管理するインデックス管理情報で、内容が重複する前記絞り込み単位のデータのデータ識別子を前記ひとつの個別インデックスに対応付けることを特徴とするデータ検索装置。 - 請求項3に記載のデータ検索装置であって、
前記登録部は、
所定のキーワード毎のインデックスを生成して前記記憶装置に格納し、
前記検索部は、
前記検索条件から前記単位毎に前記データを絞り込み、絞り込む前のデータの単位数と絞り込んだ後のデータの単位数との比に応じて、前記キーワード毎のインデックスと、前記個別インデックスの何れを用いるかを判定することを特徴とするデータ検索装置。 - 請求項16に記載のデータ検索装置であって、
前記検索部は、
前記絞り込む前のデータの単位数で前記絞り込んだ後のデータの単位数を除した比が所定のしきい値以上のときに、前記キーワード毎のインデックスを用いることを特徴とするデータ検索装置。 - プロセッサと記憶装置と通信制御部とを備えた計算機で、文字列を含むデータと、当該データの文字列検索用のインデックスを前記記憶装置に格納し、文字列を含む検索条件を受け付けて、前記インデックスで検索を実行するデータの検索方法であって、
前記計算機が、前記文字列を含むデータを前記記憶装置に格納する第1のステップと、
前記計算機が、前記データを絞り込む所定の単位で、前記インデックスを生成して前記記憶装置に格納する第2のステップと、
前記計算機が、前記文字列を含む検索条件を受け付けて、前記検索条件から前記単位毎に前記データを絞り込む第3のステップと、
前記計算機が、前記絞り込んだデータの前記単位毎に、前記検索条件に含まれる文字列で前記インデックスを検索する第4のステップと、
を含むことを特徴とするデータの検索方法。 - プロセッサと記憶装置と通信制御部とを備えた計算機で、文字列を含むデータと、当該データの文字列検索用のインデックスを前記記憶装置に格納し、文字列を含む検索条件を受け付けて、前記インデックスで検索するプログラムであって、
前記文字列を含むデータを前記記憶装置に格納する第1の手順と、
前記データを絞り込む所定の単位で、前記インデックスを生成して前記記憶装置に格納する第2の手順と、
前記文字列を含む検索条件を受け付けて、前記検索条件から前記単位毎に前記データを絞り込む第3の手順と、
前記絞り込んだデータの前記単位毎に、前記検索条件に含まれる文字列で前記インデックスを検索する第4の手順と、
を前記計算機に実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/076061 WO2013069149A1 (ja) | 2011-11-11 | 2011-11-11 | データ検索装置、データの検索方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/076061 WO2013069149A1 (ja) | 2011-11-11 | 2011-11-11 | データ検索装置、データの検索方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2013069149A1 true WO2013069149A1 (ja) | 2013-05-16 |
Family
ID=48288771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2011/076061 WO2013069149A1 (ja) | 2011-11-11 | 2011-11-11 | データ検索装置、データの検索方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2013069149A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017194762A (ja) * | 2016-04-18 | 2017-10-26 | 富士通株式会社 | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 |
US10628488B2 (en) | 2015-03-27 | 2020-04-21 | Hitachi, Ltd. | Document retrieval system and retrieval method |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS648440A (en) * | 1987-07-01 | 1989-01-12 | Hitachi Ltd | Automatic retrieving system for document |
JPH07319920A (ja) * | 1994-05-24 | 1995-12-08 | Hitachi Ltd | 文書検索方法及び装置 |
JP2002041567A (ja) * | 2000-07-31 | 2002-02-08 | Hitachi Ltd | データベース管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体 |
JP2008305175A (ja) * | 2007-06-07 | 2008-12-18 | Hitachi Ltd | 文書検索方法 |
-
2011
- 2011-11-11 WO PCT/JP2011/076061 patent/WO2013069149A1/ja active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS648440A (en) * | 1987-07-01 | 1989-01-12 | Hitachi Ltd | Automatic retrieving system for document |
JPH07319920A (ja) * | 1994-05-24 | 1995-12-08 | Hitachi Ltd | 文書検索方法及び装置 |
JP2002041567A (ja) * | 2000-07-31 | 2002-02-08 | Hitachi Ltd | データベース管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体 |
JP2008305175A (ja) * | 2007-06-07 | 2008-12-18 | Hitachi Ltd | 文書検索方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628488B2 (en) | 2015-03-27 | 2020-04-21 | Hitachi, Ltd. | Document retrieval system and retrieval method |
JP2017194762A (ja) * | 2016-04-18 | 2017-10-26 | 富士通株式会社 | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 |
US11080234B2 (en) | 2016-04-18 | 2021-08-03 | Fujitsu Limited | Computer readable recording medium for index generation |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858282B2 (en) | Information searching apparatus, information managing apparatus, information searching method, information managing method, and computer product | |
US10579661B2 (en) | System and method for machine learning and classifying data | |
CN108509547B (zh) | 一种信息管理方法、信息管理系统及电子设备 | |
US8620900B2 (en) | Method for using dual indices to support query expansion, relevance/non-relevance models, blind/relevance feedback and an intelligent search interface | |
EP3602351A1 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
WO2017151194A1 (en) | Atomic updating of graph database index structures | |
WO2010047286A1 (ja) | 検索システム、検索方法およびプログラム | |
US20110264997A1 (en) | Scalable Incremental Semantic Entity and Relatedness Extraction from Unstructured Text | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
US11663177B2 (en) | Systems and methods for extracting data in column-based not only structured query language (NoSQL) databases | |
Cheng et al. | Supporting entity search: a large-scale prototype search engine | |
JP4237813B2 (ja) | 構造化文書管理システム | |
WO2008038416A1 (fr) | Dispositif de recherche de document et procédé de recherche de document | |
Yu et al. | Indexing the pickup and drop-off locations of NYC taxi trips in PostgreSQL–lessons from the road | |
JP5869948B2 (ja) | パッセージ分割方法、装置、及びプログラム | |
WO2013069149A1 (ja) | データ検索装置、データの検索方法及びプログラム | |
JP6212639B2 (ja) | 検索方法 | |
Xu et al. | Full-text search engine with suffix index for massive heterogeneous data | |
JP5374881B2 (ja) | 情報検索システム、情報検索方法およびプログラム | |
JP2007048318A (ja) | リレーショナルデータベースの処理方法およびリレーショナルデータベース処理装置 | |
Yadav et al. | Scalable thread based index construction using wavelet tree | |
Kaporis et al. | ISB-tree: A new indexing scheme with efficient expected behaviour | |
JP2016062522A (ja) | データベース管理システム、データベースシステム、データベース管理方法およびデータベース管理プログラム | |
Qiu et al. | An architecture for cell-centric indexing of datasets |
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: 11875456 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 11875456 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |