JP2010067213A - 検索対象列決定装置及び方法 - Google Patents
検索対象列決定装置及び方法 Download PDFInfo
- Publication number
- JP2010067213A JP2010067213A JP2008235445A JP2008235445A JP2010067213A JP 2010067213 A JP2010067213 A JP 2010067213A JP 2008235445 A JP2008235445 A JP 2008235445A JP 2008235445 A JP2008235445 A JP 2008235445A JP 2010067213 A JP2010067213 A JP 2010067213A
- Authority
- JP
- Japan
- Prior art keywords
- search
- column
- keyword
- type
- search keyword
- 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.)
- Withdrawn
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】検索キーワードのデータ構造上の特徴から全文検索の対象とすべきカラムを動的に絞ることにより、全文検索時の応答性能を向上することを可能とする。
【解決手段】検索対象列決定装置10において、入力部11はユーザ指定の検索キーワードを入力する。データ型解析部121は、入力部11によって入力された検索キーワードのデータ構造上の特徴(例えばデータ型)を解析する。検索対象列検出部124は、リレーショナルデータベース(RDB)21に格納されている検索の対象となるテーブルの各カラムのうち、前記解析された検索キーワードのデータ構造上の特徴(例えばデータ型)に合致するカラムを、前記検索対象列として検出する。
【選択図】 図1
【解決手段】検索対象列決定装置10において、入力部11はユーザ指定の検索キーワードを入力する。データ型解析部121は、入力部11によって入力された検索キーワードのデータ構造上の特徴(例えばデータ型)を解析する。検索対象列検出部124は、リレーショナルデータベース(RDB)21に格納されている検索の対象となるテーブルの各カラムのうち、前記解析された検索キーワードのデータ構造上の特徴(例えばデータ型)に合致するカラムを、前記検索対象列として検出する。
【選択図】 図1
Description
本発明は、リレーショナルデータベース(Relational Database: RDB)を対象とした、キーワードによる全文検索を行う全文検索技術に係り、特に、入力されたキーワード(検索キーワード)から検索対象列を決定する検索対象列決定装置及び方法に関する。
RDB(に格納されているテーブル)を対象とする全文検索を実行するシステムとして、RDB管理システム(Relational Database Management System: RDBMS)が知られている。RDBMSに対するユーザからの検索要求には、例えば特許文献1に記載されているように、構造化照会言語(Structure Query Language: SQL)が用いられるのが一般的である。しかし、SQL技術に習熟していない一般ユーザにとって、検索要求にSQL(SQL文)を用いることは困難である。
そこで近年は、ユーザが入力したキーワード(検索キーワード)から、アプリケーション(アプリケーションプログラム)の処理により、RDBに格納されているテーブル(RDB内のテーブル)を対象とする全文検索を要求するSQL文を自動生成することが行われている。RDB内のテーブルを対象とする全文検索では、ユーザが入力した検索キーワード(入力キーワード)に基づいて、当該テーブルの全列(全カラム)に対して検索を行うのが一般的である。このため、全文検索の対象となるテーブルのテーブル名を「table」とし、当該テーブルの全列を(a),(b)及び(c)とし、検索キーワードを「VALUE」とすると、例えば
SELECT * FROM (table)
WHERE
(a) LIKE‘%VALUE’ or
(b) LIKE‘%VALUE’ or
(c) LIKE ・・
のようなSQL文が生成される。なお、WHERE文内の「LIKE ‘%VALUE’」は、周知のように、検索キーワード「VALUE」を末尾に含むものを検索条件とすることを示す。
特開2003−323432号公報
SELECT * FROM (table)
WHERE
(a) LIKE‘%VALUE’ or
(b) LIKE‘%VALUE’ or
(c) LIKE ・・
のようなSQL文が生成される。なお、WHERE文内の「LIKE ‘%VALUE’」は、周知のように、検索キーワード「VALUE」を末尾に含むものを検索条件とすることを示す。
上述のように従来技術においては、ユーザによって入力されたキーワード(検索キーワード)に基づいてRDB内のテーブルを対象とする全文検索を行うには、当該キーワードから、当該テーブルの全列を検索対象とするSQL文を生成するのが一般的であった。このため従来技術は、ユーザにとってSQL技術に習熟する必要はないものの、検索キーワードが増えると組み合わせ爆発を起こしてしまい、応答性能を低下させるという問題があった。また従来技術は、テーブルに格納されているデータ量によっても性能に大きな影響を与える。
そこで、これらの問題を解消するために検索範囲を絞る方法が考えられる。例えば、検索対象列を外部定義ファイルに記述し、それに基づいて検索する方法である。
しかしながら、外部定義ファイルを用いる手法では、当該外部定義ファイルを開発者が作成しなければならないために手間が掛かるだけでなく、静的に定義されるために検索キーワードに応じて動的に検索対象列を変更できないという別の問題がある。
本発明は上記事情を考慮してなされたものでその目的は、リレーショナルデータベース(RDB)に格納されているテーブルを検索キーワードに基づいて全文検索する際に、当該検索キーワードのデータ構造上の特徴から全文検索の対象とすべきカラムを動的に絞ることにより、全文検索時の応答性能を向上することを可能とする検索対象列決定装置及び方法を提供することにある。
本発明の1つの観点によれば、リレーショナルデータベースに格納されているテーブルを対象とした、検索キーワードによる全文検索を行う全文検索システムにおいて、前記全文検索の対象とすべき前記テーブル内のカラムである検索対象列を決定する検索対象列決定装置が提供される。この検索対象列決定装置は、ユーザ指定の検索キーワードを入力する入力手段と、前記入力手段によって入力された検索キーワードのデータ構造上の特徴を解析する解析手段と、前記リレーショナルデータベースに格納されている検索の対象となるテーブルの各カラムのうち、前記解析手段によって解析された前記検索キーワードのデータ構造上の特徴に合致するカラムを、前記検索対象列として検出する検索対象列検出手段とを具備することを特徴とする。
本発明によれば、リレーショナルデータベース(RDB)に格納されているテーブルを検索キーワードに基づいて全文検索する際に、当該検索キーワードのデータ構造上の特徴から全文検索の対象とすべきカラムを動的に絞ることができ、これにより全文検索時の応答性能を向上することができる。
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る検索対象列決定装置10を含む全文検索システムの構成を示すブロック図である。
図1は本発明の一実施形態に係る検索対象列決定装置10を含む全文検索システムの構成を示すブロック図である。
図1において、全文検索システムは、検索対象列決定装置10に加えて、RDB/RDMBS(リレーショナルデータベース/リレーショナルデータベース管理システム)20と、クライアント装置30と、アプリケーション実行機構40とから構成される。
RDB/RDMBS20は、RDB21とRDBMS22とから構成される。RDB21は、テーブル211を含む複数のテーブルを格納する。RDB21はまた、テーブル定義情報212を格納する。テーブル定義情報212はテーブル211の構造を定義する。テーブル定義情報212は、テーブル211の各カラムのカラム名、当該カラムのデータ型、データの長さ(文字数または桁数)の上限値、及び当該データ型のカテゴリ名(分類名)を保持する。RDB21は、当該RDB21に格納されているテーブル211以外の各テーブル(図示せず)の構造を定義するテーブル定義情報(図示せず)をも格納する。
RDBMS22は、RDB21に格納されているテーブル211及びテーブル定義情報212等を管理すると共に、アプリケーション実行機構40から与えられるSQL文による検索要求に従い、当該SQL文の示す検索を実行する。RDBMS22は、SQL文の示す検索の結果をアプリケーション実行機構40に返す。
クライアント装置30は、RDB21(内のテーブル)を対象とする全文検索のためのユーザによる入力操作(例えばキーワードの入力操作)、及び当該全文検索の結果の出力(例えば表示出力)等に用いられる。
アプリケーション実行機構40は、クライアント装置30からの入力に応じてアプリケーション(アプリケーションプログラム)41を実行する。アプリケーション実行機構40は特に、ユーザの入力操作によって入力された全文検索のための検索キーワード(つまりユーザ指定の検索キーワード)がクライアント装置30から与えられた場合、当該キーワードからRDB/RDMBS20(内のRDBMS22)に対する検索要求のためのSQL文を生成する。アプリケーション実行機構40は、このSQL文の生成のために検索対象列決定装置10を利用する。つまりアプリケーション実行機構40は、検索キーワードを検索対象列決定装置10に渡して当該キーワードのデータ構造上の特徴に適合する検索対象列を問い合わせることで、当該検索対象列決定装置10から決定された検索対象列の情報を取得する。アプリケーション実行機構40は、取得された検索対象列の情報に基づいて、RDB21内の検索対象となるテーブルから検索キーワードに合致するデータを検索するためのSQL文を生成する。
検索対象列決定装置10は、アプリケーション実行機構40からの問い合わせによって当該アプリケーション実行機構40から渡された検索キーワードを解析することにより、当該検索キーワードのデータ構造上の特徴に適合する、全文検索の対象とすべき、RDB21内のテーブル(RDB21に格納されているテーブル)のカラム(検索対象列)を決定する。
検索対象列決定装置10は、入力部11、判定部12、出力部13、制御部14、テーブル構造情報記憶部15及びテーブル構造情報生成部16を含む。入力部11は、アプリケーション実行機構40からの問い合わせによって当該アプリケーション実行機構40から渡された検索キーワード(ユーザ指定の検索キーワード)を入力する。
判定部12は、入力部11によって入力された検索キーワードを解析して当該キーワードのデータ構造上の特徴(例えばデータ型と長さ)を判定し、当該キーワードのデータ構造上の特徴に適合し、且つ全文検索の対象とすべき、RDB21内のテーブルの検索対象列を決定するように構成されている。判定部12は、データ型解析部121、データ型判定部122、キーワード長検出部123及び検索対象列検出部124を含む。
データ型解析部121は、入力部11によって入力された検索キーワードのデータ型を解析する。データ型判定部122は、データ型解析部121によるデータ型の解析結果に基づき、検索キーワードのデータ構造上の特徴としての当該キーワードのデータ型を判定する。キーワード長検出部123は、検索キーワードのデータ型が数値型または文字列型の場合、検索キーワードを解析して、当該キーワードの他のデータ構造上の特徴としての当該キーワードの長さ(桁数または文字数)を検出する。検索対象列検出部124は、検索キーワードの解析結果(つまりデータ型の判定結果、またはデータ型の判定結果と当該キーワードの長さ)に基づき、テーブル構造情報記憶部15に格納されているテーブル構造情報から、当該キーワードのデータ構造上の特徴に適合し、且つ全文検索の対象とすべき、RDB21内のテーブルの上記検索対象列を検出する。
出力部13は、判定部12によって決定された検索対象列の情報をアプリケーション実行機構40に返す。
制御部14は、入力部11によって入力された検索キーワードを判定部12に渡すことによって、当該検索キーワードに適合する検索対象列を決定させ、その決定結果(決定された検索対象列の情報)を出力部13に渡す。
制御部14は、入力部11によって入力された検索キーワードを判定部12に渡すことによって、当該検索キーワードに適合する検索対象列を決定させ、その決定結果(決定された検索対象列の情報)を出力部13に渡す。
テーブル構造情報記憶部15は、RDB21内のテーブルの構造を表すテーブル構造情報を格納する。テーブル構造情報は、RDB21内のテーブルを構成するカラム毎に、そのカラムのデータ型と、長さ(文字数または桁数)に関する制限値(上限値)とを含む。テーブル構造情報記憶部15に格納されるテーブル構造情報は、テーブル211の構造を表すテーブル構造情報150を含む。
テーブル構造情報生成部16は、RDB21内のテーブルのテーブル定義情報からテーブル構造情報を生成する。テーブル構造情報生成部16は、生成されたテーブル構造情報をテーブル構造情報記憶部15に格納する。
図2は、図1に示されるテーブル211の一例を示す。図2に示すテーブル211は、例えば、テーブル名(つまり当該テーブル211を指定する情報)が「table」の従業員テーブルである。テーブル211は、例えば、カラム名がそれぞれ「EmpNo」、「Name」、「Birth」及び「Age」の、4つのカラム(項目、列)211a、211b、211c及び211dから構成される。カラム211a及び211bは、それぞれ、従業員番号(EmpNo)及び名前(Name)を設定するのに用いられる。カラム211c及び211dは、それぞれ、生年月日(Birth)及び年令(Age)を設定するのに用いられる。
カラム名が「EmpNo」のカラム211aのデータ型は文字列型(VARCHAR)であり、データの長さ(文字数)の上限として8文字が指定されている。カラム名が「Name」のカラム211bのデータ型も文字列型(VARCHAR)であり、データの長さの上限として40文字が指定されている。カラム名が「Birth」のカラム211cのデータ型は日付型(date)であり、データの長さに特別な制限は設定されていない。カラム名が「Age」のカラム211dのデータ型は数値型(NUMBER)であり、データの長さの上限として3桁が指定されている。
図2に示されるテーブル211の構造は、RDB21に格納されているテーブル定義情報212によって定義される。このテーブル定義情報212は、テーブル211の定義時に、当該テーブル211のテーブル名(table)に対応付けてRDB21に格納される。
図3は、図1に示されるテーブル構造情報記憶部15に格納されるテーブル構造情報のうち、図2に示されるテーブル211の構造を表すテーブル構造情報150の一例を示す。図3の例では、テーブル構造情報150はテーブル形式のデータ構造を有している。しかし、テーブル構造情報150が必ずしもテーブル形式のデータ構造を有している必要はなく、例えばリスト形式のデータ構造を有していても構わない。
図3に示されるテーブル構造情報150は、図2に示すテーブル211のカラム211a〜211dのカラム名(つまりカラム211a〜211dを指定する情報)に対応付けて、当該カラム211a〜211dのデータ型、データの長さ(文字数または桁数)の上限値、及び当該データ型のカテゴリ名(分類名)を保持する。図3の例では、データ型のカテゴリ名として、「文字列型」、「日付型」及び「数値型」の3種が用いられている。このように、「カラムのデータ型」として定義できるものは、通常のRDBで定義されるデータ型がそのまま用いられる。また図3の例では、「日付型」の場合、データの長さは固定であることから、データの長さの上限値は設定されていない。
次に、図1の全文検索システムにおける動作について、検索対象列決定装置10の動作を中心に説明する。
まず、RDB/RDMBS20内のRDBMS22によるテーブル定義時の動作について説明する。
今、RDBMS22が、RDB21にテーブル211(データが設定されていない空のテーブル211)を登録するものとする。この場合、RDBMS22はまず、テーブル211のテーブル名(ここではtable)に対応付けて当該テーブル211のテーブル定義情報212をRDB21に登録する。その後、RDBMS22は、テーブル定義情報212によって定義される構造の、空のテーブル211をRDB21に登録する。
まず、RDB/RDMBS20内のRDBMS22によるテーブル定義時の動作について説明する。
今、RDBMS22が、RDB21にテーブル211(データが設定されていない空のテーブル211)を登録するものとする。この場合、RDBMS22はまず、テーブル211のテーブル名(ここではtable)に対応付けて当該テーブル211のテーブル定義情報212をRDB21に登録する。その後、RDBMS22は、テーブル定義情報212によって定義される構造の、空のテーブル211をRDB21に登録する。
次に、検索対象列決定装置10内のテーブル構造情報生成部16によるテーブル構造情報生成処理について、図4のフローチャートを参照して説明する。
検索対象列決定装置10内の制御部14は、適宜(例えば検索対象列決定装置10の起動時に)テーブル構造情報生成部16に対してテーブル構造情報生成を要求する。するとテーブル構造情報生成部16は、テーブル構造情報生成処理を開始する。
検索対象列決定装置10内の制御部14は、適宜(例えば検索対象列決定装置10の起動時に)テーブル構造情報生成部16に対してテーブル構造情報生成を要求する。するとテーブル構造情報生成部16は、テーブル構造情報生成処理を開始する。
テーブル構造情報生成部16はまず、RDBMS22を介してRDB21を参照することにより、テーブル構造情報が生成されていないテーブルのテーブル定義情報(つまり未処理のテーブル定義情報)を検索する(ステップ401)。ここでは、テーブル定義情報212が検索されたものとする。
このように、未処理のテーブル定義情報(テーブル定義情報212)が検索できたならば(ステップ402がYes)、テーブル構造情報生成部16は、検索されたテーブル定義情報212に基づいてテーブル構造情報を生成する(ステップ403)。このステップ403においてテーブル構造情報生成部16は、検索されたテーブル定義情報212(つまり、テーブル211のテーブル名「table」に対応付けられているテーブル定義情報212)から、テーブル211を定義する情報として、カラム毎に、カラム名、データ型、データの長さの上限値、及び当該データ型のカテゴリ名(分類名)を抽出する。そしてテーブル構造情報生成部16は、抽出された情報に基づき、テーブル定義情報212で定義されたテーブル211のテーブル構造を表す、図3に示すようなテーブル構造情報150を生成する。
テーブル構造情報生成部16は、生成されたテーブル構造情報150をテーブル構造情報記憶部15に格納する(ステップ404)。するとテーブル構造情報生成部16はステップ401に戻って、RDB21から未処理のテーブル定義情報を検索する。そして、未処理のテーブル定義情報が検索できたならば(ステップ402がYes)、テーブル構造情報生成部16は前述のように、検索されたテーブル定義情報に基づいてテーブル構造情報を生成する(ステップ403)。これに対し、未処理のテーブル定義情報が検索できなかったならば(ステップ402がNo)、テーブル構造情報生成部16はテーブル構造情報生成処理を終了する。
なお、制御部14がRDBMS22によるテーブル定義動作を監視し、当該テーブル定義動作を検出した場合に、テーブル構造情報生成部16に対してテーブル構造情報の生成を要求するようにしても構わない。
その後、ユーザがクライアント装置30を操作して、検索キーワードとして用いられるべき文字列を入力したものとする。このときユーザは、検索の対象となるテーブル、例えばテーブル211(のテーブル名)を指定する情報(対象テーブル指定情報)をも入力したものとする。
入力されたキーワード(検索キーワード)及び対象テーブル指定情報は、クライアント装置30からアプリケーション実行機構40に送られる。アプリケーション実行機構40は、クライアント装置30から送られたキーワード(検索キーワード)及び対象テーブル指定情報に基づいてアプリケーション41を実行することにより、当該対象テーブル指定情報で指定されるテーブル(ここではテーブル211)を検索対象(全文検索の対象)として、当該キーワード(検索キーワード)に基づく全文検索をRDB/RDMBS20(内のRDBMS22)に実行させるためのSQL文を生成する。
従来技術では、検索対象となるテーブル(ここではテーブル211)の全カラム(全列)に対して検索を行うのに必要なSQL文が生成される。しかし本実施形態では、以下に述べるように、検索キーワードのデータ構造上の特徴に適合するカラム(検索対象カラムまたは検索対象列)に絞って検索を行うのに必要なSQL文が生成される。
このようなSQL文の生成のために、アプリケーション実行機構40は、クライアント装置30から送られた検索キーワード及び対象テーブル指定情報を検索対象列決定装置10に渡し、当該検索対象列決定装置10に対して当該キーワードのデータ構造上の特徴に適合する検索対象カラム(検索対象列)を問い合わせる。
すると検索対象列決定装置10は、検索対象列決定処理を実行する。この検索対象列決定装置10による検索対象列決定処理について、図5のフローチャートを参照して説明する。
まず検索対象列決定装置10内の入力部11は、アプリケーション実行機構40から検索対象列決定装置10に渡された検索キーワード及び対象テーブル指定情報を入力する(ステップ501)。このステップ501において、入力部11は、入力された検索キーワード及び対象テーブル指定情報を検索対象列決定装置10内の制御部14に渡す。制御部14は、入力部11から検索キーワード及び対象テーブル指定情報を受け取ると、当該検索キーワード及び対象テーブル指定情報を検索対象列決定装置10内の判定部12に渡して、当該検索キーワードに適合する検索対象列を決定することを要求する(ステップ502)。
判定部12は、制御部14から検索キーワード及び対象テーブル指定情報(つまり入力部11によって入力された検索キーワード及び対象テーブル指定情報)を受け取ると、以下の手順により当該キーワードのデータ構造上の特徴に適合する検索対象カラムを決定する。
まず判定部12内のデータ型判定部122は、入力された検索キーワードをデータ型解析部121に渡して、当該検索キーワードのデータ型を問い合わせる。するとデータ型解析部121は、検索キーワードのデータ型を解析し、当該検索キーワードがいずれのデータ型にマッチするかを判定するためのデータ型解析処理を実行する(ステップ503)。この検索キーワードのデータ型の解析には、例えばJava(登録商標)の周知のプログラムを用いることができる。
以下、データ型解析部121によるデータ型解析処理(ステップ503)の手順の詳細について図6のフローチャートを参照して説明する。まずデータ型解析部121は、検索キーワードのデータ型を解析するために、当該検索キーワードを文字列(デフォルトのデータ型である文字列型のデータ)とみなして、当該文字列を例えば数値型に変換するための「Integer.parseInt(キーワード)」という周知のプログラム(以下、第1のプログラムと称する)を実行する(ステップ601)。
第1のプログラム中の括弧( )内には、検索キーワードが設定される。例えば、検索キーワードが“123”の場合、第1のプログラムとして「Integer.parseInt(“123”)」が実行される。
もし、第1のプログラム中の括弧( )内に設定されているデータ(ここでは検索キーワード)が数値型でない場合に当該第1のプログラムが実行されると、プログラム例外が発生する。これに対し、第1のプログラム中の括弧( )内に設定されているデータが数値型である場合に当該第1のプログラムが実行されると、当該データ(文字列と見なされたデータ)は数値型に変換され、プログラム例外は発生しない。
そこでデータ型解析部121は、第1のプログラムの実行によりプログラム例外が発生したか否かにより(ステップ602)、検索キーワードが数値型以外であるか(ステップ603)、或いは数値型であるか(ステップ604)を判定する。
データ型解析部121は、検索キーワードが数値型以外であると判定した場合(ステップ603)、当該検索キーワードのデータ型を解析するために、当該検索キーワードを文字列とみなして、当該文字列を例えば“yyyy/MM/dd”形式の日付型に変換するための「new SimpleDateFormat(“yyyy/MM/dd”).parse(キーワード)」という周知のプログラム(以下、第2のプログラムと称する)を実行する(ステップ605)。
第2のプログラム中の括弧( )内には、検索キーワードが設定される。もし、第2のプログラム中の括弧( )内に設定されているデータ(ここでは検索キーワード)が日付型(“yyyy/MM/dd”形式の日付型)でない場合に当該第2のプログラムが実行されると、プログラム例外が発生する。これに対し、第2のプログラム中の括弧( )内に設定されているデータが日付型(“yyyy/MM/dd”形式の日付型)である場合に当該第2のプログラムが実行されると、当該データ(文字列と見なされたデータ)は日付型に変換され、プログラム例外は発生しない。
そこでデータ型解析部121は、第2のプログラムの実行によりプログラム例外が発生したか否かにより(ステップ606)、検索キーワードが日付型(“yyyy/MM/dd”形式の日付型)以外であるか(ステップ607)、或いは日付型(“yyyy/MM/dd”形式の日付型)であるか(ステップ608)を判定する。
データ型解析部121は、検索キーワードが日付型以外であると判定した場合(ステップ607)、つまり第1及び第2のプログラムの実行で全てプログラム例外が発生したために、当該検索キーワードが数値型でも日付型でもないと判定した場合(ステップ603,607)、当該検索キーワードをデフォルトのデータ型である文字列型と判定する(ステップ609)。データ型解析部121は、上述のデータ型の解析によってステップ604,608または609で判定されたデータ型を、検索キーワードのデータ型の解析結果として判定部12内のデータ型判定部122に通知して(ステップ610)、データ型解析処理を終了する。
データ型判定部122は、データ型解析部121から通知された検索キーワードのデータ型(データ型解析結果であるデータ型)を受け取ると、当該データ型が、例えば日付型であるかを判定する(ステップ504)。もし、検索キーワードのデータ型が日付型でないならば(ステップ504がNo)、データ型判定部122はデータ型解析部121から通知された検索キーワードのデータ型が、数値型もしくは文字列型であると判定する。
もし、検索キーワードのデータ型が数値型または文字列型であるならば(ステップ504がNo)、データ型判定部122は当該検索キーワードのデータ型と当該検索キーワードとをキーワード長検出部123に渡して、当該検索キーワードの長さ(文字数または桁数)を問い合わせる。キーワード長検出部123は、データ型判定部122からの問い合わせに応じて検索キーワードを解析し、当該検索キーワードを構成する文字列または数値列の長さ(文字数または桁数)を検出する(ステップ505)。
キーワード長検出部123は、検出された検索キーワードの長さをデータ型判定部122に通知する。するとデータ型判定部122は、検索キーワードのデータ型(文字列型または数値型)、長さ(キーワード長)及び対象テーブル指定情報を検索対象列検出部124に渡して、当該キーワードのデータ構造上の特徴に適合する検索対象カラムを決定することを要求する。
これに対し、検索キーワードのデータ型が日付型であるならば(ステップ504がYes)、データ型判定部122は当該検索キーワードのデータ型(日付型)及び対象テーブル指定情報を検索対象列検出部124に渡して、当該キーワードのデータ構造上の特徴に適合する検索対象カラムを決定することを要求する。
検索対象列検出部124は、データ型判定部122により渡された対象テーブル指定情報によって指定されるテーブル(ここではテーブル211)に対応付けてテーブル構造情報記憶部15に格納されているテーブル構造情報、つまり対象テーブル構造情報(ここではテーブル構造情報150)から、データ型判定部122により渡された検索キーワードのデータ型(または検索キーワードのデータ型と長さ)の示す当該検索キーワードのデータ構造上の特徴に適合するカラムを検索対象列として検出する(ステップ506)。ここでは、検索キーワードのデータ型が日付型(数値型及び文字列型以外)であるために(ステップ504がYes)、データ型判定部122により検索キーワードの長さ(を示す情報)が渡されていない場合には、検索キーワードのデータ型に一致するカラムが検索キーワードのデータ構造上の特徴に適合するカラム(検索対象列)として検出される。これに対し、検索キーワードのデータ型が数値型または文字列型であるために(ステップ504がNo)、データ型判定部122により検索キーワードの長さ(を示す情報)が渡されている場合には、検索キーワードのデータ型に一致し、且つ長さ(文字数または桁数)に関する制限値(上限値)が当該検索キーワードの長さ以上のカラムが検索キーワードのデータ構造上の特徴に適合するカラム(検索対象カラム)として検出される。
検索対象列検出部124は、検出された検索対象列をデータ型判定部122に通知する。データ型判定部122は、検索対象列検出部124から通知された検索対象カラム(検出結果)を制御部14に渡す。
制御部14は、データ型判定部122から渡された検索対象カラム、つまり検索対象列検出部124によって検出された検索対象列を検索対象列決定装置10内の出力部13に渡す(ステップ507)。出力部13は、この検索対象カラムを、アプリケーション実行機構40からの問い合わせに対して検索対象列決定装置10によって決定された検索対象カラム(検索対象列)として、当該アプリケーション実行機構40に返す(ステップ508)。
アプリケーション実行機構40は、検索対象列決定装置10内の出力部13から検索対象カラムが返されると、当該検索対象カラムと、先の問い合わせ時に当該検索対象列決定装置10に渡した検索キーワード及び対象テーブル指定情報とに基づいて、当該検索キーワードのデータ構造上の特徴に適合するカラム(検索対象カラム)に絞って検索を行うのに必要なSQL文を生成する。
アプリケーション実行機構40は、生成されたSQL文を用いてRDB/RDMBS20内のRDBMS22に対して検索を要求する。このSQL文は、従来技術とは異なり、検索対象となるテーブル(ここではテーブル211)の全カラムを検索対象とするものではなく、検索キーワードのデータ構造上の特徴に適合するカラムのみを検索対象とする。つまり本実施形態においては、全文検索において検索対象となるテーブルの全カラムに対して検索を行う場合に比べ、検索キーワードのデータ構造上の特徴に応じて検索対象カラムを動的に絞ることができる。これにより本実施形態においては、RDB21に対する無駄な検索要求の発生を減らして、当該RDB21内のテーブルを全文検索する際の応答性能を向上することができる。
次に、検索対象列決定装置10による検索対象カラムの決定、及び決定された検索対象カラムに基づくアプリケーション実行機構40によるSQL文の生成の具体例について、検索キーワードが「YAMADA」、「1935/06/17」、及び「77」である場合を例に順次説明する。ここでは、検索対象となるテーブルが、テーブル名「table」の図2に示す構造のテーブル211であるものとする。
[検索キーワードが「YAMADA」である場合]
まず、検索キーワードが例えば「YAMADA」である場合の検索対象カラムの決定及びSQL文の生成について説明する。
まず、検索キーワードが例えば「YAMADA」である場合の検索対象カラムの決定及びSQL文の生成について説明する。
検索キーワードが「YAMADA」である場合、検索対象列決定装置10内の判定部12に含まれているデータ型解析部121では、第1のプログラムとして、「Integer.parseInt(“YAMADA”)」が実行される(ステップ601)。この第1のプログラム中の括弧( )内に設定されている検索キーワード「YAMADA」は数値型ではないため、プログラム例外が発生し(ステップ602がYes)、検索キーワード「YAMADA」は数値型以外であると判定される(ステップ603)。
するとデータ型解析部121では、第2のプログラムとして、「new SimpleDateFormat(“yyyy/MM/dd”).parse(“YAMADA”)」が実行される(ステップ605)。この第2のプログラム中の括弧( )内に設定されている検索キーワード「YAMADA」は日付型ではないため、プログラム例外が発生し(ステップ606がYes)、検索キーワード「YAMADA」は数値型でも日付型でもないデータ型、つまり文字列型であると判定される(ステップ609)。この場合、キーワード長検出部123によって、検索キーワード「YAMADA」の長さ(文字数)として「6」が検出される。
このように、検索キーワード「YAMADA」のデータ型が文字列型(VARCHAR)で長さが「6」の場合、検索対象列検出部124は、テーブル211を全文検索する際の検索対象カラムとして、テーブル構造情報150(図3参照)から、文字列型(VARCHAR)で且つ長さが「6」以上のカラムを検出する。ここでは、テーブル構造情報150によって示される4つのカラムのうち、カラム名が「EmpNo」のカラム211a(図2参照)が、データ型が文字列型(VARCHAR)で長さ(文字数)の上限が「8」であり、カラム名が「Name」のカラム211b(図2参照)が、データ型が文字列型(VARCHAR)で長さ(文字数)の上限が「40」である。このため、カラム名が「EmpNo」のカラム211aと、カラム名が「Name」のカラム211b(図2参照)とが、検索対象カラムとして検出(決定)される。
この場合、アプリケーション実行機構40は、次のようなSQL文
SELECT * FROM (table)
WHERE
EmpNo LIKE‘%YAMADA%’or
Name LIKE‘%YAMADA%’
を生成する。
SELECT * FROM (table)
WHERE
EmpNo LIKE‘%YAMADA%’or
Name LIKE‘%YAMADA%’
を生成する。
図7は、検索キーワードが「YAMADA」(つまり文字列)である場合の、検索対象カラムの絞り込みのイメージを、生成されるSQL文と対比させて示す。
[検索キーワードが「1935/06/17」である場合]
次に、検索キーワードが例えば「1935/06/17」(つまり日付)である場合の検索対象カラムの決定及びSQL文の生成について説明する。
次に、検索キーワードが例えば「1935/06/17」(つまり日付)である場合の検索対象カラムの決定及びSQL文の生成について説明する。
検索キーワードが「1935/06/17」である場合、第1のプログラムとして、「Integer.parseInt(“1935/06/17”)」が実行される(ステップ601)。この第1のプログラム中の括弧( )内に設定されている検索キーワード「1935/06/17」は数値型ではないため、プログラム例外が発生し(ステップ602がYes)、検索キーワード「1935/06/17」は数値型以外であると判定される(ステップ603)。
すると第2のプログラムとして、「new SimpleDateFormat(“yyyy/MM/dd”).parse(“1935/06/17”)」が実行される(ステップ605)。この第2のプログラム中の括弧( )内に設定されている検索キーワード「1935/06/17」は日付型であるため、プログラム例外は発生せず(ステップ606がNo)、検索キーワード「1935/06/17」は日付型であると判定される(ステップ608)。日付型の場合、データの長さは固定であるため、キーワード長検出部123による長さ(文字数または桁数)の検出は行われず、日付型(データ型)のみで、検索対象カラムが検出される。
テーブル構造情報150(図3参照)は、テーブル名が「table」のテーブル211が、日付型のカラムとして、カラム名が「Birth」のカラム211c(図2参照)を含むことを示している。この場合、検索対象カラムとして、カラム名が「Birth」のカラム211cが検出されるため、次のようなSQL文
SELECT * FROM (table)
WHERE
Birth LIKE‘%1935/06/17%’
が生成される。
SELECT * FROM (table)
WHERE
Birth LIKE‘%1935/06/17%’
が生成される。
図8は、検索キーワードが「1935/06/17」(つまり日付)である場合の、検索対象カラムの絞り込みのイメージを、生成されるSQL文と対比させて示す。
[検索キーワードが「77」である場合]
次に、検索キーワードが例えば「77」(つまり数値)である場合の検索対象カラムの決定及びSQL文の生成について説明する。
次に、検索キーワードが例えば「77」(つまり数値)である場合の検索対象カラムの決定及びSQL文の生成について説明する。
検索キーワードが「77」である場合、第1のプログラムとして、「Integer.parseInt(“77”)」が実行される(ステップ601)。この第1のプログラム中の括弧( )内に設定されている検索キーワード「77」は数値型あるため、プログラム例外は発生せず(ステップ602がNo)、検索キーワード「77」は数値型であると判定される(ステップ604)。この場合、検索キーワード「77」の長さ(桁数)として「2」が検出される。
このように、検索キーワード「77」のデータ型が数値型(NUMBER)で長さが「2」の場合、テーブル構造情報150(図3参照)から、検索対象カラムとして、数値型(NUMBER)で且つ長さが「2」以上のカラムが検出される。ここでは、カラム名が「Age」のカラム211d(図2参照)が、データ型が数値型(NUMBER)で長さ(桁数)の上限が「3」であるため、検索対象カラムとして検出(決定)される。
この場合、次のようなSQL文
SELECT * FROM (table)
WHERE
Age LIKE‘%77%’
が生成される。
SELECT * FROM (table)
WHERE
Age LIKE‘%77%’
が生成される。
図9は、検索キーワードが「77」(つまり数値)である場合の、検索対象カラムの絞り込みのイメージを、生成されるSQL文と対比させて示す。
上記実施形態では、ユーザがクライアント装置30を操作して検索キーワードとして用いられるべき文字列を入力する場合に、検索の対象となるテーブル(対象テーブル)を指定する情報(対象テーブル指定情報)をも入力するものとしている。しかし、検索の対象となるテーブルは必ずしも指定する必要がない。つまり、対象テーブル指定情報は必ずしも入力される必要はない。
ユーザによって対象テーブルが指定されず、したがってクライアント装置30からアプリケーション実行機構40に送られる情報に対象テーブル指定情報が含まれていない場合、当該アプリケーション実行機構40は、RDB21に格納されている全てのテーブルを対象テーブル(検索の対象)とする。この場合、判定部12(内の検索対象列検出部124)による検索対象列の検出(決定)は、RDB21に格納されている全てのテーブルのテーブル定義情報に基づいて行われる。
また上記実施形態では、データ型のカテゴリ名(分類名)として、「文字列型」、「日付型」及び「数値型」の3種が用いられている。しかし、これらの3種に加えて、「期間」、「真偽値」、「URI(識別可能な一意性のある文字列)」などを用いても良い。「期間」、「真偽値」、「URI」のいずれの場合にも、キーワード長検出部123による検索キーワードの長さの検出は必要ない。つまり上記実施形態と同様に、検索キーワードが「数値型」または「文字列型」の場合だけ、当該検索キーワードの長さが検出されれば良い。
なお、検索キーワードが「数値型」または「文字列型」の場合でも、当該検索キーワードの長さは必ずしも検出される必要はない。つまり、検索キーワードが「数値型」または「文字列型」の場合でも、検索キーワードのデータ型に一致するカラムが検索キーワードのデータ構造上の特徴に適合するカラム(検索対象列)として検出される構成であっても構わない。この場合、キーワード長検出部123は不要となる。但し、検索キーワードが上述の「数値型」または「文字列型」の場合には、データの長さが検索キーワードより短い「数値型」または「文字列型」のカラムも検索の対象となるため、上記実施形態と比べて全文検索時の応答性能が低下する。それでも、検索対象列が絞られるため、従来技術よりも全文検索時の応答性能は向上する。
図10は、図1に示される全文検索システムの実現例を示すブロック図である。
まず図10(a)は、全文検索システムがコンピュータ501によって実現されている場合のシステム構成を示す。図10(a)の例では、検索対象列決定装置10、RDB/RDMBS20、クライアント装置30及びアプリケーション実行機構40は、コンピュータ501に存在する。つまり検索対象列決定装置10、RDB/RDMBS20、クライアント装置30及びアプリケーション実行機構40は、いずれもコンピュータ501によって実現される。
まず図10(a)は、全文検索システムがコンピュータ501によって実現されている場合のシステム構成を示す。図10(a)の例では、検索対象列決定装置10、RDB/RDMBS20、クライアント装置30及びアプリケーション実行機構40は、コンピュータ501に存在する。つまり検索対象列決定装置10、RDB/RDMBS20、クライアント装置30及びアプリケーション実行機構40は、いずれもコンピュータ501によって実現される。
図10(b)は、全文検索システムが、コンピュータ502及び503によって実現されている場合のシステム構成を示す。図10(b)の例では、検索対象列決定装置10、クライアント装置30及びアプリケーション実行機構40はコンピュータ502に存在し、RDB/RDMBS20はコンピュータ(データベースサーバコンピュータ)503に存在する。コンピュータ502及び503は、ローカルエリアネットワークやインターネットのようなネットワーク601により相互接続されている。
図10(c)は、全文検索システムが、コンピュータ504及び505によって実現されている場合のシステム構成を示す。図10(c)の例では、検索対象列決定装置10、RDB/RDMBS20及びアプリケーション実行機構40はコンピュータ504に存在し、クライアント装置30はコンピュータ505に存在する。コンピュータ504及び505はネットワーク602により相互接続されている。
図10(d)は、全文検索システムが、コンピュータ503,505及び506によって実現されている場合のシステム構成を示す。図10(d)の例では、検索対象列決定装置10及びアプリケーション実行機構40はコンピュータ506に存在する。一方、RDB/RDMBS20は、図10(b)のシステム構成と同様にコンピュータ(データベースサーバコンピュータ)503に存在し、クライアント装置30は、図10(c)のシステム構成と同様にコンピュータ505に存在する。コンピュータ503及び506はネットワーク603により相互接続され、コンピュータ505及び506はネットワーク604により相互接続されている。なお、コンピュータ503,505及び506が1つのネットワークにより相互接続されていても構わない。
図10(e)は、全文検索システムが、コンピュータ505,507及び508によって実現されている場合のシステム構成を示す。図10(e)の例では、検索対象列決定装置10はコンピュータ507に存在し、RDB/RDMBS20及びアプリケーション実行機構40はコンピュータ508に存在する。一方、クライアント装置30は、図10(c)のシステム構成と同様にコンピュータ505に存在する。コンピュータ505及び508はネットワーク605により相互接続され、コンピュータ507及び508はネットワーク606により相互接続されている。なお、コンピュータ505,507及び508が1つのネットワークにより相互接続されていても構わない。
図10(f)は、全文検索システムが、コンピュータ503,505,507及び509によって実現されている場合のシステム構成を示す。図10(f)の例では、検索対象列決定装置10は、図10(e)のシステム構成と同様にコンピュータ507に存在する。また、RDB/RDMBS20は、図10(b)のシステム構成と同様にコンピュータ503に存在し、クライアント装置30は、図10(c)のシステム構成と同様にコンピュータ505に存在する。一方、アプリケーション実行機構40はコンピュータ509に存在する。コンピュータ503及び507はネットワーク607により相互接続され、コンピュータ503及び509はネットワーク608により相互接続されている。一方、コンピュータ505及び509はネットワーク609により相互接続されている。なお、コンピュータ503,505,507及び509が1つのネットワークにより相互接続されていても構わない。
本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
10…検索対象列決定装置、11…入力部、12…判定部、13…出力部、14…制御部、15…テーブル構造情報記憶部、16…テーブル構造情報生成部、20…RDB/RDMBS(リレーショナルデータベース/リレーショナルデータベース管理システム)、21…RDB(リレーショナルデータベース)、22…RDBMS(リレーショナルデータベース管理システム)、30…クライアント装置、40…アプリケーション実行機構、41…アプリケーション(アプリケーションプログラム)、121…データ型解析部、122…データ型判定部、123…キーワード長検出部、124…検索対象列検出部、150…テーブル構造情報、211…テーブル、212…テーブル定義情報、501〜509…コンピュータ、601〜609…ネットワーク。
Claims (5)
- リレーショナルデータベースに格納されているテーブルを対象とした、検索キーワードによる全文検索を行う全文検索システムにおいて、前記全文検索の対象とすべき前記テーブル内のカラムである検索対象列を決定する検索対象列決定装置であって、
ユーザ指定の検索キーワードを入力する入力手段と、
前記入力手段によって入力された検索キーワードのデータ構造上の特徴を解析する解析手段と、
前記リレーショナルデータベースに格納されている検索の対象となるテーブルの各カラムのうち、前記解析手段によって解析された前記検索キーワードのデータ構造上の特徴に合致するカラムを、前記検索対象列として検出する検索対象列検出手段と
を具備することを特徴とする検索対象列決定装置。 - 前記解析手段は、前記検索キーワードのデータ構造上の特徴として、当該キーワードのデータ型を解析し、
前記検索対象列検出手段は、前記検索キーワードの前記データ構造上の特徴に合致するカラムとして、少なくとも、前記解析手段によって解析された前記検索キーワードのデータ型に合致するカラムを検出する
ことを特徴とする請求項1記載の検索対象列決定装置。 - 前記リレーショナルデータベースにテーブルが登録される際に前記リレーショナルデータベースに格納される、当該テーブルの構造を定義するテーブル定義情報に基づき、当該テーブルの構造を表すためのテーブル構造情報であって、当該テーブルの各カラムを指定する情報に対応付けて、少なくとも当該カラムのデータ型を保持するテーブル構造情報を生成するテーブル構造情報生成手段と、
前記テーブル構造情報生成手段によって生成されたテーブル構造情報を当該テーブル構造情報によって構造が表されるテーブルを指定する情報に対応付けて格納するテーブル構造情報記憶手段とを更に具備し、
前記検索対象列検出手段は、前記解析手段によって解析された前記検索キーワードのデータ型に合致するカラムを、前記検索の対象となるテーブルを指定する情報に対応付けて前記テーブル構造情報記憶手段に格納されている前記テーブル構造情報から検出する
ことを特徴とする請求項2記載の検索対象列決定装置。 - 前記解析手段によって解析された前記検索キーワードのデータ型が数値型または文字列型の場合、当該検索キーワードのキーワード長を検出するキーワード長検出手段を更に具備し、
前記テーブル構造情報生成手段によって生成される前記テーブル構造情報は、少なくとも、前記カラムのデータ型が前記数値型または文字列型の場合、当該カラムのデータ型に加えて、データの長さの上限値を保持しており、
前記検索対象列検出手段は、前記解析手段によって解析された前記検索キーワードのデータ型が前記数値型または文字列型の場合、前記検索の対象となるテーブルの各カラムのうち、データ型が前記数値型または文字列型のカラムであって、且つデータの長さの上限値が前記キーワード長検出手段によって検出されたキーワード長以上のカラムを、前記検索の対象となるテーブルを指定する情報に対応付けて前記テーブル構造情報記憶手段に格納されている前記テーブル構造情報から検出する
ことを特徴とする請求項3記載の検索対象列決定装置。 - リレーショナルデータベースに格納されているテーブルを対象とした、検索キーワードによる全文検索を行う全文検索システムに設けられた、入力手段、解析手段及び検索対象列検出手段を備えた検索対象列決定装置において、前記全文検索の対象とすべき前記テーブル内のカラムである検索対象列を決定するための検索対象列決定方法であって、
前記入力手段がユーザ指定の検索キーワードを入力するステップと、
前記解析手段が、前記入力された検索キーワードのデータ構造上の特徴を解析するステップと、
前記検索対象列検出手段が、前記リレーショナルデータベースに格納されている検索の対象となるテーブルの各カラムのうち、前記解析された前記検索キーワードのデータ構造上の特徴に合致するカラムを、前記検索対象列として検出するステップと
を具備することを特徴とする検索対象列決定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008235445A JP2010067213A (ja) | 2008-09-12 | 2008-09-12 | 検索対象列決定装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008235445A JP2010067213A (ja) | 2008-09-12 | 2008-09-12 | 検索対象列決定装置及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010067213A true JP2010067213A (ja) | 2010-03-25 |
Family
ID=42192709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008235445A Withdrawn JP2010067213A (ja) | 2008-09-12 | 2008-09-12 | 検索対象列決定装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010067213A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117037996A (zh) * | 2023-08-22 | 2023-11-10 | 重庆普施康科技发展股份有限公司 | 体外反搏患者信息管理方法、装置及电子设备 |
-
2008
- 2008-09-12 JP JP2008235445A patent/JP2010067213A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117037996A (zh) * | 2023-08-22 | 2023-11-10 | 重庆普施康科技发展股份有限公司 | 体外反搏患者信息管理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8700658B2 (en) | Relational meta model and associated domain context-based knowledge inference engine for knowledge discovery and organization | |
JP4947245B2 (ja) | 情報検索装置、情報検索方法、コンピュータ・プログラムおよびデータ構造 | |
US20050102613A1 (en) | Generating a hierarchical plain-text execution plan from a database query | |
JP2015099586A (ja) | データ集約のためのシステム、装置、プログラム、及び方法 | |
JP2007535016A (ja) | 検索基準の累進的緩和 | |
US10242123B2 (en) | Method and system for handling non-presence of elements or attributes in semi-structured data | |
US20080040317A1 (en) | Decomposed query conditions | |
JP2013503381A (ja) | トラステッドクエリのシステムおよび方法 | |
KR20160124079A (ko) | 인-메모리 데이터베이스 탐색을 위한 시스템 및 방법 | |
US9411803B2 (en) | Responding to natural language queries | |
JPWO2007119567A1 (ja) | 文書処理装置および文書処理方法 | |
US6938036B2 (en) | Query modification analysis | |
JP5927886B2 (ja) | クエリシステム及びコンピュータプログラム | |
JP4207438B2 (ja) | Xml文書格納/検索装置及びそれに用いるxml文書格納/検索方法並びにそのプログラム | |
US20040068488A1 (en) | Data query differential analysis | |
JP5844824B2 (ja) | Sparqlクエリ最適化方法 | |
US20110270862A1 (en) | Information processing apparatus and information processing method | |
JP5488792B2 (ja) | データベース操作装置、データベース操作方法、及びプログラム | |
JP2010067213A (ja) | 検索対象列決定装置及び方法 | |
US11250084B2 (en) | Method and system for generating content from search results rendered by a search engine | |
US20090187585A1 (en) | Comparing very large xml data | |
JP4810113B2 (ja) | データベースチューニング装置及びデータベースチューニング方法並びにプログラム | |
JP2001134597A (ja) | 複数異種情報源アクセス方法及び装置及び複数異種情報源アクセスプログラムを格納した記憶媒体 | |
US20100205155A1 (en) | System and method for content management and determination of search conditions | |
JP2006343798A (ja) | マテリアライズドビュー表作成方法、装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20111206 |