(58)【調査した分野】(Int.Cl.,DB名)
所定のユーザインターフェイスから入力可能であり、かつ、クエリを構成する夫々の条件間において、減少性、冪等性、交換可能性の3つを満たすクエリ条件を用いて、検索対象データに対して検索の処理を実行する情報処理システムにおいて、
検索の処理前に処理を実行する前処理実行手段と、
検索の処理を実行する検索処理手段と、
を備え、
前記前処理実行手段は、
種類が静的に定められたクエリの集合を分析することで、クエリの最小単位であり、前記減少性、前記冪等性、前記交換可能性の3つを満たすサブクエリを、限定された種類数の複数種類だけ抽出するクエリ抽出手段と、
前記クエリ抽出手段により抽出された前記複数種類のサブクエリの夫々を実行するクエリ実行手段と、
前記クエリ抽出手段により抽出された前記複数種類のサブクエリ毎に、前記クエリ実行手段による実行結果と、当該実行結果に対応する種類のサブクエリを識別可能な情報とを対応付けたデータを、対応付データとして生成する対応付け手段と、
前記対応付け手段により生成された、前記複数種類のサブクエリ毎の前記対応付データを管理する管理手段と、
を含み、
前記検索処理手段は、
前記ユーザインターフェイスから検索用に入力されたクエリ条件を、検索クエリ条件として受け付ける受付手段と、
前記受付手段により受け付けられた前記検索クエリ条件を、1種類以上のサブクエリの集合体に分割する分割手段と、
前記分割手段により分割された前記集合体に属する前記1種類以上のサブクエリの夫々を識別可能な情報に基づいて、当該1種類以上のサブクエリの夫々の実行結果を前記対応付データの中から抽出する実行結果抽出手段と、
前記実行結果抽出手段の抽出結果に基づいて、前記受付手段により受け付けられた前記検索クエリ条件に対する検索結果を生成する検索結果生成手段と、
を含む情報処理システム。
前記検索結果生成手段は、前記実行結果抽出手段により抽出された前記1種類以上のサブクエリの夫々の実行結果に対して決定された所定の順番に従って、当該1種類以上のサブクエリの夫々の実行結果の論理演算をすることにより、前記受付手段により受け付けられた前記検索クエリ条件に対する検索結果を生成し、
前記実行結果抽出手段により抽出された前記1以上のサブクエリの夫々の実行結果について、前記検索対象データにおけるサブクエリの実行結果の量に応じた検索コストを演算し、当該検索コストに基づいて、前記検索結果生成手段における前記論理演算の前記所定の順番を決定する処理順番決定手段をさらに備える、
請求項1に記載の情報処理システム。
所定種類の属性の所定種類のサブクエリに対する前記クエリ実行手段による実行結果は、前記所定種類の属性、前記所定種類のサブクエリ、及び、前記検索対象データにおける、当該所定種類の属性の当該所定種類のサブクエリの実行結果の量を含む、
請求項3に記載の情報処理システム。
所定のユーザインターフェイスから入力可能であり、かつ、クエリを構成する夫々の条件間において、減少性、冪等性、交換可能性の3つを満たすクエリ条件を用いて、検索対象データに対して検索の処理を実行する情報処理システムが実行する情報処理方法において、
検索の処理前に処理を実行する前処理実行ステップと、
検索の処理を実行する検索処理ステップと、
を含み、
前記前処理実行ステップは、
種類が静的に定められたクエリの集合を分析することで、クエリの最小単位であり、前記減少性、前記冪等性、前記交換可能性の3つを満たすサブクエリを、限定された種類数の複数種類だけ抽出するクエリ抽出ステップと、
前記クエリ抽出ステップにおいて抽出された前記複数種類のサブクエリの夫々を実行するクエリ実行ステップと、
前記クエリ抽出ステップにおいて抽出された前記複数種類のサブクエリ毎に、前記クエリ実行ステップによる実行結果と、当該実行結果に対応する種類のサブクエリを識別可能な情報とを対応付けたデータを、対応付データとして生成する対応付けステップと、
前記対応付けステップにおいて生成された、前記複数種類のサブクエリ毎の前記対応付データを管理する管理ステップと、
を含み、
前記検索処理ステップは、
前記ユーザインターフェイスから検索用に入力されたクエリ条件を、検索クエリ条件として受け付ける受付ステップと、
前記受付ステップにより受け付けられた前記検索クエリ条件を、1種類以上のサブクエリの集合体に分割する分割ステップと、
前記分割ステップにおいて分割された前記集合体に属する前記1種類以上のサブクエリの夫々を識別可能な情報に基づいて、当該1種類以上のサブクエリの夫々の実行結果を前記対応付データの中から抽出する実行結果抽出ステップと、
前記実行結果抽出ステップにおける抽出結果に基づいて、前記受付ステップにおいて受け付けられた前記検索クエリ条件に対する検索結果を生成する検索結果生成ステップと、
を含む情報処理方法。
所定のユーザインターフェイスから入力可能であり、かつ、クエリを構成する夫々の条件間において、減少性、冪等性、交換可能性の3つを満たすクエリ条件を用いて、検索対象データに対して検索の処理を実行する情報処理システムに含まれるサーバとクライアントのうち、
前記サーバに、検索の処理前に処理を実行する前処理実行ステップを含む制御処理を実行させ、
前記サーバ又はクライアントに、検索の処理を実行する検索処理ステップを含む制御処理を実行させるプログラムであって、
前記前処理実行ステップは、
種類が静的に定められたクエリの集合を分析することで、クエリの最小単位であり、前記減少性、前記冪等性、前記交換可能性の3つを満たすサブクエリを、限定された種類数の複数種類だけ抽出するクエリ抽出ステップと、
前記クエリ抽出ステップにおいて抽出された前記複数種類のサブクエリの夫々を実行するクエリ実行ステップと、
前記クエリ抽出ステップにおいて抽出された前記複数種類のサブクエリ毎に、前記クエリ実行ステップによる実行結果と、当該実行結果に対応する種類のサブクエリを識別可能な情報とを対応付けたデータを、対応付データとして生成する対応付けステップと、
前記対応付けステップにおいて生成された、前記複数種類のサブクエリ毎の前記対応付データを管理する管理ステップと、
を含み、
前記検索処理ステップは、
前記ユーザインターフェイスから検索用に入力されたクエリ条件を、検索クエリ条件として受け付ける受付ステップと、
前記受付ステップにより受け付けられた前記検索クエリ条件を、1種類以上のサブクエリの集合体に分割する分割ステップと、
前記分割ステップにおいて分割された前記集合体に属する前記1種類以上のサブクエリの夫々を識別可能な情報に基づいて、当該1種類以上のサブクエリの夫々の実行結果を前記対応付データの中から抽出する実行結果抽出ステップと、
前記実行結果抽出ステップにおける抽出結果に基づいて、前記受付ステップにおいて受け付けられた前記検索クエリ条件に対する検索結果を生成する検索結果生成ステップと、
を含むプログラム。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について、図面を用いて説明する。
【0012】
図1は、本発明の一実施形態に係る情報処理システムの構成を示している。
図1に示す情報処理システムは、w人(wは1以上の任意の整数値)のプレイヤーの夫々により使用されるプレイヤー端末1−1乃至1−wと、サーバ2とを含むシステムである。プレイヤー端末1−1乃至1−wの夫々と、サーバ2とは、インターネット等の所定のネットワークNを介して相互に接続されている。
【0013】
サーバ2は、プレイヤー端末1−1乃至1−wの夫々において実行されるゲーム等において用いられる静的データを効率的かつ高速に検索等できる環境を提供する。これにより、当該ゲーム等において極めて高いレスポンス性能が達成される。
【0014】
なお、以下、プレイヤー端末1−1乃至1−wの夫々を個々に区別する必要がない場合、これらをまとめて「プレイヤー端末1」と呼ぶ。
【0015】
図2は、
図1の情報処理システムのうち、本発明の一実施形態に係るプレイヤー端末1のハードウェア構成を示すブロック図である。
【0016】
プレイヤー端末1は、スマートフォン等で構成される。
プレイヤー端末1は、CPU(Central Processing Unit)21と、ROM(Read Only Memory)22と、RAM(Random Access Memory)23と、バス24と、入出力インターフェース25と、タッチ操作入力部26と、表示部27と、入力部28と、記憶部29と、通信部30と、ドライブ31と、を備えている。
【0017】
CPU21は、ROM22に記録されているプログラム、又は、記憶部29からRAM23にロードされたプログラムに従って各種の処理を実行する。
RAM23には、CPU21が各種の処理を実行する上において必要なデータ等も適宜記憶される。
【0018】
CPU21、ROM22及びRAM23は、バス24を介して相互に接続されている。このバス24にはまた、入出力インターフェース25も接続されている。入出力インターフェース25には、タッチ操作入力部26、表示部27、入力部28、記憶部29、通信部30及びドライブ31が接続されている。
【0019】
タッチ操作入力部26は、例えば表示部27の表示面に積層される静電容量式又は抵抗膜式(感圧式)の位置入力センサにより構成され、タッチ操作がなされた位置の座標を検出する。
ここで、タッチ操作とは、タッチ操作入力部26に対する物体の接触又は近接の操作をいう。タッチ操作入力部26に対して接触又は近接する物体は、例えばプレイヤーの指やタッチペン等である。
表示部27は、液晶等のディスプレイにより構成され、ゲームに関する画像等、各種画像を表示する。
このように、本実施形態では、タッチ操作入力部26と表示部27とにより、タッチパネルが構成されている。
【0020】
入力部28は、各種ハードウェア釦等で構成され、プレイヤーの指示操作に応じて各種情報を入力する。
記憶部29は、DRAM(Dynamic Random Access Memory)等で構成され、各種データを記憶する。
通信部30は、インターネットを含むネットワークNを介して他の装置(
図1の例ではサーバ2や他のプレイヤー端末1)との間で行う通信を制御する。
【0021】
ドライブ31は、必要に応じて設けられる。ドライブ31には、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等よりなる、リムーバブルメディア41が適宜装着される。ドライブ31によってリムーバブルメディア41から読み出されたプログラムは、必要に応じて記憶部29にインストールされる。また、リムーバブルメディア41は、記憶部29に記憶されている各種データも、記憶部29と同様に記憶することができる。
【0022】
図3は、
図1の情報処理システムのうち、本発明の一実施形態に係るサーバ2のハードウェア構成を示すブロック図である。
【0023】
サーバ2は、CPU51と、ROM52と、RAM53と、バス54と、入出力インターフェース55と、出力部56と、入力部57と、記憶部58と、通信部59と、ドライブ60とを備えている。
サーバ2の構成は、プレイヤー端末1のタッチパネルを除いた構成と基本的に同様であるので、ここではその説明は省略する。
【0024】
このような
図2のプレイヤー端末1及び
図3のサーバ2の各種ハードウェアと各種ソフトウェアとの協働により、プレイヤー端末1及びサーバ2において、静的データの検索等について高速処理の実行が可能になる。
即ち、本実施形態の情報処理システムは、高速検索のためのデータベースを生成する「開発時(データ導入時)」のフェイズと、ゲームのプレイ中等に実際に検索が行われる「実行時(ゲームプレイ中等)」のフェイズと、から構成される一連の処理を実行することができる。
【0025】
より具体的に言えば、本実施形態において、情報処理システムは、「開発時(データ導入時)」のフェイズの一連の処理(以下、「データ導入時処理」と呼ぶ)として、本実施形態では、次のような処理を実行する。
即ち、サーバ2は、事前にゲーム内で実行され得るクエリの集合を分析することで、クエリの最小単位(以下、「サブクエリ」と呼ぶ)を複数種類抽出する。
サーバ2は、抽出された複数種類のサブクエリの夫々を実行し、これらの実行結果の夫々と、対応する種類のサブクエリを識別可能な情報とを対応付けたデータを、対応付データとして生成する。
サーバ2は、複数種類のサブクエリ毎の対応付データを、所定のデータベース(以下、「PLデータDB」と呼ぶ)へ格納して管理する。
【0026】
情報処理システムは、このようにしてPLデータDBに複数種類のサブクエリ毎の対応付データが格納されている状態で、「実行時(ゲームプレイ中等)」のフェイズにおけるデータの検索処理(以下、「検索処理」と呼ぶ)として、本実施形態では次のような処理を実行する。
即ち、プレイヤーがプレイヤー端末1を操作して、所定のユーザインターフェイスを介してクエリ条件を入力すると、プレイヤー端末1は、そのクエリ条件をサーバ2へ送信する。
サーバ2は、送信されてきた検索クエリ条件を受信すると、1種類以上のサブクエリの集合体に分割し、当該1種類以上のサブクエリの夫々を識別可能な情報に基づいて、当該1種類以上のサブクエリの夫々の実行結果を対応付データの中から抽出する。そして、サーバ2は、その抽出結果に基づいて、検索結果を生成して、プレイヤー端末1に提示する。
【0027】
以下、このようなデータ導入時処理及び検索処理を実行可能な情報処理システムについて、その機能的構成及び処理の流れの一例について説明していく。
【0028】
図4は、プレイヤー端末1とサーバ2の機能的構成のうち、データ導入時処理及び検索処理の実行時の機能的構成を示す機能ブロック図である。
【0029】
図4のプレイヤー端末1のCPU21においては、ユーザインターフェイス制御部100と、クエリ条件送信制御部101と、検索結果取得部102と、検索結果表示制御部104と、が機能する。
サーバ2のCPU51においては、データ導入時処理の実行時にはデータ導入時処理部151が機能し、検索処理時には検索処理部152が機能する。
サーバ2の記憶部58の一領域には、クエリ集合DB200と、検索対象データDB300と、PLデータDB400とが設けられる。
【0030】
先ず、データ導入時処理の機能的構成について説明する。
データ導入時処理においては、プレイヤー端末1は特に機能せず、サーバ2のうちデータ導入時処理部151のみが機能する。
データ導入時処理部151には、サブクエリ抽出部110と、サブクエリ実行部111と、PLデータ生成部112と、が設けられている。
【0031】
先ず、データ導入時処理の前提として、クエリ集合DB200には、クエリの集合が格納されているものとする。
クエリの集合とは、導入対象のゲーム内で使用され得るクエリ条件の集合である。
具体的には、クエリ条件の集合は、次の式で定義される。
qH:={a,b,c,d,e,・・・,h} ・・・(1)
ここで、qHは、H番目の条件に対応するクエリ条件の集合を意味する。例えば、攻撃力の検索条件等の検索条件が対象とする属性に対応する。この集合の要素であるa,b,c,d,e,・・・,hは、検索条件として使用される値である。例えば、最大値が15である攻撃力の検索条件の場合であれば、{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}が集合の要素となる。
【0032】
サーバ2のCPU51のサブクエリ抽出部110は、クエリ集合DB200に格納されたクエリの集合体に基づいて、ゲーム内で実行され得るクエリの集合を分析し、その分析結果に基づいて複数種類のサブクエリを抽出する。
【0033】
ここで、データ導入時処理の前提として、検索対象データDB300には、導入対象のゲーム内の検索対象データが格納されるているものとする。
なお、本実施形態で用いる検索対象データとは、ゲーム内で検索対象となるあらゆるデータであり、特定の形式に限定されるものではない。JSON形式、CSV形式、等、幅広いデータが対象となる。検索対象データの具体例については、
図8を用いて後述する。
【0034】
サブクエリ実行部111は、検索対象データDB300に格納された検索対象データを対象として、サブクエリ抽出部110により抽出された複数種類のサブクエリの夫々を実行する。
【0035】
PLデータ生成部112は、サブクエリ抽出部110により抽出された複数種類のサブクエリ毎に、サブクエリ実行部111による実行結果と、当該実行結果に対応する種類のサブクエリを識別可能な情報とを対応付けたデータを、対応付けデータ(PLデータ(対応付データ)として生成する。なお、このような対応付けデータを、以下、「Pre−Linkedデータ」又は略記した「PLデータ」と適宜呼ぶ。
PLデータ管理部120は、このようにして生成された複数種類のサブクエリ毎のPLデータをPLデータDB400に格納して管理する。
【0036】
即ち、PLデータDB400は、複数種類のサブクエリ毎のPLデータを格納する。所定種類のサブクエリのPLデータは、当該所定種類のサブクエリを識別可能な情報と、当該所定種類のサブクエリの実行結果とを対応付けているデータである。
所定種類のサブクエリを識別可能な情報は、その名のごとく所定種類のサブクエリを特定可能なものであれば足り、その形態等は特に限定されない。例えば本実施形態では、所定種類のサブクエリを識別するキーとなる条件(具体的には例えば、攻撃力で検索するサブクエリでは、atk=10)が、当該所定種類のサブクエリの実行結果と対応付けられて、当該所定種類のサブクエリのPLデータが構成されている。
【0037】
次に、検索処理時の機能的構成について説明する。
検索時処理においては、プレイヤー端末1では、ユーザインターフェイス制御部100と、クエリ条件送信制御部101と、検索結果取得部102と、検索結果表示制御部104と、が機能する。サーバ2では、検索処理部152が機能する。
検索処理部152には、PLデータ管理部120と、クエリ条件取得部121と、分割部122と、実行結果抽出部123と、検索結果生成部124と、検索結果送信制御部125と、が設けられている。
【0038】
プレイヤー端末1のCPU21のユーザインターフェイス制御部100は、ゲームの実行中等において、所定のユーザインターフェイス用の画面(後述の
図7参照)を表示部27に表示させる制御を実行する。
また、ユーザインターフェイス制御部100は、上述の画面(タッチ操作入力部26)に対してプレイヤーがしたタッチ操作の内容を受け付ける。例えば、ユーザインターフェイス制御部100のうちクエリ条件受付部131は、プレイヤーがタッチ操作でタッチ操作入力部26に対して入力した検索のための条件を、クエリ条件として受け付ける。
【0039】
クエリ条件送信制御部101は、クエリ条件受付部131により受け付けられたクエリ条件を、通信部30を介してサーバ2へ送信する制御を実行する。
【0040】
サーバ2のクエリ条件取得部121は、このようにしてプレイヤー端末1から送信されてきたクエリ条件を、通信部59を介して取得する。
【0041】
分割部122は、クエリ条件取得部12により取得されたクエリ条件を、1種類以上のサブクエリの集合体に分割する。この集合体は、それに属する1種類以上のサブクエリの夫々が例えばOR、AND、NOT等で接続されて構成される論理演算式の形態を有している。
【0042】
実行結果抽出部123は、分割部122により分割された1種以上のサブクエリの実行結果の夫々を、PLデータ管理部120から抽出する。
【0043】
検索結果生成部124は、実行結果抽出部123により抽出された1種以上のサブクエリの実行結果の集合体に基づいて、検索結果を生成する。ここで、この集合体は、それに属する1種類以上のサブクエリの実行結果の夫々が例えばOR、AND、NOT等で接続されて構成される論理演算式の形態を有している。そこで、検索結果生成部124は、当該論理演算式を解くこと(演算すること)によって、検索結果を生成する。
【0044】
ここで、検索結果生成部124内の一領域には演算順番決定部141が設けられる。
演算順番決定部141は、検索結果生成部124が検索結果を生成するにあたり、夫々のサブクエリを統合(論理演算式の集合演算)をする際の集合演算コストを見積もることができる。
演算順番決定部141は、見積もりの結果、最も絞り込み能力が高いサブクエリから順にソートすることにより、集合演算を適用するのに最も効率のいい順序を提案する。
【0045】
検索結果送信制御部125は、検索結果生成部124により生成された検索結果を通信部59を介してプレイヤー端末1へ送信するための制御を実行する。
【0046】
プレイヤー端末1の検索結果取得部102は、このようにしてサーバ2から送信されてきた検索結果を通信部30を介して取得する。
検索結果表示制御部103は、検索結果取得部102により取得された検索結果(より正確には検索結果を示す画像等)を、表示部27に表示させる制御を実行する。
【0047】
次に、
図5を参照して、このような機能的構成を有するサーバ2が実行する、データ導入時処理の流れについて説明する。
図5は、
図4の機能的構成を有するサーバ2が実行する、データ導入時処理の流れの一例を説明するフローチャートである。
【0048】
ステップS1において、
図4のサーバ2のサブクエリ抽出部110は、導入対象のゲーム内で使用され得るクエリ条件に基づいて、複数のサブクエリを抽出する。
ステップS2において、サブクエリ実行部111は、ステップS1の処理で抽出された複数のサブクエリの夫々を実行する。
ステップS3において、PLデータ生成部112は、ステップS1において抽出された複数のサブクエリ毎に、ステップS2における所定種類のサブクエリの実行結果と、当該所定種類のサブクエリを識別可能な情報とを対応付けたデータを、PLデータとして生成する。
ステップS4において、PLデータ管理部120は、ステップS3において生成されたPLデータを、PLデータDB400に記憶される。
これにより、データ導入時処理が終了し、これ以降、PLデータDB400に複数のサブクエリ毎に記憶されたPLデータは、PLデータ管理部120により管理される。
【0049】
続いて、
図6を参照して、このような機能的構成を有するプレイヤー端末1及びサーバ2が実行する検索処理の流れについて説明する。
図6は、
図4の機能的構成を有するプレイヤー端末1及びサーバ2が実行する検索処理の流れの一例を説明するフローチャートである。
【0050】
ここで、
図6の検索処理の実行に際して、プレイヤー端末1のユーザインターフェイス制御部100の制御により、プレイヤーは、所定のユーザインターフェイス(具体例について
図7を用いて後述する)を用いて、所望の検索のための条件(例えば、攻撃力が15以上のカード等の条件)を入力するものとする。
このような入力がなされると、処理はステップS21に進む。
【0051】
ステップS21において、プレイヤー端末1のクエリ条件受付部131は、プレイヤーが入力した検索のための条件を、クエリ条件として受け付ける。
ステップS22にいて、クエリ条件送信制御部101は、ステップS21において受け付けられたクエリ条件を、通信部30を介してサーバ2へ送信する。
【0052】
ステップS41において、サーバ2のクエリ条件取得部121は、プレイヤー端末1から送信されてきたクエリ条件を通信部59を介して取得する。
ステップS42において、分割部122は、ステップS41において取得されたクエリ条件を、複数種類のサブクエリに分割する。
ステップS43において、実行結果抽出部123は、ステップS42において分割されたサブクエリの実行結果を、PLデータ管理部120を介してPLデータDB400から抽出する。
ステップS44において、検索結果生成部124は、ステップS43において抽出された実行結果に基づいて、検索結果を生成する。
なお、ステップS44の処理において、検索結果生成部124内の演算順番決定部141は、サブクエリの検索コストの見積もりを行う。このような実行順序の制御による最適化により、ステップS44の検索処理は、従来方式の処理に比較して遥かに効率的なものとなっている。演算順番決定部141の処理の詳細については、
図10の具体例を用いて後述する。
【0053】
ステップS45において、検索結果送信制御部125は、ステップS44において生成された検索結果を、通信部59を介してプレイヤー端末1へ送信させる。
ステップS23において、プレイヤー端末1の検索結果取得部102は、ステップS45においてサーバ2から送信されてきた検索結果を、通信部30を介して取得する。
ステップS24において、検索結果表示制御部103は、ステップS23において取得された検索結果を、表示部27に表示させる。
【0054】
次に、
図7以降の図面を参照して、データ導入時処理又は検索処理に関する具体例について説明する。
【0055】
図7は、ユーザインタフェースを構成する検索画面の一例を示す図である。
本実施形態における検索処理を実現するためのゲーム内の検索機能は、予め決められた検索項目をプルダウンメニュー等で選択し、それらをAND条件やOR条件により組み合わせたものをクエリとして検索する機能である。
例えば
図7の例での検索項目については、上から「クラス」、「コスト」、「カードの種類」、「レアリティ」、「攻撃力」、「体力」、「タイプ」、「キーワード能力」、「トークンを含む」、及び「カードテキスト検索」が存在する。このように、本実施形態では検索項目の1つが、所定の1種類の属性を示している。
1つの属性に対して、複数のサブクエリの種類が存在する。
図7の例では、同一属性の各種のサブクエリは、横方向に配置されて表示される。
「クラス」は、検索対象のカードのクラスである。
図7の例では、「ロイヤル」、「ドラゴン」、「ビショップ」の3つがサブクエリとして選択されている。
「コスト」は、検索対象のカードのコストであり、ゲーム内にカードとして存在するコストであれば、任意の数値をサブクエリとして入力することが可能である。
「カードの種類」は、例えば「ユニット」、「スペル」、「フィールド」等の、検索対象のカードの種類を意味する。
図7の例では、「ユニット」及び「スペル」の2つのサブクエリが選択されている。
「レアリティ」は、例えば「ブロンズレア」、「シルバーレア」、「ゴールドレア」、「レジェンド」等の、検索対象のカードのレアリティである。
図7の例では、「レジェンド」がサブクエリとして選択されている。
「攻撃力」は、検索対象カードの攻撃力のパラメタである。
図7の例では攻撃力「2」と「等しい」という条件が選択されているため、攻撃力2のカードのみがサブクエリとして選択されていることになる。
「体力」は、検索対象の体力のパラメタである。
図7の例では体力「15」と「以下」という条件が選択されているため、体力15以下の各数値(1、2、3、4、5、6、7、8、9、10、11、12、13、14、15)がサブクエリとして選択されていることになる。
即ち、静的データでは、予め全てのデータの値の範囲を検証することが出来るため、例えば「攻撃力3以下」というような範囲で検索条件が設定されてる場合、値の範囲のOR条件として定義できる。即ち、「攻撃力3以下」であれば「3or2or1」として定義できる。つまり、サブクエリ「3」、「2」、及び「1」のor条件の集合体として、「攻撃力3以下」という検索条件を表すことができる。
「トークンの有無」は、検索対象として「トークン」のカードを含むか否かである。
図7の例では、「ON」が選択されていないため、「トークン」は検索対象に含まれない。
「カードテキスト検索」は、カードテキストに含まれる「キーワード」による検索であり、事前にいくつかの「キーワード」が設定され選択できるようになっている。
図7の例では、「特殊能力を持つ」が選択されているため、「特殊能力を持つ」というキーワードがサブクエリとなり、当該サブクエリ(キーワード)を有するカードのみが検索対象となる。
キーワイドについては、例えばn−gram法を用いると、検索対象データと、検索条件の両方を、n個の文字の組み合わせの集合としてモデル化することができる。より具体的に言えば、「サムライ」というキーワードをn−gramの一種である2−gramで表現した場合、「サム」、「ムラ」、「ライ」という3つの要素に分解でき、「サムライ」というキーワード検索を、「サム and ムラ andライ」という3つのクエリ条件の論理積として定義することができる。すなわち、キーワード検索のような、クエリ表現の自由度が一見高いように見える検索においても、検索条件を有限個のプリミティブなサブクエリの組み合わせとして表現することができる。
本実施形態の情報処理システムの検索処理では、上述した様に、このようなプレイヤーにより入力された検索条件を、再利用性の高い最小単位のサブクエリへと分割し、夫々を、事前の検索結果(サブクエリの事前の実行結果)を用いることで、極めて高速な検索処理が実現される。
つまり、本実施形態の検索処理のポイントは、上述した様に、その前に、本発明のデータ導入時処理が実行されていることである。そこで、以下、本発明のデータ導入時処理の詳細について説明する。
【0056】
本実施形態のデータ導入時処理における静的分析では、検索対象データの集合(
図4の検索対象データDB300)と、クエリを構成する最小単位のサブクエリの集合(
図4のクエリ集合DB200)の2つを入力として受け取り、その結果として、全てのサブクエリの実行結果(検索結果)が、夫々固有の識別子により識別可能になっている必要がある。
この識別により、検索処理の段階では、サブクエリを実行(検索)することなく、異なるサブクエリの実行結果を用いた統合の処理だけで、検索結果を生成することが可能になる。
具体的には例えば、検索対象データDiは、次式(2)に示すように、一意の識別子と、検索対象属性群の組み合わせから構成することができる。
Di:={IDi,attr1,attr2,attr3,・・・,attrI}
・・・(2)
ここで、IDiは、検索対象Diを一意に識別することができる識別子である。例えば、シリアル番号を用いて識別子を実装することもできるが、本実施形態では、特定の識別子の付与方法には依存しない。
さらに、attr1乃至attrIは、検索対象Diに関連付けられたI個(Iは任意の整数値)の属性データである。
【0057】
例えば、
図8は検索対象データの具体例を示す図である。
図8の例では、夫々の行が、固有の識別子を持つ、固有のゲーム内データ(検索対象データ)に対応している。
例えば、
図8の1行目のデータは、クラス「ロイヤル」、レアリティ「レジェンド」、攻撃力「10」の条件に該当するデータであり、ID「0001」のデータである。
また例えば、2行目のデータは、クラス「ウィッチ」、レアリティ「レジェンド」、攻撃力「7」の条件に該当するデータであり、ID「0002」のデータである。
ここで、
図8の例では、「クラス」、「レアリティ」、「攻撃力」が検索対象の属性であり、これらの属性は、入れ替えることや追加することも、もちろん自在に可能である。
これらのデータは、ゲーム内にu個(uは1以上の任意の整数)存在し、ゲーム内の検索対象データとして全て網羅することができる。
【0058】
本実施形態のデータ導入時処理では、このような
図8の構造のゲーム内の検索対象データについて、クエリの集合から抽出された複数種類のサブクエリの夫々が実行(検索)される。そして、複数種類のサブクエリ毎に、サブクエリの実行結果と、当該サブクエリを識別可能な情報とを対応付けたPLデータが生成され、PLデータDB400に格納される。
【0059】
図9は、このようなPLデータDB400の構造例を示す図である。
図9の例では、y軸がテーブルの属性の種類の軸、x軸がサブクエリの種類の軸、z軸は対応するサブクエリの検索結果(答えの1つ)の軸を示している。
テーブルの属性の種類とは、任意の属性の種類を表す。例えば
図7の例で言えば、縦方向の各検索項目に該当し、例えば
図8の例で言えば、「クラス」、「レアリティ」、「攻撃力」等が該当する。
図9の例で言えば、テーブルの属性の種類は、n(nは1以上の任意の整数値)種類存在する。
サブクエリの種類とは、例えば
図7の例で言えば、横方向の項目等に該当し、任意のサブクエリの種類を表している。例えば、
図8の例で言えば、「攻撃力」という属性に対して取り得る値、具体的には例えば1行目では「10」が該当する。
図9の例で言えば、サブクエリの種類は、m(mは1以上の任意の整数)種類存在する。
対応するサブクエリの検索結果とは、テーブルの属性の所定の種類(例えば「攻撃力」)のうち所定のサブクエリの種類(例えば「10」)に対応するサブクエリの実行結果(検索結果)を示す。
図9の例で言えば、対応するサブクエリの検索結果は、0から始まるq(qは1以上の任意の整数値)個の要素を持つ配列であり、夫々の配列のサイズはサブクエリ毎に異なる。
例えば、テーブルの属性の種類「K」の中でサブクエリの種類「P」についての当該サブクエリの実行結果は、(X,Y)=(P,K)の座標においてZ軸(対応するサブクエリの検索結果の軸方向)に配列される1以上の立方体により示されることになる。ここで、
図9中で示された立方体CPKRは、ある特定の属性の種類「K」に、ある特定のサブクエリの種類「Y」で問い合わせた時の答えの1つ(検索結果の集合体の1つ)に対応するものである。
【0060】
このような
図9の構造のPLデータDB400が用意できると、上述の検索処理が実行可能になる。
上述した様に、本実施形態の検索処理では、検索クエリ条件から分割された1種類以上のサブクエリの夫々を結合した論理演算式を演算することにより、検索結果が生成される。
本実施形態では、演算順番決定部141(
図4)が、この論理演算式の演算の順番を最適にするように決定することで、高速な検索を可能にしている。そこで、以下、
図10を参照して、演算順番決定部141の具体的な処理内容について説明する。
図10は、サーバ2の検索結果生成部124内に設けられた演算順番決定部141において実行される、検索コストの見積もり処理及び実行順序の最適化処理の一例を示す図である。
【0061】
演算順番決定部141は、実行結果抽出部123が抽出したサブクエリの実行結果を統合する際(論理演算式による集合演算をする際)の集合演算コストを、サブクエリの実行結果の集合の要素数を参照することにより、見積もることができる。
このように、演算コストを見積もることで、演算順番決定部141は、演算の順番を最適化して、クエリ条件が複雑な場合であっても、少ない回数の比較演算だけで集合演算を実行することができるようになる。
図10の例では、まず、初期状態のクエリとして、検索対象の属性(attribute)と、その値(サブクエリ)の列(condition)の組の配列としてクエリが作成されている。なお、夫々の値はOR条件で接続されている。
例えば、上図の一行目の場合であれば、検索対象の属性は「char_type」であり、その値(サブクエリ)の列は「1」である。
ここで、このクエリ自体は、ユーザインターフェイス制御部100により制御されたユーザインターフェイスから入力されたものをそのまま連結したものであるため、効率性等は考慮されていない。
そこで、
図10に示すように、演算順番決定部141は、選択率が最も低いサブクエリ、言い換えると、最も制約が厳しく該当するデータ数が最小個数となる絞り込み条件から順に実行するように、サブクエリの列を並び替えるのである。
より具体的に言えばは、演算順番決定部141は、PLデータDB400においてサブクエリに対応する検索結果の集合の要素数(サブクエリの実行結果の数)を参照し、集合の要素数が少ない種類のサブクエリから順にソートすることにより、集合演算を適用するときに最も効率の良い順序を求める。
なお、
図10の下図で追加されている属性「cost」は、その条件において返される結果の数(PLデータDB400においてサブクエリに対応する検索結果の集合の要素数)を示しており、演算順番決定部は、この「cost」の値をもとに集合演算を適用するときに最も効率の良い順序を提案する。
【0062】
以上本発明の一実施形態について説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【0063】
例えば、
図4の機能的構成は例示に過ぎず、特に限定されない。即ち、上述した一連の処理を全体として実行できる機能が情報処理システムに備えられていれば足り、この機能を実現するためにどのような機能ブロックを用いるのかは特に
図4の例に限定されない。また、機能ブロックの存在場所も、
図4に特に限定されず、任意でよい。例えば、サーバ2の機能ブロックをプレイヤー端末1等に移譲させてもよい。逆にプレイヤー端末1の機能ブロックをサーバ2等に移譲させてもよい。
また、一つの機能ブロックは、ハードウェア単体で構成してもよいし、ソフトウェア単体で構成してもよいし、それらの組み合わせで構成してもよい。
【0064】
各機能ブロックの処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータ等にネットワークや記録媒体からインストールされる。
コンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータ、例えばサーバの他汎用のスマートフォンやパーソナルコンピュータであってもよい。
【0065】
このようなプログラムを含む記録媒体は、プレイヤーにプログラムを提供するために装置本体とは別に配布される図示せぬリムーバブルメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でプレイヤーに提供される記録媒体等で構成される。
【0066】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段等より構成される全体的な装置を意味するものとする。
【0067】
また例えば、検索対象データとしては、上述の実施形態では、主にオンラインゲーム等で用いられる静的なデータが採用されていたが、特にこれに限定されない。
本発明が適用される静的分析技術は、オフライン型のカーナビゲーションシステムや、オフライン型の電子辞書のようなオフラインコンテンツ、Web上の固定的な文章集合を対象とした全文検索エンジン等にも用いることもできる。
さらには、本発明が適用される静的分析技術は、単純な文字列検索や数値探索のみに限定されない。具体的には、本発明は、文字列検索等の特定の検索手段には依存しないため、例えば画像検索等の極めて複雑な条件を導入しても、静的に解決することができる。
これにより、極めて複雑な検索条件であっても、クエリの種類を静的に定めることができるものであれば、どのようのものでも対応することができる。
より具体的に言えば、クエリを構成する夫々の条件間において、減少性、冪等性、クエリ条件の交換可能性がある、という3つの条件下においてクエリ条件を表現できるのであれば、検索対象データとして採用することができる。
ここで、減少性とは、検索結
果は、常に検索対
象よりも小さくなるというものである。
冪等性とは、同じサブクエリを、同じデータに何度も実行しても必ず同じ結果になる。つまり、キャッシュできるというものである。つまり、「現在時間で検索」のような条件がないというものである。
交換可能性とは、条件Aかつ条件Bの演算結果は、条件Bかつ条件Aの検索結果と、必ず同じになるということであり、本発明においては、この交換可能性を根拠として、サブクエリの集合演算の比較順序を並び替え、最小の比較回数で、検索結果を求めることができる。
【0068】
換言すると、本発明が適用される情報処理システムは、上述の
図1や
図4の実施形態としての情報処理システムを含め、次のような構成を有する各種各様の実施形態を取ることができる。
即ち、本発明が適用される複数の情報処理システムは、
所定のユーザインターフェイスから入力可能であり、かつ、クエリを構成する夫々の条件間において、減少性、冪等性、交換可能性の3つを満たすクエリ条件を用いて、検索対象データに対して検索の処理を実行する情報処理システムであって、
検索の処理前に処理を実行する前処理実行手段(例えば
図4のデータ導入時処理部151)と、
検索の処理を実行する検索処理手段(例えば
図4の検索処理部152)と、
を備え、
前記前処理実行手段は、
前記検索対象データで使用され得るクエリ条件の集合から、複数種類のサブクエリを抽出するクエリ抽出手段(例えば
図4のサブクエリ抽出部110)と、
前記クエリ抽出手段により抽出された前記複数種類のサブクエリの夫々を実行するクエリ実行手段(例えば
図4のサブクエリ実行部111)と、
前記クエリ抽出手段により抽出された前記複数種類のサブクエリ毎に、前記クエリ実行手段による実行結果と、当該実行結果に対応する種類のサブクエリを識別可能な情報とを対応付けたデータを、対応付データとして生成する対応付け手段(例えば
図4のPLデータ生成部112)と、
前記対応付け手段により生成された、前記複数種類のサブクエリ毎の対応付データを管理する管理手段(例えば
図4のPLデータ管理部120)と、
を含み、
前記検索処理手段は、
前記ユーザインターフェイスから検索用に入力されたクエリ条件を、検索クエリ条件として受け付ける受付手段(例えば
図4のユーザインターフェイス制御部100)と、
前記受付手段により受け付けられた前記検索クエリ条件を、1種類以上のサブクエリの集合体に分割する分割手段(例えば
図4の分割部122)と、
前記分割手段により分割された前記集合体に属する前記1種類以上のサブクエリの夫々を識別可能な情報に基づいて、当該1種類以上のサブクエリの夫々の実行結果を前記対応付データの中から抽出する実行結果抽出手段(例えば
図4の実行結果抽出部123)と、
前記実行結果抽出手段の抽出結果に基づいて、前記受付手段により受け付けられた前記検索クエリ条件に対する検索結果を生成する検索結果生成手段(例えば
図4の検索結果生成部124)と、
を含む情報処理システムである。
【0069】
また、前記検索結果生成手段は、前記実行結果抽出手段により抽出された前記1種類以上のサブクエリの夫々の実行結果に対して決定された所定の順番に従って、当該1種類以上のサブクエリの夫々の実行結果の論理演算をすることにより、前記受付手段により受け付けられた前記検索クエリ条件に対する検索結果を生成し、
前記実行結果抽出手段により抽出された前記1以上のサブクエリの夫々の実行結果について、前記検索対象データにおけるサブクエリの実行結果の量に応じた検索コストを演算し、当該検索コストに基づいて、前記検索結果生成手段における前記論理演算の前記所定の順番を決定する処理順番決定手段(例えば
図4の演算順番決定部141)を、
さらに備えることができる。
【0070】
このような、サブクエリの検索コストの見積もりと実行順序の制御による最適化により、本発明は、従来方式よりもはるかに効率的に検索処理を実行することができる。
【0071】
また、前記所定のユーザインターフェイスは、複数種類の属性毎に、複数種類のサブクエリの中から所定の1種類を選択する操作機能を、
さらに備えることができる。
【0072】
これにより、プレイヤーが行う検索の幅を広げることができ、また、検索対象データを追加等する場合であっても、容易に対応することが可能となる。
【0073】
また、所定種類の属性の所定種類のサブクエリに対する前記クエリ実行手段による実行結果は、前記所定種類の属性、前記所定種類のサブクエリ、及び、前記検索対象データにおける、当該所定種類の属性の当該所定種類のサブクエリの実行結果の量を、
さらに含むことができる。
【0074】
これにより、任意に所定の種類のサブクエリ及び所定種類の属性を決定することが可能となり、静的データを、より効率的にかつ高速に扱うことができる。
【解決手段】サブクエリ抽出部110は、サブクエリを抽出する。PLデータ生成部112は、PLデータを生成する。PLデータ管理部120は、PLデータを管理し、PLデータDBに格納する。ユーザインターフェイス制御部100は、ユーザにより入力されたクエリ条件を受け付ける。クエリ条件送信制御部101は、クエリ条件をサーバ2へ送信させる。クエリ条件取得部121は送信されてきたクエリ条件を取得する。実行結果抽出部123は、サブクエリの実行結果を抽出する。検索結果生成部124は、抽出された実行結果から、検索結果を生成する。検索結果送信制御部125は、検索結果をプレイヤー端末1へ送信させる。検索結果取得部102は送信されてきた検索結果を取得する。検索結果表示制御部103は、検索結果を表示させる。