(57)【要約】【課題】ユーザにとって有用なデータを得られる可能性がある抽出条件を含むクエリを提示する。【解決手段】クエリ推薦装置１０は、データベースシステムにおいてユーザが実行したクエリを取得するクエリ取得部１２１と、クエリ取得部１２１が取得したクエリと、データベースシステム１における当該クエリの実行結果とに基づいて、当該クエリに含まれるデータの抽出条件とは異なる抽出条件であって、当該実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する条件特定部１２２と、条件特定部１２２が特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する出力部１２３と、を備える。【選択図】図２
2020140349.tif 000002
【特許請求の範囲】
【請求項１】
データベースシステムにおいてユーザが実行したクエリを取得するクエリ取得部と、
前記クエリ取得部が取得した前記クエリと、前記データベースシステムにおける前記クエリの実行結果とに基づいて、前記クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する条件特定部と、
前記条件特定部が特定した前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして出力する出力部と、
を備えるクエリ推薦装置。
【請求項２】
前記条件特定部は、前記クエリ取得部が取得した前記クエリを解析することにより前記クエリが参照するテーブルを特定し、当該テーブルを参照する前記抽出条件を特定する、
請求項１に記載のクエリ推薦装置。
【請求項３】
前記条件特定部は、前記クエリ取得部が取得した前記クエリを解析することにより前記クエリが参照するテーブルを特定するとともに、前記テーブルに含まれる項目をキーとして含む連結対象テーブルを特定し、当該テーブルと、当該連結対象テーブルとを参照する前記抽出条件を特定する、
請求項２に記載のクエリ推薦装置。
【請求項４】
前記出力部が出力した前記抽出条件に対応するクエリの評価を前記ユーザから受け付け、当該抽出条件と、前記評価を示す情報とを関連付けて記憶部に記憶させる評価部をさらに備え、
前記出力部は、前記評価が相対的に高い抽出条件に対応するクエリを出力する、
請求項１から３のいずれか１項に記載のクエリ推薦装置。
【請求項５】
前記クエリ取得部は、データベースシステムにおいてユーザが実行した複数のクエリを取得し、
前記条件特定部は、前記クエリ取得部が取得した前記複数のクエリのそれぞれについて、当該クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定し、
前記出力部は、前記クエリ取得部が取得した前記複数のクエリのうち、実行順序が遅いクエリに対して前記条件特定部が特定した前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして優先的に出力する、
請求項１から４のいずれか１項に記載のクエリ推薦装置。
【請求項６】
コンピュータが実行する、
データベースシステムにおいてユーザが実行したクエリを取得するステップと、
取得された前記クエリと、前記データベースシステムにおける前記クエリの実行結果とに基づいて、前記クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定するステップと、
特定された前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして出力するステップと、
を備えるクエリ推薦方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クエリ推薦装置及びクエリ推薦方法に関する。
【背景技術】
【０００２】
従来、ユーザに対して、ユーザに有用なクエリを通知することが行われている。例えば、クエリの実行結果に基づいてクエリを特定するクエリリバースエンジニアリング（ＱＲＥ：Query Reverse Engineering）を行うことにより、クエリを通知する技術が提案されている（例えば、非特許文献１参照）。クエリリバースエンジニアリングを利用することにより、ユーザは、実行結果を得るためのクエリを把握することができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Tran, Q. T., Chan, C. Y., & Parthasarathy, S. “Query reverse engineering” The VLDB Journal - The International Journal on Very Large Data Bases, 23(5), October 2014, 721-746
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ユーザは、クエリの実行結果に基づいてクエリを得ることにとどまらず、自身が過去に実行したクエリに関連する、有用なデータを得るためのクエリを探索する場合もある。しかしながら、ユーザが有用なデータを得るクエリを自身で探索する場合、手間がかかるという問題がある。
【０００５】
そこで、本発明はこれらの点に鑑みてなされたものであり、ユーザにとって有用なデータを得られる可能性がある抽出条件を含むクエリを提示することができるクエリ推薦装置及びクエリ推薦方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の態様に係るクエリ推薦装置は、データベースシステムにおいてユーザが実行したクエリを取得するクエリ取得部と、前記クエリ取得部が取得した前記クエリと、前記データベースシステムにおける前記クエリの実行結果とに基づいて、前記クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する条件特定部と、前記条件特定部が特定した前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして出力する出力部と、を備える。
【０００７】
前記条件特定部は、前記クエリ取得部が取得した前記クエリを解析することにより前記クエリが参照するテーブルを特定し、当該テーブルを参照する前記抽出条件を特定してもよい。
【０００８】
前記条件特定部は、前記クエリ取得部が取得した前記クエリを解析することにより前記クエリが参照するテーブルを特定するとともに、前記テーブルに含まれる項目をキーとして含む連結対象テーブルを特定し、当該テーブルと、当該連結対象テーブルとを参照する前記抽出条件を特定してもよい。
【０００９】
前記クエリ推薦装置は、前記出力部が出力した前記抽出条件に対応するクエリの評価を前記ユーザから受け付け、当該抽出条件と、前記評価を示す情報とを関連付けて記憶部に記憶させる評価部をさらに備え、前記出力部は、前記評価が相対的に高い抽出条件に対応するクエリを出力してもよい。
【００１０】
前記クエリ取得部は、データベースシステムにおいてユーザが実行した複数のクエリを取得し、前記条件特定部は、前記クエリ取得部が取得した前記複数のクエリのそれぞれについて、当該クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定し、前記出力部は、前記クエリ取得部が取得した前記複数のクエリのうち、実行順序が遅いクエリに対して前記条件特定部が特定した前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして優先的に出力してもよい。
【００１１】
本発明の第２の態様に係るクエリ推薦方法は、コンピュータが実行する、データベースシステムにおいてユーザが実行したクエリを取得するステップと、取得された前記クエリと、前記データベースシステムにおける前記クエリの実行結果とに基づいて、前記クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定するステップと、特定された前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして出力するステップと、を備える。
【発明の効果】
【００１２】
本発明によれば、ユーザにとって有用なデータを得られる可能性がある抽出条件を含むクエリを提示することができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係るクエリ推薦装置の概要を示す図である。
【図２】本実施形態に係るクエリ推薦装置の構成を示す図である。
【図３】データベースシステムに記憶されているテーブルの一例を示す図である。
【図４】クエリ取得部が取得したクエリＱ０の実行結果を示す図である。
【図５】クエリ取得部が取得したクエリＱ０に対応する二分木を示す図である。
【図６】取得したクエリが参照するテーブルと、連結対象テーブルとの連結テーブルの一例を示す図である。
【図７】図６に示す連結テーブルに対応する二分木を示す図である。
【図８】取得したクエリが参照するテーブルと、連結対象テーブルとの連結テーブルの他の一例を示す図である。
【図９】図８に示す連結テーブルに対応する二分木を示す図である。
【図１０】本実施形態に係るクエリ推薦装置における処理の流れを示すフローチャートである。
【図１１】第２実施形態に係るクエリ推薦装置の構成を示す図である。
【図１２】第２実施形態に係るクエリ推薦装置における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１４】
＜第１実施形態＞
［クエリ推薦装置１０の概要］
図１は、第１実施形態に係るクエリ推薦装置１０の概要を示す図である。クエリ推薦装置１０は、データベースシステム１を利用するユーザ端末２のユーザに、有用なデータを得られる可能性があるクエリを提示する装置である。なお、本実施形態において、クエリは、リレーショナルデータベースにおいてデータを抽出するための問合せ文（ＳＱＬ文）である。
【００１５】
クエリ推薦装置１０は、データベースシステム１とユーザ端末２とにＬＡＮ等の通信ネットワークを介して通信可能に接続されている。図１に示すように、クエリ推薦装置１０は、ユーザ端末２のユーザが入力したクエリを取得する。ユーザが入力したクエリは、例えば、データベースシステム１において実行されたクエリである。クエリ推薦装置１０は、取得したクエリと、当該クエリのデータベースシステム１における実行結果とに基づいて、当該クエリと同一の実行結果を抽出するためのデータの抽出条件を特定する。クエリ推薦装置１０は、特定した抽出条件に対応するクエリを、ユーザに推薦する候補クエリとして、ユーザ端末２に出力する。
【００１６】
ユーザがデータベースシステム１に入力したクエリと同一の実行結果を得られる抽出条件に対応するクエリは、ユーザがクエリにおいて指定した抽出条件とは異なる切り口でデータを抽出するものであり、有用なデータを得る抽出条件となる可能性がある。したがって、クエリ推薦装置１０は、ユーザにとって有用なデータを得られる可能性があるクエリをユーザに提示することができる。
【００１７】
［クエリ推薦装置１０の構成］
続いて、クエリ推薦装置１０の構成を説明する。図２は、第１実施形態に係るクエリ推薦装置１０の構成を示す図である。図２に示すように、クエリ推薦装置１０は、記憶部１１と、制御部１２とを備える。
【００１８】
記憶部１１は、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）等を含む記憶媒体である。記憶部１１は、制御部１２が実行するプログラムを記憶している。例えば、記憶部１１は、制御部１２を、クエリ取得部１２１、条件特定部１２２及び出力部１２３として機能させるクエリ推薦プログラムを記憶している。
【００１９】
制御部１２は、例えばＣＰＵ（Central Processing Unit）である。制御部１２は、記憶部１１に記憶されたクエリ推薦プログラムを実行することにより、クエリ取得部１２１、条件特定部１２２、及び出力部１２３として機能する。
【００２０】
制御部１２の機能を説明するにあたり、データベースシステム１に記憶されているテーブルについて説明する。図３は、データベースシステム１に記憶されているテーブルの一例を示す図である。図３に示すように、データベースシステム１は、Ｔｅａｍ（チーム成績）テーブルと、Ｍａｓｔｅｒ（選手マスタ）テーブルと、Ｂａｔｔｉｎｇ（バッティング成績）テーブルとを記憶している。
【００２１】
ここで、Ｔｅａｍテーブルは、既知のデータを含むテーブルであり、Ｍａｓｔｅｒテーブル及びＢａｔｔｉｎｇテーブルは、未知のデータを含むテーブルである。既知のデータは、ユーザがテーブルに含まれるレコードを把握しているデータであり、未知のデータは、ユーザがテーブルに含まれるレコードの内容を把握していないデータである。
【００２２】
クエリ取得部１２１は、データベースシステム１においてユーザ端末２のユーザが実行したクエリを一以上取得する。データベースシステム１には、クエリと、クエリが実行された時刻を示す時刻情報と、クエリを実行したユーザを識別するユーザ識別情報とを関連付けたクエリログが記憶されている。クエリ取得部１２１は、例えば、ユーザ端末２から、ユーザ識別情報を含み、候補クエリの取得を要求するクエリ取得要求を受け付けると、データベースシステム１から、当該ユーザ識別情報に対応するクエリログのうち、時刻情報が示す時刻が相対的に新しいクエリログを一以上取得する。
【００２３】
なお、クエリ取得部１２１は、ユーザ端末２から、クエリログの取得期間を受け付け、時刻情報が示す時刻が当該取得期間に含まれるクエリログを取得してもよい。また、クエリ取得部１２１は、ユーザ端末２から、ユーザがデータベースシステム１において実行したクエリを直接取得してもよい。
【００２４】
例えば、クエリ取得部１２１は、以下に示すように、図３に示すテーブルに関連するクエリＱ０を取得したとする。図４は、クエリ取得部１２１が取得したクエリＱ０の実行結果を示す図である。
Ｑ０：select t.team, t.rank from Team t where t.team = ’PIT’ and t.year = 2002
【００２５】
条件特定部１２２は、クエリ取得部１２１が取得したクエリと、データベースシステム１における当該クエリの実行結果とに基づいて、クエリリバースエンジニアリングを行うことにより、当該クエリに含まれるデータの抽出条件とは異なる抽出条件であって、当該実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する。条件特定部１２２は、クエリ取得部１２１が取得した一以上のクエリのそれぞれについて、当該クエリの実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する。
【００２６】
具体的には、まず、条件特定部１２２は、クエリ取得部１２１が取得したクエリを解析することにより、当該クエリが参照するテーブルを特定する。また、条件特定部１２２は、特定したテーブルに含まれる項目をキーとして含む連結対象テーブルを特定する。例えば、条件特定部１２２は、クエリ取得部１２１が取得したクエリＱ０が参照するテーブルとして、図３に示すＴｅａｍテーブルを特定する。また、条件特定部１２２は、連結対象テーブルとして、図３に示すＭａｓｔｅｒテーブル及びＢａｔｔｉｎｇテーブルを特定する。連結対象テーブルを特定することにより、クエリ推薦装置１０は、ユーザにとって未知のテーブルの項目を含むクエリも推薦することができる。
【００２７】
続いて、条件特定部１２２は、特定したテーブルについて、取得したクエリの実行結果に基づいてリバースエンジニアリングを行うことにより、特定したテーブルからデータを抽出する抽出条件であって、クエリ取得部１２１が取得したクエリの実行結果と同一の実行結果を抽出するための抽出条件を特定する。例えば、条件特定部１２２は、特定したテーブルを根ノード、エッジをデータの分岐条件、各ノードを分岐条件に伴い抽出されたデータとする二分木を作成する。１つのノードから下層に延びるエッジは２本ある。右側に延びるエッジは、左側に延びるエッジの分岐条件を否定する条件である。
【００２８】
条件特定部１２２は、各ノードのそれぞれに対応する条件を、分岐条件によりデータを二分割したときの分割の不均等さを測る評価指標であるジニ係数を用いることにより特定する。二分木のノードに対応する条件に基づいてデータを分類した場合に、当該条件による分岐の左側に含まれるデータ数を｜Ｌ｜、分岐の右側に含まれるデータ数を｜Ｒ｜、分岐の左側に含まれるデータに正例が含まれる割合をｆｌ、分岐の右側に含まれるデータに正例が含まれる割合をｆｒとすると、当該条件に対応するジニ係数Ｇｉｎｉ（Ｌ，Ｒ）は、以下の式（１）で示される。
Gini(L,R)=(1/(|L|+|R|))(|L|Gini(L)+ |R|Gini(R))・・・（１）
ただし、Gini(L)=1-(fl)^2、Gini(R)=1-(fr)^2
【００２９】
条件特定部１２２は、ノードに対応する条件として、ジニ係数が最小となる条件を特定する。条件特定部１２２は、根ノードから順番に、ノードに対応する条件によりデータを抽出した結果、データの抽出結果が、取得したクエリの実行結果と等しくなるまで、二分木にノードを追加することにより、二分木を生成する。図５は、クエリ取得部１２１が取得したクエリＱ０に対応する二分木を示す図である。図５は、クエリＱ０が参照するテーブル「Ｔｅａｍ」に対して生成された二分木である。図５において、例えば、ノードＮ２には、ノードＮ１（テーブル「Ｔｅａｍ」）のうち、条件「ｔ．ｒａｎｋ＜＝１」を満たすデータが含まれる。また、ノードＮ３は、ノードＮ２のうち、条件「ｔ．ｙｅａｒ＝２００２」を満たすデータが含まれる。
【００３０】
条件特定部１２２は、特定したテーブルと、生成した二分木とに基づいて、クエリＱ０の実行結果に対応する同一の実行結果を抽出するためのデータの抽出条件を特定する。具体的には、条件特定部１２２は、生成した二分木において正例を含むノードを特定する。図５に示す例では、条件特定部１２２は、正例を含むノードとして、ノードＮ３を特定する。条件特定部１２２は、根ノードのテーブルに基づいて、参照するテーブルを特定する。また、条件特定部１２２は、特定したノードから根ノードまでたどり着く場合に通過するエッジに対応する条件を、当該テーブルからデータを抽出する条件として特定する。例えば、参照するテーブルを特定する条件は、クエリのＦＲＯＭ句に対応し、当該テーブルからデータを抽出する条件は、クエリのＷＨＥＲＥ句に対応する。
【００３１】
条件特定部１２２は、特定した条件を含む、クエリＱ０の実行結果に対応する同一の実行結果を出力するクエリＱ１を特定する。クエリＱ１は、以下に示すとおりである。
Ｑ１：select t.team, t.rank from Team t where t.rank ≦1 and t.year = 2002
【００３２】
また、条件特定部１２２は、取得したクエリが参照するテーブルと、連結対象テーブルとに基づいて、二分木を作成する。まず、条件特定部１２２は、テーブル「Ｔｅａｍ」と、一以上の連結対象テーブルとをキーに基づいて連結する。
【００３３】
条件特定部１２２は、図３に示す「Ｂａｔｔｉｎｇ」テーブルに含まれる項目「ｔｅａｍ」と、テーブル「Ｔｅａｍ」に含まれる項目「ｔｅａｍ」とに基づいてテーブルを連結する。図６は、取得したクエリが参照するテーブルと、連結対象テーブルとの連結テーブルの一例を示す図である。
【００３４】
条件特定部１２２は、図６に示す連結テーブルについて、上述した手順と同様の手順によって二分木を生成する。図７は、図６に示す連結テーブルに対応する二分木を示す図である。条件特定部１２２は、特定したテーブル（Ｂａｔｔｉｎｇ、Ｔｅａｍ）と、図７に示す二分木とに基づいて、クエリＱ０の実行結果に対応する同一の実行結果を抽出するためのデータの抽出条件を特定する。
【００３５】
条件特定部１２２は、特定した条件を含む、クエリＱ０の実行結果に対応する同一の実行結果を出力するクエリＱ２を特定する。クエリＱ２は、以下に示すとおりである。
Ｑ２：select t.team, t.rank from Team t, Batting b where t.team = b.team and b.HR > 50
【００３６】
同様に、条件特定部１２２は、図３に示す「Ｂａｔｔｉｎｇ」テーブルに含まれる項目「ｔｅａｍ」と、テーブル「Ｔｅａｍ」に含まれる項目「ｔｅａｍ」と、「Ｂａｔｔｉｎｇ」テーブルに含まれる項目「ｐＩＤ」と、テーブル「Ｍａｓｔｅｒ」に含まれる項目「ｐＩＤ」と、に基づいて、３つのテーブル「Ｔｅａｍ」、「Ｂａｔｔｉｎｇ」、「Ｍａｓｔｅｒ」を連結する。図８は、取得したクエリが参照するテーブルと、連結対象テーブルとの連結テーブルの他の一例を示す図である。
【００３７】
条件特定部１２２は、図８に示す連結テーブルについて、上述した手順と同様の手順によって二分木を生成する。図９は、図８に示す連結テーブルに対応する二分木を示す図である。条件特定部１２２は、特定したテーブル（Ｂａｔｔｉｎｇ、Ｔｅａｍ、Ｍａｓｔｅｒ）と、図８に示す二分木とに基づいて、クエリＱ０の実行結果に対応する同一の実行結果を抽出するためのデータの抽出条件を特定する。
【００３８】
条件特定部１２２は、特定した条件を含む、クエリＱ０の実行結果に対応する同一の実行結果を出力するクエリＱ３を特定する。クエリＱ３は、以下に示すとおりである。
Ｑ３：select t.team, t.rank from Team t, Batting b, Master m where t.team = b.team and b.pID = m.pID and b.HR > 50 and m.bats=R
【００３９】
なお、クエリ取得部１２１が複数のクエリを取得した場合に、これらのクエリから特定されたテーブルが共通のテーブルであるとき、複数のクエリのそれぞれに対応して二分木が生成されることがある。例えば、クエリ取得部１２１が取得したクエリがクエリＱ０Ａ、Ｑ０Ｂである場合に、いずれのクエリもテーブル「Ｔｅａｍ」を参照しているとき、テーブル「Ｔｅａｍ」を根ノードとする二分木として、クエリＱ０Ａに対応する二分木、クエリＱ０Ｂに対応する二分木が生成される。条件特定部１２２は、一方の二分木が、他方の二分木を包含している場合、又は、２つの二分木に共通部分が含まれている場合、これらの二分木を統合するようにしてもよい。
【００４０】
出力部１２３は、条件特定部１２２が特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する。例えば、出力部１２３は、ユーザに推薦するクエリを、ユーザ端末２に出力する。上述した例では、出力部１２３は、条件特定部１２２が特定した抽出条件に対応するクエリＱ１〜Ｑ３を出力する。
【００４１】
なお、出力部１２３は、クエリ取得部１２１が、データベースシステム１においてユーザが実行した複数のクエリを取得し、条件特定部１２２が、取得された複数のクエリのそれぞれについて、データの抽出条件を特定した場合、当該複数のクエリのうち、一部のクエリを出力してもよい。この場合において、出力部１２３は、当該複数のクエリのうち、実行順序（実行日時）が遅いクエリに対して特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして優先的に出力してもよい。
【００４２】
ユーザが複数のクエリを連続して実行した場合において、実行順序が遅いクエリは、実行順序が早いクエリについてユーザが検討したことにより考え出された可能性が高い。したがって、相対的に実行順序が遅いクエリに対して特定した抽出条件に対応するクエリは、相対的に実行順序が早いクエリに対して特定した抽出条件に対応するクエリに比べて、ユーザにとって有用なクエリである可能性が高い。したがって、クエリ推薦装置１０は、実行順序が遅いクエリに対して特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして優先的に出力することにより、ユーザにとって有用である可能性が高いクエリを提示することができる。
【００４３】
また、出力部１２３は、条件特定部１２２が特定した抽出条件の一部の条件を含むクエリを、ユーザに推薦するクエリとして出力してもよい。例えば、出力部１２３は、図５に示す二分木に含まれる２つの条件のうち、１つの条件のみを含むクエリを、条件特定部１２２が特定した抽出条件に対応するクエリとして、ユーザ端末２に出力してもよい。
【００４４】
また、出力部１２３は、二分木に含まれる２つの条件のうち、負例を抽出する条件に対応するクエリを、ユーザに推薦するクエリとして出力してもよい。例えば、出力部１２３は、図５に示す二分木に含まれる２つの条件のうち、負例を抽出する条件である、「ｔ．ｒａｎｋ＞１」を抽出条件として含むクエリを、ユーザに推薦するクエリとして出力してもよいし、「ｔ．ｒａｎｋ≦１  ａｎｄ  ｔ．Ｙｅａｒ！＝２００２」を抽出条件として含むクエリを、ユーザに推薦するクエリとして出力してもよい。さらに、クエリのＳＥＬＥＣＴ句に対応するテーブルの項目は、クエリ取得部１２１が取得したクエリのＳＥＬＥＣＴ句と同一でなくてもよい。例えば、「t.team, t.rank」ではなく、「t.team, t.rank, t.year」としてもよい。このようにすることで、有用なデータを得られる可能性がある抽出条件を含み、さらにクエリ取得部１２１が取得したクエリにない項目も含むことで、さらに有用なデータとなる可能性が生じる。
【００４５】
［クエリ推薦装置１０における処理の流れ］
続いて、第１実施形態に係るクエリ推薦装置１０における処理の流れについて説明する。図１０は、第１実施形態に係るクエリ推薦装置１０における処理の流れを示すフローチャートである。
【００４６】
まず、クエリ取得部１２１は、データベースシステム１においてユーザが実行したクエリを取得する（Ｓ１０）。
続いて、条件特定部１２２は、取得したクエリを解析することにより、クエリに対応するテーブルを特定する（Ｓ２０）。クエリに対応するテーブルは、クエリが参照するテーブル、及び、当該テーブルに含まれる項目をキーとして含むテーブル（連結対象テーブル）である。
【００４７】
続いて、条件特定部１２２は、取得したクエリに含まれるデータの抽出条件とは異なる抽出条件であって、実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する（Ｓ３０）。具体的には、条件特定部１２２は、特定したテーブルを根ノードとし、エッジをデータの分岐条件とする二分木を作成し、当該二分木に基づいて、抽出条件を特定する。
続いて、出力部１２３は、条件特定部１２２が特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する（Ｓ４０）。
【００４８】
［第１実施形態における効果］
以上説明したように、第１実施形態に係るクエリ推薦装置１０は、データベースシステム１においてユーザが実行したクエリと、当該クエリの実行結果とに基づいて、当該クエリと同一の実行結果を抽出するためのデータの抽出条件を特定する。そして、クエリ推薦装置１０は、特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する。このようにすることで、クエリ推薦装置１０は、ユーザにとって有用なデータを得られる可能性がある抽出条件を特定し、当該抽出条件を含むクエリを提示することができる。さらに、クエリ推薦装置１０は、ユーザが実行したクエリが参照するテーブルならびに当該テーブルに含まれる項目をキーとして含む連結対象テーブルを特定することで、ユーザにとって未知のデータを含む連結対象テーブルを対象とした抽出条件を特定し、当該抽出条件を含むクエリを提示することもできる。
【００４９】
＜第２実施形態＞
［ユーザから受け付けたクエリの評価に基づいて次回以降に推薦するクエリを選択する］
続いて、第２実施形態に係るクエリ推薦装置１０について説明する。第２実施形態に係るクエリ推薦装置１０は、ユーザからクエリの評価を受け付けるとともに、次回以降にクエリを推薦する場合に、受け付けた評価に基づいて推薦するクエリを選択する点で第１実施形態と異なる。以下に、第２実施形態に係るクエリ推薦装置１０について説明する。なお、第１実施形態と同じ部分については適宜説明を省略する。
【００５０】
図１１は、第２実施形態に係るクエリ推薦装置１０の構成を示す図である。図１１に示すように、クエリ推薦装置１０の制御部１２は、評価部１２４をさらに備える。評価部１２４は、条件特定部１２２が特定した二分木のそれぞれのノードに、評価値の初期値を設定する。ここで、初期値は、予め定められている値であり、例えば、全てのノードに対して同じ値が設定される。評価値は高ければ高いほど、高い評価であることを示す。また、根に対応するノードは、評価対象外であるものとする。また、条件特定部１２２が特定した二分木に対応する評価値が記憶部１１に記憶されている場合、初期値の再設定は行われず、過去に行われた評価に対応する評価値が維持されるものとする。
【００５１】
評価部１２４は、出力部１２３が出力した抽出条件に対応するクエリの評価をユーザから受け付ける。例えば、評価部１２４は、出力部１２３が抽出条件に対応するクエリを出力した後、当該クエリを含み、当該クエリを評価するか否かを受け付けるための評価受付ページをユーザ端末２に表示させ、当該クエリの評価を受け付ける。評価部１２４は、評価受付ページにおいて、クエリが有用であるか否かの選択を受け付ける。
【００５２】
評価部１２４は、ユーザ端末２を介して当該クエリの評価を受け付けると、当該クエリに対応する抽出条件と、当該評価を示す情報を関連付けて記憶部１１に記憶させる。評価部１２４は、当該クエリに対応する二分木の一以上のノードを特定し、ユーザから受け付けた評価に基づいて、特定したノードに関連付けられている評価値を更新する。例えば、評価部１２４は、クエリが有用であるとユーザが評価すると、特定したノードに関連付けられている評価値を所定量だけ増加させ、クエリが有用ではないとユーザが評価すると、特定したノードに関連付けられている評価値を所定量だけ減少させる。
【００５３】
出力部１２３は、条件特定部１２２が特定した抽出条件に対応するクエリを出力する場合に、評価が相対的に高い抽出条件に対応するクエリを出力する。出力部１２３は、条件特定部１２２が特定した二分木のノードのうち、関連付けられている評価値が相対的に高いノードを特定し、当該ノードに対応するクエリを生成する。出力部１２３は、関連付けられている評価値が相対的に高いノードの親ノード（ただし、根ノードは除く）又は子ノードがある場合、これらの親ノード又は子ノードに対応するクエリも生成してもよい。出力部１２３は、生成したクエリを、ユーザに推薦するクエリとして出力する。
【００５４】
ここで、ユーザがクエリ推薦装置１０を使用し始めた場合には、条件特定部１２２が特定した二分木の各ノードの評価値は、ほぼ同じ値である。この場合、出力部１２３は、二分木のノードから、任意のノードを選択し、選択したノードに対応するクエリを生成するようにしてもよい。
【００５５】
［クエリ推薦装置１０における処理の流れ］
続いて、第２実施形態に係るクエリ推薦装置１０における処理の流れについて説明する。図１２は、第２実施形態に係るクエリ推薦装置１０における処理の流れを示すフローチャートである。
【００５６】
Ｓ１０からＳ３０までの処理は、第１実施形態と同じであるので説明を省略する。
Ｓ３１において、評価部１２４は、評価値が設定されていない抽出条件の評価値の初期化を行うことにより、当該抽出条件の評価値を設定する。
【００５７】
続いて、出力部１２３は、条件特定部１２２が特定した抽出条件のうち、相対的に評価が高い抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する（Ｓ４１）。
続いて、評価部１２４は、出力部１２３が出力した抽出条件に対応するクエリの評価をユーザから受け付ける（Ｓ５０）。
【００５８】
続いて、評価部１２４は、ユーザ端末２を介して当該クエリの評価を受け付けると、当該クエリに対応する抽出条件と、当該評価を示す情報を関連付けて記憶部１１に記憶させることにより評価を更新する（Ｓ６０）。
【００５９】
［第２実施形態における効果］
以上説明したように、第２実施形態に係るクエリ推薦装置１０は、クエリの評価をユーザから受け付け、当該クエリに対応する抽出条件と、評価を示す情報とを関連付けて記憶部１１に記憶させておき、記憶部１１を参照して、評価が相対的に高い抽出条件に対応するクエリを出力する。このようにすることで、ユーザが同じクエリを反復して実行する場合に、過去にユーザが有用であると評価したクエリを選択することができる。
【００６０】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の全部又は一部は、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果を併せ持つ。
【符号の説明】
【００６１】
１・・・データベースシステム、２・・・ユーザ端末、１０・・・クエリ推薦装置、１１・・・記憶部、１２・・・制御部、１２１・・・クエリ取得部、１２２・・・条件特定部、１２３・・・出力部、１２４・・・評価部
【図１】
2020140349.tif 000003
【図２】
2020140349.tif 000004
【図３】
2020140349.tif 000005
【図４】
2020140349.tif 000006
【図５】
2020140349.tif 000007
【図６】
2020140349.tif 000008
【図７】
2020140349.tif 000009
【図８】
2020140349.tif 000010
【図９】
2020140349.tif 000011
【図１０】
2020140349.tif 000012
【図１１】
2020140349.tif 000013
【図１２】
2020140349.tif 000014