図2に、本実施の形態における情報処理装置1の機能ブロック図を示す。情報処理装置1は、入力部101と、入力データ格納部102と、第1候補抽出部103と、統合データ格納部104と、第1候補データ格納部105と、第2候補抽出部106と、第2候補データ格納部107と、出力部108とを含む。
入力部101は、複数の属性値を含むクエリの入力を受け付け、クエリを入力データ格納部102に格納する。第1候補抽出部103は、入力データ格納部102に格納されているデータ及び統合データ格納部104に格納されているデータを用いて処理を行い、処理結果を第1候補データ格納部105に格納する。第2候補抽出部106は、第1候補データ格納部105に格納されているデータを用いて処理を行い、処理結果を第2候補データ格納部107に格納する。出力部108は、第2候補データ格納部107に格納されているデータを、図示しない表示装置等に出力する。
図3に、統合データ格納部104に格納されるデータの一例を示す。図3の例では、複数の企業或いは官公庁が保有する複数のデータソースから得られたデータを統合したデータが格納されている。具体的には、IDが0000から0005までのレコードと、IDが1000から1004までのレコードと、IDが2000から2004までのレコードとは、データソースが異なる。そのため、統合データ格納部104に格納されるデータは、通常のデータと比較して属性の数が多く、また、属性値の欠損が多い。さらに、同じ属性値が複数のカラムに格納される場合がある。図3の例では、「千葉」という属性値が、「市」という属性のカラムと、「都道府県」という属性のカラムと、「港海岸」という属性のカラムと、「氏」という属性のカラムとに含まれる。なお、ハイフンはデータが欠損していることを表す。
次に、図4乃至図30を用いて、情報処理装置1の動作について説明する。入力部101は、特定の企業における従業員等であるユーザから、検索処理の開始指示を受け付けると、入力データ格納部102に格納されているデータ、第1候補データ格納部105に格納されているデータ及び第2候補データ格納部107に格納されているデータを削除する(図4:ステップS1)。すなわち、初期化を実行する。
入力部101は、ユーザから、特定の属性について複数の属性値を含むクエリの入力を受け付け(ステップS3)、入力データ格納部102に格納する。ステップS3において入力を受け付けるクエリは、例えば図5に示すようなデータである。図5の例では、「市」という属性について、「甲府」、「岐阜」、「三崎」、「焼津」及び「松本」という属性値が含まれる。このように、本実施の形態においては、クエリに含まれる複数の属性値の間には何らかの共通性(ここでは、街の名前であるという共通性)があるとする。
例えば、ユーザが、各取引企業について自社からの総購入高を知っている状態において、各取引企業について従業員一人あたりの自社からの購入高を計算するため、各取引企業の従業員数を知りたいとする。この場合、各取引企業のレコードを統合データ格納部104から抽出するため、ユーザは、クエリに「A社」、「B社」、「C社」及び「D社」という属性値を含ませる。このような場合には、複数の属性値の間には「企業の名前」に関する属性の値であるという共通性を有する。
なお、ユーザは、情報漏洩防止等の観点から、保有する属性値の全てをクエリに含ませるわけではない。ユーザは、例えば企業名或いは企業の所在地など、対応付けに寄与する可能性が高いと考えられる属性値をクエリに含ませる。
そして、本実施の形態においては、統合データ格納部104に格納されるデータとクエリに含まれるデータとの間に以下のような関係があるとする。(1)同一の対象を表すレコードであることを特定するためのIDは無い。よって、同一の対象を表すレコードをIDの対応付けによって抽出することはできない。(2)クエリに含まれる属性値に対応するレコードが、統合データ格納部104に含まれていない場合がある。
図4の説明に戻り、第1候補抽出部103は、入力データ格納部102に格納されている複数の属性値の各々について、その属性値と一致する属性値を有するレコードを統合データ格納部104から特定し(ステップS5)、メインメモリ等の記憶装置に格納する。
図6に、ステップS5の処理によって特定されるレコードの一例を示す。図6に示したレコードは、「甲府」、「岐阜」、「三崎」、「焼津」又は「松本」という属性値のうち少なくともいずれかを含む。図を見やすくするため、これらの属性値には角括弧を付している。
第1候補抽出部103は、複数の属性値のいずれも、特定されたレコードの数が1以下であるか判定する(ステップS7)。すなわち、1対1の対応付けができたか、又は、1対1の対応付けができた属性値と対応するレコードが特定されなかった属性値とが混在するか判定する。
複数の属性値のいずれも、特定されたレコードの数が1以下である場合(ステップS7:Yesルート)、第1候補抽出部103は、追加処理を実行する(ステップS9)。追加処理については、図7及び図8を用いて説明する。
まず、第1候補抽出部103は、クエリに含まれる属性値に一致する属性値の属性を特定する(図7:ステップS21)。例えば図6に示したレコードがステップS5の処理によって特定された場合、ステップS21において特定される属性は「市」、「都道府県」及び「港海岸」である。
第1候補抽出部103は、特定された属性毎にレコードを分類する(ステップS23)。図8に、ステップS23の処理によって生成されるレコードの集合を示す。図8の例では、IDが「0003」であるレコード及びIDが「0005」であるレコードを含む集合(以下、集合1とする)と、IDが「0005」であるレコードを含む集合(以下、集合2とする)と、IDが「1002」であるレコード及びIDが「1005」であるレコードを含む集合(以下、集合3とする)とが含まれる。図8の例では、IDが「0005」であるレコードが集合1及び集合2のいずれにも含まれる。これは、IDが「0005」であるレコードには、クエリに含まれる属性値が2つ含まれているからである。このように、本実施の形態においては、レコードの重複を許容するようにレコードの分類を行う。
第1候補抽出部103は、ステップS23の処理によって分類されたレコードを第1候補データ格納部105に格納する(ステップS25)。第1候補データ格納部105には、図8に示したようなデータが格納される。そして元の処理に戻る。
以上のような処理を実行すれば、クエリに含まれる属性値に対応するレコードを属性毎に整理することができるようになる。
図4の説明に戻り、ステップS9の処理が終了すると、ステップS15の処理に移行する。
一方、複数の属性値のいずれかが、特定されたレコードの数が2以上である場合(ステップS7:Noルート)、第1候補抽出部103は、追加処理を実行する(ステップS11)。追加処理については、図7及び図8を用いて説明したとおりである。第1候補抽出部103は、追加処理が終了すると、第2候補抽出部106に処理の実行を要求する。
第2候補抽出部106は、判定処理を実行する(ステップS13)。判定処理については、図9を用いて説明する。
まず、第2候補抽出部106は、ステップS21において特定された属性のうち未処理の属性(以下、処理対象の属性と呼ぶ)を1つ特定する(図9:ステップS31)。
第2候補抽出部106は、第1候補データ格納部105における、処理対象の属性の属性値がクエリに含まれる属性値と一致するレコードの集合において、その属性以外の属性において属性値が共通しているか判断する(ステップS33)。処理対象の属性が例えば「市」である場合、集合1において、「市」以外のいずれかの属性において属性値が共通しているか判断する。ここでは、「市種類」及び「地方」という属性において属性値が共通していると判断される。なお、ステップS33における「共通している」とは、集合に含まれる全てのレコードの属性値が同じであることを意味する。
共通していないと判断された場合(ステップS35:Noルート)、ステップS39の処理に移行する。一方、共通していると判断された場合(ステップS35:Yesルート)、第2候補抽出部106は、処理対象の属性の属性値がクエリに含まれる属性値と一致するレコードの集合を第2候補データ格納部107に格納する(ステップS37)。処理対象の属性が例えば「市」である場合、集合1を第2候補データ格納部107に格納する。
第2候補抽出部106は、未処理の属性が有るか判断する(ステップS39)。未処理の属性が有る場合(ステップS39:Yesルート)、次の属性について処理をするため、ステップS31の処理に戻る。一方、未処理の属性が無い場合(ステップS39:Noルート)、元の処理に戻る。
以上のような処理を実行すれば、属性毎に分類されたレコードの集合のうち、集合に含まれるレコードが共通性を有している集合のみに絞り込むことができる。このように、包含するレコードが共通性を有している集合のみに絞り込むのは、クエリにおいて指定された属性値は上で述べたように共通性を有しているため、属性値に対応するレコード同士も共通性を有していると考えられるからである。
図4の説明に戻り、ステップS13の処理が終了すると、ステップS15の処理に移行する。第2候補抽出部106は、除去処理を実行する(ステップS15)。除去処理については、図10及び図11を用いて説明する。
まず、第2候補抽出部106は、第2候補データ格納部107から、集合の組合せのうち未処理の組合せを1つ特定する(図10:ステップS41)。ステップS41においては、2つの集合からなる組合せを特定する。例えば図8に示したデータが第2候補データ格納部107に格納されている場合、集合1及び集合2という組合せと、集合2及び集合3という組合せと、集合1及び集合3という組合せとがある。
なお、判定処理を実行していない(すなわち、ステップS7のYesルートを進んだ)には、第2候補データ格納部107にはデータが格納されていない。そこで、第2候補抽出部106は、第1候補データ格納部105に格納されているデータを読み出し、第2候補データ格納部107に格納する。その後、第2候補抽出部10は、ステップS15の処理を実行する。
第2候補抽出部106は、特定された組合せに含まれる一方の集合が他方の集合を包含するか判断する(ステップS43)。ステップS43においては、IDの包含関係等に基づき集合の包含関係を特定する。なお、ステップS43における「包含」とは、一部を包含することではなく完全に包含することを意味する。
一方の集合が他方の集合を包含していない場合(ステップS43:Noルート)、ステップS47の処理に移行する。一方の集合が他方の集合を包含する場合(ステップS43:Yesルート)、包含される集合を第2候補データ格納部107から除去する(ステップS45)。
第2候補抽出部106は、第2候補データ格納部107に未処理の組合せが有るか判断する(ステップS47)。未処理の組合せが有る場合(ステップS47:Yesルート)、次の組合せについて処理するため、ステップS41の処理に戻る。一方、未処理の組合せが無い場合(ステップS47:Noルート)、元の処理に戻る。
以上のような処理を実行すれば、複数の集合に重複して含まれる、ユーザに提示しなくてもよい冗長なレコードを検索結果から除去できるようになる。
図11に、除去処理の後に第2候補データ格納部107に格納されるデータの一例を示す。図11の例では、図8における集合1と集合3とが格納される。集合2は集合1に包含されるため、ステップS45の処理によって除去される。
図4の説明に戻り、出力部108は、第2候補データ格納部107に格納されているレコード又はレコードのIDを図示しない表示装置等に出力する(ステップS17)。そして処理を終了する。
図12に、出力されるデータの一例を示す。図12の例では、出力されるデータには、クエリに含まれる属性値と、レコードのIDとが含まれる。レコードのIDは、属性毎にまとめて出力される。ID「0003」及びID「0005」は、「市」という属性についてまとめられたIDである。ID「1002」及び「1005」は、「港海岸」という属性についてまとめられたIDである。「甲府」という属性値にはIDが「0003」であるレコードが対応付けられており、「岐阜」という属性値にはIDが「0005」であるレコードが対応付けられており、「三崎」という属性値にはIDが「1002」であるレコードが対応付けられており、「焼津」という属性値にはIDが「1005」であるレコードが対応付けられており、「松本」という属性値に対応付けられているレコードは無い。なお、図12に示したように、クエリに含まれる属性値を出力する場合、出力部108は、入力データ格納部102に格納されているデータを利用する。
以上のような処理を実行すれば、クエリに含まれる複数の属性値に対応する可能性があるレコードを、属性毎に整理したうえで出力できるようになる。これにより、対応する属性の組を予め把握していない場合であっても、複数のデータソースから得られたデータを格納するデータベースから、対応するレコードを適切に抽出できるようになる。
図13乃至図27に、本実施の形態の処理に関係するデータの具体例を示す。
図13に、統合データ格納部104に格納されるデータの他の例を示す。図13の例では、複数のデータソースから得られたデータを統合したデータが格納されている。具体的には、IDが0000から0005までのレコードと、IDが0020であるレコード及びIDが0021であるレコードと、IDが1004であるレコード及びIDが1005であるレコードとは、データソースが異なる。
図14に、入力データ格納部102に格納されるデータの他の例を示す。図14の例では、「千葉」という属性値、「名古屋」という属性値、「長崎」という属性値及び「宮崎」という属性値が入力データ格納部102に格納される。
図13に示したデータにおいて、図14に示したクエリに含まれる4つの属性値のうちいずれかに一致する属性値に角括弧を付すと、図15に示すようになる。図15の例においては、IDが「0002」であるレコードに含まれる属性値と、IDが「0004」であるレコードに含まれる属性値と、IDが「0020」であるレコードに含まれる属性値と、IDが「0021」であるレコードに含まれる属性値とに角括弧が付されている。
図15に示したデータから、ステップS5の処理によって特定されるレコードのみを抽出すると、図16に示すようなデータになる。図16に示したデータには、IDが「0002」であるレコードと、IDが「0004」であるレコードと、IDが「0020」であるレコードと、IDが「0021」であるレコードとが含まれる。
図16に示したデータに対して追加処理を実行すると、図17に示すようなデータが第1候補データ格納部105に格納される。図17の例では、IDが「0002」であるレコード、IDが「0004」であるレコード、IDが「0020」であるレコード及びIDが「0021」であるレコードを含む集合(以下、集合4とする)と、IDが「0002」であるレコード、IDが「0020」であるレコード及びIDが「0021」であるレコードを含む集合(以下、集合5とする)と、IDが「0002」であるレコード、IDが「0004」であるレコード、IDが「0020」であるレコード及びIDが「0021」であるレコードを含む集合(以下、集合6とする)とが含まれる。
判定処理を実行すると、いずれの集合も第2候補データ格納部107に格納される。しかし、集合5は集合4及び集合6に包含されるため、除去処理において除去される。また、集合4と集合6とは同一であるため、除去処理においていずれかの集合が除去される。
その結果、最終的に図18に示すようなデータが第2候補データ格納部107に格納される。図18の例では、IDが「0002」であるレコードと、IDが「0004」であるレコードと、IDが「0020」であるレコードと、IDが「0021」であるレコードとが含まれる。
図19に、図18に示したデータが第2候補データ格納部107に格納されている場合に出力されるデータの一例を示す。図19の例では、ID「0002」、ID「0004」、ID「0020」及びID「0021」は、「市」又は「港海岸」という属性についてまとめられたIDである。「千葉」という属性値にはIDが「0002」であるレコードが対応付けられており、「名古屋」という属性値にはIDが「0004」であるレコードが対応付けられており、「長崎」という属性値にはIDが「0020」であるレコードが対応付けられており、「宮崎」という属性値にはIDが「0021」であるレコードが対応付けられている。
図20及び図21に、統合データ格納部104に格納されるデータの他の例を示す。図20及び図21の例では、複数のデータソースから得られたデータを統合したデータが格納されている。具体的には、IDが0000から0005までのレコード、IDが0020であるレコード及びIDが0021であるレコードと、IDが1000から1008までのレコードと、IDが2000から2006までのレコードとは、データソースが異なる。なお、図20に示したデータと図21に示したデータとは連結されるものであるが、紙面の都合上分割されている。
図22に、入力データ格納部102に格納されるデータの他の例を示す。図22の例では、「千葉」という属性値、「名古屋」という属性値、「長崎」という属性値、「宮崎」という属性値及び「松本」という属性値が入力データ格納部102に格納される。
図20及び図21に示したデータから、図22に示したクエリを用いてレコードを特定すると、図23に示すようになる。図23に示したデータには、IDが「0002」であるレコードと、IDが「0004」であるレコードと、IDが「0020」であるレコードと、IDが「0021」であるレコードと、IDが「1004」であるレコードと、IDが「1006」であるレコードと、IDが「1007」であるレコードと、IDが「1008」であるレコードと、IDが「2000」であるレコードと、IDが「2003」であるレコードと、IDが「2004」であるレコードと、IDが「2006」であるレコードとが含まれる。なお、図22に示したクエリに含まれる5つの属性値のうちいずれかに一致する属性値には、角括弧が付されている。
図23に示したデータに対して追加処理を実行すると、図24に示すようなデータが第1候補データ格納部105に格納される。図24の例では、IDが「0002」であるレコード、IDが「0004」であるレコード、IDが「0020」であるレコード及びIDが「0021」であるレコードを含む集合(以下、集合7とする)と、IDが「0002」であるレコード、IDが「0020」であるレコード、IDが「0021」であるレコード、IDが「1004」であるレコード、IDが「1007」であるレコード及びIDが「1008」であるレコードを含む集合(以下、集合8とする)と、IDが「1004」であるレコード、IDが「1006」であるレコード、IDが「1007」であるレコード及びIDが「1008」であるレコードを含む集合(以下、集合9とする)と、IDが「2000」であるレコード、IDが「2003」であるレコード、IDが「2004」であるレコード及びIDが「2006」であるレコードを含む集合(以下、集合10とする)とが含まれる。
図24に示したデータにおいて、クエリに含まれる属性値と一致する属性値を含む属性のカラム以外から、属性値が共通する属性のカラムを特定し、特定されたカラムにおける属性値に山括弧を付すと、図25に示すようになる。図25の例では、集合7における「市種類」という属性の属性値と、集合9における「種類」という属性及び「港種類」という属性の属性値とに山括弧が付されている。
判定処理を実行すると、集合7及び集合9が第2候補データ格納部107に格納される。そして、集合7と集合9との間に包含関係は無いため、除去処理において集合7及び集合9が除去されることはない。
その結果、最終的に図26に示すようなデータが第2候補データ格納部107に格納される。図26の例では、集合7と、集合9とが含まれる。
図27に、図26に示したデータが第2候補データ格納部107に格納されている場合に出力されるデータの一例を示す。図27の例では、ID「0002」、ID「0004」、ID「0020」及びID「0021」は、「市種類」という属性についてまとめられたIDであり、ID「1004」、ID「1006」、ID「1007」及びID「1008」は、「種類」及び「港種類」という属性についてまとめられたIDである。「千葉」という属性値にはIDが「0002」であるレコード及びIDが「1004」であるレコードが対応付けられており、「名古屋」という属性値にはIDが「0004」であるレコード及びIDが「1006」であるレコードが対応付けられており、「長崎」という属性値にはIDが「0020」であるレコード及びIDが「1007」であるレコードが対応付けられており、「宮崎」という属性値にはIDが「0021」であるレコード及びIDが「1008」であるレコードが対応付けられており、「松本」という属性値に対応付けられているレコードは無い。
図27に示したように、1つの属性値に対して複数のレコードが対応付けられた場合には、例えば、ユーザが出力されたデータを確認することにより、複数のレコードのうちいずれのレコードが最も確からしいかを確認すればよい。
なお、1つの属性値に対して複数のレコードが対応付けられた場合には、各集合について評価値を算出することにより、複数のレコードのうちいずれのレコードが最も確からしいかをユーザが確認すればよい。評価値として、例えば以下のような値を用いることができる。(1)集合に含まれるレコードの数。(2)ステップS33の処理において属性値が共通していると判断された属性の数。(3)クエリに含まれる属性値と一致する属性値のうち他の集合におけるレコードに含まれていない属性値の数。
例えば図26に示したデータについて(2)の方法で評価値を算出すると、集合7は「市種類」という属性のみであるから評価値は1であり、集合9は「種類」及び「港種類」という属性があるので評価値は2である。従って、例えば図28に示すようなデータを出力する。このようなデータを出力すれば、ユーザは、集合9の方が評価値が高いため好ましいと判断できるようになる。
また、図29に示したデータが第2候補データ格納部107に格納されている場合に(3)の方法で評価値を算出することを考える。図29の例では、集合291と、集合292と、集合293とが含まれる。クエリに含まれる属性値と一致する属性値には角括弧が付されている。クエリに含まれる属性値と一致する属性値は、集合291においては「千葉」、「甲府」、「京都」及び「宮崎」であり、集合292においては「川崎」、「千葉」及び「釧路」であり、集合293においては「宮崎」、「甲府」及び「京都」である。集合291の評価値は、「千葉」、「甲府」、「京都」及び「宮崎」が集合292と集合293との和集合に含まれるため、評価値は4−4=0である。集合292の評価値は、「千葉」が集合291に含まれるため、評価値は3−1=2である。集合293の評価値は、「宮崎」、「甲府」及び「京都」が集合291に含まれるため、評価値は3−3=0である。従って、例えば図30に示すような出力データを提示すれば、ユーザは、集合292の評価値が最も高いため集合292が最も好ましいと判断できるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
なお、上ではスタンドアローン型のシステムを示したが、クライアントサーバ型のシステムによって本実施の形態の処理を実行してもよい。
なお、上で述べた例においては、説明を簡単にするため属性値の一致のみを対象としたが、属性値の類似についても同様の処理によって実現することができる。属性値が類似するか否かを判定する技術は、よく知られているので、ここでは詳細な説明を省略する。
また、(1)から(3)の方法で求めた評価値を単独で用いるのではなく、複数の評価値を組み合わせて新たな評価値を算出してもよい。
なお、上で述べた情報処理装置1は、コンピュータ装置であって、図31に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係るデータ抽出方法は、(A)第1の属性について複数の属性値を含むクエリを取得し、(B)検索対象のレコードを格納するデータベースから、複数の属性値のうちいずれかの属性値に一致する属性値を含むレコードを特定し、(C)複数の属性値のうちいずれかの属性値に一致する属性値の属性が同じであるレコードが同じグループに属するように、特定されたレコードをグループ化し、(D)グループ化により得られたレコードの集合のうち少なくともいずれかの集合を特定し、特定された当該集合に含まれるレコード又は当該レコードの識別情報を含む検索結果を出力する処理を含む。
このようにすれば、クエリに含まれる複数の属性値に対応する可能性があるレコードを、属性毎に整理したうえで出力できるようになる。これにより、複数のデータソースから得られたデータを格納するデータベースから、対応するレコードを適切に抽出できるようになる。
また、上で述べた検索結果を出力する処理において、(d1)グループ化により得られたレコードの集合のうち、当該集合に含まれる複数のレコードが特定の属性において同じ属性値を有する集合を特定してもよい。ユーザは、何らかの共通性を想定してクエリに含まれる複数の属性値を指定すると考えられる。そこで、上で述べたようにすれば、共通性があるレコードを含む集合を特定できるので、指定に対応するレコードを抽出する可能性が高くなる。
また、上で述べた検索結果を出力する処理において、(d2)グループ化により得られた複数の集合の包含関係に基づき、当該複数の集合のうち他の集合に包含される集合を特定し、特定された当該集合に含まれるレコードを除去してもよい。このようにすれば、複数の集合に重複して含まれる、ユーザに提示しなくてもよいレコードを検索結果から除外できるようになる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1の属性について複数の属性値を含むクエリを取得し、
検索対象のレコードを格納するデータベースから、前記複数の属性値のうちいずれかの属性値に一致する属性値を含むレコードを特定し、
前記複数の属性値のうちいずれかの属性値に一致する属性値の属性が同じであるレコードが同じグループに属するように、特定された前記レコードをグループ化し、
グループ化により得られたレコードの集合のうち少なくともいずれかの集合を特定し、特定された当該集合に含まれるレコード又は当該レコードの識別情報を含む検索結果を出力する
処理をコンピュータが実行するデータ抽出方法。
(付記2)
前記検索結果を出力する処理において、
前記グループ化により得られたレコードの集合のうち、当該集合に含まれる複数のレコードが特定の属性において同じ属性値を有する集合を特定する
ことを特徴とする付記1記載のデータ抽出方法。
(付記3)
前記検索結果を出力する処理において、
グループ化により得られた複数の集合の包含関係に基づき、当該複数の集合のうち他の集合に包含される集合を特定し、特定された当該集合に含まれるレコードを除去する
ことを特徴とする付記1記載のデータ抽出方法。
(付記4)
第1の属性について複数の属性値を含むクエリを取得する第1処理部と、
検索対象のレコードを格納するデータベースから、前記複数の属性値のうちいずれかの属性値に一致する属性値を含むレコードを特定すると共に、前記複数の属性値のうちいずれかの属性値に一致する属性値の属性が同じであるレコードが同じグループに属するように、特定された前記レコードをグループ化する第2処理部と、
グループ化により得られたレコードの集合のうち少なくともいずれかの集合を特定する第3処理部と、
特定された当該集合に含まれるレコード又は当該レコードの識別情報を含む検索結果を出力する第4処理部と、
を有するデータ抽出装置。
(付記5)
第1の属性について複数の属性値を含むクエリを取得し、
検索対象のレコードを格納するデータベースから、前記複数の属性値のうちいずれかの属性値に一致する属性値を含むレコードを特定し、
前記複数の属性値のうちいずれかの属性値に一致する属性値の属性が同じであるレコードが同じグループに属するように、特定された前記レコードをグループ化し、
グループ化により得られたレコードの集合のうち少なくともいずれかの集合を特定し、特定された当該集合に含まれるレコード又は当該レコードの識別情報を含む検索結果を出力する
処理をコンピュータに実行させるためのデータ抽出プログラム。