JP2015149024A - 検索システムおよびその制御方法、並びにプログラム - Google Patents

検索システムおよびその制御方法、並びにプログラム Download PDF

Info

Publication number
JP2015149024A
JP2015149024A JP2014022780A JP2014022780A JP2015149024A JP 2015149024 A JP2015149024 A JP 2015149024A JP 2014022780 A JP2014022780 A JP 2014022780A JP 2014022780 A JP2014022780 A JP 2014022780A JP 2015149024 A JP2015149024 A JP 2015149024A
Authority
JP
Japan
Prior art keywords
search
search request
request
predicted
prediction
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2014022780A
Other languages
English (en)
Inventor
慶諾 大嶋
Keita Oshima
慶諾 大嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
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
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014022780A priority Critical patent/JP2015149024A/ja
Publication of JP2015149024A publication Critical patent/JP2015149024A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ステートレスWeb IFを前提とした際に、複雑な検索条件を含む多様なクエリを許容すると性能要件を満たせない場合がある。【解決手段】検索条件が指定された検索リクエストを受け付ける受付手段と、前記検索条件に従ってデータの検索を実行し、検索結果を当該検索リクエストに対して応答する検索手段と、受け付けた検索リクエストを記録する記録手段と、前記記録された検索リクエストに基づき、以降の検索リクエストを受け付けるタイミングと検索条件とを予測する予測手段と、前記予測手段にて予測した検索リクエストのタイミングと検索条件とに従って、前記以降の検索リクエストを受け付ける前に、前記データの検索を行って検索結果を取得する取得手段とを有し、前記検索手段は、前記予測した検索リクエストに対応する検索リクエストを受け付けた場合、当該受け付けた検索リクエストによるデータの検索を実行する代わりに、前記取得手段にて取得された検索結果を用いて応答する。【選択図】 図1

Description

本発明は、外部システムとのデータ連携を行う検索システムおよびその制御方法、並びにプログラムに関する。
特許文献1はデータベース接続をしてURL要求に応答するWebサーバを開示している。
特開2002−91771号公報
外部システムから検索リクエストを受け付ける検索システムは外部システムからの複雑な検索条件を含む多様なクエリを許容する必要がある。その結果、定期的に実行されるクエリであっても、複雑なクエリが発行された場合や検索負荷が集中した場合などに、検索結果の応答が遅延してしまう。特許文献1でもデータベースへのクエリが集中し、スループットが低下する可能性がある。
本発明は、定期的なリクエストに対してスループットを低下させずに応答するために、検索リクエストに対して予測検索処理をリクエストに先立って事前実行する手段を提供する。
上記課題を解決するために本願発明は以下の構成を有する。すなわち、検索条件が指定された検索リクエストを受け付ける受付手段と、前記検索条件に従ってデータの検索を実行し、検索結果を当該検索リクエストに対して応答する検索手段と、前記受付手段にて受け付けた検索リクエストを記録する記録手段と、前記記録手段にて記録された検索リクエストに基づき、以降の検索リクエストを受け付けるタイミングと検索条件とを予測する予測手段と、前記予測手段にて予測した検索リクエストのタイミングと検索条件とに従って、前記以降の検索リクエストを受け付ける前に、前記データの検索を行って検索結果を取得する取得手段とを有し、前記検索手段は、前記予測手段にて予測した検索リクエストに対応する検索リクエストを前記受付手段が受け付けた場合、当該受け付けた検索リクエストによるデータの検索を実行する代わりに、前記取得手段にて取得された検索結果を用いて応答する。
本願発明により、検索リクエストに対して検索処理による待ち時間を抑え、検索結果を返すことが出来る。更に、検索性能を維持しつつ、多様なクエリを許容できる。
検索システムのブロック図。 検索リクエスト、検索処理、結果レスポンスのタイミングチャート。 検索リクエストとバッチ検索処理のタイミングチャート。 検索処理のフローチャート。 検索対象のテーブル例を示す図 クエリの例を示す図。 クエリの例を示す図。 クエリ履歴の例を示す図。 クエリ記録処理のフローチャート。 検索リクエストと検索対象期間のタイミングチャート。 バッチ検索処理の登録処理のフローチャート。 タスクスケジュールテーブルの例を示す図。 タスクスケジューラとタスク実行処理のフローチャート。 第二の実施形態に係るバッチ検索処理の登録処理のフローチャート。
以下、本発明を実施するための形態について図面を用いて説明する。
なお、本明細書では検索システムの一例としてマネージド・プリント・サービス(MPS)で利用する検索システムを例にとって説明する。MPSは、企業のオフィス出力環境の現状を分析し、最適な出力環境を提案、構築するアウトソーシングサービスである。MPSを提供するベンダーは、顧客である企業のオフィス環境から設置された印刷デバイスや利用しているソフトウェア、サービスの情報を収集、蓄積し、分析のために利用する。また、オフィス環境からの情報収集のためのシステムは、クラウドサービス上に移行される傾向にある。このため、印刷デバイスの販売会社は、独自のシステムを組まなくても、クラウドサービスを利用することで顧客企業へMPSを提供することが出来る。
クラウドサービス上のMPSは、複数の(販売会社の)外部システムと連携を行うために、外部システムとのインターフェースを標準化する。これには、REST(Representational State Transfer)に準ずるインターフェースを採用することができる。RESTの原則の一つは、ステートレスなクライアント/サーバプロトコルであるという点である。ステートレスなプロトコルにより、クライアントおよびサーバの構成をシンプルに出来るという効果が得られる。
<第一の実施形態>
[システム構成]
図1(a)は、本実施形態に係るシステム構成の例を示すブロック図である。検索システム1は、Webサーバ3、検索対象データベース4、バッチ検索サーバ5、および検索結果データベース6を含む。Webサーバ3は、RESTの仕様に準拠したプロトコルを実装しているものとする。Webサーバ3は、クライアント2からの検索リクエストを受信し、検索リクエストに含まれるクエリに従って検索対象データベース4から検索した結果データをレスポンスとして返す。また、バッチ検索サーバ5は、内部のタスクスケジューラ(不図示)に登録された検索タスクを実行し、検索タスクに含まれるクエリに従って検索対象データベース4から検索した結果データを検索結果データベース6へ保存する。Webサーバ3は、後述する条件に従い、クライアント2からの検索リクエストの応答として、バッチ検索サーバ5によって検索された検索済みの結果データも返す。Webサーバ3は、受信した検索リクエストをクエリ履歴データベース7に記録しておく。
本実施形態において、クライアント2、Webサーバ3、およびバッチ検索サーバ5はそれぞれ、情報処理装置としての各部位を備える。各装置の構成例を図1(a)に示す。CPU11は、ROM13等に格納されたプログラムを読み出して実行することで装置の全体を制御する。RAM12は、一次記憶領域であり、プログラムの実行に伴うワークメモリ等として用いられる。ROM13は、記録部であり、本実施形態に係るプログラムや設定値等のデータを保持する。I/F14は、外部装置とネットワークを介して接続するためのインターフェースである。入出力装置15は、ディスプレイ装置やキーボード等のユーザとの情報のやり取りを行うためのインターフェースである。HDD16は、記憶領域であり、各種データやプログラム等を格納する。また、各構成要素は、バス17を介して互いに接続されており、データの送受信が可能である。
なお、図1(a)において、Webサーバ3とバッチ検索サーバ5とは異なる装置として示しているがこれに限定するものではなく、物理的に同じ装置であってもよい。また、1の機能を提供するサーバが物理的に複数の装置によって構成されていてもよい。また、各データベースは、サーバが備えるHDD内に構成されていても良いし、別の装置として設けられていてもよい。また、各装置間の接続形態としては、内部ネットワークもしくはインターネット等の外部ネットワークを介していてもよい。また、有線/無線も問わない。
[処理に係るタイミングの説明]
図2は、本実施形態に係る検索リクエスト、検索処理、および結果レスポンスのタイミングを示すタイミングチャートの例である。図2では、横軸に時間を示し、各処理の処理時間と、各処理に対するリクエスト/レスポンスのタイミングが示されている。なお、検索リクエストには、検索の処理内容を示す検索クエリ(以下、単にクエリと称する)が含まれているものとする。なお、以下において、検索リクエストの受信に応じて即時に行われる検索処理を「即時検索処理」と記載し、予めタスクとしてスケジュール登録されている検索処理を「バッチ検索処理」と記載する。
図2(a)は、Webサーバ3が、検索リクエスト100に対応して、検索対象データベース4に対する即時検索処理102を行い、その処理が完了したタイミングで、結果レスポンス101を返すことを示している。
図2(b)は、バッチ検索サーバ5のタスクスケジューラ(不図示)においてバッチ検索処理108がすでに実行完了している状態で、検索リクエスト106を受信した際の例を示している。この時、実行済みのバッチ検索処理108に一致する検索リクエスト106が受信されると、Web検索サーバ5は、そのバッチ検索処理108の結果を即、結果レスポンス107として要求元に返すことを示している。
図2(c)は、バッチ検索処理111がすでに開始済みであり、かつ、未完了の状態の際に、その開始済みのバッチ検索処理111に一致する検索リクエスト109が受信された場合の例を示している。Webサーバ3は、検索リクエスト109が受信されると、すでに開始されているバッチ検索処理111の完了を待ち、その後、バッチ検索処理111の完了のタイミングでその結果を、結果レスポンス110として返すことを示している。
図3は、通常の検索リクエストとバッチ検索処理の関係の例を示すタイミングチャートである。図3は、横軸に時間を示し、Webサーバ3は、定期的に同じ内容の検索リクエスト100、103を受信していることを示している。Webサーバ3は、検索リクエスト100に対応して即時検索処理102を行い、その結果を結果レスポンス101として返す。また、Webサーバ3は、検索リクエスト103に対応して即時検索処理105を行い、その結果を結果レスポンス104として返す。
また、Webサーバ3は、検索リクエスト100と検索リクエスト103が定期的な検索リクエストであることを判定し、その後のタイミング112で更なる検索リクエストが受信されることを予測する。一方、Webサーバ3は、即時検索処理102、105に基づき、タイミング112で要求されることを予測した検索リクエストに対する検索処理に要する検索処理時間が予測時間113で示す長さとなることも予測する。これらの予測結果に基づいて、Webサーバ3は、予測した検索リクエストに対応するバッチ検索処理をタイミング114で開始するようにバッチ検索サーバ5のタスクスケジューラ(不図示)へ登録する。その後、タスクスケジューラは、予測に基づいて登録したバッチ検索処理を、検索リクエストが受信されると予測したタイミング112までに完了できるように実施することで、実際に検索リクエストを受信した際に即時の応答を可能とする。
[処理フロー]
図4は、本実施形態におけるWebサーバ3が実行する検索処理の流れを示すフローチャートである。図4は、図2および図3に示すタイミングチャートの動きを実現するための処理を示す。本処理は、Webサーバ3のCPUがROM等に格納されたプログラムを読み出し、実行することで実現される。
S1000にてWebサーバ3は、クライアント2から検索リクエストを受信することで以降の処理を実行する。S1001にて、Webサーバ3は、受信した検索リクエストに含まれるクエリをクエリ履歴データベース7へ記録する。本処理工程の詳細については、図9を用いて後述する。S1002にて、Webサーバ3は、バッチ検索サーバ5へ、受信した検索リクエストに含まれるクエリに対応するバッチ検索処理の状態について問い合わせる。ここでの「対応する」とは、受信した検索リクエストに含まれるクエリと、登録されているバッチ検索処理のクエリとが一致することをいうものとする。そして、Webサーバ3は、問い合わせ結果に対する判定(S1003〜S1006)を行う。
問い合わせの結果、対応するバッチ検索処理が登録されていない場合、すなわち、バッチ検索サーバ5のタスクスケジューラにタスクが予約されていない場合(S1003にてNO)、S1005に進む。S1005にて、Webサーバ3は、受信した検索リクエストに含まれるクエリを用いて即時検索処理を実行する。
問い合わせの結果、対応するバッチ検索処理が登録されているが、当該バッチ検索処理がまだ開始していない場合(S1003にてYES、かつ、S1004にてNO)、S1005に進む。この場合、Webサーバ3は、受信した検索リクエストに含まれるクエリを用いて即時検索処理を実行する。
問い合わせの結果、受信した検索リクエストに含まれるクエリに対応するバッチ検索処理が既に終了している場合(S1003にてYES、かつ、S1004にてYES、かつ、S1006にてYES)、S1007へ進む。S1007にて、Webサーバ3は、すでに処理が完了しているクエリに対応するバッチ検索処理の結果をバッチ検索サーバ5から取得する。
問い合わせの結果、受信した検索リクエストに含まれるクエリに対応するバッチ検索処理が既に開始しているが終了していない場合(S1003にてYES、かつ、S1004にてYES、かつ、S1006にてNO)、S1008へ進む。S1008にて、Webサーバ3は、処理中のバッチ検索処理の終了を待つ。その後、Webサーバ3は、バッチ検索処理の完了後に(S1006にてYES)、S1007にて、そのバッチ検索処理の結果をバッチ検索サーバ5から取得する。
即時検索処理(S1005)もしくはバッチ検索処理(S1007)のいずれかが完了した後、S1009にて、Webサーバ3は、取得した検索結果をクライアント2へ返却する。そして、S1010にて、Webサーバ3は、検索処理に要した時間を記録する。最後に、S1011にて、Webサーバ3は、以降に実行されるバッチ検索処理を予測し、その予測したバッチ検索処理をバッチ検索サーバ5のタスクスケジューラ(不図示)へ登録する。本工程における処理の詳細は、図12を用いて後述する。そして、本処理フローを終了する。
[クエリの記録]
次にWebサーバ3が受信する検索リクエストに含まれるクエリとそのクエリの記録について説明する。図5は、本実施形態に係る検索対象データベース4に格納されているテーブル300の構成例を示す。図5のテーブル300において、横軸方向にテーブルのカラムを示し、縦軸方向にデータの各レコードを示す。図5において、最初の1行目は各カラムに格納されるデータの項目名を示している。本実施形態においては、図5のようにTenantID301、IncidentNo302、TaskNo303、Received304、Respond305、DownTime306、などの項目を持つテーブルを例に挙げて説明を行う。なお、図5に示すテーブルのテーブル名は「incidentlogs」であるとする。
図6は、Webサーバ3が受信する検索リクエストに含まれるクエリの例と、そのクエリが記録されるときのデータ構造の例を示すデータ例の図である。例えば、
「受信日時(Received)の値が2013年2月25日から2013年3月25日の間でダウンタイム(DownTime)が1時間を超えるインシデントログを取得する」
といった検索を行うためのクエリを含む検索リクエストは、図6(a)のURI310にて示されるURI(Uniform Resource Identifier)となる。
URI310内のパラメータ311は、検索対象のテーブル名(「incidentlogs」)を示し、インシデントログを取得することを示す。また、URI310内のパラメータ312は、本実施形態における検索リクエストのクエリ文字列部分を表している。本実施形態において指定可能なクエリ文字列には、クエリ条件を詳細に指定するための演算子や関数を使用することが出来る。例えば、条件の論理積(and)や論理和(or)をとるための論理演算子がサポートされる。また、指定された項目の値の範囲を指定するために「より大きい」(gt)や「以下」(le)、「等しい」(eq)、等々の関係演算子がサポートされる。パラメータ312に示すクエリ文字列を解析すると、図6(b)に示されるような、ノード320をルートとする、各ノードから構成される構文木が構成される。
ノード323、327、328から構成される部分木は、Received304の値が「2013年2月25日12:00:00」よりも大きい(後の時間)という条件を表している。ノード324、329、330から構成される部分木は、Received304の値が「2013年3月25日12:00:00」以下(以前の時間)という条件を表している。更に、ノード322、325、326から構成される部分木は、DownTime306の値が「3600」よりも大きいという条件を表している。本実施形態において、DownTime306は秒単位であるものとし、したがって、ノード322、325、326から構成される部分木は、ダウンタイムが1時間を超える、という条件を表している。これらの論理積をとって上述のような検索条件を表すことになる。なお、検索条件についてはここに挙げたものに限定するものではなく、他の関係演算子や関数を利用可能にしてもよい。
Webサーバ3は、構文木を構成するノードから、日時指定項目の値を指定しているノードを抽出する。例えば、Received304は日時指定項目であり、DownTime306は日時指定項目では無い。よって、図6(b)の例において、日時指定項目の値を指定しているノードはノード328とノード330である。Webサーバ3は、ノード320〜330から構成される構文木から、図6(c)に示すような記録用のクエリ文字列340を生成する。クエリ文字列340において、日時指定項目の値を指定しているノードであるノード328とノード330に対応する部分の記述は、値の置換用文字列である「{#1}」と「{#2}」に置き換えられている。さらに、Webサーバ3は、クエリ文字列340に対応する日時指定項目の値として、データ341を生成する。データ341において、値342は、前述の置換用文字列「{#1}」に対応するReceived304の値「2013−02−25T12:00:00」を示す。値343は、前述の置換用文字列「{#2}」に対応するReceived304の値「2013−03−25T12:00:00」を示す。
図7は、Webサーバ3が受信する別の検索リクエストに含まれるクエリの例と、そのクエリが記録される際のデータ構造の例を示す。図7(a)のURI400は、「受信日時(Received)の値が2013年3月中でダウンタイム(DownTime)が1時間を超えるインシデントログを取得する」というクエリを含む例を示している。図7の例において、「2013年」、「3月」を判定するために、日時指定関数としてのyear関数(ノード417)およびmonth関数(ノード419)を使用している。
図8は、クエリ履歴データベース7に記録されるクエリデータの例である。図8において、受信日時350は、検索リクエストの受信日時を示す。URI351は、検索リクエストのURIのうち、クエリ文字列を除いた文字列を示す。クエリ文字列352は、記録用クエリ文字列を示す。日時指定353は、日時指定項目の値を示す。処理時間354は、検索クエリの処理に要する処理時間を示す。なお、図8における日時指定353の値は、図6に示すところの置換位置(置換用文字列)および日時指定項目を省略して図示している。図8において、レコード355、356、357に示す例では、クエリ文字列352が同一で、日時指定353の値が異なる3つの検索リクエストがなされたことを示している。
[クエリ記録処理]
図9は、Webサーバ3が実行する、図4におけるS1001のクエリ記録処理の詳細を示すフローチャートである。
S1101にて、Webサーバ3は、図2や図3に示した検索リクエスト100、103などを受信した日時を、図8の受信日時350に示すデータとして格納する。S1102にて、Webサーバ3は、クエリ文字列を解析し、図6に例示されるような構文木を生成する。Webサーバ3は、S1104〜S1109の繰り返し処理にて、生成した構文木の葉ノード(図6のノード325、326、327、328、329、330に対応する末端のノード)を順に検査する。まず、S1104にて、Webサーバ3は、検査する対象として注目する葉ノードが日時指定項目であるか否かを判定する。Webサーバ3は、検索対象データベース4に格納されている検索対象テーブル(図5)の項目に対する日時指定項目リスト(不図示)を保持しており、構文木のノードと当該リストの値を比較することで日時指定項目を特定する。図6に示す構文木の例では、Received304が日時指定項目であるため、ノード327とノード329が日時指定項目のノードに該当する。DownTime306は日時指定項目では無いため、ノード325は日時指定項目のノードに該当しない。ノード326、328、330は値のノードであるため、日時指定項目のノードに該当しない。
注目している葉ノードが日時指定項目のノードの場合(S1104にてYES)、Webサーバ3は、葉ノードから構文木を辿り、S1105〜S1109の処理を実施する。まず、S1105にて、Webサーバ3は、着目している葉ノードの親ノードが日時指定関数か否かを判定する。日時指定関数には、例えば、日時型データの項目から年を取り出すyear関数や、月を取り出すmonth関数などがある。Webサーバ3は、クエリ文字列において使用可能な関数および関数の種類(日時指定関数か否か)の一覧を保持している。親ノードが日時指定関数の場合(S1105にてYES)、S1106にて、Webサーバ3は、注目ノードを親ノードへ移す。その後、S1107へ進む。一方、親ノードが日時指定関数でない場合(S1105にてNO)、S1107へ進む。
更に、注目しているノードの親ノードが関係演算子であり、かつ、兄弟ノードが値である場合(S1107にてYES、かつ、S1108にてYES)、S1109にてWebサーバ3は、日時指定項目、数値ノードである兄弟ノードの位置と値を記憶する。その後、S1110へ進む。注目しているノードの親ノードでない場合(S1107)もしくは注目しているノードの兄弟ノードが値でない場合(S1108にてNO)、S1110へ進む。
S1110にて、Webサーバ3は、全ての葉ノードに対するS1103〜S1109の処理が完了したか否かを判定する。未処理の葉ノードがある場合(S1110にてNO)、S1111にてWebサーバ3は、次の未処理の葉ノードを注目ノードとしてS1104へ戻る。一方、全ての葉ノードに対する処理が完了した場合(S1110にてYES)、S1112にて、Webサーバ3は、S1109にて記憶した情報を基に、図8に示すようにクエリ文字列と値を記録する。そして、本処理フローを終了する。
[検索リクエストの予測]
次にWebサーバ3が予測する検索リクエストについて説明する。図10は、検索リクエストに含まれるクエリが指定するデータの時間範囲の関係を示したタイミングチャートである。図10(a)において、検索対象期間200は、検索リクエスト100において指定されたクエリが検索条件として指定している時間指定項目の検索対象期間を表している。つまり、検索リクエスト100に含まれるクエリは、タイミング203以降(矢印201)で、かつ、タイミング204以前(矢印202)の範囲を指定している。具体的には、図6の例に対応させると、検索対象期間200はReceived304の指定範囲を示す。タイミング203は「2013−02−25T12:00:00」のタイミングを示す。タイミング204は、「2013−03−25T12:00:00」のタイミングを示す。
図10(b)は、さらに、同じ方法で3つの検索リクエストのタイミングを並べて示している。図10(b)において、検索対象期間の異なる、同じクエリ文字列の検索リクエストが3つ図示されている(検索リクエスト100a、100b、100c)。タイミング203a、203b、203cはそれぞれ、対応する検索リクエストの検索対象開始タイミングを示している。そして、検索対象開始タイミング間の間隔を間隔210と間隔211で示している。この場合において、間隔210と間隔211とが等間隔であると言うことは、タイミング203a、203b、203cの日時指定が定期的であることを示す。本実施形態において、Webサーバ3は、クエリ文字列で指定された日時指定項目の条件指定が全て定期的である場合、定期的に同じ範囲条件の検索リクエストが登録されていると判定する。
[バッチ検索処理の登録処理]
図11は、Webサーバ3が実行する、図4におけるS1011のバッチ検索処理の登録処理の詳細を示すフローチャートである。図11に示す処理の中で、Webサーバ3は、検索リクエストのクエリの周期性判定も合わせて行う。
S1201にて、Webサーバ3は、クエリ履歴データベース7に記録されている過去の記録(図8)から、クエリ文字列352が今回のクエリ文字列と一致する過去のクエリを検索する。なお、クエリ文字列が一致するクエリをいくつデータベースから取り出すようにしてもよい。例えば、上限なく、クエリ履歴データベース7に記録されている、クエリ文字列が一致するすべてのクエリ記録を対象としても良い。また、図10(b)に示すように最近のクエリ記録から固定数(図10(b)に示す例では3つ)だけを対象としても良い。また、あるいは、上限を決めて、上限数までの全てのクエリを対象としても良い。ここでの固定数や上限数は予め定義され、Webサーバ3のHDD等に保持されているものとする。
クエリ文字列が一致する過去の検索リクエストがある場合(S1202にてYES)、Webサーバ3は、S1203〜S1217の処理を図8の日時指定353に列挙される項目単位で順に実施する。Webサーバ3は、各項目について時間指定単位の粒度を順に上げながら、時間指定の周期性を確認する。ここで、時間指定単位の粒度とは、本実施形態において、周期性を判定する単位を指す。具体的には、「秒」→「分」→「時」→「日」→「月」→「年」の順を指す。Webサーバ3は、この順で、S1205〜S1209の処理を繰り返し、周期性が生じる粒度を探す。
S1208にて、Webサーバ3は、一番大きな粒度である「年」単位の比較まで実施したかを判定する。「年」単位までの比較が完了していない場合(S1208にてNO)、S1209にて、Webサーバ3は、次に大きな粒度の比較を実施するように粒度を変更し、S1205へ戻って繰り返し処理を行う。一方、「年」単位までの比較が完了している場合(S1208にてYES)、S1213へ進む。
S1205にて、Webサーバ3は、比較対象の複数クエリ間で現在の粒度における比較を行う。Webサーバ3は、周期性を判定するために、クエリ間で指定値を比較する処理を二段階で行う。1段階目は、S1206〜S1207で示される処理である。ここで、複数クエリ間で毎回同じ値が設定されている粒度である場合(S1206にてYES)、S1207にて、Webサーバ3は、未来の検索リクエストにおいても同じ値がクライアント2から指定されると想定し、この同じ値を指定する。例えば、図8の例では、「秒」「分」「時」「日」の粒度まで、同じ値(25日、12:00:00)が指定されているため、バッチ検索リクエストにおいても「25日、12:00:00」が指定される。
2段階目は、S1206、S1210〜S1212で示される処理である。複数クエリ間で同じ値が設定されていない粒度である場合(S1206にてNO)、S1210にて、Webサーバ3は、クエリ間の周期性判定を行う。ここでは、Webサーバ3は、現在判定中の粒度に揃えて、図10で説明した周期性判定を行う。例えば、図8の例では、#1、#2についてそれぞれ、「月」「年」の指定を「月」単位に揃えて比較する。図8の例では、等間隔(毎月)であることが判定できるため、この粒度で等間隔であると判定して(S1211にてYES)、S1212にてWebサーバ3は、以降の検索リクエストにおいても、翌月分が指定されると予測し、その予測に基づく値を生成する。そして、S1213へ進む。全ての間隔が等間隔でない場合(S1211にてNO)、本処理フローを終了する。
一つの指定項目について周期性の判定が終了したら、S1213にてWebサーバ3は、他に比較すべき項目が残っているかを判定する。未処理の時間指定項目が残っている場合(S1213にてNO)、S1214にて、Webサーバ3は、次の未処理の時間指定項目を対象としてS1204へ戻り、繰り返し処理を行う。
全ての時間指定項目について処理が完了した後(S1213にてYES)、これらに周期性がある場合には、Webサーバ3は、予測したクエリ(以下、単に予測クエリ)をバッチ検索サーバ5のタスクスケジューラへ登録する(S1215〜S1217)。S1215にて、Webサーバ3は、クエリ履歴データベース7に記録されたクエリ受付時間の周期から、次の検索リクエストの受信日時を予測する。受付時間の周期から日時を予測する方法としては、例えば、図11におけるS1204〜S1213と同様に時間指定単位の粒度ごとに判定しても良い。
また、S1216にて、Webサーバ3は、クエリ履歴データベース7に記録された各検索リクエストの検索処理時間(図4のS1010、図8の処理時間354)から、次の検索処理時間を予測する。予測方法としては、複数の処理時間の最大値を用いてもよいし、平均値を用いても良い。そして、S1217にて、Webサーバ3は、過去のクエリ文字列352と同じ、かつ、判定した周期性より生成した値を指定した予測クエリを、バッチ検索サーバ5のタスクスケジューラ(不図示)へ登録する。例えば、図8における、レコード357が今回記録したクエリであり、レコード355およびレコード356が過去に記録した同じ内容のクエリであるとする。この場合、予測クエリは、#1が「2013−05−25T12:00:00」、#2が「2013−06−25T12:00:00」となる。
バッチ検索サーバ5のタスクスケジューラ(不図示)に登録する予測されたクエリの実行時間は、図3のタイミング114で示した通り、S1215で予測した日時から、S1216で予測した処理時間を遡った日時とする。これによって予測した検索リクエストを受け付ける前に予めデータの検索を行うことができる。なお、同じクエリが記録から見つからない場合や、周期性が無かった場合には、予測クエリの登録は行わずに、本処理フローが終了する。
[タスクスケジュール]
図12は、本実施形態におけるバッチ検索サーバ5のタスクスケジューラ(不図示)が管理するタスクスケジュールテーブルの例である。バッチ検索サーバ5は、Webサーバ3からの予測クエリの登録指示(図11のS1217)に従って、開始予定時刻380、検索対象381、クエリ文字列382の値をそれぞれタスクスケジュールテーブルに保存する。
Webサーバ3が受信した検索リクエストに含まれるクエリと対応するバッチ検索処理のタスクが登録されていることを確認する場合(図4のS1002、S1003)、検索対象381とクエリ文字列382の値で判定する。
バッチ検索サーバ5は、ステータス383の値により、タスクの状態を管理する。例えば、ステータス383が「waiting」(待機中)である場合、検索処理は未開始である。ステータス383が「processing」(処理中)である場合、検索処理中である。ステータス383が「completed」(完了)である場合、検索処理は終了している。検索処理が終了している場合には、Webサーバ3は、検索結果データベース6に保持された結果データ385の情報から検索結果を取得することが出来る。Webサーバ3が、バッチ検索処理の状態を判定する場合(図4のS1004、S1006、S1008)には、バッチ検索サーバ5を介して、ステータス383を確認する。処理時間384は、バッチ検索処理が完了した時に記録するタスクにかかった処理時間である。
[バッチ処理]
図13は、バッチ検索サーバ5におけるタスクスケジューラ(不図示)と処理部(不図示)によるタスク実行の処理の詳細を示すフローチャートである。本処理フローは、バッチ検索サーバ5のCPUがROM等に記録されたプログラムを読み出して実行することにより実現される。
バッチ検索サーバ5は、タスクスケジューラ(不図示)により、図12に例示するタスクスケジュールテーブルに登録されたタスクを順に処理する(S1301〜S1313)。S1301にて、バッチ検索サーバ5は、タスクスケジュールテーブルを読み込む。そして、バッチ検索サーバ5は、タスク毎にステータス383を確認する。タスクのステータスが「waiting」の場合(S1302にてYES)、バッチ検索サーバ5は、S1303〜S1305の処理を行う。タスクのステータスが「processing」の場合(S1306にてYES)、バッチ検索サーバ5は、S1307〜S1309の処理を行う。タスクのステータスが「completed」の場合(S1310にてYES)、バッチ検索サーバ5は、S1311〜S1312の処理を行う。
ステータスが「waiting」の時に、タスクの開始予定時刻380を過ぎている場合(S1303にてYES)、S1304にて、バッチ検索サーバ5は、検索対象381とクエリ文字列382の内容に従って、タスクの開始を処理部(不図示)へ指示する。この指示を図13において、破線にて示す。なお、開示予定時刻を過ぎていない場合には(S1303にてNO)、S1306へ進む。各タスクに対応するバッチ検索処理(S1321〜S1323)を並行して進める一方、S1305にて、バッチ検索サーバ5は、実行を開始したタスクのステータス383を「processing」に更新する。その後、S1306へ進む。なお、本実施形態において、各タスクに対する処理が完了した場合、処理部(不図示)からタスクスケジューラ(不図示)にその旨および処理に要した時間が通知されるものとする。この通知を図13において、破線にて示す。
タスクのステータスが「processing」であり、かつ処理が完了していた場合(S1306にてYES、かつ、S1307にてYES)、S1308にて、バッチ検索サーバ5は、タスクのステータス383を「completed」に更新する。そして、S1309にて、バッチ検索サーバ5は、バッチ検索処理に要した処理時間をタスクスケジュールテーブルの処理時間384に記録する。なお、タスクが完了していない場合には(S1307にてNO)、S1310へ進む。
S1311にて、バッチ検索サーバ5は、処理が完了しているタスク(ステータスが「completed」のタスク)について、予め定義された所定時間が経過したか否かを判定する。所定時間が経過している場合(S1311にてYES)、S1312にて、バッチ検索サーバ5は、検索結果データベース6の検索結果データ及びタスクスケジュールテーブル(図12)における当該タスクのデータを削除する。その後、S1313に進む。
S1313にて、バッチ検索サーバ5は、タスクスケジュールテーブルにて登録されている次のタスクに注目し、S1302に戻って処理を繰り返す。
一方、タスクスケジューラからの指示(S1304)に基づいて処理部にて実行されるタスクに対し、バッチ検索処理(S1322)が完了すると、S1323にて、バッチ検索サーバ5は、検索結果データベース6に検索結果を格納する。バッチ検索サーバ5は、ここから完了した検索結果を、検索リクエストに対する応答としてWebサーバ3へ渡す。
以上述べたように、バッチ検索処理を予め実行し、検索結果を保存しておくことにより、検索リクエストに対して検索処理による待ち時間を抑えつつ、検索結果を返すことが出来る。この結果、検索システムもクライアントシステムも、ステートレスで標準的なインターフェースのまま連携システムの性能を維持することが可能となる。
MPSにおいて、検索リクエストが求めるデータは、検索リクエストが来るタイミングから見ると時間を遡ったデータを取得することになるため、予めバッチ検索処理を実行しておくことが有効となる。また、検索履歴におけるクエリ条件で指定されている時間指定からクエリ条件の周期性を判定して次のクエリ条件を決定することにより、動的にバッチ検索処理を生成することが出来る。したがって、クライアントのクエリ特性に依存することなく、標準的なインターフェース仕様を維持することが可能となる。
なお、本実施形態では、次の検索リクエストのみを予測した例を示したが、これに限られず、まとめて複数の検索リクエストを予測するようにしても構わない。
<第二の実施形態>
第二の実施形態として、直近で受け付けた検索リクエストの日時項目の粒度および処理時間に着目して次回の検索リクエストの予測を可能とする方法について説明する。第二の実施形態については、第一の実施形態と基本的な構成が同じであるため、第一の実施形態との差異についてのみ説明する。第二の実施形態におけるWebサーバ3は、前述の図7に示すクエリを処理する。
図14は、第二の実施形態におけるWebサーバ3が実行する、図4におけるS1011のバッチ検索処理登録の詳細を示すフローチャートである。図14に示す処理は、第一の実施形態における図11に示す処理に相当する。
S1401にて、Webサーバ3は、今回のクエリの指定項目の中で最も時間単位の粒度が細かい単位を選択する。図7の例において、時間単位の指定項目は、パラメータ432(「年」)とパラメータ433(「月」)であり、最も時間単位の粒度が細かい単位は「月」である。したがって、Webサーバ3は、この単位を記憶する(U=「月」とする)。
S1402にて、Webサーバ3は、今回のクエリの中で、Uと同じ単位の時間指定パラメータを全てインクリメントする。図7の例において、Uと同じ単位の時間指定パラメータはパラメータ433だけであるため、「3」を1インクリメントして「4」とする。繰り上がりがある場合には、次に小さい粒度の単位の値も更新する。例えば、「12月」を1インクリメントすると、「1月」になる。これに伴って、次に小さい粒度の単位である「年」の値も1インクリメントされる。このようにして、Webサーバ3は、予測クエリの指定値を生成する。
S1403にて、Webサーバ3は、今回クエリを受け付けた時間におけるUの単位の値を1インクリメントし、次回クエリの予測受付時間とする。図7の例では、翌月(「4月」)の同じ日時を予測受付日時とする。S1404にて、Webサーバ3は、次の検索処理にも今回と同じ時間がかかると想定する。そして、S1405にて、Webサーバ3は、S1403にて予測した受付時間から、S1404にて想定した処理時間の分だけ遡った日時に予測クエリの検索処理を登録する。そして本処理フローを終了する。
以上述べたように、検索条件から次回の検索処理を予測して、バッチ検索処理を登録しておけば、2回目以降の検索クエリからバッチ処理による応答時間改善効果が得られる。つまり、第二の実施形態によれば、第一の実施形態のように複数回の検索履歴が記録されるまで待たずに、応答時間改善効果が得られる。仮に周期性の無い(単発の)クエリだった場合には、バッチ検索結果は所定時間の経過後に破棄される(図13のS1312)。第一の実施形態の周期性判定と組み合わせて、検索履歴から周期性のある検索履歴が見つからなかった場合には、第二の実施形態に示す方法でバッチ検索処理を登録するようにしてもよい。
<その他の実施形態>
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (11)

  1. 検索条件が指定された検索リクエストを受け付ける受付手段と、
    前記検索条件に従ってデータの検索を実行し、検索結果を当該検索リクエストに対して応答する検索手段と、
    前記受付手段にて受け付けた検索リクエストを記録する記録手段と、
    前記記録手段にて記録された検索リクエストに基づき、以降の検索リクエストを受け付けるタイミングと検索条件とを予測する予測手段と、
    前記予測手段にて予測した検索リクエストのタイミングと検索条件とに従って、前記以降の検索リクエストを受け付ける前に、前記データの検索を行って検索結果を取得する取得手段と
    を有し、
    前記検索手段は、前記予測手段にて予測した検索リクエストに対応する検索リクエストを前記受付手段が受け付けた場合、当該受け付けた検索リクエストによるデータの検索を実行する代わりに、前記取得手段にて取得された検索結果を用いて応答することを特徴とする検索システム。
  2. 前記予測手段は、前記受付手段にて検索リクエストを受信するタイミングの周期性に基づいて以降の検索リクエストを受信するタイミングを予測することを特徴とする請求項1に記載の検索システム。
  3. 前記予測手段は、前記受付手段にて受け付けた検索リクエストに含まれる検索条件の周期性に基づいて以降の検索リクエストにおける検索条件を予測することを特徴とする請求項1または2に記載の検索システム。
  4. 前記検索条件は、データが記録された日時の指定を含み、
    前記予測手段は、前記検索条件に含まれる日時の指定において、粒度が小さい単位から順に周期性の判定を行うことを特徴とする請求項3に記載の検索システム。
  5. 前記取得手段は、前記予測手段にて予測した検索リクエストに対応する検索リクエストを前記受付手段が受け付けるまでに、当該予測した検索リクエストの処理が完了するように検索を開始することを特徴とする請求項1乃至4のいずれか一項に記載の検索システム。
  6. 前記記録手段は更に、前記検索手段にて実行した検索リクエストの処理時間を当該検索リクエストに対応づけて記録し、
    前記予測手段は、前記記録手段が記録している処理時間に基づいて、前記予測した検索リクエストの処理時間を予測し、当該予測した処理時間から前記取得手段が前記予測した検索リクエストの実行を開始する時間を決定することを特徴とする請求項5に記載の検索システム。
  7. 前記予測手段は、前記記録手段に記録された1または複数の検索リクエストに基づいて、以降の検索リクエストを予測することを特徴とする請求項1乃至6のいずれか一項に記載の検索システム。
  8. 前記予測した検索リクエストを前記取得手段が実行している間に当該予測した検索リクエストに対応する検索リクエストを前記受付手段が受信した場合、前記検索手段は、当該実行している処理の完了した後に、当該処理の検索結果を用いて応答することを特徴とする請求項1乃至7のいずれか一項に記載の検索システム。
  9. 前記取得手段は、前記予測した検索リクエストの検索結果は所定の時間が経過した後に削除することを特徴とする請求項1乃至8のいずれか一項に記載の検索システム。
  10. 検索条件が指定された検索リクエストを受け付ける受付工程と、
    前記検索条件に従ってデータの検索を実行し、検索結果を当該検索リクエストに対して応答する検索工程と、
    前記受付工程にて受け付けた検索リクエストを記録部に記録する記録工程と、
    前記記録部に記録された検索リクエストに基づき、以降の検索リクエストを受け付けるタイミングと検索条件とを予測する予測工程と、
    前記予測工程にて予測した検索リクエストのタイミングと検索条件とに従って、前記以降の検索リクエストを受け付ける前に、前記データの検索を行って検索結果を取得する取得工程と
    を有し、
    前記検索工程において、前記予測工程にて予測した検索リクエストに対応する検索リクエストを前記受付工程が受け付けた場合、当該受け付けた検索リクエストによるデータの検索を実行する代わりに、前記取得工程にて取得された検索結果を用いて応答することを特徴とする検索システムの制御方法。
  11. コンピュータを、
    検索条件が指定された検索リクエストを受け付ける受付手段、
    前記検索条件に従ってデータの検索を実行し、検索結果を当該検索リクエストに対して応答する検索手段、
    前記受付手段にて受け付けた検索リクエストを記録する記録手段、
    前記記録手段にて記録された検索リクエストに基づき、以降の検索リクエストを受け付けるタイミングと検索条件とを予測する予測手段、
    前記予測手段にて予測した検索リクエストのタイミングと検索条件とに従って、前記以降の検索リクエストを受け付ける前に、前記データの検索を行って検索結果を取得する取得手段
    として機能させ、
    前記検索手段は、前記予測手段にて予測した検索リクエストに対応する検索リクエストを前記受付手段が受け付けた場合、当該受け付けた検索リクエストによるデータの検索を実行する代わりに、前記取得手段にて取得された検索結果を用いて応答することを特徴とするプログラム。
JP2014022780A 2014-02-07 2014-02-07 検索システムおよびその制御方法、並びにプログラム Pending JP2015149024A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014022780A JP2015149024A (ja) 2014-02-07 2014-02-07 検索システムおよびその制御方法、並びにプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014022780A JP2015149024A (ja) 2014-02-07 2014-02-07 検索システムおよびその制御方法、並びにプログラム

Publications (1)

Publication Number Publication Date
JP2015149024A true JP2015149024A (ja) 2015-08-20

Family

ID=53892312

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014022780A Pending JP2015149024A (ja) 2014-02-07 2014-02-07 検索システムおよびその制御方法、並びにプログラム

Country Status (1)

Country Link
JP (1) JP2015149024A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019144915A (ja) * 2018-02-22 2019-08-29 学校法人 京都産業大学 検索装置、検索方法、およびプログラム
JP2022139297A (ja) * 2021-03-11 2022-09-26 ヤフー株式会社 情報処理装置、情報処理方法及び情報処理プログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019144915A (ja) * 2018-02-22 2019-08-29 学校法人 京都産業大学 検索装置、検索方法、およびプログラム
JP7116948B2 (ja) 2018-02-22 2022-08-12 学校法人 京都産業大学 検索装置、検索方法、およびプログラム
JP2022139297A (ja) * 2021-03-11 2022-09-26 ヤフー株式会社 情報処理装置、情報処理方法及び情報処理プログラム
JP7187597B2 (ja) 2021-03-11 2022-12-12 ヤフー株式会社 情報処理装置、情報処理方法及び情報処理プログラム

Similar Documents

Publication Publication Date Title
US10775976B1 (en) Visual previews for programming an iterative publish-subscribe message processing system
US10761813B1 (en) Assisted visual programming for iterative publish-subscribe message processing system
US11615084B1 (en) Unified data processing across streaming and indexed data sets
US11614923B2 (en) Dual textual/graphical programming interfaces for streaming data processing pipelines
US11676072B1 (en) Interface for incorporating user feedback into training of clustering model
US11675816B1 (en) Grouping evens into episodes using a streaming data processor
US11574242B1 (en) Guided workflows for machine learning-based data analyses
US12014255B1 (en) Generating machine learning-based outlier detection models using timestamped event data
US20190259040A1 (en) Information aggregator and analytic monitoring system and method
WO2015103997A1 (zh) 一种基于关键词检索的网络爬虫调度方法及系统
US11599396B2 (en) Resegmenting chunks of data based on source type to facilitate load balancing
JP2018205897A (ja) デバイス管理の自動化のための装置、サーバ、プログラム及び方法
JP2011034399A (ja) Webページの関連性抽出方法、装置、及びプログラム
JPH08314954A (ja) 情報処理方法及び装置
JP2015149024A (ja) 検索システムおよびその制御方法、並びにプログラム
JP2009140306A (ja) 情報提供サーバおよび情報提供方法
JP5812769B2 (ja) 文書管理システム、文書管理方法、プログラム
JP2009098791A (ja) 文書管理装置
JP5652282B2 (ja) 検索制御プログラム、検索制御方法、検索システム
JP4825717B2 (ja) 文書収集方法、文書収集プログラム及び文書収集装置
KR20080044605A (ko) 북마크 서비스 제공 방법 및 장치
KR102152162B1 (ko) 레거시 환경 분석 기반 클라우드 시스템 추천 방법 및 장치
JP2007026296A (ja) 統合検索処理方法および装置
JP2021157340A (ja) データ連携システムおよびapiプラットフォーム
KR100955760B1 (ko) 개인 데이터 검색 서비스 제공 방법 및 시스템