WO2023276168A1 - 検索装置、検索方法、および記録媒体 - Google Patents

検索装置、検索方法、および記録媒体 Download PDF

Info

Publication number
WO2023276168A1
WO2023276168A1 PCT/JP2021/031457 JP2021031457W WO2023276168A1 WO 2023276168 A1 WO2023276168 A1 WO 2023276168A1 JP 2021031457 W JP2021031457 W JP 2021031457W WO 2023276168 A1 WO2023276168 A1 WO 2023276168A1
Authority
WO
WIPO (PCT)
Prior art keywords
attribute
record
index
search
source
Prior art date
Application number
PCT/JP2021/031457
Other languages
English (en)
French (fr)
Inventor
譲二 佐伯
卓也 佐伯
慎也 佐伯
Original Assignee
株式会社インフォメックス
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP2021108325A external-priority patent/JP6970867B1/ja
Priority claimed from JP2021108326A external-priority patent/JP6974665B1/ja
Priority claimed from JP2021128808A external-priority patent/JP6974666B1/ja
Application filed by 株式会社インフォメックス filed Critical 株式会社インフォメックス
Priority to CN202180005754.4A priority Critical patent/CN115803730A/zh
Priority to US17/777,219 priority patent/US20230281197A1/en
Priority to EP21893108.7A priority patent/EP4137962A4/en
Publication of WO2023276168A1 publication Critical patent/WO2023276168A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A90/00Technologies having an indirect contribution to adaptation to climate change
    • Y02A90/10Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation

Definitions

  • the present invention relates to a search device and the like for searching information.
  • Patent Document 1 Conventionally, there have been search systems that aim to realize high-speed searches using indexes (see Patent Document 1, for example).
  • the base sequence of genes and the amino acid sequence of proteins are huge, and they are often stored as columns in a record. can be several GB.
  • data handling gene/genome information are often stored in flat files (general text files) with a relatively simple layout and distributed.
  • the present invention aims to provide a technology that enables high-speed information retrieval even for data sources in which the length of one record is extremely long, for example.
  • the present invention can be applied to data sources whose record length is not long, it is more effective for data sources whose record length is long.
  • the search device of the first invention has attribute position information specifying a position where an attribute value exists for each of one or more records out of two or more records and for each of one or more attributes of each record.
  • an array index storage unit for storing an array index
  • a condition reception unit for receiving search conditions including an attribute identifier corresponding to an attribute value, and acquiring attribute position information corresponding to the attribute identifier of the search condition from the array index
  • a search unit that uses the attribute position information to acquire an attribute value corresponding to an attribute identifier of a search condition from a data source storage unit that stores a data source that includes two or more records having two or more attribute values
  • a result output unit for outputting search results including attribute values acquired by the search unit.
  • the array index storage unit stores one or more records that are part of the two or more records.
  • An array index having attribute position information of one or more attribute values among two or more attribute values possessed by the record is stored, and the search unit is placed before the attribute value identified by the attribute identifier possessed by the search condition.
  • first attribute position information corresponding to the attribute identifier identifying the attribute value of the search condition
  • second attribute identifier corresponding to the attribute value identifying the attribute value located after the attribute value identified by the attribute identifier of the search , and is an attribute value that exists between the position specified by the first attribute position information and the position specified by the second attribute position information, and corresponds to the attribute identifier that the search condition has
  • a search device that acquires attribute values from a data source.
  • an array having attribute order information specifying the order in which the attribute position information of the attribute values exists for each of the two or more attributes Further comprising an array label/index storage unit in which the label/index is stored, the search unit acquires attribute order information corresponding to the attribute identifier included in the search condition from the array label/index, and uses the attribute order information to: A search device for obtaining attribute position information corresponding to an attribute identifier of a search condition from an array index, and using the attribute position information to obtain an attribute value corresponding to the attribute identifier of the search condition from a data source.
  • the search device of the fourth invention is an index corresponding to the record of the data source for any one of the first to third inventions, and the position of the record containing the key item value and the key item value is
  • the data source further comprises a record index storage unit that stores record indexes, which are two or more sets of record position information to be specified, and the data source stores two or more records each having a key item value and two or more attribute values.
  • the search condition has a key item value
  • the search unit acquires record position information paired with the key item value of the search condition from the record index, and finds the record corresponding to the position specified by the record position information. and acquires from a data source an attribute value in a record that corresponds to an attribute identifier included in a search condition.
  • the search unit further comprises a secondary index storage unit that stores a secondary index that is a set of record/index record position information that specifies a location where information exists and a key item value of the record, and the search unit stores the The first record/index record position information and the second record/index record position information corresponding to the key item value of the secondary index are acquired from the secondary index, and the first record/index record position information and the second record ⁇ Determine the record index record position information between the index record position information from the record index, acquire the record position information paired with the record index record position information from the record index, and specify the record position information
  • a search device that determines a record corresponding to a position and obtains from a data source an attribute value in the record that corresponds to an attribute identifier included in a search condition.
  • the search condition has a key item value
  • the data source storage unit stores a source identifying the data source Two or more data sources associated with the identifier are stored, and each of the two or more data sources is identified by the source identifier, the minimum key item value possessed by the data source identified by the source identifier, and the source identifier.
  • the source index storage unit stores the source index having the maximum key item value of the data source, and the search unit matches the key item value of the search condition or has the key item value between them.
  • the data source storage unit stores two or more data sources associated with source identifiers for identifying the data sources. is stored, and for each of the two or more data sources, a source identifier having a source identifier, a minimum attribute identifier possessed by the data source identified by the source identifier, and a maximum attribute identifier possessed by the data source identified by the source identifier Further comprising a source index storage unit in which the index is stored, the search unit matches the attribute identifier of the search condition, or stores the source identifier paired with the minimum attribute identifier and the maximum attribute identifier sandwiching the attribute identifier. , the attribute position information corresponding to the attribute identifier of the search condition is obtained from the source index, and the attribute position information corresponding to the attribute identifier of the search condition is obtained from the array index. from a data source identified by a source identifier.
  • the search device of the eighth invention for any one of the first to seventh inventions, includes one or more for each of the two or more records in the data source and for each attribute.
  • the search device further comprises an array index generation unit that acquires attribute position information specifying a position where each attribute value of is present, generates an array index having the attribute position information, and stores the array index in an array index storage unit.
  • two or more data sources associated with source identifiers for identifying data sources are stored in the data source storage unit, and two or more Acquire the attribute order information that identifies the location where the attribute position information exists for each attribute in the array label/index generation to generate the array label/index having the attribute order information and store it in the array label/index storage unit.
  • a record index generation unit that refers to a data source, generates a record index that is a set of a key item value and record position information for each of two or more records in the data source, and stores the record index in the record index storage unit.
  • a set of record/index record position information specifying the location where the record position information exists and the key item value of the record is acquired.
  • a secondary index generating unit for generating a secondary index and storing it in a secondary index storage unit; a source identifier for each of two or more data sources; and a minimum key item possessed by the data source identified by the source identifier.
  • a value and a maximum key item value of a data source identified by a source identifier are obtained, a source index having the source identifier, a minimum key item value, and a maximum key item value is generated, and stored in a source index storage unit. and an accumulating source index generator.
  • the data source is associated with last update time information specifying the last update time
  • the array index is is associated with generation time information that specifies when the array index was generated, and if a predetermined condition is met, the last update time indicated by the last update time information is later than the generation time indicated by the generation time information.
  • the search device further comprises an index updating unit that determines whether or not and if it is later, operates the array index generating unit to configure the array index.
  • the search device of the present invention is information defining two or more data sources each including one or more records having one or more attribute values, and is a source identifier that is an identifier of the data source and an attribute identifier of the data source.
  • Source layer definition information that is information having one or more source attribute definition information including a source attribute identifier, and a table that is a search target based on search conditions and that includes one or more records having one or more attribute values.
  • User class definition information that is information that defines a user table that is information having a user table identifier that identifies the user table and one or more pieces of user attribute definition information that includes a user attribute identifier that is an attribute identifier of the user table Then, based on the search condition, generate a search command to be issued to each of the two or more data sources, obtain search results corresponding to the search command, and use the two or more search results to respond to the search condition
  • a search device that searches for information by referring to a data dictionary having conversion rule definition information, which is information for creating integrated data, and refers to a condition reception unit that receives search conditions for a user table and the data dictionary.
  • a search unit that integrates search results corresponding to two or more data sources using conversion rule definition information and user layer definition information, and acquires integrated data corresponding to search conditions; and integration acquired by the search unit and a result output unit for outputting data.
  • the conversion rule definition information includes one or more conversion views defining a conversion view configured using one or more data sources out of two or more data sources. It has view information, and the conversion view information is information defining a conversion view that can include one or more records having one or more view attribute values. View attribute value source information specifying an acquisition method, and one or more view attribute definition information having one or more view attribute definition information, and the user attribute definition information acquires a user attribute value using one or more view attribute values of one or more conversion views.
  • the search unit acquires one or more user attribute identifiers included in the search condition, and acquires user attribute source information corresponding to each of the one or more user attribute identifiers.
  • a source determining means for acquiring one or more view attribute identifiers corresponding to user attribute value source information and acquiring source identifiers corresponding to each of the one or more view attribute identifiers from view attribute definition information; a search condition and a view attribute value; a command generation means for generating a search command for each data source identified by each of the two or more source identifiers obtained by the source determination means using the original information; a source search means for obtaining the search results obtained from the source search means; and an integration means for obtaining integrated data obtained by integrating the search results for each of the two or more data sources obtained by the source search means using the search conditions and the user layer definition information.
  • a search device comprising:
  • any one of the one or more view attribute value source information is a source attribute identifier of any one of two or more data sources or one or more of the view attribute identifiers of any of the one or more conversion views, and an arithmetic expression or program identifier having as parameters attribute values corresponding to the one or more attribute identifiers
  • the search unit comprising: When acquiring a view attribute value corresponding to the view attribute value source information, acquire attribute values corresponding to one or more attribute identifiers possessed by the view attribute value source information from the data source or conversion view, and obtain the acquired one or more to a program identified by an arithmetic expression or a program identifier, executes the arithmetic expression or program, and obtains a view attribute value.
  • the conversion rule definition information has two or more pieces of conversion view information, and two or more search results obtained based on the two or more pieces of conversion view information.
  • the integrating means is a retrieval device that acquires integrated data by combining two or more search results according to the combining method specified by the combining method identifier.
  • the conversion rule definition information is: Having one combination method identifier, "UNION” forms one record by grouping two or more search results by key items and aggregating two or more attribute values of non-key items Information indicating that two or more search results are combined by merging. "CHOICE" selects the attribute value of a key item included in one or more search results from among two or more search results according to the order of priority. and aggregate two or more attribute values of non-key items, and combine two or more search results by selection processing that constitutes one record.
  • the attribute value of the key item of one search result out of two or more search results is the attribute value of the key item included in another search result different from the one search result, and included in the one search result Information indicating that two or more search results are to be combined by complementary processing that forms one record by adding an attribute value of a non-key item and aggregating two or more attribute values of non-key items. It is a device.
  • any one of the one or more pieces of user attribute value source information is a view attribute identifier of any one or more conversion views or One or more attribute identifiers among source attribute identifiers of any one of two or more data sources, and an arithmetic expression or program identifier having attribute values corresponding to the one or more attribute identifiers as parameters,
  • attribute values corresponding to one or more attribute identifiers possessed by the user attribute source information are acquired from the conversion view or data source, and the acquired one or more
  • a search device that gives an attribute value to an arithmetic expression or a program identified by a program identifier, executes the arithmetic expression or program, and obtains a user attribute value.
  • the source layer definition information has command source information for generating a search command for the data source, and the command source corresponding to each of the two or more data sources
  • the information includes at least two or more different types of instruction source information
  • the search unit generates a search instruction for obtaining information from each of the two or more data sources according to the instruction source information for each of the two or more data sources. and obtains search results based on a search command, integrates two or more search results, and obtains integrated data.
  • the two or more different types of instruction source information include information for generating search instructions for SQL statements and information for generating search modules
  • the search unit generates a search instruction, which is an SQL statement according to the instruction source information, for a data source corresponding to the SQL statement according to the instruction source information for each of the two or more data sources, and generates data corresponding to the search module.
  • a search instruction that is an interface of the search module according to the instruction source information is generated, and for each of the two or more data sources, search results based on the search instruction are obtained, and two or more search results are obtained. It is a search device that integrates and acquires integrated data.
  • the source layer definition information has connection information for accessing each of two or more data sources
  • the search unit uses the connection information to connect A search device that accesses a data source corresponding to information, obtains search results based on a search instruction from the data source, integrates two or more search results, and obtains integrated data.
  • search device of the present invention for at least one of the two or more data sources, one or more of the two or more records possessed by the data source
  • An array index having attribute position information specifying a position where an attribute value exists is stored for each attribute and for each of one or more attributes of each record.
  • a search device that obtains position information from an array index uses the attribute position information to obtain attribute values corresponding to attribute identifiers included in search conditions from a data source, and configures integrated data having the attribute values.
  • a search device of the present invention is an index corresponding to records of a data source including two or more records having key item values corresponding to two or more key items and attribute values corresponding to one or more attribute identifiers. , two or more record indexes that are sets of pairs of record position information specifying the positions of records containing one or more key item values and one or more key item values corresponding to one or more key item combinations; A record index storage unit storing two or more record indexes corresponding to different key item combinations, a condition reception unit that receives search conditions having key item values, and a search from the two or more record indexes.
  • a search unit that acquires record location information and acquires attribute values in the record corresponding to the location specified by the record location information from the data source, and a result output unit that outputs search results including the attribute values acquired by the search unit. and a search device.
  • the search device of the present invention specifies the position where the attribute value exists for each of at least one of the two or more records and for each of at least one attribute of each record.
  • the search condition further has an attribute identifier, and the search unit stores the attribute position information corresponding to the attribute identifier of the search condition,
  • a search device that obtains an attribute value corresponding to an attribute identifier included in a search condition from a data source using attribute position information obtained from an array index.
  • two or more sets of one or more key item values and record position information are combinations of one or more key item values. is sorted as a key, and if the key item at the top of the record index matches the key item corresponding to the key item value of the search condition from two or more record indexes, the search unit selects the record ⁇ Select an index, acquire the record location information paired with the key item value of the search condition from the selected record index, and use the attribute value in the record corresponding to the location specified by the record location information as the data source. It is a search device that acquires from.
  • the search unit includes two or more record indexes in which the leading key item of the record index matches the key item corresponding to the key item value of the search condition. exists, it is determined whether the next key item of two or more record indexes matches the key item of the search condition, and the most key item from the beginning of the record index is the key of the search condition. Select one record index included in the item, acquire the record position information paired with the key item value of the search condition from the selected record index, and search for the record corresponding to the position specified by the record position information. It is a search device that acquires attribute values in the data source.
  • the search device of the present invention refers to the data source, and uses two or more record indexes that are pairs of key item values and record position information of each of two or more records of the data source.
  • a search device further comprising a record index generator that generates two or more record indexes corresponding to combinations of one or more different key items and stores them in a record index storage unit.
  • the record/index generation unit determines two or more combinations of one or more key items that satisfy the selection conditions, and sets each of the two or more sets.
  • a search device that generates a record index, which is a set of key item values and record position information of two or more records corresponding to a combination of one or more key items, and stores the record index in a record index storage unit.
  • the selection condition is to select a key item corresponding to an attribute value whose distribution of attribute values contained in each of two or more records of the data source is equal to or greater than a threshold value.
  • a threshold value a combination of one or more key items including, or a combination of one or more key items including a key item corresponding to an attribute value included at a frequency equal to or higher than a threshold in one or more past search conditions It is a search device that exists.
  • information retrieval can be performed at high speed.
  • a search system including a search device that searches data sources for information using one or more types of indexes will be described.
  • the one or more types of indexes are, for example, an array index described later, an array label index described later, a record index described later, a secondary index described later, and a source index described later.
  • a search system including a search device that uses a data source to generate one or more types of index corresponding to the data source will be described.
  • FIG. 1 is a conceptual diagram of a search system A according to this embodiment.
  • the search system A includes, for example, a search device 1 , one or more data source management devices 2 , and one or more terminal devices 3 .
  • the search device 1 is a device that searches for information from data sources.
  • the data source management device 2 is a device in which one or more data sources are stored.
  • the terminal device 3 is a terminal used by a user who searches for information.
  • the search device 1 and data source management device 2 are, for example, so-called servers, such as cloud servers and ASP servers. It should be noted that the search device 1 and the data source management device 2 may be of any type. Also, the search device 1 may be a stand-alone device. In such a case, the search system A does not have to have the data source management device 2 or the terminal device 3 . Also, in such a case, the data source is stored in the search device 1 .
  • FIG. 2 is a block diagram of search system A in this embodiment.
  • FIG. 3 is a block diagram of the search device 1 that constitutes the search system A. As shown in FIG.
  • the search device 1 includes a storage unit 11, a reception unit 12, a processing unit 13, and an output unit 14.
  • the storage unit 11 includes a data source storage unit 111 and an index storage unit 112 .
  • the index storage unit 112 includes an array index storage unit 1121 , an array label/index storage unit 1122 , a record/index storage unit 1123 , a secondary index storage unit 1124 , and a source index storage unit 1125 .
  • the accepting unit 12 includes a condition accepting unit 121 .
  • the processing unit 13 includes an index generation unit 131 , a search unit 132 and an index update unit 133 .
  • the index generator 131 includes an array index generator 1311 , an array label/index generator 1312 , a record index generator 1313 , a secondary index generator 1314 , and a source index generator 1315 .
  • the output unit 14 has a result output unit 141 .
  • the data source management device 2 has a data source storage unit 111 .
  • the terminal device 3 includes a terminal storage unit 31, a terminal reception unit 32, a terminal processing unit 33, a terminal transmission unit 34, a terminal reception unit 35, and a terminal output unit 36.
  • Various types of information are stored in the storage unit 11 that constitutes the search device 1 .
  • Various types of information are, for example, a data source, which will be described later, and one or more types of indexes, which will be described later.
  • the data source storage unit 111 stores one or more data sources. Note that the data source storage unit 111 does not have to exist in the search device 1 . In such a case, the data source to be searched is stored in the data source management device 2 .
  • a data source is a collection of data to be searched. Data can be called information.
  • a data source is typically a single file. However, the data source may be, for example, one database, one table in the database, or the like.
  • a data source typically has one or more records.
  • a record may be called a row, a tuple, or the like, for example.
  • the delimitation between records is recognizable, for example, by the first delimiter.
  • the first delimiter is, for example, a return code, TAB code, space, etc., but it does not matter.
  • the data source may have data other than the search target. Data other than search targets are, for example, item labels and attribute identifiers.
  • the item label is the label of the item, but it may be the item name.
  • Items include, for example, key items and detail items.
  • a key item is an identifier for a key item value.
  • a detail item is an item that includes a key item.
  • key items and detail items may also be considered to be attribute identifiers.
  • key item values and detail item values are also attribute values that constitute a record.
  • An attribute identifier is information that identifies an attribute. The attribute identifier is, for example, attribute name and attribute ID.
  • a record usually has two or more attribute values.
  • a record may also have key field values and detail field values. However, a record may have one attribute value.
  • the delimitation is recognizable, eg, separated by a second delimiter.
  • the second delimiter is, for example, comma ",", colon “:”, semicolon ";”, space, TAB code, etc., but it does not matter.
  • a data source is associated with a source identifier.
  • the source identifier is information for identifying a data source, such as a file name and file ID.
  • the key item values are predetermined, for example. It should be noted that "determined in advance" usually means that it is determined at the time of index generation according to a user's designation.
  • Attribute values in the data source are usually variable length, not fixed length. Records in a data source are also typically variable rather than fixed length. However, attribute values and records in the data source may be of fixed length.
  • a data source is preferably associated with one or more source attribute values.
  • the source attribute value is the attribute value of the data source.
  • the source attribute values are, for example, last update time information, updater identifier, size, and type identifier.
  • the last update time information is information specifying the last update time of the data source, for example, year, month, day, hour, minute, second, month, day, hour, minute.
  • the updater identifier is information that identifies the updater (usually the last updater) of the data source.
  • the size is the data size of the data source, for example, number of bytes or number of bits.
  • the type identifier is information that identifies the type of data source, such as "file”, "RDB”, and “table”. "File” indicates that the data source is a file.
  • RDB indicates that the data source is RDB (relational database).
  • Table indicates that the data source is tabular information.
  • the index storage unit 112 stores one or more types of indexes.
  • An index is information (usually an index) that is referenced to retrieve desired information from a data source.
  • the index is, for example, an array index (to be described later), an array label index (to be described later), a record index (to be described later), a secondary index (to be described later), and a source index (to be described later).
  • Each index of one or more types is, for example, a file.
  • the index may be information in a database such as RDB, and its physical structure does not matter.
  • the information in the database is, for example, a table.
  • the index is associated with information at the time of creation.
  • the creation time information is information specifying the time when the index was created, for example, year, month, day, hour, minute, second, month, day, hour, minute.
  • array indexes are stored in the array index storage unit 1121 .
  • the array index storage unit 1121 normally stores an array index for each data source. That is, array indices are typically associated with source identifiers that identify data sources. Note that if there is only one data source to be searched, the array index need not be associated with the source identifier.
  • An array index is information for identifying the position of an attribute value within a record.
  • An array index has one or more array index records that are information for each record held by the data source.
  • An array index record has attribute position information for each attribute of each record.
  • the attribute position information is information specifying the position where the attribute value exists.
  • Attribute location information is typically the offset within the record of the attribute value. However, the attribute position information may be an offset or the like in the data source. Attribute location information is associated with, for example, a record identifier that identifies a record and an attribute identifier.
  • the array index preferably has attribute position information of some attribute values corresponding to all records, but does not have attribute position information of all attribute values corresponding to all records that the data source has. may have attribute position information of all attribute values corresponding to some records, or may have attribute position information of some attribute values corresponding to some records.
  • the array index When an array index has attribute position information only for some attribute values, the array index has the attribute position information in the order of the attribute values in the record of the data source.
  • the array label/index storage unit 1122 stores array labels/indexes.
  • the array label/index storage unit 1122 normally stores an array label/index for each data source. That is, array label indices are typically associated with source identifiers. If there is only one data source to be searched, the array label/index need not be associated with the source identifier.
  • the array label index is information for specifying the order of attributes in the data source records.
  • the array label/index has one or more array label/index records that are information for each record held by the data source.
  • the array label/index record is information indicating the order of attributes in the record.
  • An array label/index record is, for example, a set of an attribute identifier and attribute order information.
  • Each of the two or more array label index records may be, for example, attribute identifiers arranged in order within the record.
  • the array label index is preferably information specifying the order of all attributes in the record.
  • the attribute identifiers are sorted in the array label index.
  • a record index is stored in the record index storage unit 1123 .
  • the record index storage unit 1123 normally stores a record index for each data source. That is, record indices are typically associated with source identifiers. Note that if there is only one data source to be searched, the record index need not be associated with the source identifier.
  • a record index is an index corresponding to a record in a data source.
  • the record index has one or more record index records for specifying the location of records in the data source.
  • a record index record has a key item value or a combination of two or more key item values, and record position information.
  • a record/index record may be a set of a key item value, record position information, and record/index record position information. It is also preferable to have separate record indexes with different key item values or combinations of key item values and record location information within the same record.
  • a key item value is an attribute value contained in a record, and is an attribute value that serves as a key. It is preferable that the key item value is unique information that can identify the record, but it does not have to be unique information.
  • the record location information is information that identifies the location of the record containing the key item value.
  • the record location information is, for example, an offset within the data source that identifies the location of the record.
  • the record position information is, for example, the offset at the beginning of the record.
  • the record position information may be, for example, the offset of the last information in the record.
  • the record/index record position information is information that specifies the position of the record/index record in the record index.
  • the record index record position information is, for example, the offset of the record index record in the record index.
  • the key item values are sorted in the record index.
  • the record/index record and the array index record are associated.
  • a record index record and an array index record are associated, for example, by a key item value.
  • a secondary index is stored in the secondary index storage unit 1124 .
  • the secondary index storage unit 1124 normally stores a secondary index for each data source. That is, secondary indices are typically associated with source identifiers. Note that if there is only one data source to be searched, the secondary index need not be associated with the source identifier.
  • a secondary index is an index for high-speed access to the record index.
  • a secondary index is information corresponding to one or more records that are part of two or more records that a data source has.
  • the secondary index has a secondary index record for each record.
  • a secondary index record is a set of a key item value and record/index record position information.
  • the record index record position information is a position in the record index, and is information for specifying a position where the record position information exists.
  • a key item value is a key item value that a record has.
  • the key item values in the secondary index are sorted.
  • a source index is stored in the source index storage unit 1125 .
  • a source index is an index for each data source.
  • a source index is, for example, a set of source index records for each data source.
  • a source index record is, for example, a set of a source identifier, minimum key item value, and maximum key item value.
  • the minimum key item value is the minimum key item value that the data source identified by the source identifier has.
  • the maximum key item value is the maximum key item value that the data source identified by the source identifier has. In such cases, each of the two or more data sources typically contains different records.
  • a source index record is, for example, a set of a source identifier, a minimum attribute identifier, and a maximum attribute identifier.
  • the minimum attribute identifier is the minimum attribute identifier that the data source identified by the source identifier has.
  • the maximum attribute identifier is the maximum attribute identifier that the data source identified by the source identifier has. In such a case, attribute values of different attributes are usually stored in each of the two or more data sources.
  • a source index record is, for example, a set of a source identifier, minimum key item value, maximum key item value, minimum attribute identifier, and maximum attribute identifier.
  • attribute values of some attributes of some records are usually stored in each of two or more data sources.
  • the reception unit 12 receives various instructions and information.
  • Various instructions and information are, for example, a search condition, a data source, and a part of information constituting a data source, which will be described later.
  • reception usually means reception from the terminal device 3, but reception of information input from an input device such as a keyboard, mouse, or touch panel, and reading from a recording medium such as an optical disk, magnetic disk, or semiconductor memory It may also be a concept including acceptance of received information.
  • the condition accepting unit 121 accepts search conditions.
  • Search conditions include, for example, one or more attribute identifiers.
  • the search condition includes, for example, one or more key item values.
  • Search conditions include, for example, one or more attribute identifiers and one or more key item values.
  • the processing unit 13 performs various types of processing. Various types of processing are, for example, processing performed by the index generating unit 131, the searching unit 132, and the index updating unit 133. FIG.
  • the processing unit 13 stores the data source in the data source storage unit 111 . At that time, the processing unit 13 acquires the last update time information from a clock (not shown) and associates the last update time information with the data source.
  • the processing unit 13 uses the part of the information to update the data source. At that time, the processing unit 13 acquires the last update time information from a clock (not shown) and associates the last update time information with the data source.
  • the index generation unit 131 generates an index from one or more data sources.
  • the array index generation unit 1311 generates an array index for each of one or more data sources and stores it in the array index storage unit 1121.
  • the array index generation unit 1311 acquires attribute position information for each record in the data source and for each attribute value of one or more.
  • the array index generation unit 1311 acquires an array index record having attribute position information of a part of each attribute value for each record in the data source, and configures an array index having the one or more array index records. , is preferably stored in the array index storage unit 1121 . However, the array index generation unit 1311 obtains an array index record having attribute position information of each attribute value for each record in the data source, and generates an array index having the one or more array index records. may be configured and stored in the array index storage unit 1121 .
  • An array index record is preferably information that has only attribute position information of some attribute values among all attribute values in the record. It should be noted that the selection method of the partial attribute value does not matter. Some attribute values, for example, are preferably selected for each predetermined value (for example, every four such as the first, fifth, ninth, etc.), but even if a predetermined number are selected at random good.
  • the array index generation unit 1311 acquires attribute position information for each one or more of the two or more records in the data source and for each one or more attribute values. The array index generation unit 1311 then generates an array index having attribute position information for each record and each attribute value, and stores the generated array index in the array index storage unit 1121 .
  • the array index generation unit 1311 for example, accumulates the acquired attribute position information in the array index storage unit 1121 so as to correspond to the record identifier or key item value and the attribute value identifier.
  • the array index generation unit 1311 normally scans the data source, recognizes the record for each first delimiter, scans the record, recognizes the attribute value for each second delimiter, and for example, from the beginning of the record, The position next to each second delimiter is obtained as attribute position information for each attribute value.
  • the array label/index generation unit 1312 generates an array label/index for each of one or more data sources and stores it in the array label/index storage unit 1122 .
  • the array label/index generation unit 1312 acquires, for example, an attribute value identifier and attribute order information for each of two or more attributes from a data source, and generates an array label that is a set of the attribute value identifier and attribute order information. Acquiring an index record, forming an array label/index having the two or more array label/index records, and storing the array label/index in the array label/index storage unit 1122 .
  • the array label/index generation unit 1312 sort the array label/index records as the attribute value identifier key to configure the array label/index.
  • array index record has attribute position information for all attribute values, array labels and indexes are unnecessary.
  • the record/index generation unit 1313 refers to the data source and acquires, for each record, a record/index record having key item values and record position information for each of two or more records of the data source. Then, the record/index generation unit 1313 generates a record/index having a set of record/index records for each record, and stores it in the record/index storage unit 1123 .
  • the record/index generation unit 1313 acquires record/index record position information specifying the position of the record/index record in the record/index for each of one or more record/index records, and generates the record/index record position information. It is preferable to construct a record index record with
  • the record/index generation unit 1313 preferably sorts the record/index records using the key item value as a key to form a record/index.
  • the secondary index generation unit 1314 generates, for each data source, for each of one or more records that are a part of the two or more records that the data source has, the record/index record position information and the key item value of the record.
  • a set of secondary index records is acquired, a secondary index having the one or more secondary index records is constructed, and stored in the secondary index storage unit 1124 .
  • the record index may not be necessary.
  • the secondary index generation unit 1314 refers to the record index corresponding to the data source for each data source, is a part of the records of the record index, and generates record indexes of two or more records.
  • a secondary index record that is a set of record position information and key item value is acquired, a secondary index having two or more secondary index records is generated, and stored in the secondary index storage unit 1124 .
  • the secondary index records correspond to some records/index records, but the method of selecting those part of the records/index records does not matter.
  • Some records/index records for example, are preferably selected for each predetermined value (for example, every four such as 1st, 5th, 9th, etc.), but only a predetermined number of records are selected at random. can be
  • the source index generation unit 1315 obtains source index records for each of the two or more data sources, generates a source index having two or more source index records, and stores the source index records in the source index storage unit 1125.
  • a source index record is, for example, a set of a source identifier, a minimum key item value, and a maximum key item value.
  • a source index record is, for example, a set of a source identifier, a minimum attribute identifier, and a maximum attribute identifier.
  • a source index record is, for example, a set of a source identifier, a minimum key item value, a maximum key item value, a minimum attribute identifier, and a maximum attribute identifier.
  • the source index generation unit 1315 is unnecessary.
  • the search unit 132 acquires the attribute position information corresponding to the attribute identifier of the search condition from the array index, and uses the attribute position information to convert the attribute value corresponding to the attribute identifier of the search condition to the key item value. from a data source containing one or more records with two or more attribute values.
  • the search unit 132 for example, the first attribute position information corresponding to the attribute identifier that identifies the attribute value that is arranged before the attribute value identified by the attribute identifier of the search condition received by the condition reception unit 121 and , and second attribute position information corresponding to the attribute identifier identifying the attribute value arranged after the attribute value identified by the attribute identifier included in the search condition from the array index.
  • the search unit 132 is an attribute value that exists between the position specified by the first attribute position information and the position specified by the second attribute position information, and corresponds to the attribute identifier that the search condition has. Get the attribute value to be used from the data source.
  • the search unit 132 acquires the attribute order information corresponding to the attribute identifier of the search condition received by the condition reception unit 121 from the array label/index. Next, using the attribute order information, the search unit 132 acquires attribute position information corresponding to the attribute identifier included in the search condition from the array index. Next, using the attribute position information, the search unit 132 acquires the attribute value corresponding to the attribute identifier included in the search condition from the data source.
  • the search unit 132 acquires the attribute order information corresponding to the attribute identifier of the search condition received by the condition reception unit 121 from the array label/index.
  • the search unit 132 is arranged after the first attribute position information corresponding to the attribute identifier that identifies the attribute value arranged before the order indicated by the attribute order information, and after the order indicated by the attribute order information.
  • Second attribute location information corresponding to the attribute identifier that identifies the attribute value is obtained from the array index.
  • the search unit 132 is an attribute value that exists between the position specified by the first attribute position information and the position specified by the second attribute position information, and corresponds to the attribute identifier that the search condition has. Get the attribute value to be used from the data source.
  • the search unit 132 acquires record position information paired with the key item value of the search condition from the record index. Next, the search unit 132 determines the record corresponding to the position specified by the record position information, and retrieves the attribute value in the record corresponding to the attribute identifier included in the search condition from the data source. get. If no attribute identifier is indicated in the search condition, it may be considered that the attribute identifiers included in the search condition are all attribute identifiers.
  • the search unit 132 acquires two key item values sandwiching the key item value of the search condition from the secondary index. Next, the search unit 132 acquires the first record/index record position information and the second record/index record position information paired with each of the two acquired key item values from the secondary index. Next, the search unit 132 searches for a record/index record between the first record/index record position information and the second record/index record position information, and includes the key item value of the search condition. A record/index record is determined, and record position information in the record/index record is acquired. Next, the search unit 132 acquires from the data source the attribute value corresponding to the attribute identifier included in the search condition, which is the attribute value in the record corresponding to the position specified by the record position information. Note that the search unit 132 acquires the attribute position information of the attribute value corresponding to the attribute identifier included in the search condition using the array index, and acquires the attribute value of the position specified by the attribute position information from the data source. is preferred.
  • the search unit 132 When the key item values are sorted in the record index, the search unit 132 preferably determines the record/index record containing the key item value of the search condition by binary search. Search is fine.
  • the search unit 132 acquires from the source index a source identifier that matches the key item value of the search condition or pairs with the minimum key item value and the maximum key item value that sandwich the key item value. Next, the search unit 132 acquires attribute position information corresponding to the attribute identifier included in the search condition from the array index from the data source identified by the source identifier. Next, the search unit 132 uses the attribute position information to obtain attribute values in the record that correspond to attribute identifiers included in the search conditions.
  • the search unit 132 acquires from the source index a source identifier that matches the attribute identifier of the search condition or pairs with the minimum and maximum attribute identifiers that sandwich the attribute identifier.
  • the search unit 132 acquires attribute position information corresponding to the attribute identifier included in the search condition from the array index corresponding to the data source identified by the source identifier.
  • the search unit 132 acquires an attribute value corresponding to the attribute identifier included in the search condition, which is the attribute value in the record in the data source identified by the source identifier.
  • the search unit 132 acquires the source identifier corresponding to the key item value of the search condition and the attribute identifier of the search condition from the source index.
  • the search unit 132 acquires two key item values sandwiching the key item value of the search condition from the secondary index corresponding to the data source identified by the source identifier.
  • the search unit 132 acquires the first record/index record position information and the second record/index record position information paired with each of the two acquired key item values from the secondary index.
  • the search unit 132 searches for a record/index record between the first record/index record position information and the second record/index record position information, and includes the key item value of the search condition.
  • a record/index record is determined, and record position information in the record/index record is acquired.
  • the search unit 132 acquires attribute order information corresponding to the attribute identifier included in the search condition from the array label index. Next, using the attribute order information, the search unit 132 acquires attribute position information corresponding to the attribute identifier included in the search condition from the array index. Next, the search unit 132 acquires from the data source the attribute value specified by the attribute position information, which is the attribute value in the record specified by the acquired record position information.
  • the index update unit 133 determines that the last update time indicated by the last update time information acquired from the data source is greater than the generation time indicated by the generation time information corresponding to one or more types of indexes. It is determined whether it is later or not, and if it is later, the index generation unit 131 is operated to configure one or more of each type of index. In addition, the index update unit 133 normally overwrites the old index in the index storage unit 112 with one or more configured indexes of each type.
  • the one or more types of index are one or more of array index, array label index, record index, secondary index, and source index.
  • the predetermined conditions are, for example, that an instruction from the user has been received, that a predetermined time has come, and that the data source has been updated.
  • the output unit 14 acquires various types of information. Various types of information are, for example, search results to be described later. Note that the output here is usually transmission to the terminal device 3, but display on a display, projection using a projector, printing on a printer, storage on a recording medium, other processing devices or other The concept may include delivery of processing results to a program or the like.
  • the result output unit 141 outputs search results including the attribute values acquired by the search unit 132 . Search results usually have attribute values.
  • the data source management device 2 manages one or more data sources.
  • the data source management device 2 has a data source storage unit 111 .
  • Various types of information are stored in the terminal storage unit 31 that constitutes the terminal device 3 .
  • Various types of information are, for example, search conditions and data sources.
  • the terminal reception unit 32 receives various instructions and information.
  • Various instructions and information are, for example, search conditions, data sources, and partial information of data sources.
  • reception means reception of information input from input devices such as keyboards, mice, and touch panels, reception of information transmitted via wired or wireless communication lines, optical disks, magnetic disks, semiconductor memories, etc. This is a concept including acceptance of information read from the recording medium.
  • the terminal processing unit 33 performs various types of processing.
  • the various types of processing are, for example, processing for converting instructions and information received by the terminal reception unit 32 into instructions and information for a data structure to be transmitted.
  • the various types of processing are, for example, processing for converting information received by the terminal reception unit 35 into information of a data structure to be output.
  • the terminal transmission unit 34 transmits various information and instructions.
  • the terminal transmission unit 34 normally transmits various kinds of information and instructions to the search device 1 .
  • Various information and instructions are, for example, search conditions and data sources.
  • the terminal reception unit 35 receives various types of information.
  • the terminal reception unit 35 receives various information from the search device 1 .
  • Various types of information are, for example, search results.
  • the terminal output unit 36 outputs various information. Various types of information are, for example, search results.
  • Storage unit 11 data source storage unit 111, index storage unit 112, array index storage unit 1121, array label/index storage unit 1122, record/index storage unit 1123, secondary index storage unit 1124, source/index storage unit 1125, and the terminal storage unit 31 are preferably non-volatile recording media, but can also be realized with volatile recording media.
  • information may be stored in the storage unit 11 or the like via a recording medium, or information transmitted via a communication line or the like may be stored in the storage unit 11 or the like.
  • information input via an input device may be stored in the storage unit 11 or the like.
  • the receiving unit 12, the condition receiving unit 121, and the terminal receiving unit 35 are usually implemented by wireless or wired communication means, but may be implemented by means of receiving broadcast.
  • the unit 1315 and the terminal processing unit 33 can usually be implemented by a processor, memory, or the like.
  • the processing procedure of the processing unit 13 and the like is normally realized by software, and the software is recorded in a recording medium such as a ROM. However, it may be realized by hardware (dedicated circuit).
  • the processor may be a CPU, MPU, GPU, or the like, and may be of any type.
  • the output unit 14, the result output unit 141, and the terminal transmission unit 34 are usually realized by wireless or wired communication means, but may be realized by broadcasting means.
  • the terminal reception unit 32 can be realized by device drivers for input means such as touch panels and keyboards, control software for menu screens, and the like.
  • the terminal output unit 36 may or may not include output devices such as displays and speakers.
  • the terminal output unit 36 can be realized by output device driver software, or by output device driver software and an output device.
  • Step S401 The index generator 131 determines whether it is time to generate an index. If it is the time to generate an index, go to step S402, and if it is not the time to generate an index, go to step S406.
  • Step S402 The index generator 131 substitutes 1 for the counter i.
  • Step S403 The index generation unit 131 determines whether or not there is an i-th data source for which an index is to be generated. If the i-th data source exists, go to step S404; if the i-th data source does not exist, go back to step S401.
  • Step S404 The index generation unit 131 generates an index corresponding to the i-th data source. An example of index generation processing will be described with reference to the flowchart of FIG.
  • Step S405 The index generator 131 increments the counter i by 1. Return to step S403.
  • Step S406 The index update unit 133 determines whether it is time to update the index. If it is the time to update the index, go to step S407, and if it is not the time to update the index, go to step S414.
  • Step S407 The index updating unit 133 substitutes 1 for the counter i.
  • Step S408 The index updating unit 133 determines whether or not the i-th data source exists. If the i-th data source exists, go to step S409; if the i-th data source does not exist, go back to step S401.
  • the index update unit 133 acquires the last update time information, which is the attribute value of the i-th data source.
  • the index update unit 133 acquires generation time information of the index (for example, array index) corresponding to the i-th data source from the array index storage unit 1121.
  • Step S411 The index updating unit 133 determines whether or not the time indicated by the last update time information acquired in step S409 is newer than the time indicated by the generation time information acquired in step S410. If it is new, go to step S412, otherwise go to step S413.
  • Step S412 The index update unit 133 instructs the index generation unit 131 to operate. As a result, the index generation unit 131 generates an index, associates it with the i-th data source, and accumulates the index. Through such processing, the index corresponding to the i-th data source is updated.
  • An example of index generation processing is the flowchart in FIG.
  • Step S413 The counter i is incremented by 1. Return to step S408.
  • Step S414 The condition accepting unit 121 determines whether or not the search condition has been accepted. If the search condition is accepted, the process goes to step S415, and if the search condition is not accepted, the process returns to step S401.
  • Step S415) The search unit 132 searches using search conditions. An example of such search processing will be described with reference to the flowchart of FIG.
  • Step S416 The result output unit 141 outputs the search results obtained in step S415. Return to step S401.
  • Step S501 The source index generation unit 1315 generates a source index.
  • An example of such source index generation processing will be described with reference to the flowchart of FIG.
  • Step S502 The array label/index generation unit 1312 generates an array label/index.
  • An example of such array label/index generation processing will be described with reference to the flowchart of FIG.
  • Step S503 The array index generation unit 1311 generates array indexes. An example of such array index generation processing will be described with reference to the flowchart of FIG.
  • Step S504 The record index generation unit 1313 generates a record index.
  • An example of such record index generation processing will be described with reference to the flowchart of FIG.
  • Step S505 The secondary index generation unit 1314 generates a secondary index.
  • An example of such secondary index generation processing will be described with reference to the flowchart of FIG.
  • the record index and the array index may be generated together for each record.
  • the procedure, order, etc. of generating the various indexes do not matter.
  • Step S601 The source index generation unit 1315 determines whether or not different records exist in each of two or more data sources. If a different record exists, go to step S602, otherwise go to step S604.
  • the source index generation unit 1315 refers to the data source for index generation and acquires the minimum key item value of the data source.
  • the source index generation unit 1315 refers to the data source for index generation and acquires the maximum key item value of the data source.
  • Step S604 The source index generation unit 1315 determines whether attribute values of different attributes exist in each of the two or more data sources. If attribute values of different attributes exist, go to step S605, and if attribute values of different attributes do not exist, go to step S607.
  • the source index generation unit 1315 refers to the data source for index generation and acquires the minimum attribute identifier of the data source.
  • the source index generation unit 1315 refers to the data source for index generation and acquires the maximum attribute identifier of the data source.
  • Step S607 The source index generation unit 1315 acquires the source identifier of the data source for which the index is to be generated.
  • the source index generation unit 1315 constructs a source index record.
  • a source index record for example, has a minimum key item value and a maximum key item value.
  • a source index record for example, has a minimum attribute identifier and a maximum attribute identifier.
  • a source index record for example, has a minimum key item value, a maximum key item value, a minimum attribute identifier, and a maximum attribute identifier.
  • a source index record corresponds to a source identifier. Needless to say, corresponding to the source identifier may be having the source identifier.
  • Step S609 The source index generation unit 1315 additionally writes the source index record configured in step S608 to the source index storage unit 1125. Return to upper process.
  • Step S701 The array label/index generation unit 1312 substitutes 1 for the counter i.
  • Step S702 The array label/index generation unit 1312 acquires the attribute identifier of the i-th attribute of the data source for which the index is to be generated.
  • the array label/index generation unit 1312 acquires, for example, the attribute identifier of the i-th attribute of the first row record in the data source for which the index is to be generated.
  • the array label/index generation unit 1312 may acquire the attribute identifier of the i-th attribute from the data source schema information stored in the storage unit 11, for example.
  • the data source schema information is information specifying the structure of the data source, and has, for example, two or more attribute identifiers.
  • Step S703 The array label/index generation unit 1312 determines whether or not the attribute identifier of the i-th attribute has been acquired in step S702. If it could be acquired, the process goes to step S704, and if it could not be acquired, it returns to the higher-level processing.
  • Step S704 The array label/index generation unit 1312 constructs an array label/index record having the attribute identifier of the i-th attribute acquired in step S702 and i (attribute order information).
  • the array label/index record is information constituting an array label/index.
  • Step S705 The array label/index generation unit 1312 adds the array label/index record configured in step S704 to the array label/index storage unit 1122 in association with the data source for which the index is to be generated.
  • Step S706 The array label/index generation unit 1312 increments the counter i by 1. Return to step S702.
  • Step S801 The array index generation unit 1311 substitutes 1 for the counter i.
  • Step S802 The array index generation unit 1311 determines whether the i-th record exists in the data source for index generation. If the i-th record exists, go to step S803, and if the i-th record does not exist, return to the upper process.
  • Step S803 The array index generation unit 1311 substitutes 1 for the counter j.
  • Step S804 The array index generation unit 1311 determines whether or not the j-th attribute exists in the data source for which the index is to be generated. If the j-th attribute exists, go to step S805, and if the j-th attribute does not exist, go to step S809.
  • Step S805 The array index generation unit 1311 determines whether or not to use the j-th attribute for the array index. If the j-th attribute is used for the array index, go to step S806; if not, go to step S808.
  • Step S806 The array index generation unit 1311 acquires the attribute position information of the attribute value of the j-th attribute of the i-th record from the data source for index generation.
  • Step S807 The array index generation unit 1311 adds the attribute position information acquired in step S806 to the array index record buffer.
  • Step S808 The array index generation unit 1311 increments the counter j by 1. Return to step S804.
  • the array index generation unit 1311 additionally writes the array index record of the array index record buffer to the array index storage unit 1121.
  • Step S810 The array index generator 1311 increments the counter i by 1. Return to step S802.
  • Step S901 The record index generator 1313 substitutes 1 for the counter i.
  • Step S902 The record index generation unit 1313 determines whether the i-th record exists in the data source for index generation. If the i-th record exists, go to step S903, and if the i-th record does not exist, return to the upper process.
  • the record index generation unit 1313 refers to the data source for index generation and acquires the record position information of the i-th record.
  • the record index generation unit 1313 refers to the data source for index generation and acquires the key item value of the i-th record.
  • Step S905 The record/index generating unit 1313 acquires record/index record position information, which is position information within the record index, of the i-th record/index record.
  • Step S906 The record/index generation unit 1313 generates the i-th record/index having the record position information acquired in step S903, the key item value acquired in step S904, and the record/index record position information acquired in step S905. configure records;
  • Step S 907 The record/index generation unit 1313 additionally writes the record/index record configured in step S 906 to the record/index storage unit 1123 .
  • Step S908 The record index generator 1313 increments the counter i by 1. Return to step 902 .
  • the record/index generation unit 1313 preferably sorts the record/index records using the key item value as a key. In such a case, it goes without saying that the record/index generation unit 1313 acquires sorted record/index record position information for each record/index record.
  • Step S1001 The secondary index generation unit 1314 substitutes 1 for the counter i.
  • Step S1002 The secondary index generation unit 1314 determines whether or not the i-th record/index record exists in the record/index. If the i-th record/index record exists, go to step S1003; otherwise, return to the upper process.
  • Step S1003 The secondary index generation unit 1314 determines whether or not to use the i-th record/index record for the secondary index. If it is to be used for the secondary index, go to step S1004; if not to be used for the secondary index, go to step S1006.
  • the secondary index generation unit 1314 uses some records/index records among all the records/index records.
  • the secondary index generation unit 1314 determines, for example, that some predetermined records/index records are to be used.
  • Step S1004 The secondary index generation unit 1314 acquires the key item value and the record/index record position information from the i-th record/index record, and configures a secondary index record having the information.
  • Step S1005 The secondary index generation unit 1314 additionally writes the secondary index record configured in step S1004 to the secondary index storage unit 1124.
  • Step S1006 The secondary index generation unit 1314 increments the counter i by 1. Return to step 1002 .
  • the secondary index records are sorted using the key item value as a key.
  • Step S1101 The search unit 132 acquires one or more attribute identifiers and one or more key item values corresponding to the accepted search condition.
  • One or more attribute identifiers specify attribute values to be acquired as search results.
  • One or more key item values specify the target record for which information is to be obtained as a search result. That is, the search unit 132 acquires the attribute values identified by the one or more attribute identifiers acquired here, which are the attribute values in the record of the one or more key item values acquired here.
  • the search unit 132 refers to the source index and acquires one or more source identifiers corresponding to one or more attribute identifiers and one or more key item values acquired in step S1101.
  • the search unit 132 adds one or more attribute identifiers of attribute values included in the data source identified by the source identifier to each of the acquired one or more source identifiers, and the data source identified by the source identifier. Associate with one or more key field values of included records.
  • Step S1103 The search unit 132 substitutes 1 for the counter i.
  • Step S1104 The search unit 132 determines whether or not the i-th source identifier exists among the one or more source identifiers acquired in step S1102. If the i-th source identifier exists, go to step S1105; otherwise go to step S1118.
  • Step S1105) The search unit 132 substitutes 1 for the counter j.
  • Step S1106 The search unit 132 determines whether the j-th key item value exists among the one or more key item values associated with the i-th source identifier in step S1102. If the j-th key item value exists, go to step S1107; if not, go to step S1117.
  • the search unit 132 refers to the secondary index corresponding to the i-th source identifier, and extracts the first record/index record position information and the second record/index record corresponding to the j-th key item value. Get location information.
  • the first record/index record position information is record/index record position information paired with the largest key item value among the key item values smaller than the j-th key item value.
  • the second record/index record position information is the record/index record position information paired with the minimum key item value among the key item values larger than the j-th key item value. Further, here, the search unit 132 may acquire one record/index record position information paired with the j-th key item value from the secondary index.
  • Step S1108 When the first record/index record position information and the second record/index record position information are acquired in step S1107, the search unit 132 retrieves the first record/index record position information and the second record/index record position information. and the record index record position information (for example, binary search or sequential search) to detect the j-th key item value. Next, the search unit 132 acquires record position information paired with the j-th key item value from the record index.
  • the record index record position information for example, binary search or sequential search
  • the search unit 132 acquires record position information paired with the record/index record position information from the record index.
  • Step S1109 The search unit 132 substitutes 1 for the counter k.
  • Step S1110 The search unit 132 determines whether or not the k-th attribute identifier corresponding to the i-th source identifier exists. If the k-th attribute identifier exists, go to step S1111, otherwise go to step S1116.
  • the search unit 132 refers to the array label index corresponding to the i-th source identifier, and acquires the attribute order information paired with the k-th attribute identifier from the array label index.
  • the search unit 132 refers to the array index corresponding to the i-th source identifier, and determines whether attribute order information that matches the attribute order information acquired in step S1111 exists in the array index. to decide. If there is attribute order information that matches the attribute order information, the search unit 132 acquires the attribute position information paired with the attribute order information and the j-th key item value from the array index. .
  • the search unit 132 acquires two pieces of attribute order information sandwiching the attribute order information. That is, the search unit 132 acquires the first attribute order information which is the attribute order information having a smaller value than the attribute order information and has the smallest difference from the attribute order information. Further, the search unit 132 acquires the second attribute order information which is the attribute order information having a larger value than the attribute order information and has the smallest difference from the attribute order information. The first attribute order information and the second attribute order information are information sandwiching the attribute order information. Next, the search unit 132 acquires the attribute position information paired with the first attribute order information and the j-th key item value from the array index. The search unit 132 also acquires attribute position information paired with the second attribute order information and paired with the j-th key item value from the array index.
  • Step S1113 When one piece of attribute position information is acquired in step S1112, the search unit 132 selects the j-th key item value acquired in step S1108 from among the records at the position indicated by the record position information paired with the The attribute value of the position indicated by the piece of attribute position information acquired in step S1112 is acquired from the data source identified by the i-th source identifier.
  • the search unit 132 selects two records from the record at the position indicated by the record position information paired with the j-th key item value acquired in step S1108.
  • the attribute value at the position specified by each attribute position information is inspected by, for example, a sequential search, and the attribute value existing in the order of the attribute order information paired with the k-th attribute identifier is identified by the i-th source identifier. data source.
  • Step S1114 The search unit 132 associates the j-th key item value with the k-th attribute identifier, and temporarily stores the attribute value acquired in step S1113 in a buffer (not shown).
  • Step S1115) The search unit 132 increments the counter k by 1. Return to step 1110 .
  • Step S1116 The search unit 132 increments the counter j by 1. Return to step 1106 .
  • Step S1117) The search unit 132 increments the counter i by 1. Return to step 1104 .
  • the search unit 132 composes search results including one or more attribute values temporarily stored in a buffer (not shown). Return to upper process. It does not matter how the search results are constructed. Attribute identifiers corresponding to attribute values included in the search results are preferably included in the search results in such a manner that they are explicitly associated with the attribute values. Also, the search results preferably include the j-th key item value.
  • the data source management device 2 reads the data source of the data source storage unit 111 and transmits it to the search device 1 in response to the access from the search device 1 .
  • the data source management device 2 may read and transmit only part of the data source.
  • the terminal reception unit 32 of the terminal device 3 receives search conditions.
  • the terminal processing unit 33 composes search conditions to be transmitted.
  • the terminal transmission unit 34 transmits the search condition to the search device 1 .
  • the terminal receiving section 35 receives the search result.
  • the terminal processing unit 33 uses the received search results to compose search results to be output.
  • the terminal output unit 36 outputs the search result.
  • Three or more data sources including the three data sources (1201, 1202, 1203) shown in FIG. It is assumed that It is assumed here that each of the three data sources is one file.
  • the data source in FIG. 12 has a header record, label records, and many records.
  • a label record and each record are separated by a first delimiter.
  • the first delimiter here is, for example, a return code.
  • a header record is the so-called header of a file and has one or more source attribute values.
  • the source attribute values here are the source identifier, report number, and last update information.
  • the source identifier is File Name in FIG. 12, and the value is "File1".
  • the report number is a number for identifying the origin of the data source, and its value is "A12345”.
  • the last update time information is Date in FIG. 12, and the value is "XXXX-XX-XX".
  • a label record is, for example, the first line of a file. Note that if the header record is the first line of the file, the label record is the second line of the file.
  • a label record is a set of item labels and a set of attribute identifiers.
  • the item label is a key item label or a detail item label.
  • the key item is an attribute that is the key of the record, and is "PID (personal ID)" here.
  • PID is an ID that identifies a user.
  • a detail item is a user attribute value corresponding to "PID", and here, the detail item includes “No.” and “Age.”
  • “No.” is a record ID, and its value is [1][2][3] of 1201 in FIG.
  • Each record in FIG. 12 has key item values, detail item values, and attribute values.
  • the key item value is the value of the key item, here the PID of each user (eg, 236,029). It should be noted that it is preferable to be able to specify which value to use as the key item value as a parameter for index generation. It is also possible to have key field values.
  • the detail item values here are, for example, the value of "No.” and the value of "Age”. Here, the values of "No.” are [1] [2] and the like. Values (eg, (1), (121), (241), etc.) below the “No.” values ([1], [2], [3], etc.) are record position information of each record.
  • the attribute values of the record corresponding to record identifier [1] are 0.11, 0.4, 0.57, and the like.
  • the attribute value position information ((57) (62) (73) etc.) of each attribute value is indicated below the attribute value (0.11, 0.4, 0.57 etc.). ing.
  • the data source here includes a set of gene/genome information.
  • data dealing with general gene/genome information includes data such as base sequences of genes and amino acid sequences of proteins, and the length of one record can be, for example, several gigabytes. Also, the number of attribute values in one record becomes enormous, and the data size often becomes huge.
  • data that handles gene/genome information is often stored and distributed in flat files (general text files) with a relatively simple layout. This is an example.
  • Specific example 1 is an example of index generation processing.
  • Specific example 2 is an example of search processing when the source index has a set of minimum key item value and maximum key item value and does not have a set of minimum attribute identifier and maximum attribute identifier.
  • Specific example 3 is an example of search processing when the source index has a set of a minimum key item value, a maximum key item value, a minimum attribute identifier, and a maximum attribute identifier.
  • the source index generation unit 1315 accesses the file "data source 1301" and acquires the source identifier (file name here) "file1" of the data source 1301. Also, the source index generator 1315 opens the data source 1301 . Next, the source index generation unit 1315 acquires the minimum key item value “029” and the maximum key item value “451”, which are the minimum PID and the maximum PID among the PIDs of the data source 1301 . Note that when the PIDs are sorted in the data source 1301, the source index generator 1315 acquires the first PID and the last PID. If the PIDs are not sorted, the source index generator 1315 sequentially examines the PIDs and obtains the minimum and maximum key term values from the data source 1301 .
  • the source index generation unit 1315 acquires the minimum attribute identifier "TestA” and the maximum attribute identifier "TestE” in the attribute value identifiers of the label records of the data source 1301. Note that when the attribute identifiers are sorted in the data source 1301, the source index generator 1315 acquires the first attribute identifier and the last attribute identifier from the label record. If the attribute identifiers are not sorted, the source index generator 1315 sequentially examines the attribute identifiers and obtains the minimum and maximum attribute identifiers from the label records.
  • the source index generation unit 1315 generates the source index record "file1, 029, 451, TestA, TestE ” and stored in the source index storage unit 1125 .
  • the source index generation unit 1315 similarly configures source index records for other data sources (files “file2”, “file3”, etc.) and stores them in the source index storage unit 1125.
  • FIG. (2) Array label/index generation processing
  • the array label/index generation unit 1312 accesses the file "data source 1301" and acquires the source identifier (file name) "file1" of the data source 1301. Also, the source index generator 1315 opens the data source 1301 .
  • the array label/index generation unit 1312 acquires the attribute identifiers in the order in which they are arranged in the label/index of the data source 1301 together with the attribute order information. Then, for each attribute identifier, an array label/index record, which is a set of an attribute identifier and attribute order information, is constructed.
  • the array label/index generation unit 1312 sorts the array label/index records using the attribute identifier as a key, for example, in ascending order. Then, the array label/index generation unit 1312 accumulates the sorted array label/index records in the array label/index storage unit 1122 .
  • the array label/index generation unit 1312 similarly configures array labels/indexes for other data sources (files “file2”, “file3”, etc.) and stores them in the array label/index storage unit 1122.
  • the array index generation unit 1311 accesses the file "data source 1301" and acquires the source identifier (file name) "file1" of the data source 1301. Also, the source index generator 1315 opens the data source 1301 .
  • the array index generation unit 1311 acquires the attribute order information of the data source 1301 by skipping a predetermined number (here, three) such as the first, fourth, and seventh. Also, the array index generation unit 1311 advances the file pointer to the attribute value in the order of the acquired attribute order information while detecting the second delimiter for each record, for example, and generates the record of the attribute value in that order. Gets the attribute position information that is an offset within the . Next, for each record of the data source 1301, the array index generator 1311 associates the PID of the record with the acquired attribute position information in the order indicated by the attribute order information, and constructs an array index record.
  • a predetermined number here, three
  • the array index generation unit 1311 advances the file pointer to the attribute value in the order of the acquired attribute order information while detecting the second delimiter for each record, for example, and generates the record of the attribute value in that order. Gets the attribute position information that is an offset within the .
  • the array index generator 1311 associates the PID of
  • the array index generation unit 1311 sorts the array index records, for example, in ascending order using the corresponding PID as a key, constructs an array index, and stores it in the array index storage unit 1121 .
  • the array index generator 1311 also similarly configures array indexes for other data sources (files “file2”, “file3”, etc.) and stores them in the array index storage unit 1121.
  • FIG. (4) Record index generation processing
  • the record index generation unit 1313 accesses the file "data source 1301" and acquires the source identifier (file name) "file1" of the data source 1301. Also, the source index generator 1315 opens the data source 1301 .
  • the record/index generation unit 1313 acquires from the data source 1301 the key item value and the record position information, which is the offset of the record in the data source 1301, for each record in the data source 1301, and forms a record/index record. do.
  • the record index generation unit 1313 sorts the pairs of the key item value and the record position information, for example, in ascending order using the key item value as a key.
  • the record/index generation unit 1313 acquires the position information (Pos.) of each record/index record in the record/index.
  • Such position information (Pos.) is record/index record position information.
  • the record/index record position information is the position information (Pos.) of the record having the combination of the position information (Pos.), the key item value, and the record position information, and the array index record. It is preferred that In other words, it is preferable that the record index record and the array index record are communicated for each record of the data source.
  • the record/index generation unit 1313 stores record/index records for each record in the data source 1301 in the record/index storage unit 1123 .
  • the record index generation unit 1313 similarly configures record indexes for other data sources (files “file2”, “file3”, etc.) and stores them in the record index storage unit 1123.
  • the secondary index generation unit 1314 reads the record index of the record index storage unit 1123 .
  • the secondary index generation unit 1314 skips a predetermined number (here, three) such as the first, fourth, and seventh key item values (here, , PID) and record/index record position information (Pos.).
  • the secondary index generation unit 1314 appends the obtained secondary index record to the secondary index storage unit 1124.
  • the secondary index records are sorted using the PID as a key.
  • the secondary index generation unit 1314 similarly configures secondary indexes for other data sources (files “file2”, “file3”, etc.) and stores them in the secondary index storage unit 1124.
  • the secondary index of 1306 in FIG. 13 is accumulated in the secondary index storage unit 1124.
  • the terminal reception unit 32 of the terminal device 3 receives such search conditions.
  • the terminal processing unit 33 composes search conditions to be transmitted.
  • the terminal transmission unit 34 transmits the search condition to the search device 1 .
  • the search unit 132 also acquires the attribute value identifier “TestC” included in the search condition (1406 in FIG. 14).
  • the record index record position information (1) and (151) paired with "029” and "236" are obtained from the secondary index (1403).
  • the search unit 132 temporarily accumulates the acquired record position information (241) and record/index record position information (101) in a buffer (not shown).
  • the search unit 132 refers to the array label index (1405) corresponding to the source identifier “File1” and performs a binary search on the array label index using the attribute identifier “TestC” included in the search condition as a key. , the attribute identifier "TestC” is detected, and the attribute order information (3) paired with the attribute identifier "TestC” is acquired.
  • the search unit 132 may acquire the attribute order information (3) by performing a sequential search instead of the binary search.
  • the search unit 132 refers to the array index corresponding to the source identifier “File1”, and includes the first attribute order information (1) and the second attribute order information (3) in the array index. Second attribute order information (4) is obtained.
  • the search unit 132 acquires the attribute value position information (54) corresponding to the first attribute order information (1) from the record index corresponding to the record/index record position information (101) of the buffer (not shown). and temporarily stored in a buffer (not shown). Further, the search unit 132 acquires attribute value position information (84) corresponding to the record/index record position information (101) and corresponding to the second attribute order information (4) from the record index. Temporarily accumulate in the buffer.
  • the search unit 132 accesses the data source identified by the source identifier "File1" and opens the file.
  • the search unit 132 acquires record position information (241), attribute value position information (54), and attribute value position information (84) from a buffer (not shown), and the record position information (241) specifies The attribute value "0.381", which is the attribute value between the attribute value position information (54) and the attribute value position information (84) in the position record and corresponds to the attribute order information (3), is Get from file. Also, the search unit 132 acquires Age "62" in the record at the position specified by the record position information (241) from the file.
  • the search unit 132 constructs a search result having PID "155”, Age “62”, attribute value identifier "TestC”, and attribute value "0.381".
  • the result output unit 141 transmits the constructed search results to the terminal device 3 .
  • a search result is, for example, 1407 in FIG.
  • the terminal receiving section 35 of the terminal device 3 receives the search result.
  • the terminal processing unit 33 uses the received search results to compose search results to be output.
  • the terminal output unit 36 outputs the search result.
  • the terminal reception unit 32 of the terminal device 3 receives such search conditions.
  • the terminal processing unit 33 composes search conditions to be transmitted.
  • the terminal transmission unit 34 transmits the search condition to the search device 1 .
  • the search unit 132 obtains a search result by the same process as the process described in Specific Example 2.
  • the result output unit 141 transmits the constructed search results to the terminal device 3 .
  • a search result is, for example, 1307 in FIG.
  • the terminal receiving section 35 receives the search results in response to the transmission of the search conditions.
  • the terminal processing unit 33 uses the received search results to compose search results to be output.
  • the terminal output unit 36 outputs the search result.
  • a desired attribute value can be searched at high speed from a data source with a large data size.
  • a desired attribute value can be searched at high speed, especially for data sources in which the length of one record is extremely long.
  • an index for high-speed information retrieval can be automatically generated.
  • the index in the latest state can be held.
  • the processing in this embodiment may be realized by software. Then, this software may be distributed by software download or the like. Also, this software may be recorded on a recording medium such as a CD-ROM and distributed. Note that this also applies to other embodiments in this specification.
  • the software that implements the search device 1 in this embodiment is the following program.
  • this program includes a data source storage section in which a data source containing two or more records each having a key field value and two or more attribute values is stored, one or more records among the two or more records, and an array index storage unit in which an array index having attribute position information specifying the position where an attribute value exists for each of one or more attributes of each record is stored, and a search condition including an attribute identifier a condition receiving unit that receives a condition, acquires attribute position information corresponding to the attribute identifier of the search condition from the array index, and uses the attribute position information to obtain an attribute value corresponding to the attribute identifier of the search condition. from the data source, and as a result output unit for outputting search results including the attribute values obtained by the search unit.
  • FIG. 15 is a conceptual diagram of search system B in this embodiment.
  • a search system B includes a search device 4 , one or more data source management devices 2 , and one or more terminal devices 3 .
  • the search device 4 is a device that searches for information from data sources.
  • the search device 4 is, for example, a so-called server, such as a cloud server, an ASP server, or the like. It should be noted that the type of retrieval device 4 does not matter.
  • one or more data source management devices 2 are normally devices different from the search device 4 .
  • the search device 4 and one or more data source management devices 2 can communicate via a network such as the Internet or LAN. Also, the search device 4 and the terminal device 3 can communicate with each other via a network such as the Internet or a LAN.
  • FIG. 16 is a block diagram of search system B in this embodiment.
  • FIG. 17 is a block diagram of the search device 4. As shown in FIG.
  • the search device 4 includes a storage unit 41, a reception unit 12, a processing unit 43, and an output unit 44.
  • the storage unit 41 has an index storage unit 112 and a dictionary storage unit 411 .
  • the processing unit 43 includes an index generation unit 131 , a search unit 432 and an index update unit 133 .
  • the search unit 432 includes source determination means 4321 , instruction generation means 4322 , source search means 4323 and integration means 4324 .
  • the output unit 44 has a result output unit 441 .
  • the data source of the data source storage unit 111 that constitutes the data source management device 2 has one or more tables.
  • the data source may be one file, or may be composed of two or more files.
  • a single file may be sufficient as the table, but a plurality of tables may exist in one file.
  • Data sources may also include, for example, relational databases, object-oriented databases, XML databases, NoSQL databases, file data sources, data warehouses, data marts, directory management systems, real-time measurement data, online data services, streaming data services. any of the above, and any type of
  • the various types of information are stored in the storage unit 41 that constitutes the search device 4 .
  • the various types of information are, for example, one or more types of indexes described above and various types of information of a data dictionary described later.
  • a data dictionary is stored in the dictionary storage unit 411 .
  • a data dictionary is a set of information for obtaining information from two or more data sources using search conditions entered by a user and integrating the information.
  • the data dictionary has source layer definition information, user layer definition information, and conversion rule definition information. That is, the data dictionary has three layers of information.
  • the source layer definition information is information that defines the schema of the data source.
  • the source layer definition information has, for example, a source identifier and one or more source attribute definition information.
  • the source layer definition information has, for example, a source identifier, a table identifier, and one or more source attribute definition information.
  • the source attribute definition information is information that defines table attributes in the data source.
  • the source attribute definition information has a source attribute identifier.
  • a source attribute identifier is information that identifies an attribute of a table in a data source, such as an attribute name or ID.
  • the source attribute definition information may have one or more attribute values of table attributes in the data source.
  • One or more attribute values of the attribute are, for example, data type and size.
  • the source layer definition information is information corresponding to the table. If the data source has only one table, the source layer definition information is information corresponding to the data source.
  • the source layer definition information preferably has data source specific information.
  • Data source specific information is information specific to each data source.
  • the data source specific information has, for example, instruction source information and connection information.
  • the command source information is information for generating a search command for the data source.
  • the instruction source information is information for constructing a search instruction. It is preferable that the instruction source information corresponding to each of the two or more data sources are of different types.
  • each of the two or more different types of instruction source information includes, for example, information for generating a search instruction for SQL sentences, information for generating a search module, and URL syntax indicating syntax including the URL of the search destination. is preferred.
  • the instruction source information is, for example, information for configuring the SQL statement issued to the data source.
  • the instruction source information is, for example, information specifying the API of the module used when accessing the data source.
  • the instruction source information is, for example, a URL syntax, for example, a character string having a URL and an endpoint (table identifier).
  • Connection information is information for accessing the data source.
  • the connection information includes IP addresses and URLs, for example.
  • the connection information includes, for example, login information for logging into the data source.
  • Login information includes, for example, a user identifier and password.
  • the connection information includes, for example, data source driver identification information and an API key.
  • the user layer definition information is information that defines the schema of the user table.
  • the user table is a search target based on search conditions entered by the user.
  • a user table is typically a view, which contains one or more records. Such records also have one or more attribute values.
  • a record preferably has one or more key field values.
  • the user layer definition information has, for example, a user table identifier and one or more pieces of user attribute definition information.
  • a user table identifier is information for identifying a user table, and is, for example, a table name or ID.
  • the user attribute definition information is information that defines attributes of the user table.
  • User attribute definition information includes a user attribute identifier.
  • a user attribute identifier is information that identifies an attribute of the user table.
  • User attribute identifiers are, for example, attribute names and attribute IDs.
  • User attribute definition information usually has user attribute source information.
  • the user attribute value source information is information specifying a method for acquiring a user attribute value.
  • User attribute value source information is information using one or more view attribute values of one or more conversion views.
  • the user attribute source information has, for example, a view identifier and a view attribute identifier.
  • User attribute value source information may include, for example, a user table identifier and a user attribute identifier.
  • the user attribute value source information may have an arithmetic expression or the like.
  • An arithmetic expression or the like is an arithmetic expression or a program identifier.
  • the user attribute source information is one or more of one or more view identifiers of conversion views or source identifiers of two or more data sources. and an attribute identifier paired with each of the one or more identifiers.
  • the attribute identifier paired with each of the one or more identifiers is one or more of the view attribute identifier of any one of one or more conversion views or the source attribute identifier of any one of two or more data sources. .
  • An arithmetic expression or a program identifier is an identifier of an arithmetic expression or a program that is executed by accepting one or more attribute values corresponding to one or more attribute identifiers as parameters.
  • Program identifiers are, for example, module names, function names, and method names.
  • the search unit 432 For the conversion rule definition information, the search unit 432 generates a search command to be issued to each of two or more data sources based on the received search conditions, acquires search results corresponding to the search command, This is information for creating integrated data corresponding to search conditions.
  • Conversion rule definition information has one or more conversion view information.
  • Conversion view information is information defining a conversion view configured using one or more data sources out of two or more data sources. Note that the conversion view is a view representing the correspondence between the user table and one or more data sources.
  • a transform view may include one or more records with one or more view attribute values. The one or more view attribute values preferably include key item values.
  • Transformed views are information that is typically not directly searchable by users. Also, one piece of conversion view information usually corresponds to one data source.
  • Converted view information has one or more view attribute definition information.
  • Transformed view information usually has a view identifier.
  • View attribute definition information is information that defines attributes of a conversion view.
  • the view attribute definition information has a view attribute identifier and view attribute definition information.
  • a view attribute identifier is information that identifies an attribute of a conversion view.
  • the view attribute identifier is, for example, a conversion view attribute name and a conversion view attribute ID.
  • the view attribute value source information is information that specifies the method for obtaining the view attribute value.
  • the view attribute value source information includes, for example, the source identifier of the data source from which the view attribute value is obtained and the source attribute identifier.
  • the view attribute value source information corresponds to one or more attribute identifiers among source attribute identifiers of any one of two or more data sources or view attribute identifiers of one or more conversion views, and the one or more attribute identifiers. It has an arithmetic expression and the like with the attribute value to be used as a parameter.
  • An arithmetic expression or the like is an arithmetic expression or a program identifier.
  • the program identifier is identification information of a program that can be executed with 0 or 1 or more attribute values as parameters and acquires view attribute values. Note that the programs whose attribute value is 0 are, for example, "TODAY()" for obtaining today's date and "TIME()" for obtaining the current time.
  • the conversion rule definition information may have a combination method identifier.
  • a combining method identifier is information specifying a method for combining two or more search results obtained based on two or more pieces of conversion view information.
  • the combination scheme identifiers are, for example, "UNION”, "CHOICE”, and "LOOKUP”.
  • the two or more combination method identifiers that the conversion rule definition information can contain are preferably two or more of "UNION”, "CHOICE”, and "LOOKUP”. Also, it is preferable that the number of combination method identifiers that can be included in the conversion rule definition information is three or more including "UNION", "CHOICE", and "LOOKUP".
  • "UNION" is information specifying the merging process.
  • two or more search results are grouped by one or two or more key items, and two or more attribute values of each of one or two or more non-key items are aggregated to form one record. It is a process to
  • aggregating two or more attribute values means performing a predetermined operation on two or more attribute values to obtain one value.
  • the predetermined operation is, for example, calculation of the total value (SUM), calculation of the average value (Average), acquisition of the maximum value (MAX), acquisition of the minimum value (MIN), acquisition of the median value (MEDIAN), standard deviation , etc.
  • "CHOICE” is information specifying the selection process.
  • the selection process selects one or more search results from among two or more search results according to priority, aggregates two or more attribute values of each of one or two or more non-key items, and selects one record. configuration process.
  • the order of priority is the order of priority for search results from two or more conversion views or two or more data sources, and is stored in the storage unit 41, for example.
  • the conversion rule definition information may include priority.
  • "LOOKUP" is information that specifies complement processing. Complementation processing identifies one search result to be referred to and another search result to be referred to according to the reference condition, and determines the attribute value of the key item of the one of the two or more search results to be referred to. is the attribute value of a key item included in another search result that is obtained by adding the attribute value of a key item not included in one search result, and two or more attribute values of each of one or two or more non-key items are aggregated to form one record.
  • the reference condition is information specifying one or more attribute values to be acquired from the search result, and is, for example, one or more attribute identifiers.
  • the processing unit 43 performs various types of processing. Various types of processing are processing performed by the index generating unit 131, the searching unit 432, and the index updating unit 133, for example.
  • the search unit 432 refers to the dictionary storage unit 411 and determines two or more data sources corresponding to the search conditions received by the reception unit 12 . Note that determining two or more data sources means acquiring two or more source identifiers. Also, the determination of two or more data sources need not be done together.
  • the search unit 432 uses the conversion rule definition information to generate a search command for each of the determined two or more data sources, and obtains search results based on the search command. Then, using the conversion rule definition information and the user layer definition information, the search unit 432 integrates the search results corresponding to the two or more acquired data sources, and acquires integrated data corresponding to the search condition.
  • the search unit 432 retrieves the attribute value corresponding to one or more attribute identifiers included in the view attribute value source information from the data source or the conversion view. Get from Next, the search unit 432 gives the acquired one or more attribute values to the arithmetic expression or the program identified by the program identifier, executes the arithmetic expression or program, and acquires the view attribute value.
  • One or more attribute identifiers included in the view attribute value source information are source attribute identifiers or view attribute identifiers.
  • Attribute values corresponding to one or more attribute identifiers included in the view attribute value source information are source attribute values or view attribute values.
  • the search unit 432 retrieves attribute values corresponding to one or more attribute identifiers included in the user attribute source information from a data source or a conversion view. Get from Next, the search unit 432 gives the acquired one or more attribute values to the arithmetic expression or the program identified by the program identifier, executes the arithmetic expression or program, and acquires the user attribute value.
  • One or more attribute identifiers included in the user attribute value source information are source attribute identifiers or view attribute identifiers. Attribute values corresponding to one or more attribute identifiers included in the user attribute value source information are source attribute values or view attribute values.
  • the search unit 432 for example, generates a search command for obtaining information from each of the two or more data sources according to command source information for each of the two or more data sources. Next, the search unit 432 acquires search results based on the search command for each of the two or more data sources from the corresponding data sources. Next, the search unit 432 integrates search results corresponding to two or more data sources using the conversion rule definition information and the user layer definition information, and acquires integrated data corresponding to the search condition.
  • the search unit 432 generates a search instruction, which is an SQL statement according to the instruction source information, for the data source corresponding to the SQL statement, according to the instruction source information for each of two or more data sources. Further, for example, the search unit 432 generates a search instruction, which is an interface of the search module according to the instruction source information, for the data source corresponding to the search module. Then, the search unit 432 acquires search results based on each search command for each of the two or more data sources. Next, the search unit 432 integrates search results corresponding to two or more data sources using the conversion rule definition information and the user layer definition information, and acquires integrated data corresponding to the search condition.
  • the search unit 432 uses connection information for each of two or more data sources, accesses the data source corresponding to the connection information, and obtains search results based on the search command from the data source. Next, the search unit 432 integrates search results corresponding to two or more data sources using the conversion rule definition information and the user layer definition information, and acquires integrated data corresponding to the search condition.
  • the search unit 432 for example, acquires a combination method identifier included in the conversion rule definition information, combines two or more search results according to the combination method specified by the combination method identifier, and acquires integrated data.
  • the search unit 432 acquires attribute position information corresponding to the attribute identifier of the search condition from the array index, uses the attribute position information to acquire the attribute value corresponding to the attribute identifier of the search condition from the data source, Construct integration data with attribute values. If the data source to be searched is a data source having the structure described in Embodiment 1, and the search unit 432 acquires information from the data source, the search unit 432 performs the same operation as the search unit 132. do. That is, the search unit 432 uses one or more types of index information in the index storage unit 112 to acquire information from the data source. Since the search processing of the search unit 432 has been described as the processing of the search unit 132 in Embodiment 1, description thereof will be omitted here.
  • the source determining means 4321 acquires one or more user attribute identifiers included in the search condition, and acquires user attribute source information corresponding to each of the one or more user attribute identifiers. Next, the source determining means 4321 acquires one or more view attribute identifiers corresponding to the one or more pieces of user attribute value source information. Next, the source determining means 4321 acquires source identifiers corresponding to the one or more view attribute identifiers from the view attribute definition information. It is preferable that the source determination unit 4321 performs unique processing on the acquired source identifiers to acquire one or more unique source identifiers.
  • the command generation means 4322 generates a search command for each data source identified by each of the two or more source identifiers acquired by the source determination means 4321, using the search condition and the view attribute value source information.
  • the command generating means 4322 generates a search command for each data source according to command source information for each of two or more data sources.
  • the instruction generating means 4322 When the instruction source information includes SQL sentence syntax information, the instruction generating means 4322 generates an SQL sentence according to the SQL sentence syntax information based on the search condition.
  • the instruction generating means 4322 is a character string for executing the search module according to the syntax information of the interface of the search module based on the search condition. Generate search instructions.
  • the instruction generating means 4322 based on the search conditions, In addition to the URL and end point (table identifier) of the URL syntax, a search instruction is generated which is a character string having the condition part of the search condition.
  • the source search means 4323 obtains search results based on the search instructions obtained by the instruction generation means 4322 for each of the two or more data sources.
  • the source search means 4323 executes, for example, two or more search commands and obtains search results from corresponding data sources.
  • the integrating means 4324 acquires integrated data that integrates the search results for each of the two or more data sources acquired by the source searching means 4323 using the search conditions and user layer definition information.
  • the integration means 4324 combines two or more search results according to the combination method specified by the combination method identifier of the conversion rule definition information stored in the dictionary storage unit 411 to obtain integrated data.
  • the unifying means 4324 selects one or more search results from among the two or more search results according to the order of priority, and selects one or more of each of the one or more non-key items. aggregating attribute values to form one record.
  • the integrating means 4324 selects the attribute value of the key item included in one or more search results from among the two or more search results according to the order of priority, and A selection process is performed to aggregate two or more attribute values to form one record.
  • the order of priority is information that specifies one or more conversion views or one or more data sources with priority among two or more conversion views or two or more data sources. Also, the priority is stored in the storage unit 41 .
  • the integrating means 4324 identifies one search result to be referred to and another search result to be referred to according to the reference condition, and refers to one of the two or more search results.
  • To the attribute value of the key item of one search result add the attribute value of the key item that is included in the other search result that is referenced and is not included in the one search result, and 1 or 2 or more attribute values of each of 2 or more non-key items are aggregated, and complement processing is performed to form one record.
  • a reference condition is information specifying one search result to be referred to and another search result to be referred to.
  • the reference condition is, for example, " ⁇ reference view identifier> identifier 1 ⁇ non-reference view identifier> identifier 2". Also, the reference conditions are stored in the storage unit 41 .
  • the output unit 44 outputs various information. Various types of information are integrated data, for example. Also, the output here usually means transmission to the terminal device 3, but display on a display, projection using a projector, printing on a printer, sound output, storage on a recording medium, and other processing devices The concept may also include delivery of processing results to other programs, etc.
  • the result output unit 441 outputs integrated data acquired by the search unit 432 .
  • Step S1801 The condition accepting unit 121 determines whether or not the search condition has been accepted. If the search condition is accepted, the process goes to step S1802, and if the search condition is not accepted, the process returns to step S1801.
  • Step S1802 The source determining means 4321 acquires the user table identifier included in the search condition accepted in step S1801. This user table identifier is the identifier of the user table to be searched.
  • Step S1803 The source determining means 4321 acquires one or more user attribute identifiers included in the search conditions accepted in step S1801.
  • condition part is a part of a search condition in which conditions are described.
  • extraction part is a part of the search condition in which the attribute values forming the integrated data are described.
  • other part is a part other than the condition part and the extraction part.
  • Step S1804 The source determination means 4321 substitutes 1 for the counter i.
  • Step S1805 The source determining means 4321 determines whether or not the i-th user attribute identifier exists among the user attribute identifiers acquired in step S1803. If the i-th user attribute identifier exists, go to step S1806, and if the i-th user attribute identifier does not exist, go to step S1808.
  • the source determining means 4321 acquires the user attribute source information paired with the i-th user attribute identifier from the source layer definition information.
  • Step S1807 The source determination means 4321 increments the counter i by 1. Return to step S1805.
  • Step S1808 The source determining means 4321 acquires view identifiers from all user attribute value source information acquired in step S1806. Note that one or more pieces of user attribute value source information may have user table identifiers instead of view identifiers.
  • Step S1809 The source determining means 4321 performs unique processing on the view identifiers acquired in step S1808, and acquires the view identifiers of one or more conversion views necessary for acquiring integrated data.
  • Step S1810 The source determination means 4321 substitutes 1 for the counter j.
  • Step S1811 The source determining means 4321 determines whether or not the j-th view identifier exists among the view identifiers acquired in step S1809. If the j-th view identifier exists, go to step S1812; if the j-th view identifier does not exist, go to step S1819.
  • Step S1812 The source determination means 4321 substitutes 1 for the counter k.
  • Step S1813 The source determining means 4321 determines whether or not the k-th view attribute identifier paired with the j-th view identifier exists in the user attribute value source information acquired in step S1806. If the k-th view attribute identifier exists, go to step S1814; if the k-th view attribute identifier does not exist, go to step S1818.
  • the k-th view attribute identifier here is a unique view attribute identifier. That is, the same view attribute identifier is not obtained in this step. Also, the k-th view attribute identifier may be a user attribute identifier.
  • Step S1814 The source determining means 4321 acquires the k-th view attribute identifier paired with the j-th view identifier from the user attribute value source information acquired in step S1806. Next, the source determining means 4321 obtains the k-th view attribute value source information paired with the k-th view attribute identifier from the conversion view information paired with the j-th view identifier in the conversion rule definition information. get.
  • the k-th view attribute identifier may be a user attribute identifier. If it is a user attribute identifier, the source determination means 4321 acquires the user attribute source information paired with the user attribute identifier, and obtains the view identifier included in the user attribute source information and the view attribute identifier paired with the view attribute identifier. Get attribute source information.
  • Step S1815 The source determination means 4321 increments the counter k by 1. Return to step S1813.
  • Step S1816 The source determining means 4321 generates a search command corresponding to the j-th view identifier using the one or more view attribute value source information acquired in step S1814.
  • An example of such instruction generation processing will be described with reference to the flowchart of FIG.
  • Step S1817 The source search means 4323 uses the search command generated in step S1816 to obtain search results from the data source corresponding to the j-th view identifier.
  • Step S1818 The source determination means 4321 increments the counter j by 1. Return to step S1811.
  • Step S1819 The integrating means 4324 integrates the search results obtained in step S1817 to obtain integrated data. Note that an example of such integration processing will be described using the flowchart of FIG. 20 .
  • Step S1820 The result output unit 441 outputs the integrated data acquired in step S1819. Return to step S1801.
  • Step S1901 The command generation means 4322 acquires command source information from the data source unique information of the source layer definition information of the data source corresponding to the j-th view identifier in S1811.
  • Step S1902 The instruction generating means 4322 analyzes the received search condition and acquires information on the condition part, extraction part, and other parts of the search condition.
  • Step S1903 The instruction generating means 4322 substitutes 1 for the counter i.
  • Step S1904 The instruction generating means 4322 determines whether or not there is the i-th view attribute value source information corresponding to the condition part acquired in step S1902. If the i-th view attribute value source information corresponding to the condition part exists, go to step S1905; otherwise go to step S1907.
  • Step S1905 The instruction generating means 4322 acquires the source attribute identifier of the i-th view attribute value source information corresponding to the condition part acquired in step S1902.
  • Step S1906 The instruction generating means 4322 increments the counter i by 1. Return to step S1904.
  • Step S1907 The command generation unit 4322 uses the one or more source attribute identifiers acquired in step S1905 and the condition part in the received search condition to generate a search command according to the command source information acquired in step S1901. Get the information of the conditional part of .
  • Step S1908 The instruction generating means 4322 substitutes 1 for the counter j.
  • Step S1909 The instruction generating means 4322 determines whether or not there is the j-th view attribute value source information corresponding to the extractor acquired in step S1902. If the j-th view attribute value source information corresponding to the extraction unit exists, go to step S1910, otherwise go to step S1912.
  • Step S1910 The instruction generating means 4322 acquires the source attribute identifier of the j-th view attribute value source information corresponding to the extractor acquired in step S1902.
  • Step S1911 The instruction generating means 4322 increments the counter j by 1. Return to step S1909.
  • Step S1912 The command generating means 4322 uses the one or more source attribute identifiers acquired in step S1910 and the extraction part in the received search condition to generate a search command according to the command source information acquired in step S1901. Get the information of the extraction part of .
  • Step S1913 The instruction generating means 4322 substitutes 1 for the counter k.
  • Step S1914 The command generation means 4322 determines whether or not there is the k-th view attribute value source information corresponding to the other part acquired in step S1902. If the k-th view attribute value source information corresponding to the other portion exists, the process goes to step S1915; otherwise, the process goes to step S1917.
  • Step S1915 The instruction generating means 4322 acquires the source attribute identifier of the k-th view attribute value source information corresponding to the other part acquired in step S1902.
  • Step S1916 The instruction generating means 4322 increments the counter k by 1. Return to step S1914.
  • Step S1917 The command generating means 4322 uses the one or more source attribute identifiers acquired in step S1915 and other parts of the received search conditions to generate a search command according to the command source information acquired in step S1901. Get information about other parts of It should be noted that there is a case where the information of the other part is not acquired here.
  • Step S1918 The instruction generation unit 4322 generates the command source information acquired in step S1901 using the condition part information acquired in step S1907, the extraction part information acquired in step S1912, and the other part information acquired in step S1917. Configure search instructions based on the information. Return to upper process.
  • the command generation unit 4322 forms the search command using the information of the condition part acquired in step S1907 and the information of the extraction part acquired in step S1912. .
  • Step S2001 The integrating means 4324 substitutes 1 for the counter i.
  • Step S2002 The integrating means 4324 determines whether each search result to be combined includes the i-th record. If the i-th record is included, the process goes to step S2003, and if the i-th record is not included, the process returns to the upper process.
  • Step S2003 The integrating means 4324 determines whether or not the conversion rule definition information includes a combination method identifier. If it does not contain a connection scheme identifier, go to step S2004, and if it contains a connection scheme identifier, go to step S2015.
  • Step S2004 The integrating means 4324 substitutes 1 for the counter j.
  • Step S2005 The integrating means 4324 determines whether or not there is a j-th user attribute identifier to be used for integrated data. If the j-th user attribute identifier exists, go to step S2004, otherwise go to step S2013.
  • Step S2006 The integrating means 4324 acquires the user attribute source information paired with the j-th user attribute identifier from the user layer definition information.
  • Step S2007 The integration unit 4324 determines whether there is an arithmetic expression or the like in the user attribute value source information acquired in step S2006. If there is an arithmetic expression or the like, go to step S2008; if not, go to step S2011.
  • Step S2008 The integration unit 4324 acquires one or more view attribute identifiers from the user attribute value source information acquired in step S2006. Next, the integration unit 4324 acquires attribute values corresponding to one or more attribute identifiers from the i-th record of the search results acquired in S1817. Note that each of the one or more attribute identifiers includes one or more view attribute identifiers. Each of the one or more attribute identifiers may include one or more user attribute identifiers.
  • Step S2009 The integration unit 4324 acquires the arithmetic expression and the like in the user attribute value source information acquired in step S2006.
  • Step S2010 The integration unit 4324 substitutes the one or more attribute values obtained in step S2008 into the arithmetic expression obtained in step S2009, executes the arithmetic expression, and obtains the user attribute value. Go to step S2010.
  • Step S2011 The integrating means 4324 acquires the user attribute value from the i-th record of the search results.
  • Step S2012 The integrating means 4324 increments the counter j by 1. Return to step S2005.
  • Step S2013 The integration unit 4324 acquires the view attribute identifier of the user attribute value source information acquired in step S2006. Next, the integration unit 4324 acquires the view attribute value corresponding to the view attribute identifier from the i-th record of the search results acquired in S1817, and forms an integrated data record.
  • Step S2014 The integrating means 4324 increments the counter i by 1. Return to step S2002.
  • Step S2015 The integration means 4324 performs a combination scheme identifier process and integrates the search results.
  • An example of the connection scheme identifier processing will be described with reference to the flowcharts of FIGS. 21 and 22.
  • FIG. 21 and 22 An example of the connection scheme identifier processing will be described with reference to the flowcharts of FIGS. 21 and 22.
  • Step S2016 The integrating means 4324 increments the counter i by 1. Return to step S2002.
  • connection method identifier processing is processing corresponding to the i-th record of interest (the i-th record in S2002).
  • Step S2101 The integration means 4324 determines whether the combination method identifier included in the conversion rule definition information is "UNION”. If it is "UNION”, go to step S2102; otherwise, go to step S2113.
  • Step S2102 The integrating means 4324 acquires a set of attribute values of one or more key items from the search results.
  • Step S2103 The integrating means 4324 substitutes 1 for the counter i.
  • Step S2104 The integrating means 4324 determines whether or not the i-th non-key item exists. If the i-th non-key item exists, go to step S2105; if not, go to step S2108.
  • Step S2105 The integrating means 4324 acquires all attribute values for the i-th non-key item.
  • Step S2106 The integration unit 4324 aggregates all attribute values acquired in step S2105 and acquires the attribute value for the i-th non-key item included in the integrated data.
  • Step S2107 The integrating means 4324 increments the counter i by 1. Return to step S2104.
  • the integration unit 4324 is a record having the attribute value acquired in step S2102 and the attribute value acquired in step S2106, and constitutes a record that constitutes integrated data. Return to upper process.
  • Step S2109 The integrating means 4324 determines whether the combination method identifier included in the conversion rule definition information is "CHOICE”. If it is "CHOICE”, go to step S2110; if not "CHOICE”, go to step S2118.
  • Step S2110 The integration means 4324 acquires the priority from the storage unit 41.
  • Step S2111 The integration unit 4324 uses the priority obtained in step S2110 to determine a conversion view with priority, and obtains attribute values of one or more key items of the conversion view.
  • Step S2112 The integrating means 4324 substitutes 1 for the counter i.
  • Step S2113 The integrating means 4324 determines whether or not the i-th non-key item exists. If the i-th non-key item exists, go to step S2114; if not, go to step S2117.
  • Step S2114 The integrating means 4324 acquires all attribute values for the i-th non-key item.
  • Step S2115) The integration unit 4324 aggregates all the attribute values acquired in step S2114 and acquires the attribute value for the i-th non-key item included in the integrated data.
  • Step S2116 The integrating means 4324 increments the counter i by 1. Return to step S2113.
  • the integrating means 4324 is a record having the attribute value acquired in step S2111 and the attribute value acquired in step S2115, and constitutes a record that constitutes integrated data. Return to upper process.
  • Step S21178 The integration means 4324 determines whether or not the combination method identifier included in the conversion rule definition information is "LOOKUP”. If it is "LOOKUP”, go to step S2119; if it is not "LOOKUP”, return to the higher-level processing.
  • Step S2119 The integration means 4324 acquires the reference conditions from the storage unit 41.
  • Step S2120 The integrating means 4324 determines a conversion view on the side that refers to the reference condition. Then, the integration unit 4324 acquires attribute values of one or more key items of the conversion view.
  • Step S2121 The integrating means 4324 determines the conversion view on the side to which the reference condition is referred. Then, the integration unit 4324 acquires an attribute value that is an attribute value of one or more key items of the conversion view that refers to the reference condition and that is not included in the set of attribute values of the conversion view that refers.
  • Step S2122 The integrating means 4324 substitutes 1 for the counter i.
  • Step S2123 The integrating means 4324 determines whether or not the i-th non-key item exists. If the i-th non-key item exists, go to step S2124; if not, go to step S2127.
  • Step S2124 The integrating means 4324 acquires all attribute values for the i-th non-key item.
  • Step S2125) The integration unit 4324 aggregates all the attribute values acquired in step S2124 and acquires the attribute value for the i-th non-key item included in the integrated data.
  • Step S2126 The integrating means 4324 increments the counter i by 1. Return to step S2123.
  • Step S2127 The integrating means 4324 is a record having the attribute values acquired in steps S2120, S2121, and S2125, and constitutes a record that constitutes integrated data. Return to upper process.
  • the operation example here is an example of processing in which the search device 4 obtains search results from data sources stored in the two data source management devices 2, integrates the search results, and obtains integrated data. is.
  • the two data source management devices 2 are devices different from the search device 4, and that the two data source management devices 2 are devices that are different from each other.
  • the sales database has a sales table (23011) and a product table (23012).
  • the sales table (23011) manages one or more records having "merchandise ID”, "customer ID”, "sales unit price” and "sales quantity”.
  • the product table (23012) manages one or more records having "product ID”, "product name”, and "product classification”.
  • the purchase database here has a purchase table (23021).
  • the purchase table (23021) manages one or more records having "merchandise ID”, "supplier” and "purchase unit price”.
  • the dictionary storage unit 411 of the search device 4 stores a data dictionary having three layers of definition information shown in FIGS.
  • a data dictionary is, for example, information input by an administrator who operates the search device 4 .
  • FIG. 24 shows information defining the schema of the sales table (23011) included in the source layer definition information.
  • FIG. 24 has a source identifier “sales database”, a table identifier “sales table”, and one or more source attribute definition information.
  • Source attribute definition information is identified by "ID” in the table of FIG.
  • the source attribute definition information here has "source attribute identifier", "data type” and "size”.
  • the sales database is, for example, a relational database.
  • FIG. 25 shows information defining the schema of the product table (23012) included in the source layer definition information.
  • FIG. 25 has a source identifier “sales database”, a table identifier “product table”, and one or more source attribute definition information.
  • Source attribute definition information is identified by “ID” in the table of FIG.
  • the source attribute definition information here has "source attribute identifier", "data type” and "size”.
  • FIG. 26 shows information defining the schema of the purchase table (23021) included in the source layer definition information.
  • FIG. 26 has a source identifier “purchase database”, a table identifier “purchase table” and one or more source attribute definition information.
  • Source attribute definition information is identified by "ID” in the table of FIG.
  • the source attribute definition information here has a "source attribute identifier".
  • the purchase database is, for example, the file described in the first embodiment.
  • FIG. 27 shows data source specific information included in the source layer definition information.
  • 2701 in FIG. 27 is the data source specific information of the sales database.
  • 2702 is data source specific information of the purchase database.
  • FIG. 28 shows the converted view information of the sales view, which is one of the converted views.
  • Conversion view information is included in conversion rule definition information.
  • This conversion view information has a view identifier "sales view” and one or more view attribute definition information.
  • View attribute definition information is identified by "ID" in the table of FIG.
  • FIG. 29 shows conversion view information of a purchase view, which is one of the conversion views.
  • Conversion view information is included in conversion rule definition information.
  • This conversion view information has a view identifier "purchase view” and one or more view attribute definition information.
  • View attribute definition information is identified by "ID" in the table of FIG.
  • FIG. 30 shows information defining the schema of the user table included in the user layer definition information.
  • the user stratum definition information has a user table identifier "merchandise sales profit table" and one or more user attribute definition information.
  • User attribute definition information is identified by "ID" in the table of FIG.
  • the user attribute definition information of "ID 1" in FIG. It indicates that the attribute value of the view attribute identifier "merchandise ID” of the view identifier "purchase view” may be acquired. That is, the information paired with the view attribute identifier "product ID” of the view identifier "sales view” and the view attribute identifier "product ID” of the view identifier "purchase view” having the same attribute value as the "product ID” indicates that the information paired with is information about the same product.
  • search device 4 An operation example of the search device 4 in the above situation will be described with reference to FIG. First, the user inputs the search condition "SELECT product ID, product name, SUM (sales quantity), SUM (sales amount), SUM (purchase amount), SUM (sales profit)" to the terminal device 3.
  • GROUP BY product ID, product name” is entered.
  • the terminal device 3 receives the search conditions and transmits them to the search device 4 .
  • the condition reception unit 121 of the search device 4 receives the above search condition (SQL sentence).
  • the source determination means 4321 acquires the user table identifier "sales profit by product” included in the search condition.
  • the source determining means 4321 acquires the user attribute identifiers "merchandise ID”, "merchandise name”, "sales quantity”, “sales amount”, “purchase amount”, and "sales profit” included in the search condition.
  • the source determining means 4321 acquires the user attribute definition information paired with each acquired user attribute identifier from the user layer definition information of FIG.
  • the source determining means 4321 acquires the view identifier of each acquired user attribute definition information, performs unique processing on the view identifier, and determines the two view identifiers "sales view” and "purchase view”. get.
  • the source determining means 4321 acquires the user attribute identifiers "merchandise ID”, “merchandise name”, “sales quantity”, and “sales amount” corresponding to the view identifier "sales view” from the acquired user attribute definition information. .
  • the source determining means 4321 acquires the view attribute identifiers "merchandise ID”, “merchandise name”, “sales quantity”, and “sales amount” corresponding to each of the acquired user attribute identifiers and the view identifier "sales view”.
  • the source determination means 4321 refers to the converted view information in FIG. 28 and acquires view attribute value source information paired with each acquired view attribute identifier.
  • the command generating means 4322 acquires the command source information (information paired with the tag ⁇ command source information> of 2701) corresponding to the view identifier "sales view" from the data source specific information of FIG.
  • the command generating means 4322 similarly extracts the "product ID, product name, SUM (sales quantity), SUM (sales amount), SUM (purchase amount), SUM (sales profit)” ”, acquire “sales table.product ID”. Also, the command generating means 4322 acquires “product table.product name” from “product name” forming the extraction unit. In addition, the command generating means 4322 acquires “SUM (sales table.sales quantity)” from “SUM (sales quantity)” forming the extraction unit. In addition, the command generating means 4322 acquires "SUM (sales table.sales unit price.times.sales table.sales amount)” from “SUM (sales amount)” forming the extraction unit.
  • the command generation means 4322 acquires "GROUP BY Sales table. Product ID, Product table. Product name” from the information "GROUP BY Product ID, Product name” in the other part.
  • the command generating means 4322 generates the table identifier "sales table” corresponding to the variable "$table identifier 1$" included in the command source information "FROM $table identifier 1$ INNER JOIN $table identifier 2$", the variable Acquire the table identifier "product table” corresponding to "$table identifier 2$".
  • the command generating means 4322 generates the variable "$table attribute identifier Acquire the table attribute name "product ID” corresponding to "1$” and the table attribute name "product ID” corresponding to the variable "$table attribute identifier 2$".
  • the instruction generating means 4322 generates the instruction source information "SELECT $ extractor $
  • Product ID product table.
  • Product ID WHERE sales table.
  • Product ID 1103 GROUP BY sales table.
  • Product name configure.
  • the source search means 4323 acquires the connection information " ⁇ JDBC connection URL>jdbc:oracle:thin:@localhost:1521:AAA ⁇ driver class>oracle.jdbc.driver.OracleDriver" of 2701 in FIG. Then, the source search means 4323 uses the connection information to access the SQL database "sales database”, and uses the generated search command to retrieve data from the data source "sales database” corresponding to the view identifier. , to get the search results. Then, the source search means 4323 obtains the search result " ⁇ product ID>1103 ⁇ product name>Ipoh Coffee ⁇ sales quantity>70 ⁇ sales amount>14000".
  • the command generation means 4322 acquires "SUM (Sales table.Sales quantity x Purchase table.Purchase unit price)" from “SUM (Purchase amount)" constituting the extraction unit. Next, the command generating means 4322 extracts the information "purchase table. purchase unit price”.
  • the integrating means 4324 extracts the search result " ⁇ product ID>1103 ⁇ product name>Ipoh Coffee ⁇ sales quantity>70 ⁇ sales amount>14000" and the search result " ⁇ product ID>1103 ⁇ purchase unit price>130". Using each attribute value, the integrated data " ⁇ Product ID> 1103 ⁇ Product Name> Ipoh Coffee ⁇ Sales Quantity> 70 ⁇ Sales Amount> 14000 ⁇ Purchase Amount> 9100 ⁇ Sales Profit> 4900".
  • the result output unit 441 transmits the acquired integrated data to the terminal device 3.
  • the terminal device 3 receives and outputs the integrated data.
  • the integrated data is " ⁇ Product ID> 1103 ⁇ Product name> Ipoh Coffee ⁇ Sales quantity> 70 ⁇ Sales amount> 14000 ⁇ Purchase amount> 9100 ⁇ Sales profit> 4900".
  • information is appropriately searched from two or more data sources using three layers of definition information, source layer definition information, conversion rule definition information, and user layer definition information, and the search results are integrated. can.
  • information retrieval can be performed at high speed by using indexes including array indexes.
  • the software that implements the search device 4 in this embodiment is the following program.
  • this program includes information defining two or more data sources each including one or more records having one or more attribute values, a source identifier being an identifier of the data source, and a source identifier being an attribute identifier of the data source.
  • Source layer definition information that is information having one or more source attribute definition information including an attribute identifier
  • a table that is a search target table based on search conditions and that includes one or more records having one or more attribute values
  • User layer definition information that is information that defines a certain user table and that includes a user table identifier that identifies the user table and one or more pieces of user attribute definition information that includes a user attribute identifier that is an attribute identifier of the user table.
  • a condition reception unit that receives a search condition for the user table, a computer that can access a data dictionary having conversion rule definition information that is information for creating integrated data corresponding to a search condition, and two or more data sources. and referring to the data dictionary to determine two or more data sources corresponding to the search condition, using the conversion rule definition information to generate a search command for each of the two or more data sources, Acquire search results based on the search command, integrate the search results corresponding to the two or more data sources using the conversion rule definition information and the user layer definition information, and correspond to the search conditions. It is a program for functioning as a retrieval unit that acquires integrated data and a result output unit that outputs the integrated data acquired by the retrieval unit.
  • a search system equipped with a search device that searches data sources for information using two or more types of indexes including record indexes will be described.
  • the two or more types of index are, for example, one or more of array index, array label index, secondary index, and source index.
  • FIG. 32 is a conceptual diagram of search system B in this embodiment.
  • a search system B includes a search device 4 , one or more data source management devices 2 , and one or more terminal devices 3 .
  • the search device 4 is a device that searches for information from data sources.
  • the search device 4 is, for example, a so-called server, such as a cloud server, an ASP server, or the like. It should be noted that the type of retrieval device 4 does not matter.
  • the search device 4 may search for information from a data source stored in the data source management device 2 which is an external device, or may search for information from a data source inside the search device 4 .
  • One or more data source management devices 2 are usually devices different from the search device 4 .
  • the search device 4 and one or more data source management devices 2 can communicate via a network such as the Internet or LAN. Also, the search device 4 and the terminal device 3 can communicate with each other via a network such as the Internet or a LAN.
  • FIG. 33 is a block diagram of search system B in this embodiment.
  • FIG. 34 is a block diagram of the search device 5. As shown in FIG. 33
  • the search device 5 includes a storage unit 51, a reception unit 12, a processing unit 53, and an output unit 54.
  • the storage unit 51 has an index storage unit 511 .
  • the storage unit 51 may include the data source storage unit 111 .
  • the index storage unit 511 includes an array index storage unit 1121 , an array label/index storage unit 1122 , a record/index storage unit 5113 , a secondary index storage unit 1124 , and a source index storage unit 1125 .
  • the accepting unit 12 includes a condition accepting unit 121 .
  • the processing unit 53 includes an index generation unit 531 , a search unit 532 and an index update unit 533 .
  • the index generation unit 531 includes an array index generation unit 1311 , an array label/index generation unit 1312 , a record index generation unit 5313 , a secondary index generation unit 1314 , and a source index generation unit 1315 .
  • the search unit 532 includes source determination means 5321 , record/index determination means 5322 and search means 5323 .
  • the output unit 54 includes a result output unit 541 and a result output unit 541 .
  • the search device 5 preferably has the same functions as the search device 1, except that it can generate multiple record indexes and search for information using multiple record indexes.
  • the data source management device 2 has a data source storage unit 111 .
  • the terminal device 3 includes a terminal storage unit 31, a terminal reception unit 32, a terminal processing unit 33, a terminal transmission unit 34, a terminal reception unit 35, and a terminal output unit 36.
  • Various types of information are stored in the storage unit 51 that constitutes the search device 5 .
  • Various types of information are, for example, one or more types of indexes, data sources, and one or more search conditions described above.
  • One or more search conditions are associated with a data source.
  • the one or more search conditions are search conditions entered by the user to search for information.
  • the index storage unit 511 stores one or more types of indexes described above. Note that the index storage unit 511 stores two or more record indexes. Also, each index in the index storage unit 511 may have an index structure such as a secondary index, a BTREE, or an inverted index.
  • Array indexes are stored in the array index storage unit 1121 .
  • An array index may exist for each record index of two or more. That is, the array index storage unit 1121 may store two or more array indexes. However, it is preferable that the array index storage unit 1121 stores only one array index. Such one array index is information corresponding to any two or more record indexes.
  • the record index storage unit 5113 stores two or more record indexes.
  • the record index storage unit 1123 normally stores one or more record indexes for each data source. When there are two or more record indexes corresponding to one data source, each of the two or more record indexes is a record index corresponding to a different combination of key items.
  • Each of the two or more record indexes has one or more record index records.
  • a record index record is a set of pairs of one or more key item values and record position information.
  • the record index record shall be a set of one or more key item values and the position information of the record of the array index, and each record of the array index shall be It may be configured to have record position information so as to correspond to the records of the data source.
  • the record/index record is associated with the record position information of the data source, so it may be considered that the record/index record has the record position information.
  • the record/index record corresponds to the data source record.
  • One or more key item values of such a record/index record correspond to a combination of one or more key items.
  • a combination of one or more key items is one key item or a combination of two or more key items.
  • the record index records in the record index are sorted in ascending or descending order using one or more key items as keys. Also, it is preferable that the number of record index records in the record index is equal to the total number of records that the corresponding data source has. Furthermore, when the record index corresponds to two or more key items, the two or more key items have order.
  • the record index storage unit 5113 stores the schema information of the record indexes corresponding to each of two or more record indexes.
  • the schema information of such a record index usually has key item identifiers (attribute identifiers) corresponding to each of one or more key item values that the record index has.
  • Each record index in the record index storage unit 5113 may have an index structure such as a secondary index, BTREE, or inverted index.
  • the processing unit 53 performs various types of processing. Various types of processing are, for example, processing performed by the index generating unit 531, the searching unit 532, and the index updating unit 533. FIG.
  • the index generation unit 531 generates an index from one or more data sources.
  • the index generated by the index generator 531 includes two or more record indexes.
  • the indexes generated by the index generator 531 preferably include array indexes, array label indexes, secondary indexes, and source indexes.
  • the record index generation unit 5313 generates one or more record indexes for each data source.
  • the processing when the record index generation unit 5313 generates one record index for one data source is the same as the processing of the record index generation unit 1313, so the description here is omitted. .
  • the record index generation unit 5313 generates two or more record indexes for each of one or more data sources.
  • the record index generation unit 5313 refers to the data source, generates two or more record indexes, and stores them in the record index storage unit 5113 .
  • the two or more record indexes are two or more record indexes corresponding to different combinations of one or more key items.
  • the record index generation unit 5313 acquires two or more pairs of information that specify one or more key item combinations. Next, the record index generation unit 5313 generates key item values (attribute values) corresponding to one or more key items corresponding to each pair for each record of the data source for each pair of two or more, Get a record index record with record position information. Then, the record/index generation unit 5313 sorts the record/index records for each of the two or more sets using one or more key items as keys, and the record/index record is a set of sorted record/index records. , and stored in the record/index storage unit 5113 .
  • key item values attribute values
  • the record index generation unit 5313 determines two or more combinations of one or more key items that satisfy the selection condition, and corresponds to the combination of one or more key items in each of the two or more groups.
  • a record index which is a set of a key item value and record position information for each of two or more records, is generated and stored in the record index storage unit 5113 .
  • the selection condition is a condition for automatically determining a set of key items. Specific examples of selection conditions will be described later.
  • Methods for the record/index generation unit 5313 to acquire the information on the combination of one or more key items include (1) a method by user designation and (2) a method by automatic acquisition. Further, (2) automatic acquisition methods include, for example, (2-1) a method using search conditions and (2-2) a method using distribution. Each method will be described below. (1) User specified method
  • the record index generation unit 5313 acquires two or more combinations of one or more key item identifiers specified by the user. Note that two or more sets of information are included in the index generation instruction input by the user. Each set of two or more information is one key item identifier or a set of two or more key item identifiers.
  • the record index generation unit 5313 acquires two or more sets of information that satisfy the selection condition. (2-1) How to use search conditions
  • the record index generation unit 5313 acquires, as key item identifiers, attribute identifiers whose frequency of appearance satisfies selection conditions in one or more past search conditions.
  • the appearance frequency may be the number of appearances in one or more past search conditions, or may be the appearance ratio.
  • the selection condition is, for example, that the appearance frequency is greater than or equal to a threshold.
  • the record index generation unit 5313 acquires a set of two or more attribute identifiers whose co-occurrence frequency satisfies the selection condition in one or more past search conditions as a set of key item identifiers.
  • the co-occurrence frequency may be the number of co-occurrences in one or more past search conditions, or the co-occurrence rate.
  • the selection condition is, for example, that the co-occurrence frequency is greater than or equal to a threshold.
  • the record index generation unit 5313 acquires, as key item identifiers, attribute identifiers of two or more attributes whose distribution of attribute values included in each of two or more records of the data source for which the index is to be generated satisfies the selection condition. do.
  • the selection condition is that the attribute value has a variance greater than or equal to a threshold.
  • the record index generation unit 5313 selects N (N is A natural number equal to or greater than 1) or less combinations are acquired as combinations of one or more key item identifiers.
  • the search unit 532 selects one record index from two or more record indexes using the search condition received by the condition reception unit 121, and extracts the key item value of the search condition from the selected record index. and the attribute value in the record corresponding to the position specified by the record position information is obtained from the data source.
  • the acquired attribute value is, for example, the attribute value corresponding to the attribute identifier specified by the search condition, or all attribute values in the record. Also, it may be considered that the key item value is also an attribute value.
  • the method by which the search unit 532 searches using search conditions is as follows. That is, the search unit 532 selects one record index corresponding to a combination of one or more key items including the key item corresponding to the key item value of the search condition. Details of the process of selecting one record index will be described later as the process of the record index determination means 5322 .
  • the search unit 532 acquires the attribute position information corresponding to the attribute identifier of the search condition from the array index, and uses the attribute position information to obtain the attribute value corresponding to the attribute identifier of the search condition from the data source. Get from
  • the search unit 532 retrieves one record index corresponding to a combination of one or more key items including a key item corresponding to the key item value of the search condition received by the condition receiving unit 121 from two or more record indexes. An index is selected, record position information paired with the key item value of the search condition is acquired from the selected record index, and the record corresponding to the position specified by the record position information is determined. Next, the search unit 532 acquires the attribute position information corresponding to the attribute identifier of the search condition from the array index, and uses the attribute position information to determine the attribute value corresponding to the attribute identifier of the search condition. fetched from the record.
  • the search unit 532 selects the record index when the leading key item of the record index matches the key item corresponding to the key item value of the search condition. Then, from the selected record index, acquire the record location information paired with the key item value of the search condition, and acquire the attribute value in the record corresponding to the location specified by the record location information from the data source. do.
  • the search unit 532 performs Determine whether or not the key item matches the key item of the search condition, select one record index in which the largest number of key items are included in the key item of the search condition from the beginning of the record index, From the selected record index, the record position information paired with the key item value of the search condition is obtained, and the attribute value in the record corresponding to the position specified by the record position information is obtained from the data source.
  • the source determination means 5321 acquires from the source index the source identifier that matches the key item value of the search condition or pairs with the minimum key item value and the maximum key item value sandwiching the key item value.
  • the record index determination means 5322 determines one record index to be used for search processing from two or more record indexes.
  • the record index determining means 5322 determines one record index from two or more record indexes paired with the source identifier acquired by the source determining means 5321, for example.
  • the record/index determining means 5322 selects, for example, from two or more record indexes, one record/index corresponding to a combination of one or more key items including the key item included in the search condition received by the condition receiving unit 121. do.
  • the key item of the search condition may be considered as a key item corresponding to the key item value of the search condition.
  • the key item of the search condition may be considered as a key item identifier of the search condition.
  • the record index determination means 5322 selects the record index from two or more record indexes, for example, when the top key item of one record index matches the key item of the search condition. . For example, when there are two or more record indexes whose top key item of the record index matches the key item of the search condition, the record index determination means 5322 determines the next record index of the two or more record indexes. It is determined whether or not the key item matches the key item of the search condition, and one record index in which the largest number of key items from the beginning of the record index is included in the key item of the search condition is selected. Select from the above record indexes.
  • the search means 5323 acquires record position information paired with the key item value of the search condition from the record index selected by the record/index determination means 5322 . Next, the search means 5323 acquires one or more attribute values in the record corresponding to the position specified by the record position information from the data source.
  • the one or more attribute values may be attribute values corresponding to attribute identifiers included in the search condition, or may be all attribute values of the record at the position specified by the record position information.
  • the search means 5323 When the search means 5323 acquires record position information paired with the key item value of the search condition from the record index, the search means 5323 performs, for example, a binary search of the record index to acquire the record position information. You can Also, the searching means 5323 may search for record position information using the index structure from a record index having the index structure, for example.
  • the search means 5323 acquires record position information paired with the key item value of the search condition from the record index selected by the record/index determination means 5322 . Next, the search means 5323 acquires, for example, attribute position information corresponding to the attribute identifier included in the search condition from the array index. Then, the searching means 5323 acquires the attribute value of the position specified by the attribute position information, which is the attribute value in the record of the position specified by the record position information, for example.
  • the search means 5323 acquires the position information of the record of the array index from the record index selected by the record/index determination means 5322, and obtains the record position information of the data source from the record indicated by the position information of the record of the array index. is an attribute value in the record at the position specified by the record position information, and the attribute value at the position specified by the attribute position information corresponding to the attribute identifier included in the search condition may be acquired.
  • the search means 5323 When the record/index determination means 5322 does not select a record/index, the search means 5323 normally performs a sequential search of the data source to be searched, and acquires one or more attribute values corresponding to the search condition.
  • the search means 5323 scans the entire record index. Therefore, it is preferable to acquire the record position information that matches the search condition. Even in such cases, a faster search is usually possible than a sequential search of the entire data source.
  • the index update unit 533 determines that the last update time indicated by the last update time information acquired from the data source is greater than the generation time indicated by the generation time information corresponding to one or more types of indexes. It is determined whether it is later or not, and if it is later, the index generation unit 531 is operated to configure one or more of each type of index. Also, the index updating unit 533 normally overwrites an old index in the index storage unit 511 with one or more configured indexes of each type.
  • the one or more types of index are one or more of array index, array label index, record index, secondary index, and source index.
  • the predetermined conditions are, for example, that an instruction from the user has been received, that a predetermined time has come, and that the data source has been updated.
  • the index update unit 533 updates two or more record indexes of the data source.
  • the output unit 54 outputs various information. Various types of information are, for example, search results to be described later. Note that the output here is usually transmission to the terminal device 3, but display on a display, projection using a projector, printing on a printer, storage on a recording medium, other processing devices or other The concept may include delivery of processing results to a program or the like.
  • the result output unit 541 outputs search results including one or more attribute values acquired by the search unit 532.
  • the storage unit 51, the index storage unit 511, and the record/index storage unit 5113 are preferably non-volatile recording media, but can also be realized with volatile recording media.
  • the process by which information is stored in the storage unit 51 or the like does not matter.
  • information may be stored in the storage unit 51 or the like via a recording medium, or information transmitted via a communication line or the like may be stored in the storage unit 51 or the like.
  • information input via an input device may be stored in the storage unit 11 or the like.
  • the processing unit 53, the index generation unit 531, the search unit 532, the index update unit 533, the record/index generation unit 5313, the source determination unit 5321, the record/index determination unit 5322, and the search unit 5323 are normally supplied from a processor, memory, or the like. can be realized.
  • the processing procedure of the processing unit 13 and the like is normally realized by software, and the software is recorded in a recording medium such as a ROM. However, it may be realized by hardware (dedicated circuit).
  • the processor may be a CPU, MPU, GPU, or the like, and may be of any type.
  • the output unit 54 and the result output unit 541 are usually realized by wireless or wired communication means, but may be realized by broadcasting means.
  • search system B Next, an operation example of search system B will be described. First, an operation example of the search device 5 will be described with reference to the flowchart of FIG. In the flowchart of FIG. 35, the description of the same steps as in the flowchart of FIG. 5 will be omitted.
  • Step S3501 The index generation unit 531 generates an index corresponding to the i-th data source.
  • An example of index generation processing will be described with reference to the flowchart of FIG.
  • Step S3502 The index update unit 533 instructs the index generation unit 531 to operate. As a result, the index generation unit 531 generates an index, associates it with the i-th data source, and accumulates the index. Through such processing, the index corresponding to the i-th data source is updated.
  • An example of index generation processing is the flowchart in FIG.
  • Step S3503 The search unit 532 searches using search conditions. An example of such search processing will be described with reference to the flowcharts of FIGS. 41 and 42. FIG.
  • step S414 it is preferable to associate the search conditions received in step S414 with the data source to be searched and store them in the storage unit 51.
  • the process ends when the power is turned off or the process end interrupt occurs.
  • Step S3601 The record index generation unit 5313 generates one or more record indexes. An example of such record index generation processing will be described with reference to the flowchart of FIG.
  • step S3601 an example of record index generation processing in step S3601 will be described using the flowchart in FIG.
  • description of the same steps as in the flowchart of FIG. 4 will be omitted.
  • Step S3701 The record index generation unit 5313 determines one or more key item sets corresponding to the record index to be generated. An example of such key item set determination processing will be described with reference to the flowchart of FIG.
  • a key item set is one or more key items.
  • the process of determining the key item set is usually the process of obtaining one or more key item identifiers.
  • Step S3702 The record index generation unit 5313 substitutes 1 for the counter i.
  • Step S3703 The record index generation unit 5313 determines whether or not the i-th key item set exists among the key item sets acquired in step S3701. If the i-th key item set exists, go to step S3704; otherwise, return to the upper process.
  • Step S3704 The record index generation unit 5313 substitutes 1 for the counter j.
  • Step S3705 The record index generation unit 5313 determines whether or not the j-th record exists in the target data source. If the j-th record exists, go to step S3706; if not, go to step S3712.
  • Step S3706 The record index generation unit 5313 acquires the record position information of the j-th record.
  • the record index generation unit 5313 generates key item values (attribute values) of one or more key item values of the j-th record and one or more key item values (attribute values) of the i-th key item set. get the value.
  • Step S3708 The record/index generation unit 5313 acquires the position information of the j-th record/index record.
  • the record/index generation unit 5313 constructs the j-th record/index record having record position information, one or more key item values, and record/index record position information.
  • Step S3710 The record/index generation unit 5313 adds the j-th record/index record configured in step S3709 to the i-th record/index.
  • Step S3711 The record index generation unit 5313 increments the counter j by 1. Return to step S3705.
  • the record index generation unit 5313 acquires and accumulates the schema information of the i-th record index.
  • the schema information has one or more key item identifiers (attribute identifiers) that the i-th key item set has.
  • the record index generation unit 5313 accumulates the i-th record index in the record index storage unit 5113.
  • the record index generation unit 5313 also stores the schema information of the i-th record index in association with the i-th record index.
  • Step S3714 The record index generation unit 5313 increments the counter i by 1. Return to step S3703.
  • step S3708 if the secondary index does not exist, step S3708 is unnecessary, and in step S3709 the record index generation unit 5313 has record position information and one or more key item values. Construct the j-th record index record.
  • step S3701 An example of key item set determination processing in step S3701 will be described using the flowchart in FIG.
  • Step S3801 The record index generation unit 5313 determines whether or not there is one or more key item sets specified by the user. If there is one or more key item sets specified by the user, the process goes to step S3802; otherwise, the process goes to step S3803.
  • Step S3802 The record index generation unit 5313 acquires one or more key item sets specified by the user and temporarily stores them in a buffer (not shown). Return to upper process.
  • Step S3803 The record index generator 5313 determines whether or not the number of past search conditions stored in the storage unit 51 and the number of past search conditions for the target data source satisfies the conditions. to decide. If the condition is satisfied, go to step S3804, otherwise go to step S3805. Note that such a condition is, for example, that the number of search conditions is equal to or greater than a threshold or greater than the threshold.
  • Step S3804 The record/index generation unit 5313 uses the search conditions of the storage unit 51 to determine one or more key item sets. An example of such search condition use processing will be described with reference to the flowchart of FIG.
  • Step S3805 The record index generator 5313 determines one or more key item sets using the distribution of attribute values for each attribute of the data source. Return to upper process. An example of such distributed use processing will be described with reference to the flowchart of FIG.
  • Step S3901 The record index generation unit 5313 substitutes 1 for the counter i.
  • Step S3902 The record index generation unit 5313 determines whether or not the i-th attribute identifier exists. If the i-th attribute identifier exists among the one or more attribute identifiers of the target data source, go to step S3903; otherwise go to step S3907. Note that one or more attribute identifiers of the data source may be key item identifiers.
  • the record index generation unit 5313 acquires the appearance frequency of the i-th attribute identifier of the target data source in the search conditions in the storage unit 51.
  • the appearance frequency may be the number of appearances or the appearance ratio.
  • Step S3904 The record index generation unit 5313 determines whether or not the appearance frequency acquired in step S3903 satisfies the selection condition 1. If the selection condition 1 is satisfied, the process goes to step S3905, and if the selection condition 1 is not satisfied, the process goes to step S3906. Selection condition 1 is, for example, that the appearance frequency is equal to or greater than a threshold.
  • Selection condition 1 may be, for example, that the appearance frequency is within the top N (N is a natural number equal to or greater than 1) among attribute identifiers equal to or greater than 2. Under such conditions, the record index generation unit 5313 determines attribute identifiers to be stored in a buffer (not shown) after obtaining appearance frequencies of all attribute identifiers.
  • Step S3905 The record index generator 5313 accumulates the i-th attribute identifier in a buffer (not shown). It should be noted that the i-th attribute identifier is the target key item set that constitutes the record index. The key item set here is one attribute identifier.
  • Step S3906 The record index generation unit 5313 increments the counter i by 1. Return to step S3902.
  • Step S3907 The record index generation unit 5313 substitutes 1 for the counter j.
  • Step S3908 The record index generation unit 5313 determines whether or not the j-th combination of two or more attribute identifiers exists. If the j-th combination of two or more attribute identifiers exists, go to step S3909; otherwise, return to the upper process.
  • the record index generation unit 5313 acquires the co-occurrence frequency in the search condition of the j-th combination of two or more attribute identifiers.
  • the co-occurrence frequency is the number or ratio of search conditions in which all attribute identifiers of 2 or more are included.
  • Step S3910 The record index generation unit 5313 determines whether the co-occurrence frequency acquired in step S3909 satisfies the selection condition 2 or not. If the selection condition 2 is satisfied, the process goes to step S3911, and if the selection condition 2 is not satisfied, the process goes to step S3912. Selection condition 2 is, for example, that the co-occurrence frequency is equal to or greater than a threshold.
  • Selection condition 2 may be, for example, that the co-occurrence frequency is within the top N (N is a natural number equal to or greater than 1) in two or more combinations of attribute identifiers. Under such a condition, the record index generation unit 5313 determines combinations of attribute identifiers to be stored in a buffer (not shown) after obtaining co-occurrence frequencies of all combinations of attribute identifiers.
  • the record index generator 5313 accumulates the j-th combination of two or more attribute identifiers in a buffer (not shown). It should be noted that the j-th combination of two or more attribute identifiers is the target key item set that constitutes the record index. A key item set here is two or more attribute identifiers.
  • Step S3912 The record index generation unit 5313 increments the counter j by 1. Return to step S3908.
  • Step S4001 The record index generation unit 5313 substitutes 1 for the counter i.
  • Step S4002 The record index generation unit 5313 determines whether or not the i-th attribute identifier exists. If the i-th attribute identifier exists among the one or more attribute identifiers of the target data source, go to step S4003, otherwise go to step S4008. Note that one or more attribute identifiers of the data source may be key item identifiers.
  • Step S4003 The record index generation unit 5313 acquires the attribute value corresponding to the i-th attribute identifier of each record of the target data source.
  • Step S4004 The record index generation unit 5313 calculates the variance of the two or more attribute values acquired in step S4003.
  • Step S4005 The record index generation unit 5313 determines whether or not the variance calculated in step S4004 satisfies the selection condition 3. If selection condition 3 is satisfied, go to step S4006; if not, go to step S4007. Selection condition 3 is, for example, that the variance is greater than or equal to a threshold. Further, selection condition 3 may be, for example, that the variance is within the top N (N is a natural number equal to or greater than 1).
  • Step S4006 The record index generator 5313 accumulates the i-th attribute identifier in a buffer (not shown). It should be noted that the i-th attribute identifier is the target key item set that constitutes the record index. The key item set here is one attribute identifier.
  • Step S4007 The record index generation unit 5313 increments the counter i by 1. Return to step S4002.
  • Step S4008 The record index generation unit 5313 substitutes 1 for the counter j.
  • Step S4009 The record index generation unit 5313 determines whether or not there is a j-th combination of attribute identifiers within N (N is a natural number equal to or greater than 2) in the set of attribute identifiers accumulated in step S4006. to judge. If the j-th combination of attribute identifiers exists, go to step S4010; otherwise, return to the upper process.
  • Step S4010 The record index generator 5313 accumulates the j-th combination of attribute identifiers in a buffer (not shown). It should be noted that the j-th combination of two or more attribute identifiers is the target key item set that constitutes the record index. A key item set here is two or more attribute identifiers.
  • Step S4011 The record index generation unit 5313 increments the counter j by 1. Return to step S4009.
  • step S3503 a first example of search processing in step S3503 will be described using the flowchart in FIG.
  • description of the same steps as in the flowchart of FIG. 11 will be omitted.
  • Step S4101 The record index determination means 5322 determines a record index to be used for searching. An example of such record index determination processing will be described with reference to the flowchart of FIG.
  • step S1108 the search unit 532 acquires record position information using the record index determined in step S4101.
  • step S3503 a second example of search processing in step S3503 will be described using the flowchart in FIG.
  • description of the same steps as in the flowcharts of FIGS. 11 and 41 will be omitted.
  • Step S4201 The searching means 5323 searches the record/index determined in step S4101, determines the record/index record corresponding to the key item value of the search condition, and determines the record position information of the record/index record. to get
  • Step S4202 The search means 5323 determines whether or not there is an array index corresponding to the data source to be searched. If the array index exists, go to step S4203; if not, go to step S4210.
  • Step S4203 The search means 5323 substitutes 1 for the counter i.
  • Step S4204 The search means 5323 determines whether or not the i-th attribute identifier (acquired by search) included in the search condition exists. If the i-th attribute identifier exists, go to step S4204; otherwise go to step S4209.
  • Step S4205 The search means 5323 acquires the attribute position information corresponding to the i-th attribute identifier from the array index.
  • Step S4206 The search means 5323 acquires from the data source the attribute value specified by the attribute position information acquired in step S4205 in the record specified by the record position information acquired in step S4201.
  • Step S4207 The search means 5323 temporarily stores the attribute value acquired in step S4206 in a buffer (not shown) in association with the i-th attribute identifier.
  • Step S4208 The search means 5323 increments the counter i by 1. Return to step S4204.
  • Step S4209 The search means 5323 constructs search results using attribute values and the like temporarily accumulated in a buffer (not shown). Return to upper process.
  • Step S4210) The search means 5323 substitutes 1 for the counter i.
  • Step S4211 The search means 5323 determines whether or not the i-th attribute identifier (acquired by search) included in the search condition exists. If the i-th attribute identifier exists, go to step S4212, otherwise go to step S4209.
  • Step S4212 The search means 5323 acquires the order of attributes in the data source for the i-th attribute identifier. This order is the order in which the attribute values corresponding to the i-th attribute identifier are stored, and is the order of the attribute values in the record. Such order information may exist in the data source or may exist in the storage unit 51 .
  • Step S4213 The search means 5323 acquires the attribute value existing at the position of the order acquired in step S4212 in the record specified by the record position information acquired in step S4201.
  • Step S4214 The search means 5323 temporarily accumulates the attribute value acquired in step S4213 in a buffer (not shown) in association with the i-th attribute identifier.
  • Step S4215 The search means 5323 increments the counter i by 1. Return to step S4211.
  • Step S4301 The record index determining means 5322 acquires one or more key item identifiers corresponding to the key item attribute values of the search condition.
  • a search condition may have one or more key item identifiers.
  • Step S4302 The record index determination means 5322 substitutes 1 for the counter i.
  • Step S4303 The record index determination means 5322 determines whether or not the i-th record index exists. If the i-th record index exists, go to step S4304; otherwise go to step S4313.
  • Step S4304 The record index determination means 5322 substitutes 1 for the counter j.
  • Step S4305) The record index determination means 5322 substitutes 0 (initial value) for the score for the i-th record index.
  • the record index determination means 5322 refers to the schema information of the i-th record index, and the j-th key item identifier possessed by the schema information is included in the key item identifier acquired in step S4301. determine whether or not If included, go to step S4307; if not included, go to step S4311.
  • Step S4307 The record index determination means 5322 adds 1 to the score for the i-th record index.
  • Step S4308 The record index determining means 5322 determines whether all the key item identifiers acquired in step S4301 are included in the schema information of the i-th record index. If such determination is made, the process goes to step S4309, and if not, the process goes to step S4310.
  • Step S4309) The record index determining means 5322 determines the i-th record index as the record index to be used for searching. Return to upper process. Note that such a determination is, for example, reading the i-th record index, obtaining the identifier of the i-th record index, and the like.
  • Step S4310 The record index determination means 5322 increments the counter j by 1. Return to step S4306.
  • Step S4311 The record index determining means 5322 associates the score of the i-th record index with the i-th record index and temporarily stores it in a buffer (not shown).
  • Step S4312 The record index determination means 5322 increments the counter i by 1. Return to step S4303.
  • the record index determining means 5322 refers to a buffer (not shown) and determines the record index corresponding to the maximum score as the record index to be used for searching. Return to upper process.
  • a label record is a collection of attribute identifiers. Some attribute identifiers in the set of attribute identifiers can be key item identifiers.
  • [No. ] is a record ID whose values are [1] [2] [3] in FIG.
  • [No. ] is the record position information of each record (here, the offset at the beginning of the record in the data source).
  • PID is a user identifier.
  • Age is the age of the user.
  • Region is the region (here, prefecture) where the user lives.
  • Specific example 1 is an example of processing for generating two or more record indexes.
  • Specific example 2 is an example of a process of selecting one record index from two or more record indexes and performing a search using that record index.
  • index generation instruction includes information specifying the data source (X) and information specifying a set of one or more key items. Specifically, it is assumed that the index generation instruction includes " ⁇ data source> X ⁇ key item set> (Age, PID) ⁇ key item set> (Region, Age) ⁇ key item set>(PID)".
  • the terminal device 3 receives the index generation instruction and transmits the index generation instruction to the search device 5.
  • the reception unit 12 of the search device 5 receives the index generation instruction from the terminal device 3 .
  • the index generator 131 generates a record index of data source (X) as follows.
  • the record index generation unit 5313 acquires the key item set " ⁇ key item set> (Age, PID) ⁇ key item set> (Region, Age) ⁇ key item set> (PID)" included in the index generation instruction. do.
  • the record index generation unit 5313 uses " ⁇ data source> X" and " ⁇ key item set> (Age, PID)" to determine the data source management device in which the data source (X) is stored. 2 and read the data source (X).
  • the record/index generation unit 5313 generates a record/index record including the attribute value “Age”, the attribute value “PID”, and the record position information of each record of the data source (X). Get each record.
  • the record/index generation unit 5313 sorts the record/index records using the two attribute values of “Age” and “PID” as keys to form a record/index to be accumulated. Then, the record index generation unit 5313 stores the record index in the record index storage unit 5113 .
  • the record index generation unit 5313 stores the schema information (Age, PID) of the record index in the record index storage unit 5113 in association with the record index.
  • the schema information includes one or more attribute identifiers. Also, when the schema information has two or more attribute identifiers, the two or more attribute identifiers have an order.
  • the record index accumulated here is called record index (1) (see FIG. 45).
  • the record index generation unit 5313 uses " ⁇ data source> X" and " ⁇ key item set> (Region, Age)" to determine the data source management device in which the data source (X) is stored. 2 to obtain a record index record including the attribute value "Region”, the attribute value "Age”, and the record position information of each record of the data source (X) for each record of the data source (X).
  • the record/index generation unit 5313 sorts the record/index records using the two attribute values of “Region” and “Age” as keys to form a record/index to be accumulated. Then, the record index generation unit 5313 stores the record index in the record index storage unit 5113 .
  • the record index generation unit 5313 stores the schema information (Region, Age) of the record index in the record index storage unit 5113 in association with the record index.
  • the record index accumulated here is called record index (2) (see FIG. 45).
  • the record index generation unit 5313 uses " ⁇ data source> X" and " ⁇ key item set> (PID)" to access the data source management device 2 in which the data source (X) is stored. It accesses and acquires record index records including the attribute value "PID” and record position information of each record of the data source (X) for each record of the data source (X).
  • the record/index generation unit 5313 sorts the record/index records using the “PID” attribute as a key to form a record/index to be accumulated. Then, the record index generation unit 5313 stores the record index in the record index storage unit 5113 .
  • the record index generation unit 5313 stores the schema information (PID) of the record index in the record index storage unit 5113 in association with the record index.
  • the record index accumulated here is called record index (3) (see FIG. 45).
  • the record indexes (1), (2), and (3) in FIG. 45 and the record index schema information 2801 are accumulated in the record index storage unit 5113.
  • the terminal device 3 receives the search conditions and transmits the search conditions to the search device 5.
  • condition reception unit 121 of the search device 5 receives the search conditions from the terminal device 3.
  • the search means 5323 reads the data source (X) and moves the file pointer to the position of the record corresponding to the record position information "241" (see 2804 in Fig. 45). Next, the search means 5323 acquires the attribute identifier “PID, Region, Age, TestA, TestB” included in the search condition to be searched from the record 2804 .
  • the search means 5323 refers to the schema information (not shown) of the data source (X), the order of the attribute identifier “PID” is “1”, the order of the attribute identifier “Region” is “3”, the attribute identifier “Age , the order "Y (Y is a natural number of 4 or more)" of the attribute identifier "TestA”, and the order "Y+1" of the attribute identifier "TestB”. Then, the search means 5323 sequentially scans the attribute values of the record specified by the record position information "241", acquires the attribute value indicated by the order for each attribute identifier, and associates the attribute value with the attribute identifier. to accumulate. Then, the search means 5323 obtains the search result " ⁇ PID> 155 ⁇ Region> Tokyo ⁇ Age> 30 ⁇ Test A> 0.2 ⁇ Test B> 0.24".
  • the result output unit 141 transmits the acquired search results to the terminal device 3 of the user.
  • the terminal device 3 receives and outputs such search results.
  • An output example of such search results is 2805 in FIG.
  • information can be searched at high speed for various search conditions.
  • two or more suitable record indexes can be generated.
  • the processing in the present embodiment may be realized by software. Then, this software may be distributed by software download or the like. Also, this software may be recorded on a recording medium such as a CD-ROM and distributed. Note that this also applies to other embodiments in this specification.
  • the software that implements the search device 5 in this embodiment is the following program.
  • this program is an index corresponding to a record of a data source including two or more records having key item values corresponding to two or more key items and attribute values corresponding to one or more attribute identifiers, two or more record indexes that are sets of pairs of record position information specifying the positions of records containing one or more key item values corresponding to one or more key item combinations, a computer capable of accessing a record index storage unit storing two or more record indexes each corresponding to a combination of different key items; selecting one record index corresponding to a combination of one or more key items including a key item corresponding to the key item value of the search condition from the record indexes, and selecting the search condition from the selected record index; a search unit that acquires record position information paired with the key item value held by the data source, and acquires from the data source an attribute value in the record corresponding to the position specified by the record position information, and the search unit acquires
  • This is a program for functioning as a result output unit for outputting search results including the attribute values obtained.
  • FIG. 46 shows the appearance of a computer that executes the program described in this specification and realizes the search device 1 and the like of the various embodiments described above.
  • the embodiments described above may be implemented in computer hardware and computer programs running thereon.
  • FIG. 46 is an overview diagram of this computer system 300
  • FIG. 47 is a block diagram of the system 300. As shown in FIG.
  • a computer system 300 includes a computer 301 including a CD-ROM drive, a keyboard 302, a mouse 303 and a monitor 304.
  • a computer 301 includes a CD-ROM drive 3012, an MPU 3013, a bus 3014 connected to the CD-ROM drive 3012, a ROM 3015 for storing programs such as a boot-up program, It includes a RAM 3016 connected and for temporarily storing application program instructions and providing temporary storage space, and a hard disk 3017 for storing application programs, system programs and data.
  • computer 301 may also include a network card that provides connection to a LAN.
  • a program that causes the computer system 300 to execute the functions of the search device 1 of the embodiment described above may be stored in the CD-ROM 3101, inserted into the CD-ROM drive 3012, and transferred to the hard disk 3017.
  • the program may be transmitted to computer 301 via a network (not shown) and stored in hard disk 3017 .
  • Programs are loaded into RAM 3016 during execution.
  • the program may be loaded directly from CD-ROM 3101 or network.
  • the program does not necessarily include an operating system (OS) or a third party program that causes the computer 301 to execute the functions of the search device 1 of the embodiment described above.
  • a program need only contain those parts of instructions that call the appropriate functions (modules) in a controlled manner to produce the desired result. How the computer system 300 operates is well known and will not be described in detail.
  • the step of transmitting information, the step of receiving information, etc. are performed by hardware. processing) are not included.
  • the computer that executes the above program may be singular or plural. That is, centralized processing may be performed, or distributed processing may be performed.
  • two or more communication means existing in one device may be physically realized in one medium.
  • each process may be implemented by centralized processing by a single device, or may be implemented by distributed processing by a plurality of devices.
  • the retrieval device has the effect of being able to perform information retrieval at high speed, and is useful as a retrieval device or the like.

Landscapes

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

Abstract

【課題】従来技術においては、高速に情報検索を行うことが困難であった。 【解決手段】2以上のレコードのうちの1以上の各レコードごと、および各レコードの1以上の各属性ごとに、属性値が存在する位置を特定する属性位置情報を有する配列インデックスが格納される配列インデックス格納部1121と、属性値に対応する属性識別子を含む検索条件を受け付ける条件受付部121と、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値を、2以上の属性値を有する2以上のレコードを含むデータソースが格納されるデータソース格納部111から取得する検索部132と、検索部132が取得した属性値を含む検索結果を出力する結果出力部141とを具備する検索装置1により、情報検索を高速に行える。

Description

検索装置、検索方法、および記録媒体
 本発明は、情報を検索する検索装置等に関するものである。
 従来、インデックスを用いて、高速な検索を実現することを目的とした検索システムがあった(例えば、特許文献1参照)。
特開2006-99427号公報
 しかしながら、従来技術においては、例えば、1レコードの長さが非常に長いデータソースに対する高速な検索が困難であった。
 例えば、一般的な遺伝子・ゲノム情報を取り扱うデータは、遺伝子の塩基配列やタンパク質のアミノ酸配列などのデータが巨大であり、レコード内の列方向の配列として格納することが多く、1レコードの長さが数GBにもなり得る。また、遺伝子・ゲノム情報を取り扱うデータは、フラットファイル(一般的なテキストファイル)に比較的単純なレイアウトで保存され、流通されているケースが多い。
 かかる一般的な遺伝子・ゲノム情報を取り扱うデータに対して、例えば、列方向の配列を展開して、行方向のレコードとして変換し、格納すれば、従来型のデータベースでも取り扱いが可能となるが、データ量もさらに膨らむ(例えば、数十倍になる)ため、変換および格納の処理に時間がかかり、極めて非効率であった。また、ファイル全体をそのままメモリに読み込んで専用プログラムにより処理する、あるいは非リレーショナル型データベースが利用されることもあるが、レコード全体を読み込むのに大量のメモリ資源が必要となり、一度に処理できる量に制約がある。また、遺伝子・ゲノム情報を取り扱うデータに対する処理の柔軟性に欠けるため、個人属性や病歴など他の情報と組み合わせて柔軟に利用することが容易ではなかった。また、大量データを高速に処理するためには特別なハードウェアやオペレーションが必要となり、高度なスキルを有するエンジニアが不可欠であった。
 以上のように、例えば、1レコードの長さが非常に長いデータソースに対して、従来技術では、高速に検索することが困難であった。
 かかる課題に対して、本発明では、例えば、1レコードの長さが非常に長いデータソースに対しても、高速に情報検索ができる技術を提供することを目的とする。なお、本発明は、レコード長が長くないデータソースに対しても適用可能であるが、レコード長が長いデータソースに対して、より効果を発揮するものである。
 本第一の発明の検索装置は、2以上のレコードのうちの1以上の各レコードごと、および各レコードの1以上の各属性ごとに、属性値が存在する位置を特定する属性位置情報を有する配列インデックスが格納される配列インデックス格納部と、属性値に対応する属性識別子を含む検索条件を受け付ける条件受付部と、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値を、2以上の属性値を有する2以上のレコードを含むデータソースが格納されるデータソース格納部から取得する検索部と、検索部が取得した属性値を含む検索結果を出力する結果出力部とを具備する検索装置である。
 かかる構成により、情報検索を高速に行える。
 また、本第二の発明の検索装置は、第一の発明に対して、配列インデックス格納部には、2以上のレコードのうちの一部である1以上の各レコードごとに、1以上の各レコードが有する2以上の属性値のうちの1以上の各属性値の属性位置情報を有する配列インデックスが格納され、検索部は、検索条件が有する属性識別子で識別される属性値の前に配置されている属性値を識別する属性識別子に対応する第一の属性位置情報と、検索条件が有する属性識別子で識別される属性値の後に配置されている属性値を識別する属性識別子に対応する第二の属性位置情報とを取得し、第一の属性位置情報が特定する位置と、第二の属性位置情報が特定する位置の間に存在する属性値であり、検索条件が有する属性識別子に対応する属性値を、データソースから取得する、検索装置である。
 かかる構成により、情報検索をより高速に行える。
 また、本第三の発明の検索装置は、第一または第二の発明に対して、2以上の各属性ごとに、属性値の属性位置情報が存在する順番を特定する属性順番情報を有する配列ラベル・インデックスが格納される配列ラベル・インデックス格納部をさらに具備し、検索部は、検索条件が有する属性識別子に対応する属性順番情報を配列ラベル・インデックスから取得し、属性順番情報を用いて、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値を、データソースから取得する、検索装置である。
 かかる構成により、情報検索をより高速に行える。
 また、本第四の発明の検索装置は、第一から第三いずれか1つの発明に対して、データソースのレコードに対応するインデックスであり、キー項目値とキー項目値を含むレコードの位置を特定するレコード位置情報の2以上の組であるレコード・インデックスが格納されるレコード・インデックス格納部をさらに具備し、データソースは、キー項目値と2以上の属性値とを有する2以上のレコードを含み、検索条件は、キー項目値を有し、検索部は、検索条件が有するキー項目値と対になるレコード位置情報をレコード・インデックスから取得し、レコード位置情報が特定する位置に対応するレコードを決定し、レコードの中の属性値であり、検索条件が有する属性識別子に対応する属性値を、データソースから取得する、検索装置である。
 かかる構成により、情報検索をより高速に行える。
 また、本第五の発明の検索装置は、第四の発明に対して、2以上のレコードのうちの一部である1以上の各レコードごとに、レコード・インデックス内における箇所であり、レコード位置情報が存在する箇所を特定するレコード・インデックスレコード位置情報と、レコードのキー項目値との組である2次インデックスが格納される2次インデックス格納部をさらに具備し、検索部は、検索条件が有するキー項目値に対応する第一のレコード・インデックスレコード位置情報と第二のレコード・インデックスレコード位置情報とを、2次インデックスから取得し、第一のレコード・インデックスレコード位置情報と第二のレコード・インデックスレコード位置情報との間のレコード・インデックスレコード位置情報をレコード・インデックスから決定し、レコード・インデックスレコード位置情報と対になるレコード位置情報をレコード・インデックスから取得し、レコード位置情報が特定する位置に対応するレコードを決定し、レコードの中の属性値であり、検索条件が有する属性識別子に対応する属性値を、データソースから取得する、検索装置である。
 かかる構成により、情報検索をより高速に行える。
 また、本第六の発明の検索装置は、第一から第五いずれか1つの発明に対して、検索条件は、キー項目値を有し、データソース格納部には、データソースを識別するソース識別子に対応付いた、2以上のデータソースが格納され、2以上の各データソースごとに、ソース識別子と、ソース識別子で識別されるデータソースが有する最小キー項目値と、ソース識別子で識別されるデータソースが有する最大キー項目値とを有するソース・インデックスが格納されるソース・インデックス格納部をさらに具備し、検索部は、検索条件が有するキー項目値と一致する、またはキー項目値を間に挟む最小キー項目値と最大キー項目値と対になるソース識別子を、ソース・インデックスから取得し、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、属性位置情報を用いて、レコードの中の属性値であり、検索条件が有する属性識別子に対応する属性値を、ソース識別子により識別されるデータソースから取得する、検索装置である。
 かかる構成により、情報検索をより高速に行える。
 また、本第七の発明の検索装置は、第一から第五いずれか1つの発明に対して、データソース格納部には、データソースを識別するソース識別子に対応付いた、2以上のデータソースが格納され、2以上の各データソースごとに、ソース識別子と、ソース識別子で識別されるデータソースが有する最小属性識別子と、ソース識別子で識別されるデータソースが有する最大属性識別子とを有するソース・インデックスが格納されるソース・インデックス格納部をさらに具備し、検索部は、検索条件が有する属性識別子と一致する、または属性識別子を間に挟む最小属性識別子と最大属性識別子と対になるソース識別子を、ソース・インデックスから取得し、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、属性位置情報を用いて、レコードの中の属性値であり、検索条件が有する属性識別子に対応する属性値を、ソース識別子により識別されるデータソースから取得する、検索装置である。
 かかる構成により、情報検索をより高速に行える。
 また、本第八の発明の検索装置は、第一から第七いずれか1つの発明に対して、データソースにおける2以上のレコードのうちの1以上の各レコードごと、および属性ごとに、1以上の各属性値が存在する位置を特定する属性位置情報を取得し、属性位置情報を有する配列インデックスを生成し、配列インデックス格納部に蓄積する配列インデックス生成部をさらに具備する、検索装置である。
 かかる構成により、情報検索を高速に行うためのインデックスを自動生成できる。
 また、本第九の発明の検索装置は、第七の発明に対して、データソース格納部には、データソースを識別するソース識別子に対応付いた、2以上のデータソースが格納され、2以上の各属性ごとに、属性位置情報が存在する箇所を特定する属性順番情報を取得し、属性順番情報を有する配列ラベル・インデックスを生成し、配列ラベル・インデックス格納部に蓄積する配列ラベル・インデックス生成部と、データソースを参照し、データソースの2以上の各レコードのキー項目値とレコード位置情報との組であるレコード・インデックスを生成し、レコード・インデックス格納部に蓄積するレコード・インデックス生成部と、2以上のレコードのうちの一部である1以上の各レコードごとに、レコード位置情報が存在する箇所を特定するレコード・インデックスレコード位置情報と、レコードのキー項目値との組とを取得し、2次インデックスを生成し、2次インデックス格納部に蓄積する2次インデックス生成部と、2以上の各データソースごとに、ソース識別子と、ソース識別子で識別されるデータソースが有する最小キー項目値と、ソース識別子で識別されるデータソースが有する最大キー項目値とを取得し、ソース識別子と最小キー項目値と最大キー項目値とを有するソース・インデックスを生成し、ソース・インデックス格納部に蓄積するソース・インデックス生成部とをさらに具備する、検索装置である。
 かかる構成により、情報検索をより高速に行うためのインデックスを自動生成できる。
 また、本第十の発明の検索装置は、第一から第九いずれか1つの発明に対して、データソースには、最終更新時を特定する最終更新時情報が対応付いており、配列インデックスには、配列インデックスを生成した時を特定する生成時情報が対応付いており、予め決められた条件を満たす場合に、最終更新時情報が示す最終更新時が、生成時情報が示す生成時より後か否かを判断し、後である場合に、配列インデックス生成部を動作させて、配列インデックスを構成するインデックス更新部をさらに具備する、検索装置である。
 かかる構成により、最新の状態のインデックスを保持できる。
 本発明の検索装置は、1以上の属性値を有する1以上のレコードを含む2以上の各データソースを定義する情報であり、データソースの識別子であるソース識別子と、データソースの属性識別子であるソース属性識別子を含む1以上のソース属性定義情報とを有する情報であるソース層定義情報と、検索条件に基づく検索の対象のテーブルであり、1以上の属性値を有する1以上のレコードを含むテーブルであるユーザテーブルを定義する情報であり、ユーザテーブルを識別するユーザテーブル識別子と、ユーザテーブルの属性識別子であるユーザ属性識別子を含む1以上のユーザ属性定義情報とを有する情報であるユーザ層定義情報と、検索条件に基づいて、2以上の各データソースに対して発行する検索命令を生成し、検索命令に対応する検索結果を取得し、2以上の検索結果を用いて、検索条件に対応する統合データを作成するための情報である変換ルール定義情報と、を有するデータ辞書を参照して、情報を検索する検索装置であり、ユーザテーブルに対する検索条件を受け付ける条件受付部と、データ辞書を参照して、検索条件に対応する2以上のデータソースを決定し、変換ルール定義情報を用いて、2以上の各データソースごとに、検索命令を生成し、検索命令に基づいた検索結果を取得し、変換ルール定義情報とユーザ層定義情報とを用いて、2以上の各データソースに対応する検索結果を統合し、検索条件に対応する統合データを取得する検索部と、検索部が取得した統合データを出力する結果出力部とを具備する検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を統合できる。
 また、本発明の検索装置は、上記の発明に対して、変換ルール定義情報は、2以上のデータソースのうちの1以上のデータソースを用いて構成される変換ビューを定義する1以上の変換ビュー情報を有し、変換ビュー情報は、1以上のビュー属性値を有する1以上のレコードを含み得る変換ビューを定義する情報であり、ビュー属性値に対応するビュー属性識別子と、ビュー属性値の取得方法を特定するビュー属性値元情報とを有する1以上のビュー属性定義情報を有し、ユーザ属性定義情報は、1以上の変換ビューの1以上のビュー属性値を用いたユーザ属性値の取得方法を特定するユーザ属性値元情報を有し、検索部は、検索条件に含まれる1以上のユーザ属性識別子を取得し、1以上の各ユーザ属性識別子に対応するユーザ属性値元情報を取得し、ユーザ属性値元情報に対応する1以上のビュー属性識別子を取得し、1以上の各ビュー属性識別子に対応するソース識別子をビュー属性定義情報から取得するソース決定手段と、検索条件とビュー属性値元情報とを用いて、ソース決定手段が取得した2以上の各ソース識別子で識別されるデータソースごとに検索命令を生成する命令生成手段と、2以上の各データソースごとに、検索命令に基づいた検索結果を取得するソース検索手段と、検索条件とユーザ層定義情報とを用いて、ソース検索手段が取得した2以上の各データソースごとの検索結果を統合した統合データを取得する統合手段とを具備する、検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を統合できる。
 また、本発明の検索装置は、上記の発明に対して、1以上のビュー属性値元情報のうちのいずれかのビュー属性値元情報は、2以上のいずれかのデータソースのソース属性識別子または1以上のいずれかの変換ビューのビュー属性識別子のうちの1以上の属性識別子と、1以上の属性識別子に対応する属性値をパラメータとする演算式またはプログラム識別子とを有し、検索部は、ビュー属性値元情報に対応するビュー属性値を取得する場合に、ビュー属性値元情報が有する1以上の各属性識別子に対応する属性値をデータソースまたは変換ビューから取得し、当該取得した1以上の属性値を演算式またはプログラム識別子で識別されるプログラムに与えて、演算式またはプログラムを実行し、ビュー属性値を取得する、検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を統合できる。
 また、本発明の検索装置は、上記の発明に対して、変換ルール定義情報は、2以上の変換ビュー情報を有し、かつ2以上の変換ビュー情報に基づいて取得された2以上の検索結果を結合する方式を特定する結合方式識別子を有し、統合手段は、結合方式識別子により特定される結合方式に従って、2以上の検索結果を結合し、統合データを取得する検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を適切に統合できる。
 また、本発明の検索装置は、上記の発明に対して、変換ルール定義情報は、「UNION」「CHOICE」「LOOKUP」の3以上の結合方式識別子のうちの2以上の結合方式識別子の中の一の結合方式識別子を有し、「UNION」は、2以上の検索結果に対して、キー項目でグループ化し、非キー項目の2以上の属性値を集約することにより、一のレコードを構成する併合処理により2以上の検索結果を結合することを示す情報であり、「CHOICE」は、優先順位に従い、2以上の検索結果の中から1以上の検索結果に含まれるキー項目の属性値を選択し、かつ非キー項目の2以上の属性値を集約して、一のレコードを構成する選択処理により2以上の検索結果を結合することを示す情報であり、「LOOKUP」は、参照条件に従い、2以上の検索結果のうちの一の検索結果のキー項目の属性値に、当該一の検索結果とは異なる他の検索結果に含まれるキー項目の属性値であり、一の検索結果に含まれないキー項目の属性値を付加し、かつ非キー項目の2以上の属性値を集約して、一のレコードを構成する補完処理により2以上の検索結果を結合することを示す情報である、検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を適切に統合できる。
 また、本発明の検索装置は、上記の発明に対して、1以上のユーザ属性値元情報のうちのいずれかのユーザ属性値元情報は、1以上のいずれかの変換ビューのビュー属性識別子または2以上のいずれかのデータソースのソース属性識別子のうちの1以上の属性識別子と、1以上の属性識別子に対応する属性値をパラメータとする演算式またはプログラム識別子とを有し、検索部は、ユーザ属性値元情報に対応するユーザ属性値を取得する場合に、ユーザ属性値元情報が有する1以上の各属性識別子に対応する属性値を変換ビューまたはデータソースから取得し、取得した1以上の属性値を演算式またはプログラム識別子で識別されるプログラムに与えて、演算式またはプログラムを実行し、ユーザ属性値を取得する、検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を統合できる。
 また、本発明の検索装置は、上記の発明に対して、ソース層定義情報は、データソースに対する検索命令を生成するための命令元情報を有し、2以上の各データソースに対応する命令元情報には、少なくとも2種類以上の異なる命令元情報が存在し、検索部は、2以上の各データソースに対する命令元情報に従って、2以上の各データソースから情報を取得するための検索命令を生成し、検索命令に基づいた検索結果を取得し、2以上の検索結果を統合し、統合データを取得する、検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を統合できる。
 また、本発明の検索装置は、上記の発明に対して、2種類以上の異なる命令元情報は、SQL文の検索命令を生成するための情報、および検索モジュールを生成するための情報を含み、検索部は、2以上の各データソースに対する命令元情報に従って、SQL文に対応するデータソースに対しては、命令元情報に従ったSQL文である検索命令を生成し、検索モジュールに対応するデータソースに対しては、命令元情報に従った検索モジュールのインターフェイスである検索命令を生成し、2以上の各データソースごとに、検索命令に基づいた検索結果を取得し、2以上の検索結果を統合し、統合データを取得する、検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を統合できる。
 また、本発明の検索装置は、上記の発明に対して、ソース層定義情報は、2以上の各データソースにアクセスするための接続情報を有し、検索部は、接続情報を用いて、接続情報に対応するデータソースにアクセスし、検索命令に基づいた検索結果をデータソースから取得し、2以上の検索結果を統合し、統合データを取得する、検索装置である。
 かかる構成により、2以上のデータソースから情報を適切に検索し、当該検索結果を統合できる。
 また、本発明の検索装置は、上記の発明に対して、2以上のデータソースのうち、少なくとも1以上のデータソースに対して、データソースが有する2以上のレコードのうちの1以上の各レコードごと、および各レコードの1以上の各属性ごとに、属性値が存在する位置を特定する属性位置情報を有する配列インデックスが格納されており、検索部は、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値をデータソースから取得し、属性値を有する統合データを構成する、検索装置である。
 かかる構成により、情報検索を高速に行える。
 本発明の検索装置は、2以上の各キー項目に対応するキー項目値と1以上の各属性識別子に対応する属性値とを有する2以上のレコードを含むデータソースのレコードに対応するインデックスであり、1以上のキー項目の組み合わせに対応する1以上のキー項目値と1以上のキー項目値を含むレコードの位置を特定するレコード位置情報の組の集合である2以上のレコード・インデックスであり、各々、異なるキー項目の組み合わせに対応する2以上のレコード・インデックスが格納されるレコード・インデックス格納部と、キー項目値を有する検索条件を受け付ける条件受付部と、2以上のレコード・インデックスから、検索条件が有するキー項目値に対応するキー項目を含む1以上のキー項目の組み合わせに対応する一のレコード・インデックスを選択し、選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得し、レコード位置情報が特定する位置に対応するレコードの中の属性値をデータソースから取得する検索部と、検索部が取得した属性値を含む検索結果を出力する結果出力部とを具備する検索装置である。
 かかる構成により、バリエーションのある各検索条件に対して、情報検索を高速に行える。
 また、本発明の検索装置は、上記の発明に対して、2以上のレコードのうちの1以上の各レコードごと、および各レコードの1以上の各属性ごとに、属性値が存在する位置を特定する属性位置情報を有する配列インデックスが格納される配列インデックス格納部をさらに具備し、検索条件は、属性識別子をさらに有し、検索部は、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値を、データソースから取得する、検索装置である。
 かかる構成により、バリエーションのある各検索条件に対して、情報検索をより高速に行える。
 また、本発明の検索装置は、上記の発明に対して、2以上の各レコード・インデックスにおいて、1以上のキー項目値とレコード位置情報の2以上の組は、1以上のキー項目値の組み合わせをキーとしてソートされており、検索部は、2以上のレコード・インデックスから、レコード・インデックスの先頭のキー項目が、検索条件が有するキー項目値に対応するキー項目と一致する場合には、レコード・インデックスを選択し、選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得し、レコード位置情報が特定する位置に対応するレコードの中の属性値をデータソースから取得する、検索装置である。
 かかる構成により、バリエーションのある各検索条件に対して、情報検索を高速に行える。
 また、本発明の検索装置は、上記の発明に対して、検索部は、レコード・インデックスの先頭のキー項目が検索条件が有するキー項目値に対応するキー項目と一致する2以上のレコード・インデックスが存在する場合、2以上のレコード・インデックスの次のキー項目が検索条件が有するキー項目と一致するかどうかを判定して、レコード・インデックスの先頭から最も多くのキー項目が検索条件が有するキー項目に含まれる一のレコード・インデックスを選択し、選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得し、レコード位置情報が特定する位置に対応するレコードの中の属性値をデータソースから取得する、検索装置である。
 かかる構成により、バリエーションのある各検索条件に対して、情報検索を高速に行える。
 また、本発明の検索装置は、上記の発明に対して、データソースを参照し、データソースの2以上の各レコードのキー項目値とレコード位置情報との組である2以上のレコード・インデックスであり、各々、異なる1以上のキー項目の組み合わせに対応する2以上のレコード・インデックスを生成し、レコード・インデックス格納部に蓄積するレコード・インデックス生成部をさらに具備する検索装置である。
 かかる構成により、バリエーションのある各検索条件に対して、情報検索を高速に行うためのインデックスを生成できる。
 また、本発明の検索装置は、上記の発明に対して、レコード・インデックス生成部は、選択条件を満たす1以上のキー項目の組み合わせを、2組以上、決定し、2組以上の各組の1以上のキー項目の組み合わせに対応する2以上の各レコードのキー項目値とレコード位置情報との組であるレコード・インデックスを生成し、レコード・インデックス格納部に蓄積する、検索装置である。
 かかる構成により、バリエーションのある各検索条件に対して、情報検索を高速に行うための適切なインデックスを生成できる。
 また、本発明の検索装置は、上記の発明に対して、選択条件は、データソースの2以上の各レコードに含まれる属性値の分散が閾値以上または閾値より大きい属性値に対応するキー項目を含む1以上のキー項目の組み合わせであること、または過去の1以上の検索条件において閾値以上または閾値より多い頻度で含まれている属性値に対応するキー項目を含む1以上のキー項目の組み合わせであることである、検索装置である。
 かかる構成により、バリエーションのある各検索条件に対して、情報検索を高速に行うための適切なインデックスを生成できる。
 本発明による検索装置によれば、情報検索を高速に行える。
実施の形態1における検索システムAの概念図 同検索システムAのブロック図 同検索システムAを構成する検索装置1のブロック図 同検索装置1の動作例について説明するフローチャート 同インデックス生成処理の例について説明するフローチャート 同ソース・インデックス生成処理の例について説明するフローチャート 同配列ラベル・インデックス生成処理の例について説明するフローチャート 同配列インデックス生成処理の例について説明するフローチャート 同レコード・インデックス生成処理の例について説明するフローチャート 同2次インデックス生成処理の例について説明するフローチャート 同検索処理の例について説明するフローチャート 同データソースの例を示す図 同インデックスの生成処理例、検索処理例を説明する図 同検索処理例を説明する図 実施の形態2における検索システムBの概念図 同検索システムBのブロック図 同検索装置4のブロック図 同検索装置4の動作例について説明するフローチャート 同命令生成処理の例について説明するフローチャート 同統合処理の例について説明するフローチャート 同結合方式識別子処理の例について説明するフローチャート 同結合方式識別子処理の例について説明するフローチャート 同データソースの例を示す図 同ソース層定義情報の例を示す図 同ソース層定義情報の例を示す図 同ソース層定義情報の例を示す図 同データソース固有情報の例を示す図 同販売ビューの変換ビュー情報を示す図 同仕入ビューの変換ビュー情報を示す図 同ユーザ層定義情報の例を示す図 同検索装置4の動作例を説明する図 実施の形態3における検索システムBの概念図 同検索システムBのブロック図 同検索装置4のブロック図 同検索装置4の動作例について説明するフローチャート 同インデックス生成処理の例について説明するフローチャート 同レコード・インデックス生成処理の例について説明するフローチャート 同キー項目集合決定処理の例について説明するフローチャート 同検索条件利用処理の例について説明するフローチャート 同分散利用処理の例について説明するフローチャート 同検索処理の第一の例について説明するフローチャート 同検索処理の第二の例について説明するフローチャート 同レコード・インデックス決定処理の例について説明するフローチャート 同データソースの例を示す図 同検索処理例を説明する図 上記実施の形態におけるコンピュータシステムの概観図 同コンピュータシステムのブロック図
 以下、検索装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
 (実施の形態1)
 本実施の形態において、1種類以上のインデックスを用いて、データソースに対して情報検索を行う検索装置を具備する検索システムについて説明する。なお、1種類以上のインデックスは、例えば、後述する配列インデックス、後述する配列ラベル・インデックス、後述するレコード・インデックス、後述する2次インデックス、後述するソース・インデックスである。
 また、本実施の形態において、データソースを用いて、当該データソースに対応する1種類以上のインデックスを生成する検索装置を具備する検索システムについて説明する。
 さらに、本実施の形態において、インデックスを自動更新する検索装置を具備する検索システムについて説明する。
 図1は、本実施の形態における検索システムAの概念図である。検索システムAは、例えば、検索装置1、1または2以上のデータソース管理装置2、1または2以上の端末装置3を備える。
 検索装置1は、データソースから情報を検索する装置である。データソース管理装置2は、1または2以上のデータソースが格納されている装置である。端末装置3は、情報を検索するユーザが使用する端末である。
 検索装置1、データソース管理装置2は、例えば、いわゆるサーバであり、例えば、クラウドサーバ、ASPサーバ等である。なお、検索装置1、データソース管理装置2の種類は問わない。また、検索装置1は、スタンドアロンの装置でも良い。かかる場合、検索システムAは、データソース管理装置2や端末装置3を有さなくても良い。また、かかる場合、データソースは、検索装置1に格納されている。
 図2は、本実施の形態における検索システムAのブロック図である。図3は、検索システムAを構成する検索装置1のブロック図である。
 検索装置1は、格納部11、受付部12、処理部13、および出力部14を備える。格納部11は、データソース格納部111、インデックス格納部112を備える。インデックス格納部112は、配列インデックス格納部1121、配列ラベル・インデックス格納部1122、レコード・インデックス格納部1123、2次インデックス格納部1124、およびソース・インデックス格納部1125を備える。受付部12は、条件受付部121を備える。処理部13は、インデックス生成部131、検索部132、およびインデックス更新部133を備える。インデックス生成部131は、配列インデックス生成部1311、配列ラベル・インデックス生成部1312、レコード・インデックス生成部1313、2次インデックス生成部1314、およびソース・インデックス生成部1315を備える。出力部14は、結果出力部141を備える。
 データソース管理装置2は、データソース格納部111を備える。
 端末装置3は、端末格納部31、端末受付部32、端末処理部33、端末送信部34、端末受信部35、および端末出力部36を備える。
 検索装置1を構成する格納部11には、各種の情報が格納される。各種の情報は、例えば、後述するデータソース、後述する1以上の種類のインデックスである。
 データソース格納部111には、1または2以上のデータソースが格納される。なお、検索装置1は、データソース格納部111が存在しなくても良い。かかる場合、検索対象のデータソースは、データソース管理装置2に格納されている。
 データソースは、検索対象のデータの集合である。データは、情報と言っても良い。データソースは、通常、一つのファイルである。ただし、データソースは、例えば、一つのデータベース、データベース内の一つの表などでも良い。データソースは、通常、1または2以上のレコードを有する。レコードは、例えば、行やタップル等と言っても良い。レコード間は、例えば、第一デリミタにより区切られているなど、その区切りは認識可能である。第一デリミタは、例えば、リターンコード、TABコード、スペース等であるが、問わない。データソースは、検索対象以外のデータを有しても良い。検索対象以外のデータは、例えば、項目ラベル、属性識別子である。項目ラベルは、項目のラベルであるが、項目名でも良い。項目は、例えば、キー項目と明細項目とを有する。キー項目は、キー項目値に対する識別子である。また、1レコード内に、2以上のキー項目が存在しても良い。明細項目は、キー項目を含む項目である。なお、キー項目や明細項目も、属性識別子である、と考えても良い。つまり、キー項目値や明細項目値も、レコードを構成する属性値である、と考えても良い。属性識別子は、属性を識別する情報である。属性識別子は、例えば、属性名、属性のIDである。レコードは、通常、2以上の属性値を有する。レコードは、キー項目値や明細項目値も有しても良い。ただし、レコードは、一つの属性値でも良い。レコードにおける属性値の間は、例えば、第二デリミタにより区切られているなど、その区切りは認識可能である。第二デリミタは、例えば、カンマ「,」、コロン「:」、セミコロン「;」、スペース、TABコード等であるが、問わない。データソースは、ソース識別子に対応付いている。ソース識別子は、データソースを識別する情報であり、例えば、ファイル名、ファイルのIDである。なお、キー項目値は、例えば、予め決められている。なお、予め決められていることは、通常、ユーザの指定により、インデックスの生成時には、決まっていることを意味する。
 データソースの中の属性値は、通常、固定長ではなく、可変長である。また、データソースの中のレコードも、通常、固定長ではなく、可変長である。ただし、データソースの中の属性値やレコードは、固定長でも良い。
 データソースは、1以上のソース属性値に対応付いていることは好適である。ソース属性値は、データソースの属性値である。ソース属性値は、例えば、最終更新時情報、更新者識別子、サイズ、種類識別子である。最終更新時情報は、データソースの最終更新時を特定する情報であり、例えば、年月日時分秒、月日時分である。更新者識別子は、データソースの更新者(通常、最終更新者)を識別する情報である。サイズは、データソースのデータサイズであり、例えば、バイト数、ビット数である。種類識別子は、データソースの種類を特定する情報であり、例えば、「ファイル」「RDB」「表」である。「ファイル」はデータソースがファイルであることを示す。「RDB」はデータソースがRDB(リレーショナルデータベース)であることを示す。「表」はデータソースが表形式の情報であることを示す。
 インデックス格納部112には、1または2以上の種類のインデックスが格納される。インデックスとは、データソースから所望の情報を検索するために参照される情報(通常、索引)である。インデックスは、例えば、後述する配列インデックス、後述する配列ラベル・インデックス、後述するレコード・インデックス、後述する2次インデックス、後述するソース・インデックスである。
 1種類以上の各インデックスは、例えば、ファイルである。ただし、インデックスは、RDB等のデータベース内の情報でも良く、その物理的な構造は問わない。データベース内の情報は、例えば、表である。
 なお、インデックスには、生成時情報が対応付いていることは好適である。生成時情報は、インデックスが生成された時を特定する情報であり、例えば、年月日時分秒、月日時分である。
 配列インデックス格納部1121には、配列インデックスが格納される。配列インデックス格納部1121には、通常、データソースごとに、配列インデックスが格納される。つまり、配列インデックスは、通常、データソースを識別するソース識別子に対応付いている。なお、検索対象のデータソースが一つである場合、配列インデックスは、ソース識別子に対応付いている必要はない。
 配列インデックスは、レコード内の属性値の位置を特定するための情報であるである。 配列インデックスは、データソースが有するレコードごとの情報である1以上の配列インデックスレコードを有する。配列インデックスレコードは、各レコードの各属性ごとの属性位置情報を有する。属性位置情報は、属性値が存在する位置を特定する情報である。属性位置情報は、通常、属性値のレコード内におけるオフセットである。ただし、属性位置情報は、データソース内におけるオフセット等でも良い。属性位置情報は、例えば、レコードを識別するレコード識別子、および属性識別子に対応付いている。
 配列インデックスは、すべてのレコードに対応する一部の属性値の属性位置情報を有することは好適であるが、データソースが有するすべてのレコードに対応するすべての属性値の属性位置情報を有しても良いし、一部のレコードに対応するすべての属性値の属性位置情報を有しても良いし、一部のレコードに対応する一部の属性値の属性位置情報を有しても良い。
 配列インデックスが、一部の属性値の属性位置情報のみを有する場合、データソースのレコード内の属性値の並びの順に、配列インデックスは属性位置情報を有する。
 配列ラベル・インデックス格納部1122には、配列ラベル・インデックスが格納される。配列ラベル・インデックス格納部1122には、通常、データソースごとに、配列ラベル・インデックスが格納される。つまり、配列ラベル・インデックスは、通常、ソース識別子に対応付いている。なお、検索対象のデータソースが一つである場合、配列ラベル・インデックスは、ソース識別子に対応付いている必要はない。
 配列ラベル・インデックスは、データソースのレコードにおける属性の順番を特定するための情報である。配列ラベル・インデックスは、データソースが有するレコードごとの情報である1以上の配列ラベル・インデックスレコードを有する。配列ラベル・インデックスレコードは、レコード内における属性の順番を示す情報である。配列ラベル・インデックスレコードは、例えば、属性識別子と属性順番情報との組である。2以上の各配列ラベル・インデックスレコードは、例えば、レコード内の順番に配置された属性識別子でも良い。配列ラベル・インデックスは、レコードにおけるすべての属性の順番を特定する情報であることは好適である。配列ラベル・インデックスにおいて、属性識別子はソートされていることは好適である。
 レコード・インデックス格納部1123には、レコード・インデックスが格納される。レコード・インデックス格納部1123には、通常、データソースごとに、レコード・インデックスが格納される。つまり、レコード・インデックスは、通常、ソース識別子に対応付いている。なお、検索対象のデータソースが一つである場合、レコード・インデックスは、ソース識別子に対応付いている必要はない。
 レコード・インデックスは、データソースのレコードに対応するインデックスである。レコード・インデックスは、データソースのレコードの位置を特定するための1以上のレコード・インデックスレコードを有する。レコード・インデックスレコードは、キー項目値あるいは2以上のキー項目値の組合せと、レコード位置情報とを有する。レコード・インデックスレコードは、キー項目値とレコード位置情報とレコード・インデックスレコード位置情報の組でも良い。
また、同じレコード内の異なるキー項目値、あるいはキー項目値の組合せとレコード位置情報とを有する、別のレコード・インデックスを有することは好適である。
 キー項目値は、レコードに含まれる属性値であり、キーとなる属性値である。キー項目値は、レコードを識別可能なユニークな情報であることは好適であるが、ユニークな情報でなくても良い。
 レコード位置情報は、キー項目値を含むレコードの位置を特定する情報である。レコード位置情報は、例えば、レコードの位置を特定するデータソースの中のオフセットである。レコード位置情報は、例えば、レコードの先頭のオフセットである。レコード位置情報は、例えば、レコードの最後の情報のオフセットでも良い。
 レコード・インデックスレコード位置情報は、レコード・インデックスにおけるレコード・インデックスレコードの位置を特定する情報である。レコード・インデックスレコード位置情報は、例えば、レコード・インデックスにおけるレコード・インデックスレコードのオフセットである。
 なお、レコード・インデックスにおいて、キー項目値がソートされていることは好適である。
 また、レコード・インデックスレコードと配列インデックスレコードとは、対応付いていることは好適である。レコード・インデックスレコードと配列インデックスレコードとは、例えば、キー項目値により対応付いている。
 2次インデックス格納部1124には、2次インデックスが格納される。2次インデックス格納部1124には、通常、データソースごとに、2次インデックスが格納される。つまり、2次インデックスは、通常、ソース識別子に対応付いている。なお、検索対象のデータソースが一つである場合、2次インデックスは、ソース識別子に対応付いている必要はない。
 2次インデックスは、レコード・インデックスに高速にアクセスするためのインデックスである。2次インデックスは、データソースが有する2以上のレコードのうちの一部である1以上の各レコードに対応する情報である。2次インデックスは、レコードごとの2次インデックスレコードを有する。2次インデックスレコードは、キー項目値とレコード・インデックスレコード位置情報との組である。レコード・インデックスレコード位置情報は、レコード・インデックス内における箇所であり、レコード位置情報が存在する箇所を特定する情報である。キー項目値は、レコードが有するキー項目値である。
 なお、2次インデックスにおけるキー項目値は、ソートされていることは好適である。
 ソース・インデックス格納部1125には、ソース・インデックスが格納される。ソース・インデックスは、データソースごとのインデックスである。ソース・インデックスは、例えば、データソースごとのソース・インデックスレコードの集合である。
 ソース・インデックスレコードは、例えば、ソース識別子と最小キー項目値と最大キー項目値との組である。最小キー項目値は、ソース識別子で識別されるデータソースが有する最小のキー項目値である。最大キー項目値は、ソース識別子で識別されるデータソースが有する最大のキー項目値である。かかる場合、通常、2以上の各データソースに、異なるレコードが格納されている。
 ソース・インデックスレコードは、例えば、ソース識別子と最小属性識別子と最大属性識別子との組である。最小属性識別子は、ソース識別子で識別されるデータソースが有する最小の属性識別子である。最大属性識別子は、ソース識別子で識別されるデータソースが有する最大の属性識別子である。かかる場合、通常、2以上の各データソースに、異なる属性の属性値が格納されている。
 ソース・インデックスレコードは、例えば、ソース識別子と最小キー項目値と最大キー項目値と最小属性識別子と最大属性識別子との組である。かかる場合、通常、2以上の各データソースに、一部のレコードの一部の属性の属性値が格納されている。
 受付部12は、各種の指示や情報を受け付ける。各種の指示や情報とは、例えば、後述する検索条件、データソース、データソースを構成する一部の情報である。
 ここで、受け付けとは、通常、端末装置3からの受信であるが、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念であっても良い。
 条件受付部121は、検索条件を受け付ける。検索条件は、例えば、1または2以上の属性識別子を含む。検索条件は、例えば、1または2以上のキー項目値を含む。検索条件は、例えば、1以上の属性識別子および1以上のキー項目値を含む。
 処理部13は、各種の処理を行う。各種の処理は、例えば、インデックス生成部131、検索部132、インデックス更新部133が行う処理である。
 処理部13は、受付部12がデータソースを受け付けた場合に、当該データソースをデータソース格納部111に蓄積する。その際、処理部13は、図示しない時計から最終更新時情報を取得し、当該最終更新時情報を当該データソースに対応付ける。
 処理部13は、受付部12がデータソースを構成する一部の情報を受け付けた場合、当該一部の情報を用いて、データソースを更新する。その際、処理部13は、図示しない時計から最終更新時情報を取得し、当該最終更新時情報を当該データソースに対応付ける。
 インデックス生成部131は、1または2以上の各データソースからインデックスを生成する。
 配列インデックス生成部1311は、1以上の各データソースごとに、配列インデックスを生成し、配列インデックス格納部1121に蓄積する。
 配列インデックス生成部1311は、データソースにおけるレコードごと、および1以上の属性値ごとに、属性位置情報を取得する。
 配列インデックス生成部1311は、データソースにおけるすべての各レコードごとに、一部の各属性値の属性位置情報を有する配列インデックスレコードを取得し、当該1以上の配列インデックスレコードを有する配列インデックスを構成し、配列インデックス格納部1121に蓄積することは好適である。ただし、配列インデックス生成部1311は、データソースにおけるすべての各レコードごとに、すべての各各属性値の属性位置情報を有する配列インデックスレコードを取得し、当該1以上の配列インデックスレコードを有する配列インデックスを構成し、配列インデックス格納部1121に蓄積しても良い。
 配列インデックスレコードは、レコードにおけるすべての属性値のうちの一部の属性値の属性位置情報のみを有する情報であることは好適である。なお、かかる一部の属性値の選択方法は問わない。一部の属性値は、例えば、所定の値ごと(例えば、1番目、5番目、9番目等の4つごと)に選択されることは好適であるが、ランダムに所定数だけ選択されても良い。
 配列インデックス生成部1311は、データソースにおける2以上のレコードのうちの1以上の各レコードごと、および1以上の各属性値ごとに、属性位置情報を取得する。そして、配列インデックス生成部1311は、レコードごと、および属性値ごとの属性位置情報を有する配列インデックスを生成し、配列インデックス格納部1121に蓄積する。
 配列インデックス生成部1311は、例えば、取得した属性位置情報を、レコード識別子またはキー項目値、および属性値識別子に対応付くように、配列インデックス格納部1121に蓄積する。
 配列インデックス生成部1311は、通常、データソースを走査し、第一デリミタごとにレコードを認識し、当該レコードを走査し、第二デリミタごとに属性値を認識し、例えば、当該レコードの先頭から、各第二デリミタの次の位置を、各属性値の属性位置情報として取得する。
 配列ラベル・インデックス生成部1312は、1以上の各データソースごとに、配列ラベル・インデックスを生成し、配列ラベル・インデックス格納部1122に蓄積する。
 配列ラベル・インデックス生成部1312は、例えば、データソースから、2以上の各属性ごとに、属性値識別子と属性順番情報とを取得し、当該属性値識別子と属性順番情報との組である配列ラベル・インデックスレコードを取得し、当該2以上の配列ラベル・インデックスレコードを有する配列ラベル・インデックスを構成し、当該配列ラベル・インデックスを配列ラベル・インデックス格納部1122に蓄積する。
 なお、配列ラベル・インデックス生成部1312は、属性値識別子キーとして配列ラベル・インデックスレコードをソートし、配列ラベル・インデックスを構成することは好適である。
 また、配列インデックスレコードが、すべての属性値の属性位置情報を有する場合、配列ラベル・インデックスは不要である。
 レコード・インデックス生成部1313は、データソースを参照し、データソースの2以上の各レコードのキー項目値とレコード位置情報とを有するレコード・インデックスレコードを、レコードごとに取得する。そして、レコード・インデックス生成部1313は、レコードごとのレコード・インデックスレコードの集合を有するレコード・インデックスを生成し、レコード・インデックス格納部1123に蓄積する。
 レコード・インデックス生成部1313は、1以上の各レコード・インデックスレコードに、レコード・インデックス内におけるレコード・インデックスレコードの位置を特定するレコード・インデックスレコード位置情報を取得し、当該レコード・インデックスレコード位置情報を有するレコード・インデックスレコードを構成することは好適である。
 なお、レコード・インデックス生成部1313は、キー項目値をキーとして該レコード・インデックスレコードをソートし、レコード・インデックスを構成することは好適である。
 2次インデックス生成部1314は、データソースごとに、データソースが有する2以上のレコードのうちの一部である1以上の各レコードごとに、レコード・インデックスレコード位置情報とレコードのキー項目値との組である2次インデックスレコードを取得し、当該1以上の2次インデックスレコードを有する2次インデックスを構成し、2次インデックス格納部1124に蓄積する。
 また、配列インデックスの属性値位置情報がデータソース内における位置を特定する情報である場合、レコード・インデックスは無くても良い。
 2次インデックス生成部1314は、例えば、データソースごとに、データソースに対応するレコード・インデックスを参照し、当該レコード・インデックスが有する一部のレコードであり、2以上の各レコードが有するレコード・インデックスレコード位置情報とキー項目値との組である2次インデックスレコードを取得し、2以上の2次インデックスレコードを有する2次インデックスを生成し、2次インデックス格納部1124に蓄積する。
 2次インデックスレコードは、一部のレコード・インデックスレコードに対応するが、その一部のレコード・インデックスレコードの選択方法は問わない。一部のレコード・インデックスレコードは、例えば、所定の値ごと(例えば、1番目、5番目、9番目等の4つごと)に選択されることは好適であるが、ランダムに所定数だけ選択されても良い。
 なお、2次インデックスは、レコードの検索を高速にするが、無くても良い。
 ソース・インデックス生成部1315は、2以上の各データソースごとに、ソース・インデックスレコードを取得し、2以上のソース・インデックスレコードを有するソース・インデックスを生成し、ソース・インデックス格納部1125に蓄積する。なお、ソース・インデックスレコードは、例えば、ソース識別子と最小キー項目値と最大キー項目値との組である。ソース・インデックスレコードは、例えば、ソース識別子と最小属性識別子と最大属性識別子との組である。ソース・インデックスレコードは、例えば、ソース識別子と最小キー項目値と最大キー項目値と最小属性識別子と最大属性識別子との組である。
 なお、データソースが一つである場合、ソース・インデックス生成部1315は、不要である。
 検索部132は、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、当該属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値を、キー項目値と2以上の属性値とを有する1または2以上のレコードを含むデータソースから取得する。
 検索部132は、例えば、条件受付部121が受け付けた検索条件が有する属性識別子で識別される属性値の前に配置されている属性値を識別する属性識別子に対応する第一の属性位置情報と、検索条件が有する属性識別子で識別される属性値の後に配置されている属性値を識別する属性識別子に対応する第二の属性位置情報とを、配列インデックスから取得する。次に、検索部132は、当該第一の属性位置情報が特定する位置と、当該第二の属性位置情報が特定する位置の間に存在する属性値であり、検索条件が有する属性識別子に対応する属性値を、データソースから取得する。
 検索部132は、例えば、条件受付部121が受け付けた検索条件が有する属性識別子に対応する属性順番情報を配列ラベル・インデックスから取得する。次に、検索部132は、当該属性順番情報を用いて、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得する。次に、検索部132は、当該属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値を、データソースから取得する。
 検索部132は、例えば、条件受付部121が受け付けた検索条件が有する属性識別子に対応する属性順番情報を配列ラベル・インデックスから取得する。検索部132は、当該属性順番情報が示す順番の前に配置されている属性値を識別する属性識別子に対応する第一の属性位置情報と、当該属性順番情報が示す順番の後に配置されている属性値を識別する属性識別子に対応する第二の属性位置情報とを、配列インデックスから取得する。次に、検索部132は、当該第一の属性位置情報が特定する位置と、当該第二の属性位置情報が特定する位置の間に存在する属性値であり、検索条件が有する属性識別子に対応する属性値を、データソースから取得する。
 検索部132は、例えば、検索条件が有するキー項目値と対になるレコード位置情報をレコード・インデックスから取得する。次に、検索部132は、当該レコード位置情報が特定する位置に対応するレコードを決定し、当該レコードの中の属性値であり、検索条件が有する属性識別子に対応する属性値を、データソースから取得する。なお、検索条件において属性識別子が示されない場合、検索条件が有する属性識別子は、すべての属性識別子である、と考えても良い。
 検索部132は、例えば、検索条件が有するキー項目値を挟む2つのキー項目値を2次インデックスから取得する。次に、検索部132は、取得した2つの各キー項目値と対になる第一のレコード・インデックスレコード位置情報と第二のレコード・インデックスレコード位置情報とを、2次インデックスから取得する。次に、検索部132は、当該第一のレコード・インデックスレコード位置情報と当該第二のレコード・インデックスレコード位置情報との間のレコード・インデックスレコードを検索し、検索条件が有するキー項目値を含むレコード・インデックスレコードを決定し、当該レコード・インデックスレコードの中のレコード位置情報を取得する。次に、検索部132は、当該レコード位置情報が特定する位置に対応するレコードの中の属性値であり、検索条件が有する属性識別子に対応する属性値を、データソースから取得する。なお、検索部132は、検索条件が有する属性識別子に対応する属性値の属性位置情報を、配列インデックスを用いて取得し、当該属性位置情報が特定する位置の属性値をデータソースから取得することは好適である。
 また、レコード・インデックスにおいて、キー項目値がソートされている場合、検索部132は、二分探索により、検索条件が有するキー項目値を含むレコード・インデックスレコードを決定することは好適であるが、シーケンシャルサーチでも良い。
 検索部132は、例えば、検索条件が有するキー項目値と一致する、またはキー項目値を間に挟む最小キー項目値と最大キー項目値と対になるソース識別子を、ソース・インデックスから取得する。次に、検索部132は、当該ソース識別子により識別されるデータソースから、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得する。次に、検索部132は、当該属性位置情報を用いて、レコードの中の属性値であり、検索条件が有する属性識別子に対応する属性値を取得する。
 検索部132は、例えば、検索条件が有する属性識別子と一致する、または属性識別子を間に挟む最小属性識別子と最大属性識別子と対になるソース識別子を、ソース・インデックスから取得する。検索部132は、当該ソース識別子により識別されるデータソースに対応する配列インデックスから、検索条件が有する属性識別子に対応する属性位置情報を取得する。検索部132は、当該属性位置情報を用いて、当該ソース識別子により識別されるデータソースの中のレコードの中の属性値であり、検索条件が有する属性識別子に対応する属性値を取得する。
 検索部132は、例えば、検索条件が有するキー項目値と検索条件が有する属性識別子とに対応するソース識別子を、ソース・インデックスから取得する。検索部132は、当該ソース識別子により識別されるデータソースに対応する2次インデックスから、検索条件が有するキー項目値を挟む2つのキー項目値を2次インデックスから取得する。次に、検索部132は、取得した2つの各キー項目値と対になる第一のレコード・インデックスレコード位置情報と第二のレコード・インデックスレコード位置情報とを、2次インデックスから取得する。次に、検索部132は、当該第一のレコード・インデックスレコード位置情報と当該第二のレコード・インデックスレコード位置情報との間のレコード・インデックスレコードを検索し、検索条件が有するキー項目値を含むレコード・インデックスレコードを決定し、当該レコード・インデックスレコードの中のレコード位置情報を取得する。また、検索部132は、検索条件が有する属性識別子に対応する属性順番情報を配列ラベル・インデックスから取得する。次に、検索部132は、当該属性順番情報を用いて、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得する。次に、検索部132は、取得したレコード位置情報により特定されるレコードの中の属性値であり、当該属性位置情報が特定する属性値をデータソースから取得する。
 インデックス更新部133は、予め決められた条件を満たす場合に、データソースから取得した最終更新時情報が示す最終更新時が、1以上の各種類のインデックスに対応する生成時情報が示す生成時より後か否かを判断し、後である場合に、インデックス生成部131を動作させて、1以上の各種類のインデックスを構成する。また、インデックス更新部133は、通常、構成した1以上の各種類のインデックスを、インデックス格納部112の古いインデックスに上書きする。なお、1以上の各種類のインデックスは、配列インデックス、配列ラベル・インデックス、レコード・インデックス、2次インデックス、ソース・インデックスのうちの1種類以上である。また、予め決められた条件は、例えば、ユーザからの指示を受け付けたこと、予め決められた時刻になったこと、データソースが更新されたことである。
 出力部14は、各種の情報を取得する。各種の情報は、例えば、後述する検索結果である。なお、ここでの出力とは、通常、端末装置3への送信であるが、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念であっても良い。
 結果出力部141は、検索部132が取得した属性値を含む検索結果を出力する。検索結果は、通常、属性値を有する。
 データソース管理装置2は、1以上のデータソースを管理する。データソース管理装置2は、データソース格納部111を具備する。
 端末装置3を構成する端末格納部31には、各種の情報が格納される。各種の情報は、例えば、検索条件、データソースである。
 端末受付部32は、各種の指示や情報を受け付ける。各種の指示や情報は、例えば、検索条件、データソース、データソースの一部の情報である。
 なお、ここでの受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
 端末処理部33は、各種の処理を行う。各種の処理とは、例えば、端末受付部32が受け付けた指示や情報を、送信するデータ構造の指示や情報にする処理である。各種の処理とは、例えば、端末受信部35が受信した情報を、出力するデータ構造の情報にする処理である。
 端末送信部34は、各種の情報や指示を送信する。端末送信部34は、通常、各種の情報や指示を検索装置1に送信する。各種の情報や指示は、例えば、検索条件、データソースである。
 端末受信部35は、各種の情報を受信する。端末受信部35は、各種の情報を検索装置1から受信する。各種の情報は、例えば、検索結果である。
 端末出力部36は、各種の情報を出力する。各種の情報は、例えば、検索結果である。
 格納部11、データソース格納部111、インデックス格納部112、配列インデックス格納部1121、配列ラベル・インデックス格納部1122、レコード・インデックス格納部1123、2次インデックス格納部1124、ソース・インデックス格納部1125、および端末格納部31は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
 格納部11等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部11等で記憶されるようになってもよく、通信回線等を介して送信された情報が格納部11等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部11等で記憶されるようになってもよい。
 受付部12、条件受付部121、および端末受信部35は、通常、無線または有線の通信手段で実現されるが、放送を受信する手段で実現されても良い。
 処理部13、インデックス生成部131、検索部132、インデックス更新部133、配列インデックス生成部1311、配列ラベル・インデックス生成部1312、レコード・インデックス生成部1313、2次インデックス生成部1314、ソース・インデックス生成部1315、および端末処理部33は、通常、プロセッサやメモリ等から実現され得る。処理部13等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。なお、プロセッサは、CPU、MPU、GPU等であり、その種類は問わない。
 出力部14、結果出力部141、および端末送信部34は、通常、無線または有線の通信手段で実現されるが、放送手段で実現されても良い。
 端末受付部32は、タッチパネルやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
 端末出力部36は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。端末出力部36は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
 次に、検索システムAの動作例について説明する。まず、検索装置1の動作例について、図4のフローチャートを用いて説明する。
 (ステップS401)インデックス生成部131は、インデックスを生成するタイミングであるか否かを判断する。インデックスを生成するタイミングであればステップS402に行き、インデックスを生成するタイミングでなければステップS406に行く。
 (ステップS402)インデックス生成部131は、カウンタiに1を代入する。
 (ステップS403)インデックス生成部131は、インデックスを生成する対象のi番目のデータソースが存在するか否かを判断する。i番目のデータソースが存在する場合はステップS404に行き、i番目のデータソースが存在しない場合はステップS401に戻る。
 (ステップS404)インデックス生成部131は、i番目のデータソースに対応するインデックスを生成する。インデックス生成処理の例について、図5のフローチャートを用いて説明する。
 (ステップS405)インデックス生成部131は、カウンタiを1、インクリメントする。ステップS403に戻る。
 (ステップS406)インデックス更新部133は、インデックスを更新するタイミングであるか否かを判断する。インデックスを更新するタイミングであればステップS407に行き、インデックスを更新するタイミングでなければステップS414に行く。
 (ステップS407)インデックス更新部133は、カウンタiに1を代入する。
 (ステップS408)インデックス更新部133は、i番目のデータソースが存在するか否かを判断する。i番目のデータソースが存在する場合はステップS409に行き、i番目のデータソースが存在しない場合はステップS401に戻る。
 (ステップS409)インデックス更新部133は、i番目のデータソースの属性値である最終更新時情報を取得する。
 (ステップS410)インデックス更新部133は、i番目のデータソースに対応するインデクス(例えば、配列インデックス)の生成時情報を配列インデックス格納部1121から取得する。
 (ステップS411)インデックス更新部133は、ステップS409で取得した最終更新時情報が示す時が、ステップS410で取得した生成時情報が示す時より新しいか否かを判断する。新しい場合はステップS412に行き、新しくない場合はステップS413に行く。
 (ステップS412)インデックス更新部133は、インデックス生成部131に動作の指示をする。その結果、インデックス生成部131は、インデックスを生成し、i番目のデータソースに対応付けて、インデックスを蓄積する。かかる処理により、i番目のデータソースに対応するインデックスが更新される。なお、インデックス生成処理の例は、図5のフローチャートである。
 (ステップS413)カウンタiを1、インクリメントする。ステップS408に戻る。
 (ステップS414)条件受付部121は、検索条件を受け付けたか否かを判断する。検索条件を受け付けた場合はステップS415に行き、検索条件を受け付けなかった場合はステップS401に戻る。
 (ステップS415)検索部132は、検索条件を用いて検索を行う。かかる検索処理の例について、図11フローチャートを用いて説明する。
 (ステップS416)結果出力部141は、ステップS415で取得された検索結果を出力する。ステップS401に戻る。
 なお、図4のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
 次に、ステップS404のインデックス生成処理の例について、図5のフローチャートを用いて説明する。
 (ステップS501)ソース・インデックス生成部1315は、ソース・インデックスを生成する。かかるソース・インデックス生成処理の例について、図6フローチャートを用いて説明する。
 (ステップS502)配列ラベル・インデックス生成部1312は、配列ラベル・インデックスを生成する。かかる配列ラベル・インデックス生成処理の例について、図7フローチャートを用いて説明する。
 (ステップS503)配列インデックス生成部1311は、配列インデックスを生成する。かかる配列インデックス生成処理の例について、図8フローチャートを用いて説明する。
 (ステップS504)レコード・インデックス生成部1313は、レコード・インデックスを生成する。かかるレコード・インデックス生成処理の例について、図9フローチャートを用いて説明する。
 (ステップS505)2次インデックス生成部1314は、2次インデックスを生成する。かかる2次インデックス生成処理の例について、図10フローチャートを用いて説明する。
 なお、図5のフローチャートにおいて、例えば、レコード・インデックスと配列インデックスとは、レコードごとに、一緒に生成されても良い。つまり、各種のインデックスの生成の手順や順序等は問わない。
 次に、ステップS501のソース・インデックス生成処理の例について、図6フローチャートを用いて説明する。
 (ステップS601)ソース・インデックス生成部1315は、2以上の各データソースに、異なるレコードが存在するか否かを判断する。異なるレコードが存在する場合はステップS602に行き、異なるレコードが存在しない場合はステップS604に行く。
 (ステップS602)ソース・インデックス生成部1315は、インデックスの生成の対象のデータソースを参照し、当該データソースの最小キー項目値を取得する。
 (ステップS603)ソース・インデックス生成部1315は、インデックスの生成の対象のデータソースを参照し、当該データソースの最大キー項目値を取得する。
 (ステップS604)ソース・インデックス生成部1315は、2以上の各データソースに、異なる属性の属性値が存在するか否かを判断する。異なる属性の属性値が存在する場合はステップS605に行き、異なる属性の属性値が存在しない場合はステップS607に行く。
 (ステップS605)ソース・インデックス生成部1315は、インデックスの生成の対象のデータソースを参照し、当該データソースの最小属性識別子取得する。
 (ステップS606)ソース・インデックス生成部1315は、インデックスの生成の対象のデータソースを参照し、当該データソースの最大属性識別子取得する。
 (ステップS607)ソース・インデックス生成部1315は、インデックスの生成の対象のデータソースのソース識別子を取得する。
 (ステップS608)ソース・インデックス生成部1315は、ソース・インデックスレコードを構成する。ソース・インデックスレコードは、例えば、最小キー項目値と最大キー項目値とを有する。ソース・インデックスレコードは、例えば、最小属性識別子と最大属性識別子とを有する。ソース・インデックスレコードは、例えば、最小キー項目値と最大キー項目値と最小属性識別子と最大属性識別子とを有する。ソース・インデックスレコードは、ソース識別子に対応している。なお、ソース識別子に対応していることは、ソース識別子を有することでも良いことは言うまでもない。
 (ステップS609)ソース・インデックス生成部1315は、ステップS608で構成したソース・インデックスレコードをソース・インデックス格納部1125に追記する。上位処理にリターンする。
 次に、ステップS502の配列ラベル・インデックス生成処理の例について、図7フローチャートを用いて説明する。
 (ステップS701)配列ラベル・インデックス生成部1312は、カウンタiに1を代入する。
 (ステップS702)配列ラベル・インデックス生成部1312は、インデックスの生成の対象のデータソースのi番目の属性の属性識別子を取得する。
 なお、配列ラベル・インデックス生成部1312は、例えば、インデックスの生成の対象のデータソースの中の1行目のレコードのi番目の属性の属性識別子を取得する。配列ラベル・インデックス生成部1312は、例えば、格納部11に格納されているデータソーススキーマ情報からi番目の属性の属性識別子を取得しても良い。なお、データソーススキーマ情報とは、データソースの構造を特定する情報であり、例えば、2以上の属性識別子を有する。
 (ステップS703)配列ラベル・インデックス生成部1312は、ステップS702でi番目の属性の属性識別子を取得できたか否かを判断する。取得できた場合はステップS704に行き、取得できなかった場合は上位処理にリターンする。
 (ステップS704)配列ラベル・インデックス生成部1312は、ステップS702で取得したi番目の属性の属性識別子と、i(属性順番情報)とを有する配列ラベル・インデックスレコードを構成する。なお、配列ラベル・インデックスレコードは、配列ラベル・インデックスを構成する情報である。
 (ステップS705)配列ラベル・インデックス生成部1312は、ステップS704で構成した配列ラベル・インデックスレコードを、インデックスの生成の対象のデータソースに対応付けて、配列ラベル・インデックス格納部1122に追記する。
 (ステップS706)配列ラベル・インデックス生成部1312は、カウンタiを1、インクリメントする。ステップS702に戻る。
 なお、図7のフローチャートにおいて、配列ラベル・インデックスレコードを、属性識別子をキーとしてソートし、配列ラベル・インデックスを構成することは好適である。
 次に、ステップS503の配列インデックス生成処理の例について、図8フローチャートを用いて説明する。
 (ステップS801)配列インデックス生成部1311は、カウンタiに1を代入する。
 (ステップS802)配列インデックス生成部1311は、インデックスの生成の対象のデータソースの中に、i番目のレコードが存在するか否かを判断する。i番目のレコードが存在する場合はステップS803に行き、i番目のレコードが存在しない場合は上位処理にリターンする。
 (ステップS803)配列インデックス生成部1311は、カウンタjに1を代入する。
 (ステップS804)配列インデックス生成部1311は、インデックスの生成の対象のデータソースに、j番目の属性が存在するか否かを判断する。j番目の属性が存在する場合はステップS805に行き、j番目の属性が存在しない場合はステップS809に行く。
 (ステップS805)配列インデックス生成部1311は、j番目の属性を配列インデックスに使用するか否かを判断する。j番目の属性を配列インデックスに使用する場合はステップS806に行き、使用しない場合はステップS808に行く
 (ステップS806)配列インデックス生成部1311は、i番目のレコードのj番目の属性の属性値の属性位置情報を、インデックスの生成の対象のデータソースから取得する。
 (ステップS807)配列インデックス生成部1311は、ステップS806で取得した属性位置情報を、配列インデックスレコードのバッファに追記する。
 (ステップS808)配列インデックス生成部1311は、カウンタjを1、インクリメントする。ステップS804に戻る。
 (ステップS809)配列インデックス生成部1311は、配列インデックスレコードのバッファの配列インデックスレコードを、配列インデックス格納部1121に追記する。
 (ステップS810)配列インデックス生成部1311は、カウンタiを1、インクリメントする。ステップS802に戻る。
 次に、ステップS504のレコード・インデックス生成処理の例について、図9フローチャートを用いて説明する。
 (ステップS901)レコード・インデックス生成部1313は、カウンタiに1を代入する。
 (ステップS902)レコード・インデックス生成部1313は、インデックスの生成の対象のデータソースの中に、i番目のレコードが存在するか否かを判断する。i番目のレコードが存在する場合はステップS903に行き、i番目のレコードが存在しない場合は上位処理にリターンする。
 (ステップS903)レコード・インデックス生成部1313は、インデックスの生成の対象のデータソースを参照し、i番目のレコードのレコード位置情報を取得する。
 (ステップS904)レコード・インデックス生成部1313は、インデックスの生成の対象のデータソースを参照し、i番目のレコードのキー項目値を取得する。
 (ステップS905)レコード・インデックス生成部1313は、i番目のレコード・インデックスレコードの、レコード・インデックス内における位置情報であるレコード・インデックスレコード位置情報を取得する。
 (ステップS906)レコード・インデックス生成部1313は、ステップS903で取得したレコード位置情報、ステップS904で取得したキー項目値、およびステップS905で取得したレコード・インデックスレコード位置情報を有するi番目のレコード・インデックスレコードを構成する。
 (ステップS907)レコード・インデックス生成部1313は、ステップS906で構成したレコード・インデックスレコードを、レコード・インデックス格納部1123に追記する。
 (ステップS908)レコード・インデックス生成部1313は、カウンタiを1、インクリメントする。ステップ902に戻る。
 なお、図9のフローチャートにおいて、レコード・インデックス生成部1313は、キー項目値をキーとして、レコード・インデックスレコードをソートすることは好適である。かかる場合、レコード・インデックス生成部1313は、レコード・インデックスレコードごとに、ソートされた状態のレコード・インデックスレコード位置情報を取得することは言うまでもない。
 次に、ステップS505の2次インデックス生成処理の例について、図10フローチャートを用いて説明する。
 (ステップS1001)2次インデックス生成部1314は、カウンタiに1を代入する。
 (ステップS1002)2次インデックス生成部1314は、レコード・インデックスの中に、i番目のレコード・インデックスレコードが存在するか否かを判断する。i番目のレコード・インデックスレコードが存在する場合はステップS1003に行き、存在しない場合は上位処理にリターンする。
 (ステップS1003)2次インデックス生成部1314は、i番目のレコード・インデックスレコードを、2次インデックスに使用するか否かを判断する。2次インデックスに使用する場合はステップS1004に行き、2次インデックスに使用しない場合はステップS1006に行く。
 なお、2次インデックス生成部1314は、すべてのレコード・インデックスレコードのうちの一部のレコード・インデックスレコードを使用する。2次インデックス生成部1314は、例えば、すべてのレコード・インデックスレコードの番号をN(Nは2以上の自然数)で割った場合の余りの値がM(Mは整数,0<=M<N-1)の番号に対応するレコード・インデックスレコードを使用する、と判断する。また、2次インデックス生成部1314は、例えば、予め決められている一部のレコード・インデックスレコードを使用する、と判断する。
 (ステップS1004)2次インデックス生成部1314は、i番目のレコード・インデックスレコードから、キー項目値とレコード・インデックスレコード位置情報とを取得し、当該情報を有する2次インデックスレコードを構成する。
 (ステップS1005)2次インデックス生成部1314は、ステップS1004で構成した2次インデックスレコードを2次インデックス格納部1124に追記する。
 (ステップS1006)2次インデックス生成部1314は、カウンタiを1、インクリメントする。ステップ1002に戻る。
 なお、図10のフローチャートにおいて、2次インデックスレコードは、キー項目値をキーとしてソートされていることは好適である。
 次に、ステップS415の検索処理の例について、図11フローチャートを用いて説明する。
 (ステップS1101)検索部132は、受け付けられた検索条件に対応する1以上の属性識別子と1以上のキー項目値を取得する。なお、1以上の属性識別子は、検索結果として取得する属性値を特定する。1以上のキー項目値は、検索結果として情報を取得する対象のレコードを特定する。つまり、検索部132は、ここで取得した1以上のキー項目値のレコードの中の属性値であり、ここで取得した1以上の各属性識別子で識別される属性値を取得することとなる。
 (ステップS1102)検索部132は、ソース・インデックスを参照し、ステップS1101で取得した1以上の属性識別子と1以上のキー項目値に対応する1以上のソース識別子を取得する。ここで、検索部132は、取得した1以上の各ソース識別子に、当該ソース識別子で識別されるデータソースに含まれる属性値の1以上の属性識別子と、当該ソース識別子で識別されるデータソースに含まれるレコードの1以上のキー項目値とを対応付ける。
 (ステップS1103)検索部132は、カウンタiに1を代入する。
 (ステップS1104)検索部132は、ステップS1102で取得した1以上のソース識別子の中に、i番目のソース識別子が存在するか否かを判断する。i番目のソース識別子が存在する場合はステップS1105に行き、存在しない場合はステップS1118に行く。
 (ステップS1105)検索部132は、カウンタjに1を代入する。
 (ステップS1106)検索部132は、ステップS1102でi番目のソース識別子に対応付けられた1以上のキー項目値の中に、j番目のキー項目値が存在するか否かを判断する。j番目のキー項目値が存在する場合はステップS1107に行き、存在しない場合はステップS1117に行く。
 (ステップS1107)検索部132は、i番目のソース識別子に対応する2次インデックスを参照し、j番目のキー項目値に対応する第一のレコード・インデックスレコード位置情報と第二のレコード・インデックスレコード位置情報とを取得する。なお、第一のレコード・インデックスレコード位置情報は、j番目のキー項目値より小さなキー項目値のうちの最大のキー項目値と対になるレコード・インデックスレコード位置情報である。第二のレコード・インデックスレコード位置情報が、j番目のキー項目値より大きなキー項目値のうちの最小のキー項目値と対になるレコード・インデックスレコード位置情報である。また、ここで、検索部132は、j番目のキー項目値と対になる一つのレコード・インデックスレコード位置情報を2次インデックスから取得する場合もあり得る。
 (ステップS1108)ステップS1107で第一のレコード・インデックスレコード位置情報と第二のレコード・インデックスレコード位置情報とを取得した場合、検索部132は、当該第一のレコード・インデックスレコード位置情報と第二のレコード・インデックスレコード位置情報との間のレコード・インデックスレコードを検索し(例えば、二分探索、またはシーケンシャルサーチ)、j番目のキー項目値を検出する。次に、検索部132は、当該j番目のキー項目値と対になるレコード位置情報を、レコード・インデックスから取得する。
 また、ステップS1107で一つのレコード・インデックスレコード位置情報を取得した場合、検索部132は、当該レコード・インデックスレコード位置情報と対になるレコード位置情報を、レコード・インデックスから取得する。
 (ステップS1109)検索部132は、カウンタkに1を代入する。
 (ステップS1110)検索部132は、i番目のソース識別子に対応するk番目の属性識別子が存在するか否かを判断する。k番目の属性識別子が存在する場合はステップS1111に行き、存在しない場合はステップS1116に行く。
 (ステップS1111)検索部132は、i番目のソース識別子に対応する配列ラベル・インデックスを参照し、k番目の属性識別子と対になる属性順番情報を、当該配列ラベル・インデックスから取得する。
 (ステップS1112)検索部132は、i番目のソース識別子に対応する配列インデックスを参照し、当該配列インデックス内に、ステップS1111で取得した属性順番情報と一致する属性順番情報が存在するか否かを判断する。属性順番情報と一致する属性順番情報が存在する場合は、検索部132は、当該属性順番情報と対になり、かつj番目のキー項目値と対になる属性位置情報を当該配列インデックスから取得する。
 属性順番情報と一致する属性順番情報が存在しない場合は、検索部132は、当該属性順番情報を挟む2つの属性順番情報を取得する。つまり、検索部132は、当該属性順番情報より小さい値の属性順番情報であり、当該属性順番情報との差が最も小さい第一の属性順番情報を取得する。また、検索部132は、当該属性順番情報より大きい値の属性順番情報であり、当該属性順番情報との差が最も小さい第二の属性順番情報を取得する。なお、第一の属性順番情報と第二の属性順番情報とは、当該属性順番情報を挟む情報である。次に、検索部132は、第一の属性順番情報と対になり、かつj番目のキー項目値と対になる属性位置情報を当該配列インデックスから取得する。また、検索部132は、第二の属性順番情報と対になり、かつj番目のキー項目値と対になる属性位置情報を当該配列インデックスから取得する。
 (ステップS1113)ステップS1112で一つの属性位置情報を取得した場合は、検索部132は、ステップS1108で取得したj番目のキー項目値と対になるレコード位置情報が示す位置のレコードの中から、ステップS1112で取得した一つの属性位置情報が示す位置の属性値を、i番目のソース識別子で識別されるデータソースから取得する。
 また、ステップS1112で2つの属性位置情報を取得した場合は、検索部132は、ステップS1108で取得したj番目のキー項目値と対になるレコード位置情報が示す位置のレコードの中から、2つの各属性位置情報が特定する位置の属性値を、例えば、シーケンシャルサーチにより検査し、k番目の属性識別子と対になる属性順番情報の順番に存在する属性値を、i番目のソース識別子で識別されるデータソースから取得する。
 (ステップS1114)検索部132は、j番目のキー項目値とk番目の属性識別子とに対応付けて、ステップS1113で取得した属性値を、図示しないバッファに一時蓄積する。
 (ステップS1115)検索部132は、カウンタkを1、インクリメントする。ステップ1110に戻る。
 (ステップS1116)検索部132は、カウンタjを1、インクリメントする。ステップ1106に戻る。
 (ステップS1117)検索部132は、カウンタiを1、インクリメントする。ステップ1104に戻る。
 (ステップS1118)検索部132は、図示しないバッファに一時蓄積された1以上の属性値を含む検索結果を構成する。上位処理にリターンする。なお、検索結果の構成方法は問わない。検索結果に含まれる属性値に対応する属性識別子は、属性値に対応付くことが明示される態様で、検索結果に含まれることは好適である。また、検索結果は、j番目のキー項目値を含むことは好適である。
 次に、データソース管理装置2の動作例について説明する。データソース管理装置2は、検索装置1からのアクセスに応じて、データソース格納部111のデータソースを読み出し、検索装置1に送信する。なお、かかる場合、データソース管理装置2は、データソースの一部のみを読み出し、送信しても良い。
 次に、端末装置3の動作例について説明する。端末装置3の端末受付部32は、検索条件を受け付ける。次に、端末処理部33は、送信する検索条件を構成する。次に、端末送信部34は、当該検索条件を検索装置1に送信する。そして、検索条件の送信に応じて、端末受信部35は、検索結果を受信する。次に、端末処理部33は、受信された検索結果を用いて、出力する検索結果を構成する。次に、端末出力部36は、当該検索結果を出力する。
 以下、本実施の形態における検索システムAの具体的な動作例について説明する。
 今、検索装置1のデータソース格納部111、またはデータソース管理装置2のデータソース格納部111に、図12に示す3つのデータソース(1201、1202、1203)を含む3以上のデータソースが格納されている、とする。なお、3つの各データソースは、ここでは、1つのファイルである、とする。
 そして、図12のデータソースは、ヘッダー・レコード、ラベル・レコード、多数のレコードを有する。ラベル・レコード、および各レコードは、第一デリミタにより区切られている。また、第一デリミタは、ここでは、例えば、リターンコードである。
 ヘッダー・レコードは、ファイルのいわゆるヘッダーであり、1以上のソース属性値を有する。ソース属性値は、ここでは、ソース識別子、レポート番号、最終更新時情報である。ソース識別子は、図12では、File Nameであり、値は「File1」である。レポート番号は、当該データソースの出所を識別するための番号で、値は「A12345」である。最終更新時情報は、図12では、Dateであり、値は「XXXX-XX-XX」である。
 ラベル・レコードは、例えば、ファイルの1行目である。なお、ヘッダー・レコードがファイルの1行目である場合は、ラベル・レコードは、ファイルの2行目である。ラベル・レコードは、項目ラベルの集合と、属性識別子の集合である。項目ラベルは、キー項目のラベルまたは明細項目のラベルである。キー項目は、レコードのキーとなる属性であり、ここでは「PID(パーソナルID)」である。「PID」は、ユーザを識別するIDである。明細項目は、「PID」に対応するユーザの属性値で、ここでは、明細項目は、「No.」「Age」を含む。「No.」は、レコードIDであり、その値は、図12の1201の[1][2][3]等である。また、「No.」の下の(Pos.)は、各レコードのレコード位置情報(ここでは、データソース内のレコードの先頭のオフセット)である。「Age」は、ユーザの年齢である。属性識別子は、図12では、「TestB」「TestE」「TestC」等である。図12では、属性識別子の下に属性順番情報が記載されている。属性順番情報は、属性識別子の下の[1][2][3]等である。
 図12の各レコードは、キー項目値、明細項目値、属性値を有する。キー項目値は、キー項目の値であり、ここでは、各ユーザのPID(例えば、236,029)である。なお、どの値をキー項目値とするかはインデックス生成のためのパラメータとして指定できることが好適であり、他の値(例えば、「Age」「PIDとAgeの組」)でも良く、また2以上のキー項目値を持つことも可能である。明細項目値は、ここでは、例えば、「No.」の値、「Age」の値である。「No.」の値は、ここでは、[1][2]等である。「No.」の値([1][2][3]等)の下に存在する値(例えば、(1)(121)(241)等)は、各レコードのレコード位置情報である。
 レコード識別子[1]に対応するレコードの属性値は、0.11、0.4、0.57等である。また、図12において、属性値(0.11、0.4、0.57等)の下には、各属性値の属性値位置情報((57)(62)(73)等)が表記されている。
 ここでのデータソースは、遺伝子・ゲノム情報の集合を含む、とする。また、一般的な遺伝子・ゲノム情報を取り扱うデータでは、遺伝子の塩基配列やタンパク質のアミノ酸配列などのデータが含むまれ、1レコードの長さが、例えば、数GBになることもある。また、1レコードの中の属性値の数が膨大になり、データサイズは巨大になる場合が多い。また、遺伝子・ゲノム情報を取り扱うデータは、フラットファイル(一般的なテキストファイル)に比較的単純なレイアウトで保存・流通されているケースが多く、本具体例におけるデータソース(図12参照)は、その例である。
 かかる状況で、以下の3つの具体例について説明する。具体例1は、インデックスの生成処理の例である。具体例2は、ソース・インデックスが最小キー項目値と最大キー項目値との組を有し、最小属性識別子と最大属性識別子との組を有さない場合における検索処理の例である。具体例3は、ソース・インデックスが最小キー項目値と最大キー項目値と最小属性識別子と最大属性識別子との組を有する場合における検索処理の例である。
(具体例1)
 検索装置1のインデックス生成部131が、各種のインデックスの生成処理の例について、図13を用いて説明する。ここでは、キー項目は「PID」である、とする。
(1)ソース・インデックス生成処理
 ソース・インデックス生成部1315は、ファイル「データソース1301」にアクセスし、データソース1301のソース識別子(ここでは、ファイル名)「file1」を取得する。また、ソース・インデックス生成部1315は、データソース1301をオープンする。次に、ソース・インデックス生成部1315は、データソース1301のPIDの中の最小のPIDである最小キー項目値「029」と最大のPIDである最大キー項目値「451」とを取得する。なお、データソース1301において、PIDがソートされている場合は、ソース・インデックス生成部1315は、最初のPIDと最後のPIDとを取得する。PIDがソートされていない場合は、ソース・インデックス生成部1315は、シーケンシャルにPIDを検査し、最小キー項目値と最大キー項目値とをデータソース1301から取得する。
 また、ソース・インデックス生成部1315は、データソース1301のラベル・レコードの属性値識別子の中の最小属性識別子「TestA」と最大属性識別子「TestE」とを取得する。なお、データソース1301において、属性識別子がソートされている場合は、ソース・インデックス生成部1315は、ラベル・レコードから、最初の属性識別子と最後の属性識別子とを取得する。属性識別子がソートされていない場合は、ソース・インデックス生成部1315は、シーケンシャルに属性識別子を検査し、最小属性識別子と最大属性識別子とをラベル・レコードから取得する。
 次に、ソース・インデックス生成部1315は、取得したソース識別子、最小キー項目値、最大キー項目値、最小属性識別子、および最大属性識別子から、ソース・インデックスレコード「file1,029,451,TestA,TestE」を構成し、ソース・インデックス格納部1125に蓄積する。
 ソース・インデックス生成部1315は、他のデータソース(ファイル「file2」「file3」等)に対しても、同様に、ソース・インデックスレコードを構成し、ソース・インデックス格納部1125に蓄積する。
 以上の処理により、図13の1302のソース・インデックスがソース・インデックス格納部1125に蓄積される。
(2)配列ラベル・インデックス生成処理
 配列ラベル・インデックス生成部1312は、ファイル「データソース1301」にアクセスし、データソース1301のソース識別子(ファイル名)「file1」を取得する。また、ソース・インデックス生成部1315は、データソース1301をオープンする。
 次に、配列ラベル・インデックス生成部1312は、データソース1301のラベル・インデックス内に配置されている順に、属性識別子をその順番である属性順番情報と共に取得する。そして、属性識別子ごとに、属性識別子と属性順番情報との組である配列ラベル・インデックスレコードを構成する。
 次に、配列ラベル・インデックス生成部1312は、属性識別子をキーとして配列ラベル・インデックスレコードを、例えば、昇順にソートする。そして、配列ラベル・インデックス生成部1312は、ソートされた配列ラベル・インデックスレコードを、配列ラベル・インデックス格納部1122に蓄積する。
 配列ラベル・インデックス生成部1312は、他のデータソース(ファイル「file2」「file3」等)に対しても、同様に、配列ラベル・インデックスを構成し、配列ラベル・インデックス格納部1122に蓄積する。
 以上の処理により、図13の1303の配列ラベル・インデックスが配列ラベル・インデックス格納部1122に蓄積される。
(3)配列インデックス生成処理
 配列インデックス生成部1311は、ファイル「データソース1301」にアクセスし、データソース1301のソース識別子(ファイル名)「file1」を取得する。また、ソース・インデックス生成部1315は、データソース1301をオープンする。
 配列インデックス生成部1311は、例えば、1番目、4番目、7番目といった具合に、所定数(ここでは、3つ)飛ばしで、データソース1301の属性順番情報を取得する。また、配列インデックス生成部1311は、例えば、レコードごとに、第二デリミタを検出しながら、取得した各属性順番情報の順番の属性値まで、ファイルポインタを進め、例えば、その順番の属性値のレコード内でのオフセットである属性位置情報を取得する。次に、配列インデックス生成部1311は、データソース1301のレコードごとに、レコードのPIDに対応付けて、属性順番情報が示す順番に、取得した属性位置情報を連結し、配列インデックスレコードを構成する。
 次に、配列インデックス生成部1311は、例えば、対応するPIDをキーとして、配列インデックスレコードを、例えば、昇順にソートし、配列インデックスを構成し、配列インデックス格納部1121に蓄積する。
 また、配列インデックス生成部1311は、他のデータソース(ファイル「file2」「file3」等)に対しても、同様に、配列インデックスを構成し、配列インデックス格納部1121に蓄積する。
 以上の処理により、図13の1304の配列インデックスが配列インデックス格納部1121に蓄積される。
(4)レコード・インデックス生成処理
 レコード・インデックス生成部1313は、ファイル「データソース1301」にアクセスし、データソース1301のソース識別子(ファイル名)「file1」を取得する。また、ソース・インデックス生成部1315は、データソース1301をオープンする。
 レコード・インデックス生成部1313は、データソース1301におけるレコードごとに、キー項目値と、データソース1301内におけるレコードのオフセットであるレコード位置情報とを、データソース1301から取得し、レコード・インデックスレコードを構成する。
 そして、レコード・インデックス生成部1313は、キー項目値をキーとして、例えば、昇順に、キー項目値とレコード位置情報との組をソートする。次に、レコード・インデックス生成部1313は、レコード・インデックスにおける各レコード・インデックスレコードの位置情報(Pos.)を取得する。かかる位置情報(Pos.)は、レコード・インデックスレコード位置情報である。
 なお、ここで、レコード・インデックスレコード位置情報(Pos.)は、当該位置情報(Pos.)とキー項目値とレコード位置情報との組と配列インデックスレコードとを有するレコードの位置情報(Pos.)であることは好適である。つまり、レコード・インデックスレコードと配列インデックスレコードとは、データソースのレコードごとに、連絡されていることは好適である。
 次に、レコード・インデックス生成部1313は、データソース1301におけるレコードごとのレコード・インデックスレコードをレコード・インデックス格納部1123に蓄積する。
 また、レコード・インデックス生成部1313は、他のデータソース(ファイル「file2」「file3」等)に対しても、同様に、レコード・インデックスを構成し、レコード・インデックス格納部1123に蓄積する。
 以上の処理により、図13の1305のレコード・インデックスがレコード・インデックス格納部1123に蓄積される。
(5)2次インデックス生成処理
 2次インデックス生成部1314は、レコード・インデックス格納部1123のレコード・インデックスを読み出す。
 次に、2次インデックス生成部1314は、例えば、1番目、4番目、7番目といった具合に、所定数(ここでは、3つ)飛ばしで、レコード・インデックスレコードに含まれるキー項目値(ここでは、PID)とレコード・インデックスレコード位置情報(Pos.)との組である2次インデックスレコードを取得する。
 次に、2次インデックス生成部1314は、取得した2次インデックスレコードを2次インデックス格納部1124に追記する。なお、2次インデックスにおいて、PIDをキーとして、2次インデックスレコードはソートされている。
 また、2次インデックス生成部1314は、他のデータソース(ファイル「file2」「file3」等)に対しても、同様に、2次インデックスを構成し、2次インデックス格納部1124に蓄積する。
 以上の処理により、図13の1306の2次インデックスが2次インデックス格納部1124に蓄積される。
(具体例2)
 今、データソース管理装置2のデータソース格納部111、または検索装置1のデータソース格納部111に、図14の1401のデータソースが格納されている、とする。
 かかる場合、ユーザは、端末装置3に、検索条件「Select PID,Age,Test,TestValue from データソース where PID=155 AND Test=TestC」を入力した、とする。なお、「PID,Age,Test,TestValue」の「Test」は属性値識別子であり、「TestValue」は属性値である、とする。
 すると、端末装置3の端末受付部32は、かかる検索条件を受け付ける。次に、端末処理部33は、送信する検索条件を構成する。次に、端末送信部34は、当該検索条件を検索装置1に送信する。
 次に、検索装置1の条件受付部121は、検索条件「Select PID,Age,Test,TestValue from データソース where PID=155 AND Test=TestC」を受信する。
 次に、検索装置1の検索部132は、以下のように「PID=155 AND Test=TestC」に合致するレコードの中の「PID」、「Age」、属性識別子「TestC」、およびTestCの属性値を取得する。
 つまり、まず、検索部132は、検索条件に含まれる「PID=155」を取得する。また、検索部132は、検索条件に含まれる属性値識別子「TestC」を取得する(図14の1406)。
 次に、検索部132は、ソース・インデックス(1402)を参照し、取得した「PID=155」を、Min(最小キー項目値)とMax(最大キー項目値)の間に挟む、ソース・インデックスレコードを検知し、当該ソース・インデックスレコードが有するソース識別子「File1」を取得する。
 また、検索部132は、ソース識別子「File1」に対応する2次インデックス(1403)を参照し、「PID=155」を間に挟むPID「029」と「236」とを検知し、当該PID「029」と「236」と対になるレコード・インデックスレコード位置情報(1)と(151)とを、2次インデックス(1403)から取得する。
 次に、検索部132は、ソース識別子「File1」に対応するレコード・インデックス(1404)を参照し、レコード・インデックスレコード位置情報(1)と(151)の間を、例えば、「PID=155」をキーとして二分探索し、「PID=155」を含むレコード・インデックスレコードを検出する。そして、検索部132は、当該レコード・インデックスレコードから、「PID=155」と対になるレコード位置情報(241)を取得する。なお、検索部132は、二分探索ではなく、シーケンシャルサーチして、「PID=155」を含むレコード・インデックスレコードを検出しても良い。
 次に、検索部132は、取得したレコード位置情報(241)と、レコード・インデックスレコード位置情報(101)とを、図示しないバッファに一時蓄積する。
 次に、検索部132は、ソース識別子「File1」に対応する配列ラベル・インデックス(1405)を参照し、検索条件に含まれる属性識別子「TestC」をキーとして、当該配列ラベル・インデックスを二分探索し、属性識別子「TestC」を検知し、当該属性識別子「TestC」と対になる属性順番情報(3)を取得する。なお、ここで、検索部132は、二分探索ではなく、シーケンシャルサーチして、属性順番情報(3)を取得しても良い。
 次に、検索部132は、ソース識別子「File1」に対応する配列インデックスを参照し、配列インデックスの中の、属性順番情報(3)を間に挟む、第一の属性順番情報(1)と第二の属性順番情報(4)とを取得する。
 次に、検索部132は、図示しないバッファのレコード・インデックスレコード位置情報(101)に対応し、第一の属性順番情報(1)に対応する属性値位置情報(54)をレコード・インデックスから取得し、図示しないバッファに一時蓄積する。また、検索部132は、当該レコード・インデックスレコード位置情報(101)に対応し、第二の属性順番情報(4)に対応する属性値位置情報(84)をレコード・インデックスから取得し、図示しないバッファに一時蓄積する。
 次に、検索部132は、ソース識別子「File1」で識別されるデータソースにアクセスし、当該ファイルをオープンする。
 次に、検索部132は、図示しないバッファから、レコード位置情報(241)と属性値位置情報(54)と属性値位置情報(84)とを取得し、当該レコード位置情報(241)が特定する位置のレコードの中の、属性値位置情報(54)と属性値位置情報(84)との間の属性値であり、属性順番情報(3)に対応する属性値「0.381」を、当該ファイルから取得する。また、検索部132は、レコード位置情報(241)が特定する位置のレコードの中の、Age「62」を当該ファイルから取得する。
 そして、検索部132は、PID「155」、Age「62」、属性値識別子「TestC」、属性値「0.381」を有する検索結果を構成する。
 次に、結果出力部141は、構成された検索結果を、端末装置3に送信する。なお、かかる検索結果は、例えば、図14の1407である。
 次に、端末装置3の端末受信部35は、検索結果を受信する。次に、端末処理部33は、受信された検索結果を用いて、出力する検索結果を構成する。次に、端末出力部36は、当該検索結果を出力する。
(具体例3)
 今、データソース管理装置2のデータソース格納部111、または検索装置1のデータソース格納部111に、図13の1301のデータソースが格納されている、とする。
 かかる場合、ユーザは、端末装置3に、検索条件「Select PID,Age,Test,TestValue from データソース where PID=155 AND Test=TestC」を入力した、とする。
 すると、端末装置3の端末受付部32は、かかる検索条件を受け付ける。次に、端末処理部33は、送信する検索条件を構成する。次に、端末送信部34は、当該検索条件を検索装置1に送信する。
 次に、検索装置1の条件受付部121は、検索条件「Select PID,Age,Test,TestValue from データソース where PID=155 AND Test=TestC」を受信する。
 次に、検索装置1の検索部132は、以下のように「PID=155 AND Test=TestC」に合致するレコードの中の「PID」、「Age」、属性識別子「TestC」、およびTestCの属性値を取得する。
 つまり、まず、検索部132は、検索条件に含まれる「PID=155」を取得する。また、検索部132は、検索条件に含まれる属性値識別子「TestC」を取得する。
 次に、検索部132は、ソース・インデックス(1302)を参照し、取得した「PID=155」および「TestC」に対応するソース識別子「File1」を取得する。
 その後、検索部132は、具体例2で説明した処理と同様の処理により、検索結果を得る。
 次に、結果出力部141は、構成された検索結果を、端末装置3に送信する。なお、かかる検索結果は、例えば、図13の1307である。
 次に、検索条件の送信に応じて、端末受信部35は、検索結果を受信する。次に、端末処理部33は、受信された検索結果を用いて、出力する検索結果を構成する。次に、端末出力部36は、当該検索結果を出力する。
 以上、本実施の形態によれば、大きいデータサイズのデータソースから、所望の属性値を高速に検索できる。
 また、本実施の形態によれば、特に、1レコードの長さが非常に長いデータソースに対して、所望の属性値を高速に検索できる。
 また、本実施の形態によれば、情報検索を高速に行うためのインデックスを自動生成できる。
 また、本実施の形態によれば、特に、1レコードの長さが非常に長いデータソースに対して、情報検索を高速に行うためのインデックスを自動生成できる。
 さらに、本実施の形態によれば、最新の状態のインデックスを保持できる。
 さらに、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD-ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における検索装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、キー項目値と2以上の属性値とを有する2以上のレコードを含むデータソースが格納されるデータソース格納部と、2以上のレコードのうちの1以上の各レコードごと、および各レコードの1以上の各属性ごとに、属性値が存在する位置を特定する属性位置情報を有する配列インデックスが格納される配列インデックス格納部とにアクセス可能なコンピュータを、属性識別子を含む検索条件を受け付ける条件受付部と、前記検索条件が有する属性識別子に対応する属性位置情報を、前記配列インデックスから取得し、当該属性位置情報を用いて、前記検索条件が有する前記属性識別子に対応する属性値を、前記データソースから取得する検索部と、前記検索部が取得した前記属性値を含む検索結果を出力する結果出力部として機能させるためのプログラムである。
 (実施の形態2)
 本実施の形態において、3層のスキーマ構造を有するデータ辞書を用いて、2以上のデータソースから情報を取得し、当該情報を統合して、出力する検索装置を具備する検索システムについて説明する。
 図15は、本実施の形態における検索システムBの概念図である。検索システムBは、検索装置4、1または2以上のデータソース管理装置2、および1または2以上の端末装置3を備える。
 検索装置4は、データソースから情報を検索する装置である。検索装置4は、例えば、いわゆるサーバであり、例えば、クラウドサーバ、ASPサーバ等である。なお、検索装置4の種類は問わない。
 なお、1または2以上の各データソース管理装置2は、通常、検索装置4とは異なる装置である。
 さらに、検索装置4と1以上のデータソース管理装置2とは、インターネットやLAN等のネットワークにより、通信可能である。また、検索装置4と端末装置3とは、インターネットやLAN等のネットワークにより、通信可能である。
 図16は、本実施の形態における検索システムBのブロック図である。図17は、検索装置4のブロック図である。
 検索装置4は、格納部41、受付部12、処理部43、および出力部44を備える。格納部41は、インデックス格納部112、および辞書格納部411を備える。処理部43は、インデックス生成部131、検索部432、およびインデックス更新部133を備える。検索部432は、ソース決定手段4321、命令生成手段4322、ソース検索手段4323、および統合手段4324を備える。出力部44は、結果出力部441を備える。
 データソース管理装置2を構成するデータソース格納部111のデータソースは、1または2以上のテーブルを有する。データソースは、1ファイルでも良いが、2以上のファイルから構成されていても良い。テーブルは、1ファイルでも良いが、一ファイルの中に複数のテーブルが存在しても良い。データソースやテーブルの構造は種々あり得、問わない。
 また、データソースは、例えば、リレーショナルデータベース、オブジェクト指向データベース、XMLデータベース、NoSQLデータベース、ファイル・データソース、データウェアハウス、データマート、ディレクトリ管理システム、リアルタイム測定データ、オンライン・データサービス、ストリーミング・データサービスのうちのいずれかであり、その種類は問わない。
 検索装置4を構成する格納部41には、各種の情報が格納される。各種の情報は、例えば、上述した1以上の種類のインデックス、後述するデータ辞書の各種の情報である。
 辞書格納部411には、データ辞書が格納される。データ辞書は、ユーザが入力する検索条件を用いて、2以上のデータソースから情報を取得し、当該情報を統合するための情報の集合である。データ辞書は、ソース層定義情報、ユーザ層定義情報、変換ルール定義情報を有する。つまり、データ辞書は、3層の情報を有する。
 ソース層定義情報は、データソースのスキーマを定義する情報である。ソース層定義情報は、例えば、ソース識別子と1以上のソース属性定義情報とを有する。ソース層定義情報は、例えば、ソース識別子とテーブル識別子と1以上のソース属性定義情報とを有する。
 ソース属性定義情報は、データソースにおけるテーブルの属性を定義する情報である。ソース属性定義情報は、ソース属性識別子を有する。ソース属性識別子は、データソースにおけるテーブルの属性を識別する情報であり、例えば、属性名、IDである。ソース属性定義情報は、データソースにおけるテーブルの属性の1以上の属性値を有しても良い。属性の1以上の属性値は、例えば、データタイプ、サイズである。
 ソース層定義情報は、テーブルに対応する情報である。データソースに一つのテーブルのみが存在する場合、ソース層定義情報は、データソースに対応する情報である。
 ソース層定義情報は、データソース固有情報を有することは好適である。データソース固有情報は、各データソースに固有の情報である。データソース固有情報は、例えば、命令元情報、接続情報を有する。
 命令元情報は、データソースに対する検索命令を生成するための情報である。命令元情報は、検索命令を構成するための情報である。2以上の各データソースに対応する命令元情報は、異なる種類であることは好適である。また、2種類以上の異なる各命令元情報は、例えば、SQL文の検索命令を生成するための情報、検索モジュールを生成するための情報、検索先のURLを含む構文を示すURL構文を含むことは好適である。
 命令元情報は、例えば、データソースに対して発行するSQL文を構成するための情報である。命令元情報は、例えば、データソースに対してアクセスする際に使用するモジュールのAPIを特定する情報である。命令元情報は、例えば、URL構文であり、例えば、URLとエンドポイント(テーブル識別子)とを有する文字列である。
 接続情報は、データソースにアクセスするための情報である。接続情報は、例えば、IPアドレス、URLを含む。接続情報は、例えば、データソースにログインするためのログイン情報を含む。ログイン情報は、例えば、ユーザ識別子、パスワードを含む。接続情報は、例えば、データソースのドライバー識別情報、APIキーを含む。
 ユーザ層定義情報は、ユーザテーブルのスキーマを定義する情報である。ユーザテーブルは、ユーザが入力する検索条件に基づく検索の対象である。ユーザテーブルは、通常、ビューであり、当該ビューは、1以上のレコードを含む。また、かかるレコードは、1以上の属性値を有する。レコードは、1以上のキー項目値を有することは好適である。
 ユーザ層定義情報は、例えば、ユーザテーブル識別子と1以上のユーザ属性定義情報とを有する。ユーザテーブル識別子は、ユーザテーブルを識別する情報であり、例えば、テーブル名、IDである。ユーザ属性定義情報は、ユーザテーブルの属性を定義する情報である。ユーザ属性定義情報は、ユーザ属性識別子を含む。ユーザ属性識別子は、ユーザテーブルの属性を識別する情報である。ユーザ属性識別子は、例えば、属性名、属性のIDである。
 ユーザ属性定義情報は、通常、ユーザ属性値元情報を有する。ユーザ属性値元情報は、ユーザ属性値の取得方法を特定する情報である。ユーザ属性値元情報は、1以上の変換ビューの1以上のビュー属性値を用いた情報である。ユーザ属性値元情報は、例えば、ビュー識別子とビュー属性識別子とを有する。ユーザ属性値元情報は、例えば、ユーザテーブル識別子とユーザ属性識別子とを有しても良い。
 ユーザ属性値元情報は、演算式等を有しても良い。演算式等とは、演算式またはプログラム識別子である。ユーザ属性値元情報が演算式等を有する場合、ユーザ属性値元情報は、1以上のいずれかの変換ビューのビュー識別子または2以上のいずれかのデータソースのソース識別子のうちの1または2以上の識別子と、当該1または2以上の各識別子と対になる属性識別子を有する。なお、1以上の各識別子と対になる属性識別子は、1以上のいずれかの変換ビューのビュー属性識別子または2以上のいずれかのデータソースのソース属性識別子のうちの1以上の属性識別子である。そして、演算式またはプログラム識別子は、1以上の属性識別子に対応する1以上の属性値をパラメータとして受け付け、実行される、演算式またはプログラムの識別子である。プログラム識別子は、例えば、モジュール名、関数名、メソッド名である。
 変換ルール定義情報は、検索部432が、受け付けられた検索条件に基づいて、2以上の各データソースに対して発行する検索命令を生成し、当該検索命令に対応する検索結果を取得し、当該検索条件に対応する統合データを作成するための情報である。
 変換ルール定義情報は、1以上の変換ビュー情報を有する。変換ビュー情報は、2以上のデータソースのうちの1以上のデータソースを用いて構成される変換ビューを定義する情報である。なお、変換ビューとは、ユーザテーブルと1以上のデータソースとの対応関係を表すビューである。変換ビューは、1以上のビュー属性値を有する1以上のレコードを含み得る。1以上のビュー属性値は、キー項目値を含むことは好適である。変換ビューは、通常、ユーザの直接的な検索対象にはならない情報である。また、一の変換ビュー情報は、通常、一のデータソースに対応する。
 変換ビュー情報は、1以上のビュー属性定義情報を有する。変換ビュー情報は、通常、ビュー識別子を有する。ビュー属性定義情報は、変換ビューの属性を定義する情報である。ビュー属性定義情報は、ビュー属性識別子とビュー属性定義情報とを有する。ビュー属性識別子は、変換ビューの属性を識別する情報である。ビュー属性識別子は、例えば、変換ビューの属性名、変換ビューの属性のIDである。
 ビュー属性値元情報は、ビュー属性値の取得方法を特定する情報である。ビュー属性値元情報は、例えば、ビュー属性値の取得元のデータソースのソース識別子とソース属性識別子とを有する。
 ビュー属性値元情報は、2以上のいずれかのデータソースのソース属性識別子または1以上のいずれかの変換ビューのビュー属性識別子のうちの1以上の属性識別子と、当該1以上の属性識別子に対応する属性値をパラメータとする演算式等とを有する。演算式等とは、演算式またはプログラム識別子である。プログラム識別子は、0あるいは1以上の属性値をパラメータとして実行可能であり、ビュー属性値を取得するプログラムの識別情報である。なお、与える属性値が0であるプログラムは、例えば、本日の日付を取得する「TODAY()」、現在時刻を取得する「TIME()」である。
 変換ルール定義情報は、結合方式識別子を有しても良い。結合方式識別子は、2以上の変換ビュー情報に基づいて取得された2以上の検索結果を結合する方式を特定する情報である。結合方式識別子は、例えば、「UNION」「CHOICE」「LOOKUP」である。変換ルール定義情報が含み得る2以上の結合方式識別子は、「UNION」「CHOICE」「LOOKUP」のうちの2以上であることは好適である。また、変換ルール定義情報が含み得る結合方式識別子は、「UNION」「CHOICE」「LOOKUP」を含む3以上であることは好適である。
 「UNION」は、併合処理を特定する情報である。併合処理は、2以上の検索結果に対して、1または2以上のキー項目でグループ化し、1または2以上の各非キー項目の2以上の属性値を集約することにより、一のレコードを構成する処理である。
 なお、2以上の属性値を集約することは、2以上の属性値に対して、所定の演算を行い、一つの値を取得することである。所定の演算とは、例えば、合計値の算出(SUM)、平均値の算出(Average)、最大値の取得(MAX)、最小値の取得(MIN)、中央値の取得(MEDIAN)、標準偏差の算出等である。
 「CHOICE」は、選択処理を特定する情報である。選択処理は、優先順位に従い、2以上の検索結果の中から1以上の検索結果を選択し、かつ1または2以上の各非キー項目の2以上の属性値を集約して、一のレコードを構成する処理である。なお、優先順位とは、2以上の変換ビューまたは2以上のデータソースからの検索結果に対する優先順位であり、例えば、格納部41に格納されている。変換ルール定義情報は、優先順位を含んでも良い。
 「LOOKUP」は、補完処理を特定する情報である。補完処理は、参照条件に従い参照する一の検索結果と、参照される他の検索結果とを特定し、2以上の検索結果のうちの参照する一の検索結果のキー項目の属性値に、参照される他の検索結果に含まれるキー項目の属性値であり、一の検索結果に含まれないキー項目の属性値を付加し、かつ1または2以上の各非キー項目の2以上の属性値を集約して、一のレコードを構成する処理である。なお、参照条件とは、検索結果から取得する1以上の各属性値を特定する情報であり、例えば、1以上の属性識別子である。
 処理部43は、各種の処理を行う。各種の処理は、例えば、インデックス生成部131、検索部432、インデックス更新部133が行う処理である。
 検索部432は、辞書格納部411を参照して、受付部12が受け付けた検索条件に対応する2以上のデータソースを決定する。なお、2以上のデータソースを決定することは、2以上のソース識別子を取得することである。また、2以上のデータソースの決定は、まとめて行われる必要はない。
 そして、検索部432は、変換ルール定義情報を用いて、決定した2以上の各データソースごとに、検索命令を生成し、当該検索命令に基づいた検索結果を取得する。そして、検索部432は、変換ルール定義情報とユーザ層定義情報とを用いて、取得した2以上の各データソースに対応する検索結果を統合し、検索条件に対応する統合データを取得する。
 検索部432は、例えば、ビュー属性値元情報に対応するビュー属性値を取得する場合に、ビュー属性値元情報が有する1または2以上の各属性識別子に対応する属性値をデータソースまたは変換ビューから取得する。次に、検索部432は、当該取得した1または2以上の属性値を演算式またはプログラム識別子で識別されるプログラムに与えて、当該演算式またはプログラムを実行し、ビュー属性値を取得する。ビュー属性値元情報が有する1以上の各属性識別子は、ソース属性識別子またはビュー属性識別子である。また、ビュー属性値元情報が有する1以上の各属性識別子に対応する属性値は、ソース属性値またはビュー属性値である。
 検索部432は、例えば、ユーザ属性値元情報に対応するユーザ属性値を取得する場合に、ユーザ属性値元情報が有する1または2以上の各属性識別子に対応する属性値をデータソースまたは変換ビューから取得する。次に、検索部432は、当該取得した1以上の属性値を演算式またはプログラム識別子で識別されるプログラムに与えて、演算式またはプログラムを実行し、ユーザ属性値を取得する。なお、ユーザ属性値元情報が有する1以上の各属性識別子は、ソース属性識別子またはビュー属性識別子である。また、ユーザ属性値元情報が有する1以上の各属性識別子に対応する属性値は、ソース属性値またはビュー属性値である。
 検索部432は、例えば、2以上の各データソースに対する命令元情報に従って、2以上の各データソースから情報を取得するための検索命令を生成する。次に、検索部432は、2以上の各データソースに対する検索命令に基づいた検索結果を、対応するデータソースから取得する。次に、検索部432は、変換ルール定義情報とユーザ層定義情報とを用いて、2以上の各データソースに対応する検索結果を統合し、検索条件に対応する統合データを取得する。
 検索部432は、例えば、2以上の各データソースに対する命令元情報に従って、SQL文に対応するデータソースに対しては、命令元情報に従ったSQL文である検索命令を生成する。また、検索部432は、例えば、検索モジュールに対応するデータソースに対しては、命令元情報に従った検索モジュールのインターフェイスである検索命令を生成する。そして、検索部432は、2以上の各データソースごとに、各検索命令に基づいた検索結果を取得する。次に、検索部432は、変換ルール定義情報とユーザ層定義情報とを用いて、2以上の各データソースに対応する検索結果を統合し、検索条件に対応する統合データを取得する。
 検索部432は、例えば、2以上の各データソースに対する接続情報を用いて、接続情報に対応するデータソースにアクセスし、検索命令に基づいた検索結果をデータソースから取得する。次に、検索部432は、変換ルール定義情報とユーザ層定義情報とを用いて、2以上の各データソースに対応する検索結果を統合し、検索条件に対応する統合データを取得する。
 検索部432は、例えば、変換ルール定義情報が有する結合方式識別子を取得し、当該結合方式識別子により特定される結合方式に従って、2以上の検索結果を結合し、統合データを取得する。
 検索部432は、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値をデータソースから取得し、属性値を有する統合データを構成する。なお、検索対象のデータソースが実施の形態1で説明した構造を有するデータソースである場合、検索部432が当該データソースから情報を取得する場合、検索部432は、検索部132と同じ動作をする。つまり、検索部432は、インデックス格納部112の1種類以上のインデックス情報を用いて、当該データソースから情報を取得する。かかる検索部432の検索処理は、実施の形態1における検索部132の処理として説明したので、ここでの説明は省略する。
 ソース決定手段4321は、検索条件に含まれる1以上のユーザ属性識別子を取得し、当該1以上の各ユーザ属性識別子に対応するユーザ属性値元情報を取得する。次に、ソース決定手段4321は、当該1以上の各ユーザ属性値元情報に対応する1以上のビュー属性識別子を取得する。次に、ソース決定手段4321は、当該1以上の各ビュー属性識別子に対応するソース識別子をビュー属性定義情報から取得する。なお、ソース決定手段4321は、取得したソース識別子に対してユニーク処理を行い、1または2以上のユニークなソース識別子を取得することは好適である。
 命令生成手段4322は、検索条件とビュー属性値元情報とを用いて、ソース決定手段4321が取得した2以上の各ソース識別子で識別されるデータソースごとに検索命令を生成する。
 命令生成手段4322は、2以上の各データソースに対する命令元情報に従って、データソースごとに検索命令を生成する。
 命令元情報が、SQL文の構文情報を含む場合、命令生成手段4322は、検索条件に基づいて、当該SQL文の構文情報に従ったSQL文を生成する。
 命令元情報が、検索モジュールのインターフェイスの構文情報を含む場合、命令生成手段4322は、検索条件に基づいて、当該検索モジュールのインターフェイスの構文情報に従った検索モジュールを実行するための文字列である検索命令を生成する。
 命令元情報が、URL構文である場合、命令生成手段4322は、検索条件に基づいて、
URL構文が有するURLとエンドポイント(テーブル識別子)に加えて、検索条件が有する条件部とを有する文字列である検索命令を生成する。
 ソース検索手段4323は、2以上の各データソースごとに、命令生成手段4322が取得した検索命令に基づいた検索結果を取得する。ソース検索手段4323は、例えば、2以上の各検索命令を実行し、対応するデータソースから検索結果を取得する。
 統合手段4324は、検索条件およびユーザ層定義情報を用いて、ソース検索手段4323が取得した2以上の各データソースごとの検索結果を統合した統合データを取得する。
 統合手段4324は、例えば、辞書格納部411に格納されている変換ルール定義情報が有する結合方式識別子により特定される結合方式に従って、2以上の検索結果を結合し、統合データを取得する。 
 結合方式識別子が「UNION」である場合、統合手段4324は、優先順位に従い、2以上の検索結果の中から1以上の検索結果を選択し、かつ1または2以上の各非キー項目の2以上の属性値を集約して、一のレコードを構成する併合処理を行う。
 結合方式識別子が「CHOICE」である場合、統合手段4324は、優先順位に従い、2以上の検索結果の中から1以上の検索結果に含まれるキー項目の属性値を選択し、かつ非キー項目の2以上の属性値を集約して、一のレコードを構成する選択処理を行う。なお、優先順位は、2以上の変換ビューまたは2以上のデータソースの中から優先する1以上の変換ビューまたは1以上のデータソースを特定する情報である。また、優先順位は、格納部41に格納されている。
 結合方式識別子が「LOOKUP」である場合、統合手段4324は、参照条件に従い、参照する一の検索結果と、参照される他の検索結果とを特定し、2以上の検索結果のうちの参照する一の検索結果のキー項目の属性値に、参照される他の検索結果に含まれるキー項目の属性値であり、一の検索結果に含まれないキー項目の属性値を付加し、かつ1または2以上の各非キー項目の2以上の属性値を集約して、一のレコードを構成する補完処理を行う。なお、参照条件とは、参照する一の検索結果と、参照される他の検索結果とを特定する情報である。参照条件は、例えば、「<参照ビュー識別子>識別子1 <非参照ビュー識別子>識別子2」である。また、参照条件は、格納部41に格納されている。
 出力部44は、各種の情報を出力する。各種の情報とは、例えば、統合データである。また、ここでの出力とは、通常、端末装置3への送信であるが、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念であっても良い。
 結果出力部441は、検索部432が取得した統合データを出力する。
 次に、検索システムBを構成する検索装置4の動作例について、図18のフローチャートを用いて説明する。ここで、検索装置4の処理のうち、インデックスを生成する処理は、実施の形態1で説明したので、ここでの説明は省略する。ここでは、検索装置4が行う検索処理について説明する。
 (ステップS1801)条件受付部121は、検索条件を受け付けたか否かを判断する。検索条件を受け付けた場合はステップS1802に行き、検索条件を受け付けなかった場合はステップS1801に戻る。
 (ステップS1802)ソース決定手段4321は、ステップS1801で受け付けられた検索条件に含まれるユーザテーブル識別子を取得する。このユーザテーブル識別子は、検索対象のユーザテーブルの識別子である。
 (ステップS1803)ソース決定手段4321は、ステップS1801で受け付けられた検索条件に含まれる1以上のユーザ属性識別子を取得する。
 なお、かかるユーザ属性識別子は、検索条件の中の条件部、抽出部、その他部等のうちのいずれの箇所に存在していても良い。条件部とは、検索条件の中の条件を記載した箇所である。抽出部とは、検索条件の中の、統合データを構成する属性値を記載した箇所である。その他部は、条件部、抽出部以外の箇所である。
 検索条件が「SELECT 商品ID, 商品名, SUM(販売数量), SUM(販売金額), SUM(仕入金額), SUM(売上利益) FROM 商品別売上利益 WHERE 商品ID=1103 GROUP BY 商品ID, 商品名」である場合、条件部は「商品ID=1103」、抽出部は「商品ID, 商品名, SUM(販売数量), SUM(販売金額), SUM(仕入金額), SUM(売上利益)」、その他部は「GROUP BY」句の「商品ID, 商品名」である。
 (ステップS1804)ソース決定手段4321は、カウンタiに1を代入する。
 (ステップS1805)ソース決定手段4321は、ステップS1803で取得したユーザ属性識別子の中で、i番目のユーザ属性識別子が存在するか否かを判断する。i番目のユーザ属性識別子が存在する場合はステップS1806に行き、i番目のユーザ属性識別子が存在しない場合はステップS1808に行く。
 (ステップS1806)ソース決定手段4321は、i番目のユーザ属性識別子と対になるユーザ属性値元情報を、ソース層定義情報から取得する。
 (ステップS1807)ソース決定手段4321は、カウンタiを1、インクリメントする。ステップS1805に戻る。
 (ステップS1808)ソース決定手段4321は、ステップS1806で取得したすべてのユーザ属性値元情報からビュー識別子を取得する。なお、1以上のユーザ属性値元情報は、ビュー識別子ではなく、ユーザテーブル識別子を有しても良い。
 (ステップS1809)ソース決定手段4321は、ステップS1808で取得したビュー識別子に対して、ユニーク処理をし、統合データの取得に必要な1以上の各変換ビューのビュー識別子を取得する。
 (ステップS1810)ソース決定手段4321は、カウンタjに1を代入する。
 (ステップS1811)ソース決定手段4321は、ステップS1809で取得したビュー識別子の中で、j番目のビュー識別子が存在するか否かを判断する。j番目のビュー識別子が存在する場合はステップS1812に行き、j番目のビュー識別子が存在しない場合はステップS1819に行く。
 (ステップS1812)ソース決定手段4321は、カウンタkに1を代入する。
 (ステップS1813)ソース決定手段4321は、ステップS1806で取得したユーザ属性値元情報の中に、j番目のビュー識別子と対になるk番目のビュー属性識別子が存在するか否かを判断する。k番目のビュー属性識別子が存在する場合はステップS1814に行き、k番目のビュー属性識別子が存在しない場合はステップS1818に行く。なお、ここでのk番目のビュー属性識別子は、ユニークなビュー属性識別子である。つまり、同じビュー属性識別子は、本ステップでは取得されない。また、k番目のビュー属性識別子は、ユーザ属性識別子でも良い。
 (ステップS1814)ソース決定手段4321は、ステップS1806で取得したユーザ属性値元情報の中から、j番目のビュー識別子と対になるk番目のビュー属性識別子を取得する。次に、ソース決定手段4321は、当該k番目のビュー属性識別子と対になるk番目のビュー属性値元情報を、変換ルール定義情報の中のj番目のビュー識別子と対になる変換ビュー情報から取得する。
 なお、k番目のビュー属性識別子は、ユーザ属性識別子でも良い。ユーザ属性識別子である場合、ソース決定手段4321は、当該ユーザ属性識別子と対になるユーザ属性値元情報を取得し、当該ユーザ属性値元情報に含まれるビュー識別子とビュー属性識別子と対になるビュー属性値元情報を取得する。
 (ステップS1815)ソース決定手段4321は、カウンタkを1、インクリメントする。ステップS1813に戻る。
 (ステップS1816)ソース決定手段4321は、ステップS1814で取得した1以上のビュー属性値元情報を用いて、j番目のビュー識別子に対応する検索命令を生成する。かかる命令生成処理の例について、図19のフローチャートを用いて説明する。
 (ステップS1817)ソース検索手段4323は、ステップS1816で生成された検索命令を用いて、j番目のビュー識別子に対応するデータソースから、検索結果を取得する。
 (ステップS1818)ソース決定手段4321は、カウンタjを1、インクリメントする。ステップS1811に戻る。
 (ステップS1819)統合手段4324は、ステップS1817で取得された検索結果を統合し、統合データを取得する。なお、かかる統合処理の例について、図20のフローチャートを用いて説明する。
 (ステップS1820)結果出力部441は、ステップS1819で取得された統合データを出力する。ステップS1801に戻る。
 なお、図18のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
 次に、ステップS1816の命令生成処理の例について、図19のフローチャートを用いて説明する。
 (ステップS1901)命令生成手段4322は、S1811のj番目のビュー識別子に対応するデータソースのソース層定義情報のデータソース固有情報から、命令元情報を取得する。
 (ステップS1902)命令生成手段4322は、受け付けられた検索条件を解析し、当該検索条件の条件部、抽出部、およびその他部の情報を取得する。
 なお、検索条件を解析する処理は、例えば、SQL文の処理ソフトウェア等の公知技術により、実現可能である。
 (ステップS1903)命令生成手段4322は、カウンタiに1を代入する。
 (ステップS1904)命令生成手段4322は、ステップS1902で取得した条件部に対応するi番目のビュー属性値元情報が存在するか否かを判断する。条件部に対応するi番目のビュー属性値元情報が存在する場合はステップS1905に行き、存在しない場合はステップS1907に行く。
 (ステップS1905)命令生成手段4322は、ステップS1902で取得した条件部に対応するi番目のビュー属性値元情報が有するソース属性識別子を取得する。
 (ステップS1906)命令生成手段4322は、カウンタiを1、インクリメントする。ステップS1904に戻る。
 (ステップS1907)命令生成手段4322は、ステップS1905で取得した1以上のソース属性識別子と、受け付けられた検索条件の中の条件部とを用いて、ステップS1901で取得した命令元情報に従って、検索命令の条件部の情報を取得する。
 (ステップS1908)命令生成手段4322は、カウンタjに1を代入する。
 (ステップS1909)命令生成手段4322は、ステップS1902で取得した抽出部に対応するj番目のビュー属性値元情報が存在するか否かを判断する。抽出部に対応するj番目のビュー属性値元情報が存在する場合はステップS1910に行き、存在しない場合はステップS1912に行く。
 (ステップS1910)命令生成手段4322は、ステップS1902で取得した抽出部に対応するj番目のビュー属性値元情報が有するソース属性識別子を取得する。
 (ステップS1911)命令生成手段4322は、カウンタjを1、インクリメントする。ステップS1909に戻る。
 (ステップS1912)命令生成手段4322は、ステップS1910で取得した1以上のソース属性識別子と、受け付けられた検索条件の中の抽出部とを用いて、ステップS1901で取得した命令元情報に従って、検索命令の抽出部の情報を取得する。
 (ステップS1913)命令生成手段4322は、カウンタkに1を代入する。
 (ステップS1914)命令生成手段4322は、ステップS1902で取得したその他部に対応するk番目のビュー属性値元情報が存在するか否かを判断する。その他部に対応するk番目のビュー属性値元情報が存在する場合はステップS1915に行き、存在しない場合はステップS1917に行く。
 (ステップS1915)命令生成手段4322は、ステップS1902で取得したその他部に対応するk番目のビュー属性値元情報が有するソース属性識別子を取得する。
 (ステップS1916)命令生成手段4322は、カウンタkを1、インクリメントする。ステップS1914に戻る。
 (ステップS1917)命令生成手段4322は、ステップS1915で取得した1以上のソース属性識別子と、受け付けられた検索条件の中のその他部とを用いて、ステップS1901で取得した命令元情報に従って、検索命令のその他部の情報を取得する。なお、ここで、その他部の情報を取得しない場合がある。
 (ステップS1918)命令生成手段4322は、ステップS1907で取得した条件部の情報、ステップS1912で取得した抽出部の情報、ステップS1917で取得したその他部の情報を用いて、ステップS1901で取得した命令元情報に基づいて、検索命令を構成する。上位処理にリターンする。
 なお、ステップS1917でその他部の情報を取得しなかった場合は、命令生成手段4322は、ステップS1907で取得した条件部の情報、ステップS1912で取得した抽出部の情報を用いて検索命令を構成する。
 次に、ステップS1819の統合処理の例について、図20のフローチャートを用いて説明する。
 (ステップS2001)統合手段4324は、カウンタiに1を代入する。
 (ステップS2002)統合手段4324は、結合対象の各検索結果がi番目のレコードを含むか否かを判断する。i番目のレコードを含む場合はステップS2003に行き、i番目のレコードを含まない場合は上位処理にリターンする。
 (ステップS2003)統合手段4324は、変換ルール定義情報が結合方式識別子を含むか否かを判断する。結合方式識別子を含まない場合はステップS2004に行き、結合方式識別子を含む場合はステップS2015に行く。
 (ステップS2004)統合手段4324は、カウンタjに1を代入する。
 (ステップS2005)統合手段4324は、統合データに使用するj番目のユーザ属性識別子が存在するか否かを判断する。j番目のユーザ属性識別子が存在する場合はステップS2004に行き、存在しない場合はステップS2013に行く。
 (ステップS2006)統合手段4324は、j番目のユーザ属性識別子と対になるユーザ属性値元情報を、ユーザ層定義情報から取得する。
 (ステップS2007)統合手段4324は、ステップS2006で取得したユーザ属性値元情報の中に、演算式等が存在するか否かを判断する。演算式等が存在する場合はステップS2008に行き、存在しない場合はステップS2011に行く。
 (ステップS2008)統合手段4324は、ステップS2006で取得したユーザ属性値元情報の中の1以上のビュー属性識別子を取得する。次に、統合手段4324は、S1817で取得された検索結果のi番目のレコードから、1以上の各属性識別子に対応する属性値を取得する。なお、1以上の各属性識別子には、1以上のビュー属性識別子が含まれる。1以上の各属性識別子に、1以上のユーザ属性識別子が含まれていても良い。
 (ステップS2009)統合手段4324は、ステップS2006で取得したユーザ属性値元情報の中の演算式等を取得する。
 (ステップS2010)統合手段4324は、ステップS2009で取得した演算式等に、ステップS2008で取得した1以上の各属性値を代入し、演算式等を実行し、ユーザ属性値を取得する。ステップS2010に行く。
 (ステップS2011)統合手段4324は、検索結果のi番目のレコードからユーザ属性値を取得する。
 (ステップS2012)統合手段4324は、カウンタjを1、インクリメントする。ステップS2005に戻る。
 (ステップS2013)統合手段4324は、ステップS2006で取得したユーザ属性値元情報のビュー属性識別子を取得する。次に、統合手段4324は、S1817で取得された検索結果のi番目のレコードから、当該ビュー属性識別子に対応するビュー属性値を取得し、統合データのレコードを構成する。
 (ステップS2014)統合手段4324は、カウンタiを1、インクリメントする。ステップS2002に戻る。
 (ステップS2015)統合手段4324は、結合方式識別子処理を行い、検索結果を統合する。結合方式識別子処理の例について、図21、図22のフローチャートを用いて説明する。
 (ステップS2016)統合手段4324は、カウンタiを1、インクリメントする。ステップS2002に戻る。
 次に、ステップS2012の結合方式識別子処理の例について、図21、図22のフローチャートを用いて説明する。なお、ここでの結合方式識別子処理は、着目するi番目のレコード(S2002のi番目のレコード)に対応する処理である。
 (ステップS2101)統合手段4324は、変換ルール定義情報に含まれる結合方式識別子が「UNION」であるか否かを判断する。「UNION」である場合はステップS2102に行き、「UNION」でない場合はステップS2113に行く。
 (ステップS2102)統合手段4324は、検索結果から、1以上のキー項目の属性値の集合を取得する。
 (ステップS2103)統合手段4324は、カウンタiに1を代入する。
 (ステップS2104)統合手段4324は、i番目の非キー項目が存在するか否かを判断する。i番目の非キー項目が存在する場合はステップS2105に行き、存在しない場合はステップS2108に行く。
 (ステップS2105)統合手段4324は、i番目の非キー項目に対する全属性値を取得する。
 (ステップS2106)統合手段4324は、ステップS2105で取得した全属性値を集約して、統合データに含まれるi番目の非キー項目に対する属性値を取得する。
 (ステップS2107)統合手段4324は、カウンタiを1、インクリメントする。ステップS2104に戻る。
 (ステップS2108)統合手段4324は、ステップS2102で取得した属性値と、ステップS2106で取得した属性値とを有するレコードであり、統合データを構成するレコードを構成する。上位処理にリターンする。
 (ステップS2109)統合手段4324は、変換ルール定義情報に含まれる結合方式識別子が「CHOICE」であるか否かを判断する。「CHOICE」である場合はステップS2110に行き、「CHOICE」でない場合はステップS2118に行く。
 (ステップS2110)統合手段4324は、格納部41から優先順位を取得する。
 (ステップS2111)統合手段4324は、ステップS2110で取得した優先順位を用いて、優先される変換ビューを決定し、当該変換ビューの1以上のキー項目の属性値を取得する。
 (ステップS2112)統合手段4324は、カウンタiに1を代入する。
 (ステップS2113)統合手段4324は、i番目の非キー項目が存在するか否かを判断する。i番目の非キー項目が存在する場合はステップS2114に行き、存在しない場合はステップS2117に行く。
 (ステップS2114)統合手段4324は、i番目の非キー項目に対する全属性値を取得する。
 (ステップS2115)統合手段4324は、ステップS2114で取得した全属性値を集約して、統合データに含まれるi番目の非キー項目に対する属性値を取得する。
 (ステップS2116)統合手段4324は、カウンタiを1、インクリメントする。ステップS2113に戻る。
 (ステップS2117)統合手段4324は、ステップS2111で取得した属性値と、ステップS2115で取得した属性値とを有するレコードであり、統合データを構成するレコードを構成する。上位処理にリターンする。
 (ステップS2118)統合手段4324は、変換ルール定義情報に含まれる結合方式識別子が「LOOKUP」であるか否かを判断する。「LOOKUP」である場合はステップS2119に行き、「LOOKUP」でない場合は上位処理にリターンする。
 (ステップS2119)統合手段4324は、格納部41から参照条件を取得する。
 (ステップS2120)統合手段4324は、参照条件を参照する側の変換ビューを決定する。そして、統合手段4324は、当該変換ビューの1以上のキー項目の属性値を取得する。
 (ステップS2121)統合手段4324は、参照条件を参照される側の変換ビューを決定する。そして、統合手段4324は、参照条件を参照する側の変換ビューの1以上のキー項目の属性値であり、参照する側の変換ビューの属性値の集合に含まれない属性値を取得する。
 (ステップS2122)統合手段4324は、カウンタiに1を代入する。
 (ステップS2123)統合手段4324は、i番目の非キー項目が存在するか否かを判断する。i番目の非キー項目が存在する場合はステップS2124に行き、存在しない場合はステップS2127に行く。
 (ステップS2124)統合手段4324は、i番目の非キー項目に対する全属性値を取得する。
 (ステップS2125)統合手段4324は、ステップS2124で取得した全属性値を集約して、統合データに含まれるi番目の非キー項目に対する属性値を取得する。
 (ステップS2126)統合手段4324は、カウンタiを1、インクリメントする。ステップS2123に戻る。
 (ステップS2127)統合手段4324は、ステップS2120とステップS2121とステップS2125で取得した属性値とを有するレコードであり、統合データを構成するレコードを構成する。上位処理にリターンする。
 以下、本実施の形態における検索システムBの具体的な動作例について説明する。ここでの動作例は、検索装置4が、2つの各データソース管理装置2に格納されているデータソースから検索結果を取得し、当該検索結果を統合して、統合データを取得する処理の例である。ここでは、2つのデータソース管理装置2は、検索装置4とは異なる装置であり、かつ2つのデータソース管理装置2は、各々、異なる装置である、とする。
 そして、第一のデータソース管理装置2のデータソース格納部111には、図23の2301に示す販売データベースが格納されている、とする。販売データベースは、販売テーブル(23011)と商品テーブル(23012)とを有する。販売テーブル(23011)は、「商品ID」「顧客ID」「販売単価」「販売数量」を有する1以上のレコードを管理する。商品テーブル(23012)は、「商品ID」「商品名」「商品分類」を有する1以上のレコードを管理する。
 また、第二のデータソース管理装置2のデータソース格納部111には、図23の2302に示す仕入データベースが格納されている、とする。仕入データベースは、ここでは、仕入テーブル(23021)を有する。仕入テーブル(23021)は、「商品ID」「仕入先」「仕入単価」を有する1以上のレコードを管理する。
 また、検索装置4の辞書格納部411には、図24から図30に示す3層の定義情報を有するデータ辞書が格納されている。かかるデータ辞書は、例えば、検索装置4を運用する管理者が入力した情報である。
 図24は、ソース層定義情報に含まれる販売テーブル(23011)のスキーマを定義する情報である。図24は、ソース識別子「販売データベース」、テーブル識別子「販売テーブル」と1以上のソース属性定義情報とを有する。ソース属性定義情報は、図24の表の「ID」により識別される。ソース属性定義情報は、ここでは、「ソース属性識別子」「データタイプ」「サイズ」を有する。なお、販売データベースは、例えば、リレーショナルデータベースである。
 図25は、ソース層定義情報に含まれる商品テーブル(23012)のスキーマを定義する情報である。図25は、ソース識別子「販売データベース」、テーブル識別子「商品テーブル」と1以上のソース属性定義情報とを有する。ソース属性定義情報は、図25の表の「ID」により識別される。ソース属性定義情報は、ここでは、「ソース属性識別子」「データタイプ」「サイズ」を有する。
 図26は、ソース層定義情報に含まれる仕入テーブル(23021)のスキーマを定義する情報である。図26は、ソース識別子「仕入データベース」、テーブル識別子「仕入テーブル」と1以上のソース属性定義情報とを有する。ソース属性定義情報は、図26の表の「ID」により識別される。ソース属性定義情報は、ここでは、「ソース属性識別子」を有する。なお、仕入データベースは、例えば、実施の形態1で説明したファイルである。
 図27は、ソース層定義情報に含まれるデータソース固有情報である。図27の2701は、販売データベースのデータソース固有情報である。2702は、仕入データベースのデータソース固有情報である。
 図28は、変換ビューの一つである販売ビューの変換ビュー情報である。変換ビュー情報は、変換ルール定義情報に含まれる。この変換ビュー情報は、ビュー識別子「販売ビュー」と1以上のビュー属性定義情報とを有する。ビュー属性定義情報は、図28の表の「ID」により識別される。
 図28の「ID=1」のビュー属性定義情報は、ビュー属性識別子「商品ID」を取得する場合に、ソース識別子「販売テーブル」のソース属性識別子「商品ID」の属性値を取得しても良いし、ソース識別子「商品テーブル」のソース属性識別子「商品ID」の属性値を取得しても良いことを示す。つまり、ソース識別子「販売テーブル」のソース属性識別子「商品ID」と対になる情報と、当該「商品ID」と同じ属性値である、ソース識別子「商品テーブル」のソース属性識別子「商品ID」と対になる情報とが、同じ商品に関する情報であることを示す。
 図28の「ID=6」のビュー属性定義情報は、ビュー属性値「販売金額」を取得する場合に、演算式等「P1×P2」が示すように、パラメータP1とパラメータP2とを乗算することを意味する。また、図28の「ID=6」において、パラメータP1が、ソース識別子「販売テーブル」のソース属性識別子「販売単価」の属性値であることを示す。また、パラメータP2が、ソース識別子「販売テーブル」のソース属性識別子「販売数量」の属性値であることを示す。
 図29は、変換ビューの一つである仕入ビューの変換ビュー情報である。変換ビュー情報は、変換ルール定義情報に含まれる。この変換ビュー情報は、ビュー識別子「仕入ビュー」と1以上のビュー属性定義情報とを有する。ビュー属性定義情報は、図29の表の「ID」により識別される。
 図30は、ユーザ層定義情報に含まれるユーザテーブルのスキーマを定義する情報である。ユーザ層定義情報は、ユーザテーブル識別子「商品売上利益表」と1以上のユーザ属性定義情報とを有する。ユーザ属性定義情報は、図30の表の「ID」により識別される。
 図30の「ID=1」のユーザ属性定義情報は、ユーザ属性識別子「商品ID」を取得する場合に、ビュー識別子「販売ビュー」のビュー属性識別子「商品ID」の属性値を取得しても良いし、ビュー識別子「仕入ビュー」のビュー属性識別子「商品ID」の属性値を取得しても良いことを示す。つまり、ビュー識別子「販売ビュー」のビュー属性識別子「商品ID」と対になる情報と、当該「商品ID」と同じ属性値である、ビュー識別子「仕入ビュー」のビュー属性識別子「商品ID」と対になる情報とが、同じ商品に関する情報であることを示す。
 また、図30の「ID=7」のビュー属性定義情報の演算式等「P1×P2」は、パラメータP1とパラメータP2とを乗算し、ユーザ属性識別子「仕入金額」の属性値が取得されることを示す。また、パラメータP1が、ビュー識別子「販売ビュー」のビュー属性識別子「販売数量」の属性値であることを示す。また、パラメータP2が、ビュー識別子「仕入ビュー」のビュー属性識別子「仕入単価」の属性値であることを示す。
 また、図30の「ID=8」のビュー属性定義情報の演算式等「sub(P1,P2)」は、関数「sub」(2つのパラメータを減算した結果を返す関数)に、P1,P2の2つのパラメータの値を代入し、当該関数を実行することにより、ユーザ属性識別子「売上利益」の属性値が取得されることを示す。また、パラメータP1が、ビュー識別子「販売ビュー」のビュー属性識別子「販売金額」の属性値であることを示す。また、パラメータP2が、ユーザテーブル識別子「商品売上利益表」のビュー属性識別子「仕入金額」の属性値であることを示す。
 以上の状況において、図31を参照して、検索装置4の動作例について説明する。まず、ユーザが、端末装置3に検索条件
「SELECT 商品ID,商品名,SUM(販売数量),SUM(販売金額),SUM(仕入金額), SUM(売上利益)
  FROM 商品別売上利益
  WHERE 商品ID=1103
  GROUP BY 商品ID,商品名」
を入力した、とする。 次に、端末装置3は、当該検索条件を受け付け、検索装置4に送信する。
 次に、検索装置4の条件受付部121は、上記の検索条件(SQL文)を受信する。
次に、ソース決定手段4321は、検索条件に含まれるユーザテーブル識別子「商品別売上利益」を取得する。また、ソース決定手段4321は、検索条件に含まれるユーザ属性識別子「商品ID」「商品名」「販売数量」「販売金額」「仕入金額」「売上利益」を取得する。
 次に、ソース決定手段4321は、取得した各ユーザ属性識別子と対になるユーザ属性定義情報を、図30のユーザ層定義情報から取得する。
 次に、ソース決定手段4321は、取得した各ユーザ属性定義情報が有するビュー識別子を取得し、当該ビュー識別子に対して、ユニーク処理をし、2つのビュー識別子「販売ビュー」「仕入ビュー」を取得する。
 次に、ソース決定手段4321は、取得したユーザ属性定義情報の中から、ビュー識別子「販売ビュー」に対応するユーザ属性識別子「商品ID」「商品名」「販売数量」「販売金額」を取得する。次に、ソース決定手段4321は、取得した各ユーザ属性識別子とビュー識別子「販売ビュー」に対応するビュー属性識別子「商品ID」「商品名」「販売数量」「販売金額」を取得する。
 次に、ソース決定手段4321は、図28の変換ビュー情報を参照して、取得した各ビュー属性識別子と対になるビュー属性値元情報を取得する。
 次に、命令生成手段4322は、ビュー識別子「販売ビュー」に対応する命令元情報(2701のタグ<命令元情報>と対になる情報)を、図27のデータソース固有情報から取得する。
 次に、命令生成手段4322は、受け付けられた検索条件を解析し、当該検索条件の条件部「商品ID=1103」、抽出部「商品ID,商品名,SUM(販売数量),SUM(販売金額),SUM(仕入金額),SUM(売上利益)」、およびその他部の情報「GROUP BY 商品ID,商品名」を取得する。
 次に、命令生成手段4322は、条件部「商品ID=1103」のユーザ属性識別子「商品ID」から、取得しているユーザ属性値元情報を用いて、「販売ビュー.商品ID」を取得する。また、命令生成手段4322は、「販売ビュー.商品ID」から、取得しているビュー属性値元情報を用いて、「販売テーブル.商品ID」を取得する。そして、命令生成手段4322は、検索命令の条件部「商品ID=1103」から、データソースに対して発行する検索命令を構成するための条件部「販売テーブル.商品ID」を取得する。
 次に、命令生成手段4322は、同様に、抽出部「商品ID,商品名,SUM(販売数量),SUM(販売金額),SUM(仕入金額),SUM(売上利益)」の「商品ID」から、「販売テーブル.商品ID」を取得する。また、命令生成手段4322は、抽出部を構成する「商品名」から「商品テーブル.商品名」を取得する。また、命令生成手段4322は、抽出部を構成する「SUM(販売数量)」から「SUM(販売テーブル.販売数量)」を取得する。また、命令生成手段4322は、抽出部を構成する「SUM(販売金額)」から「SUM(販売テーブル.販売単価×販売テーブル.販売金額)」を取得する。
 次に、命令生成手段4322は、その他部の情報「GROUP BY 商品ID,商品名」から「GROUP BY 販売テーブル.商品ID, 商品テーブル.商品名」を取得する。
 次に、命令生成手段4322は、命令元情報の「FROM $テーブル識別子1$ INNER JOIN  $テーブル識別子2$」に含まれる変数「$テーブル識別子1$」に対応するテーブル識別子「販売テーブル」、変数「$テーブル識別子2$」に対応するテーブル識別子「商品テーブル」を取得する。
 次に、命令生成手段4322は、命令元情報の「ON  $テーブル識別子1$ . $テーブル属性識別子1$ = $テーブル識別子2$ . $テーブル属性識別子2$」に含まれる変数「$テーブル属性識別子1$」に対応するテーブル属性名「商品ID」、変数「$テーブル属性識別子2$」に対応するテーブル属性名「商品ID」を取得する。
 次に、命令生成手段4322は、命令元情報
「SELECT $抽出部$
 FROM $テーブル識別子1$ 
  INNER JOIN  $テーブル識別子2$ 
  ON  $テーブル識別子1$ . $テーブル属性識別子$ = $テーブル識別子2$ . $テーブル属性識別子$ 
 WHERE $条件部$  $その他部$」の各変数を、取得した文字列に置き替え、
検索命令
「SELECT 販売テーブル.商品ID,商品テーブル.商品名, 
    SUM(販売テーブル.販売数量), 
    SUM(販売テーブル.販売単価×販売テーブル.販売金額)
FROM 販売テーブル INNER JOIN 商品テーブル 
    ON 販売テーブル.商品ID=商品テーブル.商品ID;
WHERE 販売テーブル.商品ID=1103
GROUP BY  販売テーブル.商品ID,商品テーブル.商品名」
を構成する。
 次に、ソース検索手段4323は、図27の2701の接続情報「<JDBC接続URL>jdbc:oracle:thin:@localhost:1521:AAA <ドライバークラス>oracle.jdbc.driver.OracleDriver」を取得する。そして、ソース検索手段4323は、当該接続情報を用いて、SQLデータベースである「販売データベース」にアクセスし、生成された上記の検索命令を用いて、ビュー識別子に対応するデータソース「販売データベース」から、検索結果を取得する。そして、ソース検索手段4323は、検索結果「<商品ID>1103 <商品名>Ipoh Coffee  <販売数量>70 <販売金額>14000」を得る。
 次に、命令生成手段4322は、条件部「商品ID=1103」のユーザ属性識別子「商品ID」から、取得しているユーザ属性値元情報を用いて、「仕入ビュー.商品ID」を取得する。また、命令生成手段4322は、「仕入ビュー.商品ID」から、取得しているビュー属性値元情報を用いて、「仕入テーブル.商品ID」を取得する。そして、命令生成手段4322は、検索命令の条件部「商品ID=1103」から、データソース「仕入データベース」に対して発行する検索命令を構成するための条件部「仕入テーブル.商品ID」を取得する。
 また、命令生成手段4322は、抽出部を構成する「SUM(仕入金額)」から「SUM(販売テーブル.販売数量×仕入テーブル. 仕入単価)」を取得する。次に、命令生成手段4322は、抽出部「SUM(販売テーブル.販売数量×仕入テーブル. 仕入単価)」のうちのデータソース「仕入データベース」に対応する情報「仕入テーブル. 仕入単価」を取得する。
 次に、 命令生成手段4322は、命令元情報「ベースURL+ “/” +  エンドポイント」と接続情報のベースURL「https://xxx.yyyy-portal.co.jp」(図27の2702)に従って、検索命令「GET https://xxx.yyyy-portal.co.jp/仕入テーブル? 商品ID=1103」を構成する。
 次に、ソース検索手段4323は、図27の2701の接続情報の「<APIキー>XXXXXXXX」と、検索命令「GET https://xxx.yyyy-portal.co.jp/仕入テーブル? 商品ID=1103」とを用いて、仕入データベースの仕入テーブル(23021)を検索し、検索結果「<商品ID>1103 <仕入単価>130」を得る。
 次に、統合手段4324は、検索結果「<商品ID>1103 <商品名>Ipoh Coffee  <販売数量>70 <販売金額>14000」と検索結果「<商品ID>1103 <仕入単価>130」の各属性値を用いて、取得した抽出部「商品ID,商品名,SUM(販売数量),SUM(販売金額),SUM(仕入金額),SUM(売上利益)」に照らして、統合データ「<商品ID>1103 <商品名>Ipoh Coffee  <販売数量>70 <販売金額>14000 <仕入金額>9100 <売上利益>4900」を得る。
 なお、<仕入金額>9100は、図30の「ID=7」のユーザ属性値元情報を参照し、「販売ビュー.販売数量×仕入ビュー.仕入単価」の演算式の実行により、取得された属性値である。
 また、<売上利益>4900は、図30の「ID=8」のユーザ属性値元情報を参照し、「販売ビュー.販売金額×商品売上利益表.仕入金額」をプログラム「sub()」に代入し、実行することにより、取得された属性値である。
 そして、結果出力部441は、取得された統合データを端末装置3に送信する。
 次に、端末装置3は当該統合データを受信し、出力する。なお、かかる統合データは、「<商品ID>1103 <商品名>Ipoh Coffee  <販売数量>70 <販売金額>14000 <仕入金額>9100 <売上利益>4900」である。
 以上、本実施の形態によれば、ソース層定義情報、変換ルール定義情報、ユーザ層定義情報という3層の定義情報により、2以上のデータソースから情報を適切に検索し、当該検索結果を統合できる。
 また、本実施の形態によれば、配列インデックスを含むインデクスを使用することにより、情報検索を高速に行える。
 なお、本実施の形態における検索装置4を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、1以上の属性値を有する1以上のレコードを含む2以上の各データソースを定義する情報であり、データソースの識別子であるソース識別子と、データソースの属性識別子であるソース属性識別子を含む1以上のソース属性定義情報とを有する情報であるソース層定義情報と、検索条件に基づく検索の対象のテーブルであり、1以上の属性値を有する1以上のレコードを含むテーブルであるユーザテーブルを定義する情報であり、当該ユーザテーブルを識別するユーザテーブル識別子と、ユーザテーブルの属性識別子であるユーザ属性識別子を含む1以上のユーザ属性定義情報とを有する情報であるユーザ層定義情報と、前記検索条件に基づいて、前記2以上の各データソースに対して発行する検索命令を生成し、当該検索命令に対応する検索結果を取得し、当該2以上の検索結果を用いて、前記検索条件に対応する統合データを作成するための情報である変換ルール定義情報と、を有するデータ辞書と2以上のデータソースとにアクセス可能なコンピュータを、前記ユーザテーブルに対する検索条件を受け付ける条件受付部と、前記データ辞書を参照して、前記検索条件に対応する2以上のデータソースを決定し、前記変換ルール定義情報を用いて、前記2以上の各データソースごとに、検索命令を生成し、当該検索命令に基づいた検索結果を取得し、前記変換ルール定義情報と前記ユーザ層定義情報とを用いて、前記2以上の各データソースに対応する検索結果を統合し、前記検索条件に対応する統合データを取得する検索部と、前記検索部が取得した前記統合データを出力する結果出力部として機能させるためのプログラムである。
 (実施の形態3)
 本実施の形態において、複数のレコード・インデックスを用いて、データソースに対して情報検索を行う検索装置を具備する検索システムについて説明する。
 また、本実施の形態において、レコード・インデックスを含む2種類以上のインデックスを用いて、データソースに対して情報検索を行う検索装置を具備する検索システムについて説明する。なお、2種類以上のインデックスは、レコード・インデックスに加えて、例えば、配列インデックス、配列ラベル・インデックス、2次インデックス、ソース・インデックスのうちの1種類以上である。
 さらに、本実施の形態において、複数のレコード・インデックスを生成する検索装置を具備する検索システムについて説明する。
 図32は、本実施の形態における検索システムBの概念図である。検索システムBは、検索装置4、1または2以上のデータソース管理装置2、および1または2以上の端末装置3を備える。
 検索装置4は、データソースから情報を検索する装置である。検索装置4は、例えば、いわゆるサーバであり、例えば、クラウドサーバ、ASPサーバ等である。なお、検索装置4の種類は問わない。検索装置4は、外部の装置であるデータソース管理装置2に格納されているデータソースから情報を検索しても良いし、検索装置4内部のデータソースから情報を検索しても良い。なお、1または2以上の各データソース管理装置2は、通常、検索装置4とは異なる装置である。
 さらに、検索装置4と1以上のデータソース管理装置2とは、インターネットやLAN等のネットワークにより、通信可能である。また、検索装置4と端末装置3とは、インターネットやLAN等のネットワークにより、通信可能である。
 図33は、本実施の形態における検索システムBのブロック図である。図34は、検索装置5のブロック図である。
 検索装置5は、格納部51、受付部12、処理部53、および出力部54を備える。格納部51は、インデックス格納部511を備える。格納部51は、データソース格納部111を備えても良い。インデックス格納部511は、配列インデックス格納部1121、配列ラベル・インデックス格納部1122、レコード・インデックス格納部5113、2次インデックス格納部1124、およびソース・インデックス格納部1125を備える。受付部12は、条件受付部121を備える。処理部53は、インデックス生成部531、検索部532、およびインデックス更新部533を備える。インデックス生成部531は、配列インデックス生成部1311、配列ラベル・インデックス生成部1312、レコード・インデックス生成部5313、2次インデックス生成部1314、およびソース・インデックス生成部1315を備える。検索部532は、ソース決定手段5321、レコード・インデックス決定手段5322、検索手段5323を備える。出力部54は、および結果出力部541を備える。
 なお、検索装置5は、複数のレコード・インデックスを生成したり、複数のレコード・インデックスを用いて情報を検索したりできる以外、検索装置1と同様の機能を有することは好適である。
 データソース管理装置2は、データソース格納部111を備える。
 端末装置3は、端末格納部31、端末受付部32、端末処理部33、端末送信部34、端末受信部35、および端末出力部36を備える。
 検索装置5を構成する格納部51には、各種の情報が格納される。各種の情報は、例えば、上述した1以上の種類のインデックス、データソース、1以上の検索条件である。
 なお、1以上の検索条件は、データソースに対応付いている。1以上の検索条件は、ユーザが、情報の検索のために入力した検索条件である。
 インデックス格納部511には、上述した1以上の種類のインデックスが格納される。なお、インデックス格納部511には、2以上のレコード・インデックスが格納される。また、インデックス格納部511の各インデックスは、2次インデックス、BTREE、転置インデックス等のインデックス構造を有していても良い。
 配列インデックス格納部1121には、配列インデックスが格納される。配列インデックスは、2以上の各レコード・インデックスごとに存在していても良い。つまり、配列インデックス格納部1121には、2以上の配列インデックスが格納されていても良い。ただし、配列インデックス格納部1121には、一つの配列インデックスのみが格納されていることは好適である。かかる一つの配列インデックスは、2以上のいずれのレコード・インデックスにも対応する情報である。
 レコード・インデックス格納部5113には、2以上のレコード・インデックスが格納される。レコード・インデックス格納部1123には、通常、データソースごとに、1または2以上のレコード・インデックスが格納される。一のデータソースに対応するレコード・インデックスが2以上、存在する場合、かかる2以上の各レコード・インデックスは、各々、異なるキー項目の組み合わせに対応するレコード・インデックスである。
 2以上の各レコード・インデックスは、1以上のレコード・インデックスレコードを有する。レコード・インデックスレコードは、1以上のキー項目値とレコード位置情報の組の集合である。
 2以上のレコード・インデックスが一つの配列インデックスに対応する場合には、レコード・インデックスレコードは、1以上のキー項目値と配列インデックスのレコードの位置情報の組の集合とし、配列インデックスの各レコードがデータソースのレコードに対応するようにレコード位置情報と持つように構成しても良い。かかる場合も、レコード・インデックスレコードには、データソースのレコード位置情報が対応付いているので、レコード・インデックスレコードがレコード位置情報を有する、と考えても良い。
 また、レコード・インデックスレコードは、データソースのレコードに対応する。かかるレコード・インデックスレコードが有する1以上のキー項目値は、1以上のキー項目の組み合わせに対応する。1以上のキー項目の組み合わせとは、一つのキー項目、または2以上のキー項目の組み合わせである。
 レコード・インデックスの中のレコード・インデックスレコードは、1以上のキー項目をキーとして、昇順または降順にソートされていることは好適である。また、レコード・インデックスの中のレコード・インデックスレコードは、対応するデータソースが有する全レコードの数だけ存在することは好適である。さらに、レコード・インデックスが2以上のキー項目に対応する場合、当該2以上のキー項目は順序性を有する。
 レコード・インデックス格納部5113には、2以上の各レコード・インデックスに対応するレコード・インデックスのスキーマ情報が格納されていることは好適である。かかるレコード・インデックスのスキーマ情報は、通常、レコード・インデックスが有する1以上の各キー項目値に対応するキー項目識別子(属性識別子)を有する。
 レコード・インデックス格納部5113における各レコード・インデックスは、2次インデックス、BTREE、転置インデックス等のインデックス構造を有していても良い。
 処理部53は、各種の処理を行う。各種の処理は、例えば、インデックス生成部531、検索部532、インデックス更新部533が行う処理である。
 インデックス生成部531は、1または2以上の各データソースからインデックスを生成する。インデックス生成部531が生成するインデックスは、2以上のレコード・インデックスを含む。インデックス生成部531が生成するインデックスは、配列インデックス、配列ラベル・インデックス、2次インデックス、ソース・インデックスを含むことは好適である。
 レコード・インデックス生成部5313は、データソースごとに、1または2以上のレコード・インデックスを生成する。レコード・インデックス生成部5313が、一のデータソースに対して、1つのレコード・インデックスを生成する場合の処理は、レコード・インデックス生成部1313の処理と同じであるので、ここでの説明は省略する。
 ここでは、レコード・インデックス生成部5313が、1以上の各データソースに対して、2以上のレコード・インデックスを生成する場合について説明する。
 レコード・インデックス生成部5313は、データソースを参照し、2以上のレコード・インデックスを生成し、レコード・インデックス格納部5113に蓄積する。かかる2以上のレコード・インデックスは、各々、異なる1以上のキー項目の組み合わせに対応する2以上のレコード・インデックスである。
 さらに具体的には、レコード・インデックス生成部5313は、1以上のキー項目の組み合わせを特定する2以上の組の情報を取得する。次に、レコード・インデックス生成部5313は、2以上の各組に対して、データソースのレコードごとに、各組に対応する1以上の各キー項目に対応するキー項目値(属性値)と、レコード位置情報とを有するレコード・インデックスレコードを取得する。そして、レコード・インデックス生成部5313は、2以上の各組に対して、1以上のキー項目をキーとして、レコード・インデックスレコードをソートし、ソートされたレコード・インデックスレコードの集合であるレコード・インデックスを構成し、レコード・インデックス格納部5113に蓄積する。
 つまり、例えば、レコード・インデックス生成部5313は、選択条件を満たす1以上のキー項目の組み合わせを、2組以上、決定し、当該2組以上の各組の1以上のキー項目の組み合わせに対応する2以上の各レコードのキー項目値とレコード位置情報との組であるレコード・インデックスを生成し、レコード・インデックス格納部5113に蓄積する。なお、選択条件は、自動的にキー項目の組を決定するための条件である。選択条件の具体例については、後述する。
 なお、レコード・インデックス生成部5313が、上記の1以上のキー項目の組み合わせの情報を取得する方法として、(1)ユーザ指定による方法、(2)自動取得による方法がある。また、(2)自動取得による方法において、例えば、(2-1)検索条件を利用する方法、(2-2)分散を利用する方法等がある。以下、各々の方法について説明する。
(1)ユーザ指定による方法
 レコード・インデックス生成部5313は、ユーザにより指定された1以上のキー項目識別子の組み合わせを、2組以上、取得する。なお、2以上の組の情報は、ユーザが入力したインデックス生成指示に含まれている。2以上の各組の情報は、1つのキー項目識別子、または2以上のキー項目識別子の集合である。
(2)自動取得による方法
 レコード・インデックス生成部5313は、選択条件を満たす2以上の組の情報を取得する。
(2-1)検索条件を利用する方法
 レコード・インデックス生成部5313は、例えば、過去の1以上の検索条件において、出現頻度が選択条件を満たす属性識別子を、キー項目識別子として取得する。なお、出現頻度は、過去の1以上の検索条件における出現回数でも良いし、出現割合でも良い。選択条件は、例えば、出現頻度が閾値以上または閾値より大きいことである。
 レコード・インデックス生成部5313は、例えば、過去の1以上の検索条件において、共起頻度が選択条件を満たす2以上の属性識別子の組を、キー項目識別子の組として取得する。共起頻度は、過去の1以上の検索条件において共起する回数でも良いし、共起する割合でも良い。選択条件は、例えば、共起頻度が閾値以上または閾値より大きいことである。
(2-2)分散を利用する方法
 レコード・インデックス生成部5313は、例えば、インデックスの生成対象のデータソースの2以上の各レコードに含まれる属性値の分散が選択条件を満たす2以上の各属性の属性識別子を、キー項目識別子として取得する。選択条件は、分散が閾値以上または閾値より大きい属性値であることである。
 レコード・インデックス生成部5313は、例えば、インデックスの生成対象のデータソースの2以上の各レコードに含まれる属性値の分散が選択条件を満たす2以上の各属性の属性識別子のうち、N(Nは1以上の自然数)個以下の組み合わせを、1以上のキー項目識別子の組み合わせとして取得する。
 検索部532は、条件受付部121が受け付けた検索条件を用いて、2以上のレコード・インデックスから、一のレコード・インデックスを選択し、当該選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得し、当該レコード位置情報が特定する位置に対応するレコードの中の属性値をデータソースから取得する。なお、取得される属性値は、例えば、検索条件で指定された属性識別子に対応する属性値、またはレコード内のすべての属性値である。また、キー項目値も属性値である、と考えても良い。
 なお、検索部532が検索条件を用いて検索する方法は以下である。つまり、検索部532は、検索条件が有するキー項目値に対応するキー項目を含む1以上のキー項目の組み合わせに対応する一のレコード・インデックスを選択する。なお、一のレコード・インデックスを選択する処理の詳細は、レコード・インデックス決定手段5322の処理として、後述する。
 検索部532は、例えば、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、当該属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値を、データソースから取得する。
 検索部532は、例えば、2以上のレコード・インデックスから、条件受付部121が受け付けた検索条件が有するキー項目値に対応するキー項目を含む1以上のキー項目の組み合わせに対応する一のレコード・インデックスを選択し、当該選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得し、当該レコード位置情報が特定する位置に対応するレコードを決定する。次に、検索部532は、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得し、当該属性位置情報を用いて、検索条件が有する属性識別子に対応する属性値を、決定したレコードから取得する。
 検索部532は、例えば、2以上のレコード・インデックスから、レコード・インデックスの先頭のキー項目が、検索条件が有するキー項目値に対応するキー項目と一致する場合には、当該レコード・インデックスを選択し、当該選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得し、当該レコード位置情報が特定する位置に対応するレコードの中の属性値をデータソースから取得する。
 検索部532は、レコード・インデックスの先頭のキー項目が検索条件が有するキー項目値に対応するキー項目と一致する2以上のレコード・インデックスが存在する場合、当該2以上のレコード・インデックスの次のキー項目が検索条件が有するキー項目と一致するかどうかを判定して、レコード・インデックスの先頭から最も多くのキー項目が検索条件が有するキー項目に含まれる一のレコード・インデックスを選択し、当該選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得し、当該レコード位置情報が特定する位置に対応するレコードの中の属性値をデータソースから取得する。
 ソース決定手段5321は、検索条件が有するキー項目値と一致する、またはキー項目値を間に挟む最小キー項目値と最大キー項目値と対になるソース識別子を、ソース・インデックスから取得する。
 レコード・インデックス決定手段5322は、2以上のレコード・インデックスから、検索処理のために使用する一のレコード・インデックスを決定する。レコード・インデックス決定手段5322は、例えば、ソース決定手段5321が取得したソース識別子と対になる2以上のレコード・インデックスから、一のレコード・インデックスを決定する。
 レコード・インデックス決定手段5322は、例えば、2以上のレコード・インデックスから、条件受付部121が受け付けた検索条件が有するキー項目を含む1以上のキー項目の組み合わせに対応する一のレコード・インデックスを選択する。なお、検索条件が有するキー項目とは、検索条件が有するキー項目値に対応するキー項目と考えても良い。また、検索条件が有するキー項目とは、検索条件が有するキー項目識別子と考えても良い。
 レコード・インデックス決定手段5322は、例えば、一のレコード・インデックスの先頭のキー項目が、検索条件が有するキー項目と一致する場合には、当該レコード・インデックスを、2以上のレコード・インデックスから選択する。レコード・インデックス決定手段5322は、例えば、レコード・インデックスの先頭のキー項目が、検索条件が有するキー項目と一致する2以上のレコード・インデックスが存在する場合、当該2以上のレコード・インデックスの次のキー項目が、検索条件が有するキー項目と一致するかどうかを判定して、レコード・インデックスの先頭から最も多くのキー項目が、検索条件が有するキー項目に含まれる一のレコード・インデックスを、2以上のレコード・インデックスから選択する。
 検索手段5323は、レコード・インデックス決定手段5322が選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得する。次に、検索手段5323は、当該レコード位置情報が特定する位置に対応するレコードの中の1以上の属性値をデータソースから取得する。なお、かかる1以上の属性値は、検索条件に含まれる属性識別子に対応する属性値でも良いし、レコード位置情報が特定する位置のレコードのすべての属性値等でも良い。
 なお、検索手段5323がレコード・インデックスから検索条件が有するキー項目値と対になるレコード位置情報を取得する場合、検索手段5323は、例えば、当該レコード・インデックスを二分検索してレコード位置情報を取得しても良い。また、検索手段5323は、例えば、インデックス構造を有するレコード・インデックスから、当該インデックス構造を利用したレコード位置情報の検索を行っても良い。
 検索手段5323は、レコード・インデックス決定手段5322が選択したレコード・インデックスから、検索条件が有するキー項目値と対になるレコード位置情報を取得する。次に、検索手段5323は、例えば、検索条件が有する属性識別子に対応する属性位置情報を、配列インデックスから取得する。そして、検索手段5323は、例えば、当該レコード位置情報が特定する位置のレコードの中の属性値であり、当該属性位置情報が特定する位置の属性値を取得する。
 なお、検索手段5323は、レコード・インデックス決定手段5322が選択したレコード・インデックスから、配列インデックスのレコードの位置情報を取得し、当該配列インデックスのレコードの位置情報が示すレコードからデータソースのレコード位置情報を取得し、当該レコード位置情報が特定する位置のレコードの中の属性値であり、検索条件が有する属性識別子に対応する属性位置情報が特定する位置の属性値を取得する構成としても良い。
 なお、レコード・インデックス決定手段5322がレコード・インデックスを選択しなかった場合、検索手段5323は、通常、検索対象のデータソースをシーケンシャルサーチし、検索条件に対応する1以上の属性値を取得する。
 また、いずれのレコード・インデックスの先頭のキー項目が検索条件に含まれず、2番目以降のキー項目が検索条件に含まれている場合には、検索手段5323は、当該レコード・インデックス全体を走査することにより、検索条件に合致するレコード位置情報を取得することは好適である。かかる場合でも、データソースの全体をシーケンシャルサーチするよりは、通常、高速検索が可能である。
 インデックス更新部533は、予め決められた条件を満たす場合に、データソースから取得した最終更新時情報が示す最終更新時が、1以上の各種類のインデックスに対応する生成時情報が示す生成時より後か否かを判断し、後である場合に、インデックス生成部531を動作させて、1以上の各種類のインデックスを構成する。また、インデックス更新部533は、通常、構成した1以上の各種類のインデックスを、インデックス格納部511の古いインデックスに上書きする。なお、1以上の各種類のインデックスは、配列インデックス、配列ラベル・インデックス、レコード・インデックス、2次インデックス、ソース・インデックスのうちの1種類以上である。また、予め決められた条件は、例えば、ユーザからの指示を受け付けたこと、予め決められた時刻になったこと、データソースが更新されたことである。
 インデックス更新部533は、例えば、一のデータソースが予め決められた条件を満たす場合に、当該データソースの2以上のレコード・インデックスを更新する。
 出力部54は、各種の情報を出力する。各種の情報は、例えば、後述する検索結果である。なお、ここでの出力とは、通常、端末装置3への送信であるが、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念であっても良い。
 結果出力部541は、検索部532が取得した1以上の属性値を含む検索結果を出力する。
 格納部51、インデックス格納部511、およびレコード・インデックス格納部5113は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
 格納部51等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部51等で記憶されるようになってもよく、通信回線等を介して送信された情報が格納部51等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部11等で記憶されるようになってもよい。
 処理部53、インデックス生成部531、検索部532、インデックス更新部533、レコード・インデックス生成部5313、ソース決定手段5321、レコード・インデックス決定手段5322、および検索手段5323は、通常、プロセッサやメモリ等から実現され得る。処理部13等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。なお、プロセッサは、CPU、MPU、GPU等であり、その種類は問わない。
 出力部54、および結果出力部541は、通常、無線または有線の通信手段で実現されるが、放送手段で実現されても良い。
 次に、検索システムBの動作例について説明する。まず、検索装置5の動作例について、図35のフローチャートを用いて説明する。図35のフローチャートにおいて、図5のフローチャートと同一のステップについて、説明を省略する。
 (ステップS3501)インデックス生成部531は、i番目のデータソースに対応するインデックスを生成する。インデックス生成処理の例について、図19のフローチャートを用いて説明する。
 (ステップS3502)インデックス更新部533は、インデックス生成部531に動作の指示をする。その結果、インデックス生成部531は、インデックスを生成し、i番目のデータソースに対応付けて、インデックスを蓄積する。かかる処理により、i番目のデータソースに対応するインデックスが更新される。なお、インデックス生成処理の例は、図36のフローチャートである。
 (ステップS3503)検索部532は、検索条件を用いて検索を行う。かかる検索処理の例について、図41および図42のフローチャートを用いて説明する。
 なお、図35のフローチャートにおいて、ステップS414で受け付けられた検索条件を、検索対象のデータソースに対応付けて、格納部51に蓄積することは好適である。
 また、図35のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
 次に、ステップS3501、ステップS3502のインデックス生成処理の例について、図36のフローチャートを用いて説明する。なお、図36のフローチャートにおいて、図5のフローチャートと同一のステップについて、説明を省略する。
 (ステップS3601)レコード・インデックス生成部5313は、1または2以上のレコード・インデックスを生成する。かかるレコード・インデックス生成処理の例について、図37のフローチャートを用いて説明する。
 次に、ステップS3601のレコード・インデックス生成処理の例について、図37のフローチャートを用いて説明する。なお、図37のフローチャートにおいて、図4のフローチャートと同一のステップについて、説明を省略する。
 (ステップS3701)レコード・インデックス生成部5313は、生成するレコード・インデックスに対応する1以上のキー項目集合を決定する。かかるキー項目集合決定処理の例について、図38のフローチャートを用いて説明する。なお、キー項目集合は、1または2以上のキー項目である。キー項目集合を決定する処理は、通常、1または2以上のキー項目識別子を取得する処理である。
 (ステップS3702)レコード・インデックス生成部5313は、カウンタiに1を代入する。
 (ステップS3703)レコード・インデックス生成部5313は、ステップS3701で取得したキー項目集合の中で、i番目のキー項目集合が存在するか否かを判断する。i番目のキー項目集合が存在する場合はステップS3704に行き、存在しない場合は上位処理にリターンする。
 (ステップS3704)レコード・インデックス生成部5313は、カウンタjに1を代入する。
 (ステップS3705)レコード・インデックス生成部5313は、対象のデータソースの中に、j番目のレコードが存在するか否かを判断する。j番目のレコードが存在する場合はステップS3706に行き、存在しない場合はステップS3712に行く。
 (ステップS3706)レコード・インデックス生成部5313は、j番目のレコードのレコード位置情報を取得する。
 (ステップS3707)レコード・インデックス生成部5313は、j番目のレコードの1以上のキー項目値であり、i番目のキー項目集合が有する1以上の各キー項目の値(属性値)であるキー項目値を取得する。
 (ステップS3708)レコード・インデックス生成部5313は、j番目のレコード・インデックスレコードの位置情報を取得する。
 (ステップS3709)レコード・インデックス生成部5313は、レコード位置情報、1以上のキー項目値、レコード・インデックスレコードの位置情報を有するj番目のレコード・インデックスレコードを構成する。
 (ステップS3710)レコード・インデックス生成部5313は、ステップS3709で構成したj番目のレコード・インデックスレコードを、i番目のレコード・インデックスに追記する。
 (ステップS3711)レコード・インデックス生成部5313は、カウンタjを1、インクリメントする。ステップS3705に戻る。
 (ステップS3712)レコード・インデックス生成部5313は、i番目のレコード・インデックスのスキーマ情報を取得し、蓄積する。スキーマ情報は、i番目のキー項目集合が有する1以上のキー項目識別子(属性識別子)を有する。
 (ステップS3713)レコード・インデックス生成部5313は、i番目のレコード・インデックスを、レコード・インデックス格納部5113に蓄積する。なお、ここで、レコード・インデックス生成部5313は、i番目のレコード・インデックスのスキーマ情報も、i番目のレコード・インデックスに対応付けて蓄積することは好適である。
 (ステップS3714)レコード・インデックス生成部5313は、カウンタiを1、インクリメントする。ステップS3703に戻る。
 なお、図37のフローチャートにおいて、2次インデックスが存在しない場合には、ステップS3708は不要であり、かつステップS3709において、レコード・インデックス生成部5313は、レコード位置情報、1以上のキー項目値を有するj番目のレコード・インデックスレコードを構成する。
 次に、ステップS3701のキー項目集合決定処理の例について、図38のフローチャートを用いて説明する。
 (ステップS3801)レコード・インデックス生成部5313は、ユーザが指定した1以上のキー項目集合が存在するか否かを判断する。ユーザが指定した1以上のキー項目集合が存在する場合はステップS3802に行き、存在しない場合はステップS3803に行く。
 (ステップS3802)レコード・インデックス生成部5313は、ユーザが指定した1以上のキー項目集合を取得し、図示しないバッファに一時蓄積する。上位処理にリターンする。
 (ステップS3803)レコード・インデックス生成部5313は、格納部51に格納されている過去の検索条件であり、対象となるデータソースに対する過去の検索条件の数が、条件を満たすほど多いか否かを判断する。条件を満たす場合はステップS3804に行き、条件を満たさない場合はステップS3805に行く。なお、かかる条件は、例えば、検索条件の数が閾値以上、または閾値より多いことである。
 (ステップS3804)レコード・インデックス生成部5313は、格納部51の検索条件を利用して、1または2以上のキー項目集合を決定する。なお、かかる検索条件利用処理の例について、図39のフローチャートを用いて説明する。
 (ステップS3805)レコード・インデックス生成部5313は、データソースの属性ごとの属性値の分散を利用して、1または2以上のキー項目集合を決定する。上位処理にリターンする。なお、かかる分散利用処理の例について、図40のフローチャートを用いて説明する。
 なお、図38のフローチャートにおいて、ユーザ指定の1以上のキー項目集合を取得する処理、過去の検索条件を利用して1以上のキー項目集合を取得する処理、および属性値の分散を利用して1以上のキー項目集合を取得する処理について説明した。図38において、上記の3つの処理のうち、2以上の処理を行い、1以上のキー項目集合を取得しても良い。なお、かかる場合、同じキー項目集合は、重複しては取得されない。
 次に、ステップS3804の検索条件利用処理の例について、図39のフローチャートを用いて説明する。
 (ステップS3901)レコード・インデックス生成部5313は、カウンタiに1を代入する。
 (ステップS3902)レコード・インデックス生成部5313は、i番目の属性識別子が存在するか否かを判断する。対象のデータソースの1以上の属性識別子の中に、i番目の属性識別子が存在する場合はステップS3903に行き、存在しない場合はステップS3907に行く。なお、データソースの1以上の属性識別子は、キー項目識別子であっても良い。
 (ステップS3903)レコード・インデックス生成部5313は、対象のデータソースのi番目の属性識別子の、格納部51の中の検索条件における出現頻度を取得する。なお、出現頻度は、出現回数でも良いし、出現割合でも良い。
 (ステップS3904)レコード・インデックス生成部5313は、ステップS3903で取得した出現頻度が、選択条件1を満たすか否かを判断する。選択条件1を満たす場合はステップS3905に行き、選択条件1を満たさない場合はステップS3906に行く。なお、選択条件1は、例えば、出現頻度が閾値以上、または閾値より大きいことである。
 選択条件1は、例えば、出現頻度が、2以上の属性識別子の中で、上位N(Nは、1以上の自然数)以内であること等でも良い。かかる条件の場合、レコード・インデックス生成部5313は、すべての属性識別子の出現頻度を取得した後に、図示しないバッファに蓄積する属性識別子を決定する。
 (ステップS3905)レコード・インデックス生成部5313は、i番目の属性識別子を図示しないバッファに蓄積する。なお、かかるi番目の属性識別子は、レコード・インデックスを構成する対象のキー項目集合である。ここでのキー項目集合は、一つの属性識別子である。
 (ステップS3906)レコード・インデックス生成部5313は、カウンタiを1、インクリメントする。ステップS3902に戻る。
 (ステップS3907)レコード・インデックス生成部5313は、カウンタjに1を代入する。
 (ステップS3908)レコード・インデックス生成部5313は、j番目の2以上の属性識別子の組み合わせが存在するか否かを判断する。j番目の2以上の属性識別子の組み合わせが存在する場合はステップS3909に行き、存在しない場合は上位処理にリターンする。
 (ステップS3909)レコード・インデックス生成部5313は、j番目の2以上の属性識別子の組み合わせの検索条件における共起頻度を取得する。なお、共起頻度は、2以上のすべての属性識別子が含まれる検索条件の数または割合である。
 (ステップS3910)レコード・インデックス生成部5313は、ステップS3909で取得した共起頻度が、選択条件2を満たすか否かを判断する。選択条件2を満たす場合はステップS3911に行き、選択条件2を満たさない場合はステップS3912に行く。なお、選択条件2は、例えば、共起頻度が閾値以上、または閾値より大きいことである。
 選択条件2は、例えば、共起頻度が、属性識別子の組み合わせの2以上の組の中で、上位N(Nは、1以上の自然数)以内であること等でも良い。かかる条件の場合、レコード・インデックス生成部5313は、すべての属性識別子の組み合わせの共起頻度を取得した後に、図示しないバッファに蓄積する属性識別子の組み合わせを決定する。
 (ステップS3911)レコード・インデックス生成部5313は、j番目の2以上の属性識別子の組み合わせを図示しないバッファに蓄積する。なお、かかるj番目の2以上の属性識別子の組み合わせは、レコード・インデックスを構成する対象のキー項目集合である。ここでのキー項目集合は、2以上の属性識別子である。
 (ステップS3912)レコード・インデックス生成部5313は、カウンタjを1、インクリメントする。ステップS3908に戻る。
 次に、ステップS3805の分散利用処理の例について、図40のフローチャートを用いて説明する。
 (ステップS4001)レコード・インデックス生成部5313は、カウンタiに1を代入する。
 (ステップS4002)レコード・インデックス生成部5313は、i番目の属性識別子が存在するか否かを判断する。対象のデータソースの1以上の属性識別子の中に、i番目の属性識別子が存在する場合はステップS4003に行き、存在しない場合はステップS4008に行く。なお、データソースの1以上の属性識別子は、キー項目識別子であっても良い。
 (ステップS4003)レコード・インデックス生成部5313は、対象のデータソースの各レコードのi番目の属性識別子に対応する属性値を取得する。
 (ステップS4004)レコード・インデックス生成部5313は、ステップS4003で取得した2以上の属性値の分散を算出する。
 (ステップS4005)レコード・インデックス生成部5313は、ステップS4004で算出した分散が選択条件3を満たすか否かを判断する。選択条件3を満たす場合はステップS4006に行き、満たさない場合はステップS4007に行く。なお、選択条件3は、例えば、分散が閾値以上または閾値より大きいことである。また、選択条件3は、例えば、分散が上位N(Nは1以上の自然数)以内であること等でも良い。
 (ステップS4006)レコード・インデックス生成部5313は、i番目の属性識別子を図示しないバッファに蓄積する。なお、かかるi番目の属性識別子は、レコード・インデックスを構成する対象のキー項目集合である。ここでのキー項目集合は、一つの属性識別子である。
 (ステップS4007)レコード・インデックス生成部5313は、カウンタiを1、インクリメントする。ステップS4002に戻る。
 (ステップS4008)レコード・インデックス生成部5313は、カウンタjに1を代入する。
 (ステップS4009)レコード・インデックス生成部5313は、ステップS4006で蓄積した属性識別子の集合の中で、N(Nは2以上の自然数)個以内のj番目の属性識別子の組み合わせが存在するか否かを判断する。j番目の属性識別子の組み合わせが存在する場合はステップS4010に行き、存在しない場合は上位処理にリターンする。
 (ステップS4010)レコード・インデックス生成部5313は、j番目の属性識別子の組み合わせを図示しないバッファに蓄積する。なお、かかるj番目の2以上の属性識別子の組み合わせは、レコード・インデックスを構成する対象のキー項目集合である。ここでのキー項目集合は、2以上の属性識別子である。
 (ステップS4011)レコード・インデックス生成部5313は、カウンタjを1、インクリメントする。ステップS4009に戻る。
 次に、ステップS3503の検索処理の第一の例について、図41のフローチャートを用いて説明する。なお、図41のフローチャートにおいて、図11のフローチャートと同一のステップについて、説明を省略する。
 (ステップS4101)レコード・インデックス決定手段5322は、検索に使用するレコード・インデックスを決定する。かかるレコード・インデックスを決定処理の例について、図43のフローチャートを用いて説明する。
 なお、図43のフローチャートにおいて、ステップS1108において、検索部532は、ステップS4101で決定されたレコード・インデックスを用いて、レコード位置情報を取得する。
 次に、ステップS3503の検索処理の第二の例について、図42のフローチャートを用いて説明する。なお、図42のフローチャートにおいて、図11、図41のフローチャートと同一のステップについて、説明を省略する。
 (ステップS4201)検索手段5323は、ステップS4101で決定されたレコード・インデックスを検索し、検索条件が有するキー項目値に対応するレコード・インデックスレコードを決定し、当該レコード・インデックスレコードが有するレコード位置情報を取得する。
 (ステップS4202)検索手段5323は、検索対象のデータソースに対応する配列インデックスが存在するか否かを判断する。配列インデックスが存在する場合はステップS4203に行き、存在しない場合はステップS4210に行く。
 (ステップS4203)検索手段5323は、カウンタiに1を代入する。
 (ステップS4204)検索手段5323は、検索条件に含まれる(検索で取得する)i番目の属性識別子が存在するか否かを判断する。i番目の属性識別子が存在する場合はステップS4204に行き、存在しない場合はステップS4209に行く。
 (ステップS4205)検索手段5323は、i番目の属性識別子に対応する属性位置情報を配列インデックスから取得する。
 (ステップS4206)検索手段5323は、ステップS4201で取得したレコード位置情報で特定されるレコードの中の、ステップS4205で取得した属性位置情報で特定される属性値を、データソースから取得する。
 (ステップS4207)検索手段5323は、i番目の属性識別子に対応付けて、ステップS4206で取得した属性値を、図示しないバッファに一時蓄積する。
 (ステップS4208)検索手段5323は、カウンタiを1、インクリメントする。ステップS4204に戻る。
 (ステップS4209)検索手段5323は、図示しないバッファに一時蓄積された属性値等を用いて、検索結果を構成する。上位処理にリターンする。
 (ステップS4210)検索手段5323は、カウンタiに1を代入する。
 (ステップS4211)検索手段5323は、検索条件に含まれる(検索で取得する)i番目の属性識別子が存在するか否かを判断する。i番目の属性識別子が存在する場合はステップS4212に行き、存在しない場合はステップS4209に行く。
 (ステップS4212)検索手段5323は、i番目の属性識別子の、データソース内における属性の順番を取得する。なお、かかる順番は、i番目の属性識別子に対応する属性値が格納されている順番であり、レコード内の属性値の順番である。かかる順番の情報は、データソース内に存在しても良いし、格納部51に存在しても良い。
 (ステップS4213)検索手段5323は、ステップS4201で取得したレコード位置情報で特定されるレコードの中の、ステップS4212で取得した順番の位置に存在する属性値を取得する。
 (ステップS4214)検索手段5323は、i番目の属性識別子に対応付けて、ステップS4213で取得した属性値を、図示しないバッファに一時蓄積する。
 (ステップS4215)検索手段5323は、カウンタiを1、インクリメントする。ステップS4211に戻る。
 次に、ステップS4101のレコード・インデックスを決定処理の例について、図43のフローチャートを用いて説明する。
 (ステップS4301)レコード・インデックス決定手段5322は、検索条件が有するキー項目属性値に対応する1以上のキー項目識別子を取得する。なお、1以上のキー項目識別子は、検索条件が有しても良い。
 (ステップS4302)レコード・インデックス決定手段5322は、カウンタiに1を代入する。
 (ステップS4303)レコード・インデックス決定手段5322は、i番目のレコード・インデックスが存在するか否かを判断する。i番目のレコード・インデックスが存在する場合はステップS4304に行き、存在しない場合はステップS4313に行く。
 (ステップS4304)レコード・インデックス決定手段5322は、カウンタjに1を代入する。
 (ステップS4305)レコード・インデックス決定手段5322は、i番目のレコード・インデックスに対するスコアに0(初期値)を代入する。
 (ステップS4306)レコード・インデックス決定手段5322は、i番目のレコード・インデックスのスキーマ情報を参照し、当該スキーマ情報が有するj番目のキー項目識別子が、ステップS4301で取得したキー項目識別子の中に含まれるか否かを判断する。含まれる場合はステップS4307に行き、含まれない場合はステップS4311に行く。
 (ステップS4307)レコード・インデックス決定手段5322は、i番目のレコード・インデックスに対するスコアに1を加算する。
 (ステップS4308)レコード・インデックス決定手段5322は、ステップS4301で取得したすべてのキー項目識別子が、i番目のレコード・インデックスのスキーマ情報の中に含まれると判定できたか否かを判断する。かかる判定ができた場合はステップS4309に行き、できなかった場合はステップS4310に行く。
 (ステップS4309)レコード・インデックス決定手段5322は、i番目のレコード・インデックスを検索に使用するレコード・インデックスとして決定する。上位処理にリターンする。なお、かかる決定は、例えば、i番目のレコード・インデックスの読み込み、i番目のレコード・インデックスの識別子の取得等である。
 (ステップS4310)レコード・インデックス決定手段5322は、カウンタjを1、インクリメントする。ステップS4306に戻る。
 (ステップS4311)レコード・インデックス決定手段5322は、i番目のレコード・インデックスのスコアを、i番目のレコード・インデックスに対応付けて、図示しないバッファに一時蓄積する。
 (ステップS4312)レコード・インデックス決定手段5322は、カウンタiを1、インクリメントする。ステップS4303に戻る。
 (ステップS4313)レコード・インデックス決定手段5322は、図示しないバッファを参照し、最大のスコアに対応するレコード・インデックスを検索に使用するレコード・インデックスとして決定する。上位処理にリターンする。
 以下、本実施の形態における検索システムBの具体的な動作例について説明する。
 今、データソース管理装置2のデータソース格納部111に、図44に示す1つのデータソース(X)が格納されている、とする。図44のデータソースの構造は、図12のデータソースの構造と比較して、ラベル・レコードにおける「Region」の有無が異なるが、概ね同様である。
 ラベル・レコードは、ここでは、ファイルの1行目である。ラベル・レコードは、属性識別子の集合である。属性識別子の集合のうちの一部の属性識別子は、キー項目識別子になり得る。図44において、[No.]は、レコードIDであり、その値は、図44の[1][2][3]等である。また、[No.]の下の(Pos.)は、各レコードのレコード位置情報(ここでは、データソース内のレコードの先頭のオフセット)である。「PID」は、ユーザ識別子である。「Age」は、ユーザの年齢である。「Region」は、ユーザが住む地域(ここでは、都道府県)である。
 かかる状況において、2つの具体例について説明する。具体例1は、2以上のレコード・インデックスを生成する処理の例である。具体例2は、2以上のレコード・インデックスから一のレコード・インデックスを選択し、当該レコード・インデックスを用いて検索する処理の例である。
(具体例1)
 検索装置5の管理者は、インデックス生成指示を端末装置3に入力した、とする。なお、かかるインデックス生成指示は、データソース(X)を特定する情報と、1以上のキー項目の集合を特定する情報とを含む、とする。具体的には、インデックス生成指示は、「<データソース>X <キー項目集合>(Age,PID) <キー項目集合>(Region,Age) <キー項目集合>(PID)」を含むとする。
 次に、端末装置3は、当該インデックス生成指示を受け付け、当該インデックス生成指示を検索装置5に送信する。
 次に、検索装置5の受付部12は、当該インデックス生成指示を端末装置3から受信する。次に、インデックス生成部131は、以下のようにデータソース(X)のレコード・インデックスを生成する。
 つまり、レコード・インデックス生成部5313は、インデックス生成指示が有するキー項目集合「<キー項目集合>(Age,PID) <キー項目集合>(Region,Age) <キー項目集合>(PID)」を取得する。
 次に、レコード・インデックス生成部5313は、「<データソース>X」と「<キー項目集合>(Age,PID)」とを用いて、データソース(X)が格納されているデータソース管理装置2にアクセスし、データソース(X)を読み込む。次に、レコード・インデックス生成部5313は、データソース(X)の各レコードの属性値「Age」と属性値「PID」とレコード位置情報とを含むレコード・インデックスレコードを、データソース(X)のレコードごとに取得する。次に、レコード・インデックス生成部5313は、レコード・インデックスレコードを、「Age」と「PID」との2つの属性値をキーとして、ソートして、蓄積するレコード・インデックスを構成する。そして、レコード・インデックス生成部5313は、当該レコード・インデックスを、レコード・インデックス格納部5113に蓄積する。
 なお、かかるレコード・インデックスにおいて、第一キー「Age」、第二キー「PID」の2つの属性値をキーとして、昇順または降順にソートされている。また、レコード・インデックス生成部5313は、当該レコード・インデックスのスキーマ情報(Age,PID)を、当該レコード・インデックスに対応付けて、レコード・インデックス格納部5113に蓄積する。なお、ここでは、スキーマ情報は、1以上の属性識別子を含む。また、スキーマ情報が2以上の属性識別子を有する場合、2以上の属性識別子には順序がある。また、ここで蓄積されたレコード・インデックスを、レコード・インデック(1)とする(図45参照)。
 次に、レコード・インデックス生成部5313は、「<データソース>X」と「<キー項目集合>(Region,Age)」とを用いて、データソース(X)が格納されているデータソース管理装置2にアクセスし、データソース(X)の各レコードの属性値「Region」と属性値「Age」とレコード位置情報とを含むレコード・インデックスレコードを、データソース(X)のレコードごとに取得する。次に、レコード・インデックス生成部5313は、レコード・インデックスレコードを、「Region」と「Age」との2つの属性値をキーとして、ソートして、蓄積するレコード・インデックスを構成する。そして、レコード・インデックス生成部5313は、当該レコード・インデックスを、レコード・インデックス格納部5113に蓄積する。
 なお、かかるレコード・インデックスにおいて、第一キー「Region」、第二キー「Age」の2つの属性値をキーとして、昇順または降順にソートされている。また、レコード・インデックス生成部5313は、当該レコード・インデックスのスキーマ情報(Region,Age)を、当該レコード・インデックスに対応付けて、レコード・インデックス格納部5113に蓄積する。また、ここで蓄積されたレコード・インデックスを、レコード・インデックス(2)とする(図45参照)。
 次に、レコード・インデックス生成部5313は、「<データソース>X」と「<キー項目集合>(PID)」とを用いて、データソース(X)が格納されているデータソース管理装置2にアクセスし、データソース(X)の各レコードの属性値「PID」とレコード位置情報とを含むレコード・インデックスレコードを、データソース(X)のレコードごとに取得する。次に、レコード・インデックス生成部5313は、レコード・インデックスレコードを、「PID」の属性をキーとして、ソートして、蓄積するレコード・インデックスを構成する。そして、レコード・インデックス生成部5313は、当該レコード・インデックスを、レコード・インデックス格納部5113に蓄積する。
 また、レコード・インデックス生成部5313は、当該レコード・インデックスのスキーマ情報(PID)を、当該レコード・インデックスに対応付けて、レコード・インデックス格納部5113に蓄積する。また、ここで蓄積されたレコード・インデックスを、レコード・インデックス(3)とする(図45参照)。
 以上の処理により、図45のレコード・インデックス(1)(2)(3)、およびレコード・インデックススキーマ情報2801が、レコード・インデックス格納部5113に蓄積された。
(具体例2)
 検索装置5のユーザは、検索条件「Select PID,Region,Age,TestA,TestB where Region=Tokyo AND Age=30 from データソース(X)」を端末装置3に入力した、とする。なお、検索条件のうちのwhere句を表した情報は、図45の2802である。
 そして、端末装置3は、当該検索条件を受け付け、当該検索条件を検索装置5に送信する。
 次に、検索装置5の条件受付部121は、当該検索条件を端末装置3から受信する。
 次に、レコード・インデックス決定手段5322は、検索条件が有する「Region=Tokyo AND Age=30」を用いて、レコード・インデックスのスキーマ情報(図45の2801)を検査し、属性識別子「Region」と「Age」の両方を含むレコード・インデックス(2)を、検索に使用するレコード・インデックスとして決定する。
 次に、検索手段5323は、where句「Region=Tokyo AND Age=30」に合致するレコード・インデックスレコード2803を、レコード・インデックス(2)から検索する。そして、検索手段5323は、レコード2803が有するレコード位置情報(Record Pos)「241」を、レコード・インデックス(2)から取得する。
 次に、検索手段5323は、データソース(X)を読み込み、レコード位置情報「241」に対応するレコードの位置までファイルポインタを移動させる(図45の2804参照)。次に、検索手段5323は、検索条件に含まれる検索対象となる属性識別子「PID,Region,Age,TestA,TestB」を、2804のレコードから取得する。次に、検索手段5323は、データソース(X)のスキーマ情報(図示しない)を参照し、属性識別子「PID」の順番「1」、属性識別子「Region」の順番「3」、属性識別子「Age」の順番「2」、属性識別子「TestA」の順番「Y(Yは4以上の自然数)」、属性識別子「TestB」の順番「Y+1」を取得する。そして、検索手段5323は、レコード位置情報「241」により特定されるレコードの属性値を順番に走査し、属性識別子ごとに、順番が示す属性値を取得し、当該属性値を属性識別子に対応付けて蓄積する。そして、検索手段5323は、検索結果「<PID>155 <Region>Tokyo <Age>を30 <TestA>0.2 <TestB>0.24」を得る。
 次に、結果出力部141は、取得された検索結果をユーザの端末装置3に送信する。
 次に、端末装置3は、かかる検索結果を受信し、出力する。かかる検索結果の出力例は、図45の2805である。
 以上、本実施の形態によれば、2以上のレコード・インデックスを用いて、データソースから情報を検索することにより、バリエーションのある各検索条件に対して、情報検索を高速に行える。
 また、本実施の形態によれば、適切な2以上のレコード・インデックスを生成できる。
 なお、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD-ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における検索装置5を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、2以上の各キー項目に対応するキー項目値と1以上の各属性識別子に対応する属性値とを有する2以上のレコードを含むデータソースのレコードに対応するインデックスであり、1以上のキー項目の組み合わせに対応する1以上のキー項目値と当該1以上のキー項目値を含むレコードの位置を特定するレコード位置情報の組の集合である2以上のレコード・インデックスであり、各々、異なるキー項目の組み合わせに対応する2以上のレコード・インデックスが格納されるレコード・インデックス格納部にアクセス可能なコンピュータを、キー項目値を有する検索条件を受け付ける条件受付部と、前記2以上のレコード・インデックスから、前記検索条件が有するキー項目値に対応するキー項目を含む1以上のキー項目の組み合わせに対応する一のレコード・インデックスを選択し、当該選択したレコード・インデックスから、前記検索条件が有する前記キー項目値と対になるレコード位置情報を取得し、当該レコード位置情報が特定する位置に対応するレコードの中の属性値を前記データソースから取得する検索部と、前記検索部が取得した前記属性値を含む検索結果を出力する結果出力部として機能させるためのプログラムである。
 また、図46は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態の検索装置1等を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図46は、このコンピュータシステム300の概観図であり、図47は、システム300のブロック図である。
 図46において、コンピュータシステム300は、CD-ROMドライブを含むコンピュータ301と、キーボード302と、マウス303と、モニタ304とを含む。
 図47において、コンピュータ301は、CD-ROMドライブ3012に加えて、MPU3013と、CD-ROMドライブ3012等に接続されたバス3014と、ブートアッププログラム等のプログラムを記憶するためのROM3015と、MPU3013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM3016と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3017とを含む。ここでは、図示しないが、コンピュータ301は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
 コンピュータシステム300に、上述した実施の形態の検索装置1等の機能を実行させるプログラムは、CD-ROM3101に記憶されて、CD-ROMドライブ3012に挿入され、さらにハードディスク3017に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ301に送信され、ハードディスク3017に記憶されても良い。プログラムは実行の際にRAM3016にロードされる。プログラムは、CD-ROM3101またはネットワークから直接、ロードされても良い。
 プログラムは、コンピュータ301に、上述した実施の形態の検索装置1等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム300がどのように動作するかは周知であり、詳細な説明は省略する。
 なお、上記プログラムにおいて、情報を送信するステップや、情報を受信するステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
 また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
 また、上記各実施の形態において、一の装置に存在する2以上の通信手段は、物理的に一の媒体で実現されても良いことは言うまでもない。
 また、上記各実施の形態において、各処理は、単一の装置によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
 本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
 以上のように、本発明にかかる検索装置は、情報検索を高速に行えるという効果を有し、検索装置等として有用である。

Claims (14)

  1. 2以上のレコードのうちの1以上の各レコードごと、および各レコードの1以上の各属性ごとに、属性値が存在する位置を特定する属性位置情報を有する配列インデックスが格納される配列インデックス格納部と、
    属性識別子を含む検索条件を受け付ける条件受付部と、
    前記検索条件が有する属性識別子に対応する属性位置情報を、前記配列インデックスから取得し、当該属性位置情報を用いて、前記検索条件が有する前記属性識別子に対応する属性値を、2以上の属性値を有する2以上のレコードを含むデータソースが格納されるデータソース格納部から取得する検索部と、
    前記検索部が取得した前記属性値を含む検索結果を出力する結果出力部とを具備する検索装置。
  2. 前記配列インデックス格納部には、
    前記2以上のレコードのうちの一部である1以上の各レコードごとに、当該1以上の各レコードが有する2以上の属性値のうちの1以上の各属性値の属性位置情報を有する配列インデックスが格納され、
    前記検索部は、
    前記検索条件が有する前記属性識別子で識別される属性値の前に配置されている属性値を識別する属性識別子に対応する第一の属性位置情報と、前記検索条件が有する前記属性識別子で識別される属性値の後に配置されている属性値を識別する属性識別子に対応する第二の属性位置情報とを取得し、当該第一の属性位置情報が特定する位置と、当該第二の属性位置情報が特定する位置の間に存在する属性値であり、前記検索条件が有する前記属性識別子に対応する属性値を、前記データソースから取得する、請求項1記載の検索装置。
  3. 2以上の各属性ごとに、属性値の属性位置情報が存在する順番を特定する属性順番情報を有する配列ラベル・インデックスが格納される配列ラベル・インデックス格納部をさらに具備し、
    前記検索部は、
    前記検索条件が有する前記属性識別子に対応する属性順番情報を前記配列ラベル・インデックスから取得し、当該属性順番情報を用いて、前記検索条件が有する前記属性識別子に対応する属性位置情報を、前記配列インデックスから取得し、当該属性位置情報を用いて、前記検索条件が有する前記属性識別子に対応する属性値を、前記データソースから取得する、請求項1または請求項2記載の検索装置。
  4. 前記データソースのレコードに対応するインデックスであり、キー項目値と当該キー項目値を含むレコードの位置を特定するレコード位置情報の組である2以上のレコード・インデックスが格納されるレコード・インデックス格納部をさらに具備し、
    前記データソースは、キー項目値と2以上の属性値とを有する2以上のレコードを含み、
    前記検索条件は、キー項目値を有し、
    前記検索部は、
    前記検索条件が有する前記キー項目値と対になるレコード位置情報を前記レコード・インデックスから取得し、当該レコード位置情報が特定する位置に対応するレコードを決定し、当該レコードの中の属性値であり、前記検索条件が有する前記属性識別子に対応する属性値を、前記データソースから取得する、請求項1から請求項3いずれか一項に記載の検索装置。
  5. 2以上のレコードのうちの一部である1以上の各レコードごとに、前記レコード・インデックス内における箇所であり、レコード位置情報が存在する箇所を特定するレコード・インデックスレコード位置情報と、当該レコードのキー項目値との組である2次インデックスが格納される2次インデックス格納部をさらに具備し、
    前記検索部は、
    前記検索条件が有する前記キー項目値に対応する第一のレコード・インデックスレコード位置情報と第二のレコード・インデックスレコード位置情報とを、前記2次インデックスから取得し、当該第一のレコード・インデックスレコード位置情報と当該第二のレコード・インデックスレコード位置情報との間のレコード・インデックスレコード位置情報を前記レコード・インデックスから決定し、当該レコード・インデックスレコード位置情報と対になるレコード位置情報を前記レコード・インデックスから取得し、当該レコード位置情報が特定する位置に対応するレコードを決定し、当該レコードの中の属性値であり、前記検索条件が有する前記属性識別子に対応する属性値を、前記データソースから取得する、請求項4記載の検索装置。
  6. 前記検索条件は、キー項目値を有し、
    前記データソース格納部には、
    データソースを識別するソース識別子に対応付いた、2以上のデータソースが格納され、
    前記2以上の各データソースごとに、ソース識別子と、当該ソース識別子で識別されるデータソースが有する最小キー項目値と、当該ソース識別子で識別されるデータソースが有する最大キー項目値とを有するソース・インデックスが格納されるソース・インデックス格納部をさらに具備し、
    前記検索部は、
    前記検索条件が有する前記キー項目値と一致する、または前記キー項目値を間に挟む最小キー項目値と最大キー項目値と対になるソース識別子を、前記ソース・インデックスから取得し、前記検索条件が有する属性識別子に対応する属性位置情報を、前記配列インデックスから取得し、当該属性位置情報を用いて、レコードの中の属性値であり、前記検索条件が有する属性識別子に対応する属性値を、前記ソース識別子により識別されるデータソースから取得する、請求項1から請求項5いずれか一項に記載の検索装置。
  7. 前記データソース格納部には、
    データソースを識別するソース識別子に対応付いた、2以上のデータソースが格納され、
    前記2以上の各データソースごとに、ソース識別子と、当該ソース識別子で識別されるデータソースが有する最小属性識別子と、当該ソース識別子で識別されるデータソースが有する最大属性識別子とを有するソース・インデックスが格納されるソース・インデックス格納部をさらに具備し、
    前記検索部は、
    前記検索条件が有する前記属性識別子と一致する、または前記属性識別子を間に挟む最小属性識別子と最大属性識別子と対になるソース識別子を、前記ソース・インデックスから取得し、前記検索条件が有する前記属性識別子に対応する属性位置情報を、前記配列インデックスから取得し、当該属性位置情報を用いて、レコードの中の属性値であり、前記検索条件が有する属性識別子に対応する属性値を、前記ソース識別子により識別されるデータソースから取得する、請求項1から請求項5いずれか一項に記載の検索装置。
  8. 前記データソースにおける前記2以上のレコードのうちの1以上の各レコードごと、および属性ごとに、1以上の各属性値が存在する位置を特定する属性位置情報を取得し、当該属性位置情報を有する前記配列インデックスを生成し、前記配列インデックス格納部に蓄積する配列インデックス生成部をさらに具備する、請求項1から請求項7いずれか一項に記載の検索装置。
  9. 前記データソース格納部には、
    データソースを識別するソース識別子に対応付いた、2以上のデータソースが格納され、
    2以上の各属性ごとに、属性位置情報が存在する箇所を特定する属性順番情報を取得し、当該属性順番情報を有する配列ラベル・インデックスを生成し、配列ラベル・インデックス格納部に蓄積する配列ラベル・インデックス生成部と、
    前記データソースを参照し、当該データソースの2以上の各レコードのキー項目値とレコード位置情報との組であるレコード・インデックスを生成し、レコード・インデックス格納部に蓄積するレコード・インデックス生成部と、
    2以上のレコードのうちの一部である1以上の各レコードごとに、レコード位置情報が存在する箇所を特定するレコード・インデックスレコード位置情報と、当該レコードのキー項目値との組とを取得し、2次インデックスを生成し、2次インデックス格納部に蓄積する2次インデックス生成部と、
    前記2以上の各データソースごとに、ソース識別子と、当該ソース識別子で識別されるデータソースが有する最小キー項目値と、当該ソース識別子で識別されるデータソースが有する最大キー項目値とを取得し、当該ソース識別子と最小キー項目値と最大キー項目値とを有する前記ソース・インデックスを生成し、前記ソース・インデックス格納部に蓄積するソース・インデックス生成部とをさらに具備する、請求項7記載の検索装置。
  10. 前記データソースには、最終更新時を特定する最終更新時情報が対応付いており、
    前記配列インデックスには、当該配列インデックスを生成した時を特定する生成時情報が対応付いており、
    予め決められた条件を満たす場合に、前記最終更新時情報が示す最終更新時が、前記生成時情報が示す生成時より後か否かを判断し、後である場合に、配列インデックス生成部を動作させて、前記配列インデックスを構成するインデックス更新部をさらに具備する、請求項1から請求項9いずれか一項に記載の検索装置。
  11. 1以上の属性値を有する1以上のレコードを含む2以上の各データソースを定義する情報であり、データソースの識別子であるソース識別子と、データソースの属性識別子であるソース属性識別子を含む1以上のソース属性定義情報とを有する情報であるソース層定義情報と、
    検索条件に基づく検索の対象のテーブルであり、1以上の属性値を有する1以上のレコードを含むテーブルであるユーザテーブルを定義する情報であり、当該ユーザテーブルを識別するユーザテーブル識別子と、ユーザテーブルの属性識別子であるユーザ属性識別子を含む1以上のユーザ属性定義情報とを有する情報であるユーザ層定義情報と、
    前記検索条件に基づいて、前記2以上の各データソースに対して発行する検索命令を生成し、当該検索命令に対応する検索結果を取得し、当該2以上の検索結果を用いて、前記検索条件に対応する統合データを作成するための情報である変換ルール定義情報と、を有するデータ辞書を参照して、情報を検索する、請求項1記載の検索装置であり、
    前記条件受付部は、
    前記ユーザテーブルに対する検索条件を受け付け、
    前記検索部は、
    前記データ辞書を参照して、前記検索条件に対応する2以上のデータソースを決定し、前記変換ルール定義情報を用いて、前記2以上の各データソースごとに、検索命令を生成し、当該検索命令に基づいた検索結果を取得し、前記変換ルール定義情報と前記ユーザ層定義情報とを用いて、前記2以上の各データソースに対応する検索結果を統合し、前記検索条件に対応する統合データを取得し、、
    前記結果出力部は、
    前記検索部が取得した前記統合データを出力する、請求項1記載の検索装置。
  12. 2以上の各キー項目に対応するキー項目値と1以上の各属性識別子に対応する属性値とを有する2以上のレコードを含むデータソースのレコードに対応するインデックスであり、1以上のキー項目の組み合わせに対応する1以上のキー項目値と当該1以上のキー項目値を含むレコードの位置を特定するレコード位置情報の組の集合である2以上のレコード・インデックスであり、各々、異なるキー項目の組み合わせに対応する2以上のレコード・インデックスが格納されるレコード・インデックス格納部をさらに具備し、
    前記条件受付部は、キー項目値を有する検索条件を受け付け、
    前記検索部は、
    前記2以上のレコード・インデックスから、前記検索条件が有するキー項目値に対応するキー項目を含む1以上のキー項目の組み合わせに対応する一のレコード・インデックスを選択し、当該選択したレコード・インデックスから、前記検索条件が有する前記キー項目値と対になるレコード位置情報を取得し、当該レコード位置情報が特定する位置に対応するレコードの中の属性値を前記データソースから取得し、
    前記結果出力部は、
    前記検索部が取得した前記属性値を含む検索結果を出力する、請求項1記載の検索装置。
  13. 2以上のレコードのうちの1以上の各レコードごと、および各レコードの1以上の各属性ごとに、属性値が存在する位置を特定する属性位置情報を有する配列インデックスが格納される配列インデックス格納部と、条件受付部と、2以上の属性値を有する2以上のレコードを含むデータソースが格納されるデータソース格納部から取得する検索部と、結果出力部とにより実現される検索方法であって、
    前記条件受付部が、属性識別子を含む検索条件を受け付ける条件受付ステップと、
    前記検索部が、前記検索条件が有する属性識別子に対応する属性位置情報を、前記配列インデックスから取得し、当該属性位置情報を用いて、前記検索条件が有する前記属性識別子に対応する属性値を、前記データソースから取得する検索ステップと、
    前記結果出力部が、前記検索ステップで取得された前記属性値を含む検索結果を出力する結果出力ステップとを具備する検索方法。
  14. 2以上のレコードのうちの1以上の各レコードごと、および各レコードの1以上の各属性ごとに、属性値が存在する位置を特定する属性位置情報を有する配列インデックスが格納される配列インデックス格納部とにアクセス可能なコンピュータを、
    属性識別子を含む検索条件を受け付ける条件受付部と、
    前記検索条件が有する属性識別子に対応する属性位置情報を、前記配列インデックスから取得し、当該属性位置情報を用いて、前記検索条件が有する前記属性識別子に対応する属性値を、2以上の属性値を有する2以上のレコードを含むデータソースが格納されるデータソース格納部から取得する検索部と、
    前記検索部が取得した前記属性値を含む検索結果を出力する結果出力部として機能させるためのプログラムを記録した記録媒体。
PCT/JP2021/031457 2021-06-30 2021-08-27 検索装置、検索方法、および記録媒体 WO2023276168A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202180005754.4A CN115803730A (zh) 2021-06-30 2021-08-27 检索装置、检索方法、以及记录介质
US17/777,219 US20230281197A1 (en) 2021-06-30 2021-08-27 Search apparatus, search method, and storage medium
EP21893108.7A EP4137962A4 (en) 2021-06-30 2021-08-27 SEARCH DEVICE, SEARCH METHOD AND RECORDING MEDIUM

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2021-108325 2021-06-30
JP2021108325A JP6970867B1 (ja) 2021-06-30 2021-06-30 検索装置、検索方法、およびプログラム
JP2021-108326 2021-06-30
JP2021108326A JP6974665B1 (ja) 2021-06-30 2021-06-30 検索装置、検索方法、およびプログラム
JP2021128808A JP6974666B1 (ja) 2021-08-05 2021-08-05 検索装置、検索方法、およびプログラム
JP2021-128808 2021-08-05

Publications (1)

Publication Number Publication Date
WO2023276168A1 true WO2023276168A1 (ja) 2023-01-05

Family

ID=84692230

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/031457 WO2023276168A1 (ja) 2021-06-30 2021-08-27 検索装置、検索方法、および記録媒体

Country Status (3)

Country Link
EP (1) EP4137962A4 (ja)
CN (1) CN115803730A (ja)
WO (1) WO2023276168A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000222434A (ja) * 1999-02-04 2000-08-11 Hitachi Ltd 結合検索方法
JP2006092409A (ja) * 2004-09-27 2006-04-06 Hitachi Information Systems Ltd 複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム
JP2015207026A (ja) * 2012-08-29 2015-11-19 株式会社ターボデータラボラトリー 情報処理装置、レコード位置情報特定方法および情報処理プログラム
WO2018066144A1 (ja) * 2016-10-07 2018-04-12 富士通株式会社 インデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4037859B2 (ja) 2004-09-29 2008-01-23 株式会社東芝 全文検索システム及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000222434A (ja) * 1999-02-04 2000-08-11 Hitachi Ltd 結合検索方法
JP2006092409A (ja) * 2004-09-27 2006-04-06 Hitachi Information Systems Ltd 複合データベース検索システムおよび複合データベース検索方法ならびにそのためのプログラム
JP2015207026A (ja) * 2012-08-29 2015-11-19 株式会社ターボデータラボラトリー 情報処理装置、レコード位置情報特定方法および情報処理プログラム
WO2018066144A1 (ja) * 2016-10-07 2018-04-12 富士通株式会社 インデックス付きデータ生成プログラム、インデックス付きデータ生成方法、インデックス付きデータ生成システム、検索プログラム、検索方法、および検索システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4137962A1

Also Published As

Publication number Publication date
EP4137962A4 (en) 2024-01-31
CN115803730A (zh) 2023-03-14
EP4137962A1 (en) 2023-02-22

Similar Documents

Publication Publication Date Title
US10803088B2 (en) Semantic indexing engine
US9940371B2 (en) Method, system, and apparatus for arranging content search results
JP5710851B2 (ja) 影響分析のためのシステムおよび方法
CN100573520C (zh) 为检索对多个文档进行预处理的方法和装置
CN101685444B (zh) 用于实现元数据搜索的系统和方法
US7720843B2 (en) Real-time end-user aware interactive search utilizing layered approach
WO2014010082A1 (ja) 検索装置、検索装置の制御方法及び記録媒体
WO2005036403A1 (en) Database management system, data structure generating method for database management system, and storage medium therefor
WO2010042238A1 (en) System and method for data warehousing and analytics on a distributed file system
WO2016076915A1 (en) Deriving semantic relationships based on empirical organization of content by users
WO2009134430A1 (en) System, method and computer program product for generating a set of instructions to an on-demand database service
JP5555809B2 (ja) テレビ検索アシスタントのためのシステム及び方法
JP6135509B2 (ja) 情報システム、その管理方法およびプログラム、データ処理方法およびプログラム、ならびに、データ構造
CN100511228C (zh) 依照自然语言查询进行文献检索的系统和方法
Keßler et al. Linking sensor data-why, to what, and how?
Um et al. Distributed RDF store for efficient searching billions of triples based on Hadoop
KR20110133909A (ko) 모든 자연어 표현의 각각의 의미마다 별도의 용어를 동적으로 생성하는 방법 및 이를 기반으로 하는 사전 관리기,문서작성기, 용어 주석기, 검색 시스템 및 문서정보체계 구축장치
WO2000065486A2 (en) A method of mapping semantic context to enable interoperability among disparate sources
JP6974665B1 (ja) 検索装置、検索方法、およびプログラム
WO2023276168A1 (ja) 検索装置、検索方法、および記録媒体
Simmhan et al. Using Provenance for Personalized Quality Ranking of Scientific Datasets.
US20090299962A1 (en) Dynamic update of a web index
Dai et al. Managing rich metadata in high-performance computing systems using a graph model
CN116783587A (zh) 基于列表的数据搜索用数据存储
JP6970867B1 (ja) 検索装置、検索方法、およびプログラム

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 202247034743

Country of ref document: IN

ENP Entry into the national phase

Ref document number: 2021893108

Country of ref document: EP

Effective date: 20220524

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

Ref document number: 21893108

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE