IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

<>
  • 特許-クエリ推薦装置及びクエリ推薦方法 図1
  • 特許-クエリ推薦装置及びクエリ推薦方法 図2
  • 特許-クエリ推薦装置及びクエリ推薦方法 図3
  • 特許-クエリ推薦装置及びクエリ推薦方法 図4
  • 特許-クエリ推薦装置及びクエリ推薦方法 図5
  • 特許-クエリ推薦装置及びクエリ推薦方法 図6
  • 特許-クエリ推薦装置及びクエリ推薦方法 図7
  • 特許-クエリ推薦装置及びクエリ推薦方法 図8
  • 特許-クエリ推薦装置及びクエリ推薦方法 図9
  • 特許-クエリ推薦装置及びクエリ推薦方法 図10
  • 特許-クエリ推薦装置及びクエリ推薦方法 図11
  • 特許-クエリ推薦装置及びクエリ推薦方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-09
(45)【発行日】2022-02-18
(54)【発明の名称】クエリ推薦装置及びクエリ推薦方法
(51)【国際特許分類】
   G06F 16/2457 20190101AFI20220210BHJP
【FI】
G06F16/2457
【請求項の数】 5
(21)【出願番号】P 2019034314
(22)【出願日】2019-02-27
(65)【公開番号】P2020140349
(43)【公開日】2020-09-03
【審査請求日】2020-12-17
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100166006
【弁理士】
【氏名又は名称】泉 通博
(74)【代理人】
【識別番号】100124084
【弁理士】
【氏名又は名称】黒岩 久人
(74)【代理人】
【識別番号】100153280
【弁理士】
【氏名又は名称】寺川 賢祐
(72)【発明者】
【氏名】黒川 茂莉
【審査官】齊藤 貴孝
(56)【参考文献】
【文献】米国特許出願公開第2010/0325133(US,A1)
【文献】米国特許出願公開第2010/0153428(US,A1)
【文献】米国特許出願公開第2019/0005092(US,A1)
【文献】特表2007-500408(JP,A)
【文献】米国特許出願公開第2004/0254928(US,A1)
【文献】特開2010-003266(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
データベースシステムにおいてユーザが実行したクエリを取得するクエリ取得部と、
前記クエリ取得部が取得した前記クエリを解析することにより前記クエリが参照するテーブルを特定し、特定したテーブルと、前記データベースシステムにおける前記クエリの実行結果とに基づいて、前記クエリに含まれるデータの抽出条件とは異なる、特定したテーブルを参照する抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する条件特定部と、
前記条件特定部が特定した前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして出力する出力部と、
を備えるクエリ推薦装置。
【請求項2】
前記条件特定部は、前記クエリ取得部が取得した前記クエリを解析することにより前記クエリが参照するテーブルを特定するとともに、前記テーブルに含まれる項目をキーとして含む連結対象テーブルを特定し、当該テーブルと、当該連結対象テーブルとを参照する前記抽出条件を特定する、
請求項に記載のクエリ推薦装置。
【請求項3】
前記出力部が出力した前記抽出条件に対応するクエリの評価を前記ユーザから受け付け、当該抽出条件と、前記評価を示す情報とを関連付けて記憶部に記憶させる評価部をさらに備え、
前記出力部は、前記評価が相対的に高い抽出条件に対応するクエリを出力する、
請求項1又は2に記載のクエリ推薦装置。
【請求項4】
前記クエリ取得部は、データベースシステムにおいてユーザが実行した複数のクエリを取得し、
前記条件特定部は、前記クエリ取得部が取得した前記複数のクエリのそれぞれについて、当該クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定し、
前記出力部は、前記クエリ取得部が取得した前記複数のクエリのうち、実行順序が遅いクエリに対して前記条件特定部が特定した前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして優先的に出力する、
請求項1からのいずれか1項に記載のクエリ推薦装置。
【請求項5】
コンピュータが実行する、
データベースシステムにおいてユーザが実行したクエリを取得するステップと、
取得された前記クエリを解析することにより前記クエリが参照するテーブルを特定し、特定したテーブルと、前記データベースシステムにおける前記クエリの実行結果とに基づいて、前記クエリに含まれるデータの抽出条件とは異なる、特定したテーブルを参照する抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定するステップと、
特定された前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして出力するステップと、
を備えるクエリ推薦方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クエリ推薦装置及びクエリ推薦方法に関する。
【背景技術】
【0002】
従来、ユーザに対して、ユーザに有用なクエリを通知することが行われている。例えば、クエリの実行結果に基づいてクエリを特定するクエリリバースエンジニアリング(QRE:Query Reverse Engineering)を行うことにより、クエリを通知する技術が提案されている(例えば、非特許文献1参照)。クエリリバースエンジニアリングを利用することにより、ユーザは、実行結果を得るためのクエリを把握することができる。
【先行技術文献】
【非特許文献】
【0003】
【文献】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
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ユーザは、クエリの実行結果に基づいてクエリを得ることにとどまらず、自身が過去に実行したクエリに関連する、有用なデータを得るためのクエリを探索する場合もある。しかしながら、ユーザが有用なデータを得るクエリを自身で探索する場合、手間がかかるという問題がある。
【0005】
そこで、本発明はこれらの点に鑑みてなされたものであり、ユーザにとって有用なデータを得られる可能性がある抽出条件を含むクエリを提示することができるクエリ推薦装置及びクエリ推薦方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様に係るクエリ推薦装置は、データベースシステムにおいてユーザが実行したクエリを取得するクエリ取得部と、前記クエリ取得部が取得した前記クエリと、前記データベースシステムにおける前記クエリの実行結果とに基づいて、前記クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する条件特定部と、前記条件特定部が特定した前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして出力する出力部と、を備える。
【0007】
前記条件特定部は、前記クエリ取得部が取得した前記クエリを解析することにより前記クエリが参照するテーブルを特定し、当該テーブルを参照する前記抽出条件を特定してもよい。
【0008】
前記条件特定部は、前記クエリ取得部が取得した前記クエリを解析することにより前記クエリが参照するテーブルを特定するとともに、前記テーブルに含まれる項目をキーとして含む連結対象テーブルを特定し、当該テーブルと、当該連結対象テーブルとを参照する前記抽出条件を特定してもよい。
【0009】
前記クエリ推薦装置は、前記出力部が出力した前記抽出条件に対応するクエリの評価を前記ユーザから受け付け、当該抽出条件と、前記評価を示す情報とを関連付けて記憶部に記憶させる評価部をさらに備え、前記出力部は、前記評価が相対的に高い抽出条件に対応するクエリを出力してもよい。
【0010】
前記クエリ取得部は、データベースシステムにおいてユーザが実行した複数のクエリを取得し、前記条件特定部は、前記クエリ取得部が取得した前記複数のクエリのそれぞれについて、当該クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定し、前記出力部は、前記クエリ取得部が取得した前記複数のクエリのうち、実行順序が遅いクエリに対して前記条件特定部が特定した前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして優先的に出力してもよい。
【0011】
本発明の第2の態様に係るクエリ推薦方法は、コンピュータが実行する、データベースシステムにおいてユーザが実行したクエリを取得するステップと、取得された前記クエリと、前記データベースシステムにおける前記クエリの実行結果とに基づいて、前記クエリに含まれるデータの抽出条件とは異なる抽出条件であって、前記実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定するステップと、特定された前記抽出条件に対応するクエリを、前記ユーザに推薦するクエリとして出力するステップと、を備える。
【発明の効果】
【0012】
本発明によれば、ユーザにとって有用なデータを得られる可能性がある抽出条件を含むクエリを提示することができるという効果を奏する。
【図面の簡単な説明】
【0013】
図1】本実施形態に係るクエリ推薦装置の概要を示す図である。
図2】本実施形態に係るクエリ推薦装置の構成を示す図である。
図3】データベースシステムに記憶されているテーブルの一例を示す図である。
図4】クエリ取得部が取得したクエリQ0の実行結果を示す図である。
図5】クエリ取得部が取得したクエリQ0に対応する二分木を示す図である。
図6】取得したクエリが参照するテーブルと、連結対象テーブルとの連結テーブルの一例を示す図である。
図7図6に示す連結テーブルに対応する二分木を示す図である。
図8】取得したクエリが参照するテーブルと、連結対象テーブルとの連結テーブルの他の一例を示す図である。
図9図8に示す連結テーブルに対応する二分木を示す図である。
図10】本実施形態に係るクエリ推薦装置における処理の流れを示すフローチャートである。
図11】第2実施形態に係るクエリ推薦装置の構成を示す図である。
図12】第2実施形態に係るクエリ推薦装置における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0014】
<第1実施形態>
[クエリ推薦装置10の概要]
図1は、第1実施形態に係るクエリ推薦装置10の概要を示す図である。クエリ推薦装置10は、データベースシステム1を利用するユーザ端末2のユーザに、有用なデータを得られる可能性があるクエリを提示する装置である。なお、本実施形態において、クエリは、リレーショナルデータベースにおいてデータを抽出するための問合せ文(SQL文)である。
【0015】
クエリ推薦装置10は、データベースシステム1とユーザ端末2とにLAN等の通信ネットワークを介して通信可能に接続されている。図1に示すように、クエリ推薦装置10は、ユーザ端末2のユーザが入力したクエリを取得する。ユーザが入力したクエリは、例えば、データベースシステム1において実行されたクエリである。クエリ推薦装置10は、取得したクエリと、当該クエリのデータベースシステム1における実行結果とに基づいて、当該クエリと同一の実行結果を抽出するためのデータの抽出条件を特定する。クエリ推薦装置10は、特定した抽出条件に対応するクエリを、ユーザに推薦する候補クエリとして、ユーザ端末2に出力する。
【0016】
ユーザがデータベースシステム1に入力したクエリと同一の実行結果を得られる抽出条件に対応するクエリは、ユーザがクエリにおいて指定した抽出条件とは異なる切り口でデータを抽出するものであり、有用なデータを得る抽出条件となる可能性がある。したがって、クエリ推薦装置10は、ユーザにとって有用なデータを得られる可能性があるクエリをユーザに提示することができる。
【0017】
[クエリ推薦装置10の構成]
続いて、クエリ推薦装置10の構成を説明する。図2は、第1実施形態に係るクエリ推薦装置10の構成を示す図である。図2に示すように、クエリ推薦装置10は、記憶部11と、制御部12とを備える。
【0018】
記憶部11は、ROM(Read Only Memory)及びRAM(Random Access Memory)等を含む記憶媒体である。記憶部11は、制御部12が実行するプログラムを記憶している。例えば、記憶部11は、制御部12を、クエリ取得部121、条件特定部122及び出力部123として機能させるクエリ推薦プログラムを記憶している。
【0019】
制御部12は、例えばCPU(Central Processing Unit)である。制御部12は、記憶部11に記憶されたクエリ推薦プログラムを実行することにより、クエリ取得部121、条件特定部122、及び出力部123として機能する。
【0020】
制御部12の機能を説明するにあたり、データベースシステム1に記憶されているテーブルについて説明する。図3は、データベースシステム1に記憶されているテーブルの一例を示す図である。図3に示すように、データベースシステム1は、Team(チーム成績)テーブルと、Master(選手マスタ)テーブルと、Batting(バッティング成績)テーブルとを記憶している。
【0021】
ここで、Teamテーブルは、既知のデータを含むテーブルであり、Masterテーブル及びBattingテーブルは、未知のデータを含むテーブルである。既知のデータは、ユーザがテーブルに含まれるレコードを把握しているデータであり、未知のデータは、ユーザがテーブルに含まれるレコードの内容を把握していないデータである。
【0022】
クエリ取得部121は、データベースシステム1においてユーザ端末2のユーザが実行したクエリを一以上取得する。データベースシステム1には、クエリと、クエリが実行された時刻を示す時刻情報と、クエリを実行したユーザを識別するユーザ識別情報とを関連付けたクエリログが記憶されている。クエリ取得部121は、例えば、ユーザ端末2から、ユーザ識別情報を含み、候補クエリの取得を要求するクエリ取得要求を受け付けると、データベースシステム1から、当該ユーザ識別情報に対応するクエリログのうち、時刻情報が示す時刻が相対的に新しいクエリログを一以上取得する。
【0023】
なお、クエリ取得部121は、ユーザ端末2から、クエリログの取得期間を受け付け、時刻情報が示す時刻が当該取得期間に含まれるクエリログを取得してもよい。また、クエリ取得部121は、ユーザ端末2から、ユーザがデータベースシステム1において実行したクエリを直接取得してもよい。
【0024】
例えば、クエリ取得部121は、以下に示すように、図3に示すテーブルに関連するクエリQ0を取得したとする。図4は、クエリ取得部121が取得したクエリQ0の実行結果を示す図である。
Q0:select t.team, t.rank from Team t where t.team = ’PIT’ and t.year = 2002
【0025】
条件特定部122は、クエリ取得部121が取得したクエリと、データベースシステム1における当該クエリの実行結果とに基づいて、クエリリバースエンジニアリングを行うことにより、当該クエリに含まれるデータの抽出条件とは異なる抽出条件であって、当該実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する。条件特定部122は、クエリ取得部121が取得した一以上のクエリのそれぞれについて、当該クエリの実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する。
【0026】
具体的には、まず、条件特定部122は、クエリ取得部121が取得したクエリを解析することにより、当該クエリが参照するテーブルを特定する。また、条件特定部122は、特定したテーブルに含まれる項目をキーとして含む連結対象テーブルを特定する。例えば、条件特定部122は、クエリ取得部121が取得したクエリQ0が参照するテーブルとして、図3に示すTeamテーブルを特定する。また、条件特定部122は、連結対象テーブルとして、図3に示すMasterテーブル及びBattingテーブルを特定する。連結対象テーブルを特定することにより、クエリ推薦装置10は、ユーザにとって未知のテーブルの項目を含むクエリも推薦することができる。
【0027】
続いて、条件特定部122は、特定したテーブルについて、取得したクエリの実行結果に基づいてリバースエンジニアリングを行うことにより、特定したテーブルからデータを抽出する抽出条件であって、クエリ取得部121が取得したクエリの実行結果と同一の実行結果を抽出するための抽出条件を特定する。例えば、条件特定部122は、特定したテーブルを根ノード、エッジをデータの分岐条件、各ノードを分岐条件に伴い抽出されたデータとする二分木を作成する。1つのノードから下層に延びるエッジは2本ある。右側に延びるエッジは、左側に延びるエッジの分岐条件を否定する条件である。
【0028】
条件特定部122は、各ノードのそれぞれに対応する条件を、分岐条件によりデータを二分割したときの分割の不均等さを測る評価指標であるジニ係数を用いることにより特定する。二分木のノードに対応する条件に基づいてデータを分類した場合に、当該条件による分岐の左側に含まれるデータ数を|L|、分岐の右側に含まれるデータ数を|R|、分岐の左側に含まれるデータに正例が含まれる割合をfl、分岐の右側に含まれるデータに正例が含まれる割合をfrとすると、当該条件に対応するジニ係数Gini(L,R)は、以下の式(1)で示される。
Gini(L,R)=(1/(|L|+|R|))(|L|Gini(L)+ |R|Gini(R))・・・(1)
ただし、Gini(L)=1-(fl)^2、Gini(R)=1-(fr)^2
【0029】
条件特定部122は、ノードに対応する条件として、ジニ係数が最小となる条件を特定する。条件特定部122は、根ノードから順番に、ノードに対応する条件によりデータを抽出した結果、データの抽出結果が、取得したクエリの実行結果と等しくなるまで、二分木にノードを追加することにより、二分木を生成する。図5は、クエリ取得部121が取得したクエリQ0に対応する二分木を示す図である。図5は、クエリQ0が参照するテーブル「Team」に対して生成された二分木である。図5において、例えば、ノードN2には、ノードN1(テーブル「Team」)のうち、条件「t.rank<=1」を満たすデータが含まれる。また、ノードN3は、ノードN2のうち、条件「t.year=2002」を満たすデータが含まれる。
【0030】
条件特定部122は、特定したテーブルと、生成した二分木とに基づいて、クエリQ0の実行結果に対応する同一の実行結果を抽出するためのデータの抽出条件を特定する。具体的には、条件特定部122は、生成した二分木において正例を含むノードを特定する。図5に示す例では、条件特定部122は、正例を含むノードとして、ノードN3を特定する。条件特定部122は、根ノードのテーブルに基づいて、参照するテーブルを特定する。また、条件特定部122は、特定したノードから根ノードまでたどり着く場合に通過するエッジに対応する条件を、当該テーブルからデータを抽出する条件として特定する。例えば、参照するテーブルを特定する条件は、クエリのFROM句に対応し、当該テーブルからデータを抽出する条件は、クエリのWHERE句に対応する。
【0031】
条件特定部122は、特定した条件を含む、クエリQ0の実行結果に対応する同一の実行結果を出力するクエリQ1を特定する。クエリQ1は、以下に示すとおりである。
Q1:select t.team, t.rank from Team t where t.rank ≦1 and t.year = 2002
【0032】
また、条件特定部122は、取得したクエリが参照するテーブルと、連結対象テーブルとに基づいて、二分木を作成する。まず、条件特定部122は、テーブル「Team」と、一以上の連結対象テーブルとをキーに基づいて連結する。
【0033】
条件特定部122は、図3に示す「Batting」テーブルに含まれる項目「team」と、テーブル「Team」に含まれる項目「team」とに基づいてテーブルを連結する。図6は、取得したクエリが参照するテーブルと、連結対象テーブルとの連結テーブルの一例を示す図である。
【0034】
条件特定部122は、図6に示す連結テーブルについて、上述した手順と同様の手順によって二分木を生成する。図7は、図6に示す連結テーブルに対応する二分木を示す図である。条件特定部122は、特定したテーブル(Batting、Team)と、図7に示す二分木とに基づいて、クエリQ0の実行結果に対応する同一の実行結果を抽出するためのデータの抽出条件を特定する。
【0035】
条件特定部122は、特定した条件を含む、クエリQ0の実行結果に対応する同一の実行結果を出力するクエリQ2を特定する。クエリQ2は、以下に示すとおりである。
Q2:select t.team, t.rank from Team t, Batting b where t.team = b.team and b.HR > 50
【0036】
同様に、条件特定部122は、図3に示す「Batting」テーブルに含まれる項目「team」と、テーブル「Team」に含まれる項目「team」と、「Batting」テーブルに含まれる項目「pID」と、テーブル「Master」に含まれる項目「pID」と、に基づいて、3つのテーブル「Team」、「Batting」、「Master」を連結する。図8は、取得したクエリが参照するテーブルと、連結対象テーブルとの連結テーブルの他の一例を示す図である。
【0037】
条件特定部122は、図8に示す連結テーブルについて、上述した手順と同様の手順によって二分木を生成する。図9は、図8に示す連結テーブルに対応する二分木を示す図である。条件特定部122は、特定したテーブル(Batting、Team、Master)と、図8に示す二分木とに基づいて、クエリQ0の実行結果に対応する同一の実行結果を抽出するためのデータの抽出条件を特定する。
【0038】
条件特定部122は、特定した条件を含む、クエリQ0の実行結果に対応する同一の実行結果を出力するクエリQ3を特定する。クエリQ3は、以下に示すとおりである。
Q3: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
【0039】
なお、クエリ取得部121が複数のクエリを取得した場合に、これらのクエリから特定されたテーブルが共通のテーブルであるとき、複数のクエリのそれぞれに対応して二分木が生成されることがある。例えば、クエリ取得部121が取得したクエリがクエリQ0A、Q0Bである場合に、いずれのクエリもテーブル「Team」を参照しているとき、テーブル「Team」を根ノードとする二分木として、クエリQ0Aに対応する二分木、クエリQ0Bに対応する二分木が生成される。条件特定部122は、一方の二分木が、他方の二分木を包含している場合、又は、2つの二分木に共通部分が含まれている場合、これらの二分木を統合するようにしてもよい。
【0040】
出力部123は、条件特定部122が特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する。例えば、出力部123は、ユーザに推薦するクエリを、ユーザ端末2に出力する。上述した例では、出力部123は、条件特定部122が特定した抽出条件に対応するクエリQ1~Q3を出力する。
【0041】
なお、出力部123は、クエリ取得部121が、データベースシステム1においてユーザが実行した複数のクエリを取得し、条件特定部122が、取得された複数のクエリのそれぞれについて、データの抽出条件を特定した場合、当該複数のクエリのうち、一部のクエリを出力してもよい。この場合において、出力部123は、当該複数のクエリのうち、実行順序(実行日時)が遅いクエリに対して特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして優先的に出力してもよい。
【0042】
ユーザが複数のクエリを連続して実行した場合において、実行順序が遅いクエリは、実行順序が早いクエリについてユーザが検討したことにより考え出された可能性が高い。したがって、相対的に実行順序が遅いクエリに対して特定した抽出条件に対応するクエリは、相対的に実行順序が早いクエリに対して特定した抽出条件に対応するクエリに比べて、ユーザにとって有用なクエリである可能性が高い。したがって、クエリ推薦装置10は、実行順序が遅いクエリに対して特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして優先的に出力することにより、ユーザにとって有用である可能性が高いクエリを提示することができる。
【0043】
また、出力部123は、条件特定部122が特定した抽出条件の一部の条件を含むクエリを、ユーザに推薦するクエリとして出力してもよい。例えば、出力部123は、図5に示す二分木に含まれる2つの条件のうち、1つの条件のみを含むクエリを、条件特定部122が特定した抽出条件に対応するクエリとして、ユーザ端末2に出力してもよい。
【0044】
また、出力部123は、二分木に含まれる2つの条件のうち、負例を抽出する条件に対応するクエリを、ユーザに推薦するクエリとして出力してもよい。例えば、出力部123は、図5に示す二分木に含まれる2つの条件のうち、負例を抽出する条件である、「t.rank>1」を抽出条件として含むクエリを、ユーザに推薦するクエリとして出力してもよいし、「t.rank≦1 and t.Year!=2002」を抽出条件として含むクエリを、ユーザに推薦するクエリとして出力してもよい。さらに、クエリのSELECT句に対応するテーブルの項目は、クエリ取得部121が取得したクエリのSELECT句と同一でなくてもよい。例えば、「t.team, t.rank」ではなく、「t.team, t.rank, t.year」としてもよい。このようにすることで、有用なデータを得られる可能性がある抽出条件を含み、さらにクエリ取得部121が取得したクエリにない項目も含むことで、さらに有用なデータとなる可能性が生じる。
【0045】
[クエリ推薦装置10における処理の流れ]
続いて、第1実施形態に係るクエリ推薦装置10における処理の流れについて説明する。図10は、第1実施形態に係るクエリ推薦装置10における処理の流れを示すフローチャートである。
【0046】
まず、クエリ取得部121は、データベースシステム1においてユーザが実行したクエリを取得する(S10)。
続いて、条件特定部122は、取得したクエリを解析することにより、クエリに対応するテーブルを特定する(S20)。クエリに対応するテーブルは、クエリが参照するテーブル、及び、当該テーブルに含まれる項目をキーとして含むテーブル(連結対象テーブル)である。
【0047】
続いて、条件特定部122は、取得したクエリに含まれるデータの抽出条件とは異なる抽出条件であって、実行結果と同一の実行結果を抽出するためのデータの抽出条件を特定する(S30)。具体的には、条件特定部122は、特定したテーブルを根ノードとし、エッジをデータの分岐条件とする二分木を作成し、当該二分木に基づいて、抽出条件を特定する。
続いて、出力部123は、条件特定部122が特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する(S40)。
【0048】
[第1実施形態における効果]
以上説明したように、第1実施形態に係るクエリ推薦装置10は、データベースシステム1においてユーザが実行したクエリと、当該クエリの実行結果とに基づいて、当該クエリと同一の実行結果を抽出するためのデータの抽出条件を特定する。そして、クエリ推薦装置10は、特定した抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する。このようにすることで、クエリ推薦装置10は、ユーザにとって有用なデータを得られる可能性がある抽出条件を特定し、当該抽出条件を含むクエリを提示することができる。さらに、クエリ推薦装置10は、ユーザが実行したクエリが参照するテーブルならびに当該テーブルに含まれる項目をキーとして含む連結対象テーブルを特定することで、ユーザにとって未知のデータを含む連結対象テーブルを対象とした抽出条件を特定し、当該抽出条件を含むクエリを提示することもできる。
【0049】
<第2実施形態>
[ユーザから受け付けたクエリの評価に基づいて次回以降に推薦するクエリを選択する]
続いて、第2実施形態に係るクエリ推薦装置10について説明する。第2実施形態に係るクエリ推薦装置10は、ユーザからクエリの評価を受け付けるとともに、次回以降にクエリを推薦する場合に、受け付けた評価に基づいて推薦するクエリを選択する点で第1実施形態と異なる。以下に、第2実施形態に係るクエリ推薦装置10について説明する。なお、第1実施形態と同じ部分については適宜説明を省略する。
【0050】
図11は、第2実施形態に係るクエリ推薦装置10の構成を示す図である。図11に示すように、クエリ推薦装置10の制御部12は、評価部124をさらに備える。評価部124は、条件特定部122が特定した二分木のそれぞれのノードに、評価値の初期値を設定する。ここで、初期値は、予め定められている値であり、例えば、全てのノードに対して同じ値が設定される。評価値は高ければ高いほど、高い評価であることを示す。また、根に対応するノードは、評価対象外であるものとする。また、条件特定部122が特定した二分木に対応する評価値が記憶部11に記憶されている場合、初期値の再設定は行われず、過去に行われた評価に対応する評価値が維持されるものとする。
【0051】
評価部124は、出力部123が出力した抽出条件に対応するクエリの評価をユーザから受け付ける。例えば、評価部124は、出力部123が抽出条件に対応するクエリを出力した後、当該クエリを含み、当該クエリを評価するか否かを受け付けるための評価受付ページをユーザ端末2に表示させ、当該クエリの評価を受け付ける。評価部124は、評価受付ページにおいて、クエリが有用であるか否かの選択を受け付ける。
【0052】
評価部124は、ユーザ端末2を介して当該クエリの評価を受け付けると、当該クエリに対応する抽出条件と、当該評価を示す情報を関連付けて記憶部11に記憶させる。評価部124は、当該クエリに対応する二分木の一以上のノードを特定し、ユーザから受け付けた評価に基づいて、特定したノードに関連付けられている評価値を更新する。例えば、評価部124は、クエリが有用であるとユーザが評価すると、特定したノードに関連付けられている評価値を所定量だけ増加させ、クエリが有用ではないとユーザが評価すると、特定したノードに関連付けられている評価値を所定量だけ減少させる。
【0053】
出力部123は、条件特定部122が特定した抽出条件に対応するクエリを出力する場合に、評価が相対的に高い抽出条件に対応するクエリを出力する。出力部123は、条件特定部122が特定した二分木のノードのうち、関連付けられている評価値が相対的に高いノードを特定し、当該ノードに対応するクエリを生成する。出力部123は、関連付けられている評価値が相対的に高いノードの親ノード(ただし、根ノードは除く)又は子ノードがある場合、これらの親ノード又は子ノードに対応するクエリも生成してもよい。出力部123は、生成したクエリを、ユーザに推薦するクエリとして出力する。
【0054】
ここで、ユーザがクエリ推薦装置10を使用し始めた場合には、条件特定部122が特定した二分木の各ノードの評価値は、ほぼ同じ値である。この場合、出力部123は、二分木のノードから、任意のノードを選択し、選択したノードに対応するクエリを生成するようにしてもよい。
【0055】
[クエリ推薦装置10における処理の流れ]
続いて、第2実施形態に係るクエリ推薦装置10における処理の流れについて説明する。図12は、第2実施形態に係るクエリ推薦装置10における処理の流れを示すフローチャートである。
【0056】
S10からS30までの処理は、第1実施形態と同じであるので説明を省略する。
S31において、評価部124は、評価値が設定されていない抽出条件の評価値の初期化を行うことにより、当該抽出条件の評価値を設定する。
【0057】
続いて、出力部123は、条件特定部122が特定した抽出条件のうち、相対的に評価が高い抽出条件に対応するクエリを、ユーザに推薦するクエリとして出力する(S41)。
続いて、評価部124は、出力部123が出力した抽出条件に対応するクエリの評価をユーザから受け付ける(S50)。
【0058】
続いて、評価部124は、ユーザ端末2を介して当該クエリの評価を受け付けると、当該クエリに対応する抽出条件と、当該評価を示す情報を関連付けて記憶部11に記憶させることにより評価を更新する(S60)。
【0059】
[第2実施形態における効果]
以上説明したように、第2実施形態に係るクエリ推薦装置10は、クエリの評価をユーザから受け付け、当該クエリに対応する抽出条件と、評価を示す情報とを関連付けて記憶部11に記憶させておき、記憶部11を参照して、評価が相対的に高い抽出条件に対応するクエリを出力する。このようにすることで、ユーザが同じクエリを反復して実行する場合に、過去にユーザが有用であると評価したクエリを選択することができる。
【0060】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の全部又は一部は、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果を併せ持つ。
【符号の説明】
【0061】
1・・・データベースシステム、2・・・ユーザ端末、10・・・クエリ推薦装置、11・・・記憶部、12・・・制御部、121・・・クエリ取得部、122・・・条件特定部、123・・・出力部、124・・・評価部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12