(57)【要約】方法およびシステムにより、構造化されたデータベースに問い合わせを行うことをユーザに許可する検索インターフェースを提供し、１つまたは複数のデータベースからデータベースエントリを検索するステップと、複数のデータベースエントリをフラット化するステップと、複数のフラット化されたデータベースエントリをインデックス化し、サーチエンジンインデックスを作成するステップと、ユーザに入力を促すステップとを含む。前記システムはユーザ入力を継続的に監視し、ユーザによる入力がある度に、システムが、ユーザによる入力に応答して非ヌルの部分的なクエリのセットを計算し、構造化された項目をそれぞれの非ヌルの部分的なクエリに関連付け、構造化された項目の１つをユーザに選択させる。構造化された項目の１つをユーザが選択した場合、システムは、ユーザ入力を、構造化された項目に関連付けられた非ヌルの部分的なクエリで置き換える。ユーザが入力を有効化すると、システムは入力をクエリとして実行する。最後に、システムが、実行されたクエリに対応する文書をユーザに提供する。
2013503381.tif 000002
【特許請求の範囲】
【請求項１】
ユーザからの入力に基づき、サーチエンジンに対してクエリを実行する方法であって、前記方法は、
１つまたは複数のデータベースからデータベースエントリを検索するステップと、
複数の前記データベースエントリをフラット化するステップと、
前記複数のフラット化されたデータベースエントリをインデックス化して、サーチエンジンインデックスを作成するステップと、
前記ユーザに入力を促すステップと、
前記ユーザによる入力を継続的に監視するステップと、
前記ユーザによる入力がある度に、
前記ユーザによる入力に応答して非ヌルの部分的なクエリのセットを計算するステップと、
構造化された項目をそれぞれの非ヌルの部分的なクエリに関連付けるステップと、
前記構造化された項目の１つを前記ユーザに選択させるステップと、
前記構造化された項目の１つを前記ユーザが選択した場合、前記ユーザによる入力を、前記選択した構造化された項目に関連付けられた前記非ヌルの部分的なクエリにより置き換えるステップと
により、前記ユーザによる入力を処理するステップと、
前記ユーザが前記入力を有効化すると、前記入力をクエリとして実行するステップと、
前記実行されたクエリに対応する文書を前記ユーザに提供するステップと
を含むことを特徴とする方法。
【請求項２】
前記入力が、キーボードおよび／またはポインティングデバイスを用いて行われることを特徴とする請求項１に記載の方法。
【請求項３】
前記入力が、音声コマンドを用いて行われることを特徴とする請求項１に記載の方法。
【請求項４】
前記ユーザによる入力が、各キーストロークの後に処理されることを特徴とする請求項２に記載の方法。
【請求項５】
前記有効化されたクエリが、前記サーチエンジンインデックスに対して実行されることを特徴とする請求項１に記載の方法。
【請求項６】
前記有効化されたクエリが、１つまたは複数のデータベースのそれぞれの構文にマッピングされ、前記マッピングされたクエリが前記データベースに対して実行され、その結果が統合されることを特徴とする請求項１に記載の方法。
【請求項７】
前記データベースエントリをフラット化するステップは、対応するフラット化されたエントリを生成し、各フラット化されたエントリが、データベースのテーブルの型、データベースのテーブル名、データベースの列名、およびデータベースのテーブル行内の具体化された値、に対応する情報を含むテキストの一本のラインとして、前記データベースエントリの各行を再現することを特徴とする請求項１に記載の方法。
【請求項８】
ＳＰＬＩＴ演算子をサポートする前記サーチエンジンは、前記データベースエントリをフラット化し、かつ、前記データベースに含まれる文書のセクション内を検索するよう構成されることを特徴とする請求項１に記載の方法。
【請求項９】
前記サーチエンジンは、転置ファイルのデータ構造を利用することを特徴とする請求項７に記載の方法。
【請求項１０】
前記サーチエンジンは、スペルチェック機能、シソーラス機能、ステミング機能、見出語化機能、トークン化機能、正規化機能からなる群から選択される機能を実行することを特徴とする請求項８に記載の方法。
【請求項１１】
前記ユーザによる前記入力に応答して非ヌルの部分的なクエリのセットを計算するステップは、自動補完の候補を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
各構造化された項目は、前記ユーザ入力に対応してハイライトされて示されることを特徴とする請求項１に記載の方法。
【請求項１３】
各構造化された項目が階層化されて示されることを特徴とする請求項１に記載の方法。
【請求項１４】
コンピュータ使用可能媒体と、
前記コンピュータ使用可能媒体上で具現化される、ユーザからの入力に基づきサーチエンジンに対してクエリを実行させるコンピュータ可読コードと、
を含むコンピュータプログラム製品であって、
前記コンピュータ可読コードはプロセッサにより実行され、実行されると前記プロセッサに、
１つまたは複数のデータベースからデータベースエントリを検索するステップと、
複数の前記データベースエントリをフラット化するステップと、
前記複数のフラット化されたデータベースエントリをインデックス化してサーチエンジンインデックスを作成するステップと、
前記ユーザに入力を促すステップと、
前記ユーザによる入力を継続的に監視するステップと、
前記ユーザによる入力がある度に、
前記ユーザによる入力に応答して非ヌルの部分的なクエリのセット計算するステップと、
構造化された項目をそれぞれの非ヌルの部分的なクエリに関連付けるステップと、
前記構造化された項目の１つを前記ユーザに選択させるステップと、
前記構造化された項目の１つを前記ユーザが選択した場合、前記ユーザ入力を、前記選択され構造化された項目に関連付けられた前記非ヌルの部分的なクエリにより置き換えるステップと
により前記ユーザによる入力を処理するステップと、
前記ユーザが前記入力を有効化すると、前記入力をクエリとして実行するステップと、
前記実行されたクエリに対応する文書を前記ユーザに提供するステップと
を実行させることを特徴とするコンピュータプログラム製品。
【請求項１５】
前記入力が、キーボードおよび／またはポインティングデバイスを用いて行われることを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項１６】
前記入力が、音声コマンドを用いて行われることを特徴とする請求項１４に記載のコンピュータプログラム製品。 
【請求項１７】
前記ユーザによる入力が、各キーストロークの後に処理されることを特徴とする請求項１４に記載のコンピュータプログラム製品 。
【請求項１８】
前記有効化されたクエリが、前記サーチエンジンインデックスに対して実行されることを特徴とする請求項１４に記載のコンピュータプログラム製品。 
【請求項１９】
前記有効化されたクエリが、１つまたは複数のデータベースのそれぞれの構文にマッピングされ、前記マッピングされたクエリが前記データベースに対して実行され、その結果が統合されることを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項２０】
前記データベースエントリをフラット化するステップは、対応するフラット化されたエントリを生成し、各フラット化されたエントリが、前記データベースエントリに対応して行数、列名、列の値を分離するデリミタを有するテキストの一本のラインとして、前記データベースエントリの各行を再現することを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項２１】
前記サーチエンジンは、転置ファイルのデータ構造を利用することを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項２２】
ＳＰＬＩＴ演算子をサポートする前記サーチエンジンは、前記データベースエントリをフラット化し、かつ、前記データベースに含まれる文書のセクション内を検索するよう構成されることを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項２３】
前記サーチエンジンは、スペルチェック機能、シソーラス機能、ステミング機能、見出語化機能、トークン化機能、正規化機能からなる群から選択される機能を実行することを特徴とする請求項２２に記載のコンピュータプログラム製品。
【請求項２４】
前記ユーザによる入力に応答して非ヌルの部分的なクエリのセットを計算するステップは、自動補完の候補を含むことを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項２５】
各構造化された項目は、前記ユーザ入力に対応してハイライトされて示されることを特徴とする請求項１４に記載のコンピュータプログラム製品。 
【請求項２６】
各構造化された項目が階層化されて示されることを特徴とする請求項１４に記載のコンピュータプログラム製品。
【請求項２７】
ユーザからの入力に基づきサーチエンジンに対してクエリを実行するシステムであって、
１つまたは複数のデータベースからデータベースエントリを検索するよう構成されるプロセッサと、
前記データベースエントリをフラット化するよう構成されるデータベースフラット化コンポーネントと、
前記フラット化されたデータベースエントリをインデックス化してサーチエンジンインデックスを作成するよう構成されるデータベースインデックス化コンポーネントと、
前記ユーザに入力を促すよう構成される表示画面と
を含み、
前記プロセッサは、前記ユーザによる入力を継続的に監視し、
前記ユーザによる入力に応答して非ヌルの部分的なクエリのセットを計算することと、
構造化された項目をそれぞれの非ヌルの部分的なクエリに関連付けることと、
前記構造化された項目の１つを前記ユーザに選択させることと、
前記構造化された項目の１つを前記ユーザが選択した場合、前記ユーザによる入力を、前記構造化された項目に関連付けられた前記非ヌルの部分的なクエリにより置き換えることと
により前記ユーザによる入力を処理し、
前記ユーザが前記入力を有効化すると、前記プロセッサは前記入力をクエリとして実行し、前記実行されたクエリに対応する文書を前記ユーザに提供することを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してデータの記憶および検索に関連する。より詳細には、本開示は、ユーザが、構造化クエリ言語を用いてアクセス可能なデータを検索することができる、システムおよび方法に言及する。
【０００２】
関連出願の相互参照
本出願は、２００９年８月３１日に出願された「トラステッドクエリのシステムおよび方法」と題する仮出願第６１／２３８，２８３号の優先権の利益を主張する。特許出願第６１／２３８，２８３号は、参照によりここに組み込まれる。
【０００３】
著作権の表示
本特許文献の開示の一部には著作権保護の下にある資料が含まれる。著作権所有者は、本特許文献または特許開示の何人による複製品にも、特許商標庁の特許のファイルまたは記録において出現する限りにおいて、異議を唱えないが、それ以外は何であれ全ての著作権を保有する。以下の通知は、本文書にて下記および図面に記載される任意のソフトウェアおよびデータに適用される：Ｃｏｐｙｒｉｇｈｔ（ｃ）２０１０，Ｅｘａｌｅａｄ，Ａｌｌ  Ｒｉｇｈｔｓ  Ｒｅｓｅｒｖｅｄ。
【背景技術】
【０００４】
データベースは、１人または複数のユーザのための組織化されたデータのコレクションから成る。データベースを分類する方法の１つに、内容の型によるものがあり、例えば、書誌、全文、数値、画像等がある。他の分類方法では、以下に説明するように、データベースモデルまたはデータベースアーキテクチャを検査するものがある。
【０００５】
データベース内のデータは、データベースモデルに従ってソフトウェアにより構造化される。リレーショナルデータベースモデルが最も一般的に使用される。階層モデル、ネットワークモデル等の他のモデルでは、関係をより明示的に構造化した表現で表したものを使用する。リレーショナルデータベースでは、データセット内で発見される共通の特徴を使用することによりデータをマッチさせる。結果として得られるデータグループは、多くの人々がより簡単に理解できるように構造化される。例えば、ある町の全ての不動産取引を含むデータセットは、取引が発生した年、取引の売買価格、または購入者の姓などによりグループ化することができる。このようなグループ化では、関係（リレーショナル）モデル（「スキーマ」とも称する）を使用する。従って、このようなデータベースを、「リレーショナルデータベース」と呼ぶ。
【０００６】
このような構造化およびグループ化を実行するために使用されるソフトウェアを、リレーショナルデータベース管理システム（ＲＤＢＭＳ）と呼ぶ。用語「リレーショナルデータベース」は、このタイプのソフトウェアを指す場合が多い。リレーショナルデータベースは、現在、財務記録、製造および物流の情報、個人データ等、他にも多くを記憶するために使用される主要な選択である。具体的には、リレーショナルデータベースは、関係のコレクションであり、テーブルと称されることが多い。テーブルは、列でラベル付けされ分類された、データの値またはキーの行から成る。あるデータベース管理システムでは、クエリを提示する前にユーザがユーザ自身を識別することを求め、所与の識別されたユーザに対して、そのユーザに対して定義されるアクセス権に応じて、テーブル内のある行もしくは列または全テーブルを、見えるようにまたは見えないようにすることができる。
【０００７】
データベースにおけるクエリとは、クエリに対する回答によって満たされるべき条件を指定した、データベースに対してデータを要求するための定型句のインスタンス化である。構造化クエリとは、構造化された文法に従って定式化されたクエリである。このような文法の１つに、構造化クエリ言語（ＳＱＬ）で規定されるものがあり、構造化クエリ言語は、リレーショナルデータベース管理システム（ＲＤＢＭＳ）内のデータにアクセスするために広く使用される言語である。データベース検索システムは、ソフトウェアプログラム、または１つまたは複数のデータベースに渡ってユーザのクエリを処理するプログラムのセットである。
【０００８】
クエリ処理とは、インスタンス化されたユーザのクエリを入力として受け取り、クエリを構文解析してクエリ内にどんな条件が指定されているのかを理解し、データベースのデータにアクセスし、クエリ内に指定される条件を満たす回答をデータベースから返す、ことである。うまく構造化されたクエリとは、データベース検索システムにおいて実装される文法に配慮したクエリである。
【０００９】
インスタンス化されたクエリは、少なくとも１つの条件を有するクエリである。データベースの元々の機能は、データベース管理システムがデータベース上で実行可能な操作であり、データベースの作成、データベースの変更、およびデータベース上のクエリ処理を含む。データベースクエリからの検索結果は、通常、クエリで指定された条件を満たすデータベースの要素全てのリストである。
【００１０】
サーチエンジンは、文書と呼ばれることが多い情報の塊を、様々な情報ソースからフェッチするソフトウェアプログラムまたはプログラムのセットであり、その情報をインデックス化し、かつクエリに応答してそのインデックスを使用して元の情報のうちのある表現にアクセスする手段を提供する、などを行う。元の情報、すなわち文書は、ウェブページ、電子メール、ＰＤＦファイル、画像ファイル、映像ファイル、音声ファイル、データベースの行、または分析を受ける任意の他の情報、等のテキスト文書とすることができる。
【００１１】
データベース全体に渡ってデータベースクエリを走らせ、かつ、その結果リストの全ての項目を文書として扱うことによりデータベースの内容をインデックス化することが可能である。
【００１２】
データベースの内容をインデックス化することに加えて、データベースの内容を前もってフラット化することが可能である。「フラット化」の方法は、データベースから複数の行と複数のテーブルとを組み合わせて文書を作成することから成る。
【００１３】
例えば、ＧＯＯＧＬＥ（登録商標）、またはＹＡＨＯＯ！（登録商標）などのサーチエンジンは通常、データベースインターフェースと比較すると、ユーザのクエリを入力するための特有のクエリボックスを持ち、場合によってはテーブル内の各フィールドに１つずつ、複数の検索ボックスを有することができる。サーチエンジンは、非常に簡素な入力文法を持つことが多く、例えば、入力として１つの単語を受け取り、その単語を含むインデックス化された全てのウェブページを返す。これはフリーテキスト検索の例であり、結果の文書のどこかにその単語が出現するからである。サーチエンジンによりフェッチされる文書全体を検索することができる場合は、サーチエンジンは全文検索を実行する。
【００１４】
文書はセクションに分割することもでき、これをサーチエンジンが認識する。このようなセクションには、段落セクション、タイトルセクション、または本文セクションがある。あるサーチエンジンでは、ユーザはクエリを特定のセクションまたはフィールドに限定することができる。サーチエンジンクエリの検索結果は、クエリにマッチする文書のリストである。このリストは通常、文書の長さ（最初は短い文書を示す）による順位付け、または、クエリ内の単語の密度を各文書内の単語と比較することによる順位付け、等の順位付け法に従って順序付けられる。
【００１５】
フリーテキスト検索ではサーチエンジンに対して有効なクエリを定式化するのに対して、通常、より洗練されたクエリのサポートを提供するものがある。例えば、ＧＯＯＧＬＥなどのよく知られたサーチエンジンでは、ブール演算子（例えば、Ｄｉｓｎｅｙとｗｏｒｌｄの論理積）、または、文書の特定の部分を対象とするよう構成される、例えば「表題：Ｄｉｓｎｅｙ」を対象として「Ｄｉｓｎｅｙ」という言葉を文書の表題の中でのみ検索するような演算子、をサポートするものが多い。多くの他の様々な文書の区分化も可能である。
【００１６】
サーチエンジンでは、フェッチされた文書から抽出した全ての言葉の転置インデックスを頻繁に使用する。転置インデックスは、どの文書内のどこにその言葉が発見されるかを示す。このインデックスから抽出された言葉のリストにより、サーチエンジンは、ユーザがクエリボックスにクエリを打ち込む間に、自動補完を提示する。自動補完は、ユーザが現在打ち込んでいる文字列を、インデックス化されたどの言葉が補完することができるかを示す機構である。自動補完を、ユーザが何を打ち込んでいるのかを監視する処理により実行し、全てのキーストロークの後に可能性のある補完を提示することができる。自動補完で提示されたそれぞれの補完は、サーチエンジンでクエリとして使用できるインデックス化された言葉である可能性があり、そのため、サーチエンジンではこの言葉に対応する文書が存在することが分かる。
【００１７】
サーチエンジンでは、多くの場合、ユーザのクエリ全体にスペルチェックを実行する。スペルチェックにおいて、サーチエンジンは、ほとんどまたは全く検索結果が無いクエリに対して、その転置インデックスから、ユーザが打ち込もうとしている可能性がある他の言葉を提示することができる。
【００１８】
スペルチェックに加えて、サーチエンジンでは、例えば、「ｄｏｇｓ」等の検索用語を、語幹を抽出（ステミング）して見出語化し、「ｄｏｇ」という言葉でもマッチさせるようにする他の検索機構を提供することもできる。別の例のサーチエンジンクエリ構文では、アスタリスク（＊）演算子を使用して任意の数の文字とマッチさせ、検索クエリ「ｄｏｇ＊」が転置インデックスの言葉「ｄｏｇ」、「ｄｏｇｓ」、「ｄｏｇｇｅｄ」「ｄｏｇ−ｅａｒｅｄ」などともマッチするようにすることができる。このようにアスタリスク演算子を使用することを、プレフィックスマッチと呼ぶ。
【００１９】
引用符を使用して検索クエリを括り、デフォルトのステミングをオフにして完全一致を求める場合もあるであろう。例えば、「ｄｏｇｓ」は転置インデックスにおいて「ｄｏｇｓ」という言葉のみにマッチするが、「ｄｏｇ」という言葉にはマッチしない。サーチエンジンは、シソーラス等の語彙意味構造を使用して検索を実行することもできるため、シソーラスが「ｄｏｇ」と「ｐｅｔ」との間の関係を示し、かつ、この関係がクエリ処理中にアクティブにされる、と仮定するならば、単語「ｄｏｇ」に対する検索により単語「ｐｅｔ」を含む文書を検索することにもなる。
【００２０】
統語的可能性を使用するサーチエンジン検索およびデータベース検索の両方に対してクエリを形成することは、普通の情報探索者には難しいであろう。高度なクエリ構文は、習得することが難しく、ごく一部の情報探索者だけがそれほどの訓練もせずに習得することができる。
【００２１】
市販の製品には、ユーザにデータベースクエリの構築を支援するものがある。例えば、カリフォルニア州レッドウッドショアーズのＯＲＡＣＬＥ（登録商標）社のＤＩＳＣＯＶＥＲ（登録商標）には、画面に表示される項目のドロップダウンリストから項目を選択することにより、ユーザがクエリを構築できるようにするクエリジェネレータが含まれる。項目は、データベースから取得されるデータを表すもの、あるいは、このデータに対して実行される操作を表すもの、とされる。項目を選択すると、クエリジェネレータは、クエリを、通常はＳＱＬで生成し、そのクエリを実行のためにデータベース検索システムに送ることができる。
【００２２】
Ｍ．Ｈａｓｓａｎ、Ｒ．Ａｌｈａｊｊ、ＭＪ．Ｒｏｄｌｅｙによる「Ｃｏｍｂｉｎｉｎｇ  Ｆｒｅｅ−ｗｏｒｄ  Ｓｅａｒｃｈ  ａｎｄ  Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅｓ（フリーワード検索とリレーショナルデータベースの組み合わせ）」と題する論文において、著者は、「構造化クエリ言語は、周知の構造および特徴を有するリレーショナルデータベースの内容および構造をクエリすることを可能にする上で非常に有用である。しかし、所与の動的データベース、すなわち、変動するまたは未知の構造を有するデータベースでは、クエリの定式化処理は非常に難しい課題である」と述べている。上述の著者は、Ｊａｖａ（登録商標）データベースコネクティビティを使用して簡素なサーチエンジンのようなクエリを一連のデータベース要求に変換することにより、データベースの内容および構造を探索するシステムを提案している。ＪＤＢＣ（登録商標）（Ｊａｖａデータベースコネクティビティ）は、データベースに記憶されるデータをＪａｖａプログラムで操作することを可能にする技術である。「全てのレベル」のモードにおいて、特定のブール演算子により結合される１つまたは２つの単語からなるクエリをサブミットすると、ＪＤＢＣデータベース要求が全ての可視データベースに送られ、クエリにマッチする任意のデータベース名、テーブル名、列名、または値が表示される。
【００２３】
ビジネスインテリジェンスとは、ビジネス上のより良い意思決定をサポートし、経営管理に企業活動の概観を提供するために、企業の重要なデータおよび重要でないデータを集め、整備し、モデル化し、配信するコンピュータベースの技術を言う。多くの既知のビジネスインテリジェンスシステムの１つの主要な欠点は、複雑な構造化クエリを扱うことができる１人または複数の専門家の介入を必要とすることが多いということに起因する。例えば、経営幹部が特別な要求をしたいとき、その人物は、その要求を満足する適切な回答を提供するための複雑な構造化クエリを設計することが役割であるデータベースの専門家に、それを伝えなければならない。その際の会話と複雑な構造化クエリの設計には、時間がかかる。この要件は、ビジネスインテリジェンスシステムの発展に対する深刻な制限を象徴する。従って、一定のレベルの信頼性を有するフリーテキスト検索を実装するサーチエンジン等の包括的かつ直感的なツールを使用して、要求を定式化するための方法およびシステムが必要とされる。
【発明の概要】
【００２４】
本文書に記載される実施形態は、上記の方法とは多くの点で異なる。本発明の一実施形態において、各キーストローク時のユーザ入力を監視し、ユーザ入力についての全ての可能性のある補完を提示する。他の実施形態では、全ての可能性のあるクエリを走らせるのではなく、サーチエンジンを使用して所与のデータベース全体に走らせることができる構造化クエリについて記載する。ある実施形態では、さらに、データベース検索システム自体ではなく、データベース内の情報のコピーを使用し、これにより、サーチエンジン技術のスピードおよびスケラビリティに基づく利点を提供する。サーチエンジンは概して非常に速く、データベース検索システムがクエリへの応答に必要とする数秒または１分の範囲ではなく、１秒未満の範囲で結果を出す。ある実施形態では、非ヌルの（空でない）回答を有する、トラステッド（信頼できる）クエリのみを作成することにより、さらにユーザを支援する。他の実施形態では、提示されるトラステッドクエリの結果数をさらにユーザに提供する。
【００２５】
一実施形態において、トラステッドクエリのシステムは、データベースの構築および操作に必ずしも長けてはいないユーザが、トラステッドクエリ、すなわち、データベースに対して有効であり、かつ、データベース内にマッチするインスタンス化されたレコードを持つことが既知である構造化クエリ、を繰り返し作成することにより、データベースの内容にアクセスする手段を提供する。構造化クエリは、クエリが行われるデータベース全体に渡って、ユーザのクエリを一定の値または一定のフィールドに制限する。本明細書では、用語「クエリ」はサーチエンジンにより実行される構造化クエリを意味する。
【００２６】
一実施形態において、トラステッドクエリを実行する方法は、１つまたは複数のデータベースからデータベースエントリを検索するステップと、複数のデータベースエントリをフラット化するステップと、複数のフラット化されたデータベースエントリをインデックス化してサーチエンジンインデックスを作成するステップと、ユーザに入力を促すステップと、を含む。システムは、ユーザ入力を継続的に監視し、ユーザによる入力がある度に、システムは、ユーザによる入力に応答して非ヌルの部分的なクエリのセットを計算し、構造化された項目をそれぞれの非ヌルの部分的なクエリに関連付け、構造化された項目の１つをユーザに選択させる。構造化された項目の１つをユーザが選択した場合、ユーザ入力を、システムは、選択した構造化された項目に関連付けられた非ヌルの部分的なクエリで置き換える。ユーザが入力を有効化すると、システムは入力をクエリとして実行する。最後に、システムは、実行されたクエリに対応する文書をユーザに提供する。
【００２７】
別の実施形態において、コンピュータプログラム製品は、コンピュータ使用可能媒体と、コンピュータ使用可能媒体上で具現化される、ユーザからの入力に基づきサーチエンジンに対してトラステッドクエリを実行するためのコンピュータ可読コードと、を含む。コンピュータ可読コードをプロセッサにより実行し、実行するとプロセッサに、１つまたは複数のデータベースからエントリを検索させ、複数のデータベースエントリをフラット化させ、複数のフラット化されたデータベースエントリをインデックス化してサーチエンジンインデックスを作成させ、ユーザに入力を促させる。コンピュータプログラム製品は、ユーザ入力を継続的に監視し、また、ユーザによる入力がある度に、プロセッサが、ユーザによる入力に応答して非ヌルの部分的なクエリのセットを計算し、構造化された項目をそれぞれの非ヌルの部分的なクエリに関連付け、構造化された項目の１つをユーザに選択させる。構造化された項目の１つをユーザが選択した場合、プロセッサは、ユーザ入力を、選択した構造化された項目に関連付けられた非ヌルの部分的なクエリで置き換える。ユーザが入力を有効化すると、プロセッサは、入力をクエリとして実行し、実行されたクエリに対応する文書をユーザに提供する。
【００２８】
さらなる実施形態において、ユーザからの入力に基づきサーチエンジンに対してクエリを実行するシステムが、１つまたは複数のデータベースからデータベースエントリを検索するよう構成されるプロセッサと、データベースエントリをフラット化するよう構成されるデータベースフラット化コンポーネントと、フラット化されたデータベースエントリをインデックス化してサーチエンジンインデックスを作成するよう構成されるデータベースインデックス化コンポーネントと、ユーザに入力を促すよう構成される表示画面と、を含む。プロセッサは、ユーザ入力を継続的に監視し、ユーザによるユーザ入力を、ユーザによる入力に応答して非ヌルの部分的なクエリのセットを計算することと、構造化された項目をそれぞれの非ヌルの部分的なクエリに関連付けることと、構造化された項目の１つをユーザに選択させることと、構造化された項目の１つをユーザが選択した場合、ユーザ入力を、選択した構造化された項目に関連付けられた非ヌルの部分的なクエリで置き換えることと、により処理する。ユーザが入力を有効化すると、プロセッサは入力をクエリとして実行し、実行されたクエリに対応する文書をユーザに提供する。
【００２９】
本明細書に記載されるある実施形態に従ってトラステッドクエリを提供および生成することは重要であり、何故ならば、フリーテキストを使用してクエリを定式化することが本質的に曖昧であり、このような曖昧さのため、意思決定の文脈、例えば、ビジネスインテリジェンスアプリケーションの文脈で、クエリの結果による特定の項目／カテゴリを考慮する円グラフを描く時など、結果を使用する際に問題が起こる。従って、解釈、すなわち、ユーザがフリーテキストクエリを定式化する際に考えるであろうことを予測する構造化クエリ処理、を提示するトラステッドクエリのシステムおよび方法が必要である。これは、フリーテキストを使用してクエリを定式化する際の一定のレベルの「信頼」を形成するために重要である。これは、ビジネスインテリジェンスの文脈において特に重要なことである。
【図面の簡単な説明】
【００３０】
システムおよび方法は、以下の記載と共に添付の図面を参照することにより良く理解できる。図面中の構成要素は必ずしも縮尺されているわけではなく、その代わり、本発明の原理を例示することに重点が置かれている。さらに、図中、異なる図面全体を通して同様の参照番号は対応する部分を示す。
【００３１】
【図１】トラステッドクエリの方法およびシステムにより行うことができるステップを示す本発明の一実施形態によるフロー図である。
【図２】特定の実施形態による、データベースのフラット化に対して行うことができるステップを示すフロー図である。
【図３】特定の実施形態による、フラット化されたデータベースのテーブルをインデックス化するために行うことができるステップを示すフロー図である。
【図４】ユーザ入力および監視のために行うことができるステップを示す特定の実施形態によるフロー図である。
【図５】ユーザの各キーストロークの後にどのようにトラステッドクエリを生成するかを示す、特定の実施形態によるフロー図である。
【図６】本発明のいくつかの実施形態に従う方法を実装するために使用することができるコンピュータシステムのブロック図である。
【図７】本発明の一実施形態による、典型的なデータベースのテーブルを示す図である。
【図８】どのようにして図７のデータベースをサーチエンジンで表すことができるのかを示す図である。
【図９】特定の実施形態による、データベースおよびそのフラット化された形式の実例を示す図である。
【図１０】特定の実施形態による、データベースおよびそのフラット化された形式の実例を示す図である。
【図１１】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図１２】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図１３】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図１４】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図１５】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図１６】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図１７】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図１８】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図１９】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図２０】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図２１】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【図２２】本発明の特定の実施形態によるトラステッドクエリのインターフェースの種々の画面表示を例示する図である。
【発明を実施するための形態】
【００３２】
図１は、トラステッドクエリのシステムの操作を示すフロー図であり、トラステッドクエリシステム１１０の一実施形態により行うことができるステップ（１００）を含む。ユーザの処理の概要としては、特定の実施形態に従うと、サーチエンジンを使用してデータベースにクエリを行うためのＧＵＩすなわちグラフィカルユーザインターフェース等のインターフェースを、ユーザに示す。そして、ユーザがサーチエンジンのクエリボックスに自分のクエリを打ち込み始める。望ましい実施形態において、各キーストロークが打ち込まれた後、システムは、データベースから非ヌルのレコードのセットが戻されるような様々なインスタンス化されたクエリおよび部分的にインスタンス化されたクエリを表示する。
【００３３】
ユーザはいつでも、（ｉ）システム１１０により提示されるクエリ候補をクリックすること、（ｉｉ）表示されるクエリボックス内に追加でテキストを入力すること、または（ｉｉｉ）現在のクエリを下層のサーチエンジンまたはデータベース検索システムにサブミットすること、ができる。あるいは、ユーザは、システム１１０へのデータ入力として、打ち込むのではなく音声テキスト変換インターフェースを使用することができる。以下の説明においては、ユーザがテキスト入力インターフェースを使用していることを前提とする。
【００３４】
トラステッドクエリの方法及びシステム１１０の１つの利点として、結果が得られないようなクエリをユーザが定式化することがない。本明細書に記載する処理の間、ユーザは、結果が得られないようなテキストを入力することはできるが、トラステッドクエリの方法およびシステム１１０では、最初に、ユーザがクエリを有効にする前に、このようなクエリでは結果が得られないことをユーザに警告する。システム１１０はまた、例えば、この時点でスペルチェックを行って、代替を示すこともできる。
【００３５】
理論上は、ユーザが打ち込みを始める前に、結果が得られるような全てのクエリを生成することは可能であるが、組み合わせとして多数の可能性があるため、サーチエンジンによりクエリが行われている元のデータベースの大きさより大きな、数十倍もの記憶スペースが必要となり、実行可能ではなく採算が合わない。本明細書に記載される実施形態を使用して、データベース上で走らせることができる全ての可能なクエリを、必ずしも明示的に生成するわけではないが、これは、以下で説明するように、素早いサーチエンジン検索により、可能性のある非ヌルのクエリをリアルタイムでまたはオンザフライで生成するからである。
【００３６】
一実施形態によるトラステッドクエリの方法およびシステム１１０では、固有のデータベース機能ではなく下層のサーチエンジンの技術を使用するため、システム１１０は、全文検索および下層のデータベースシステム内には存在しない他のサーチエンジンの機能を提供する。例えば、トラステッドクエリの方法およびシステム１１０では以下を提供する。
【００３７】
−言語検出
−文境界の認識（テキストを構文解析して個々の単語および文にする、スペースおよび句読点などのセパレータを考慮して言語特有の規則を適用する）による、トークン化および正規化
−ステミング（同一の語幹を共有する単語、例えば、「ｅｎｇｉｎｅ」と「ｅｎｇｉｎｅｓ」の識別）
−見出語認定、形態学的統語的処理（基本の語幹の識別だけでなく、「ｇｏｏｄ」と「ｂｅｔｔｅｒ」などのより複雑な変形型を識別する、および、単語および文の構造パータンについての言語特有の知識を適用する）
【００３８】
トラステッドクエリの方法およびシステムの特定の実施形態において、サーチエンジンなどの市販のソフトウェアを使用して、下層のデータベースをインデックス化して、一旦フラット化することができる。このような市販のサーチエンジンは、望ましくは「ＳＰＬＩＴ」演算子の機能を含む。下層のデータベース（または複数のデータベース）は、最初にサーチエンジンにより全体をインデックス化し、サーチエンジンインデックスを作成し、そのため、サーチエンジンは、元のデータベースではなくサーチエンジンインデックスに作用することになる。その後、ユーザのクエリに基づき、サーチエンジンは、サーチエンジンインデックスから得られる文書を返し、このような結果は、以下で説明するように、元のデータベースの行を表す。もちろん、サーチエンジンインデックスには、メモリ効率および処理速度のために必要に応じて、多くの構造体またはサブ構造体を含むことができる。あるいは、インデックス化を複数の「バッチ」で実行して、メモリ使用を最小限にし、効率的な処理を促進させることもできる。そうすれば、サーチエンジンインデックス全体を一度にメモリに常駐させる必要がない。
【００３９】
ここで図１を参照すると、一実施形態によるトラステッドクエリの方法を実行するステップ１００を、高水準の形態で概説している。本段落に記載する選択された高水準のステップは、以下でより詳細に説明される。第１のステップ１２０では、データベースのテーブルをデータベース（「Ａ」）１２２から検索し、テーブルをフラット化し、フラット化されたデータベースストレージ１２４に記憶する。この処理は図３により詳細に示される。次に、フラット化されたデータベース１２４を、サーチエンジンまたは他の適切なツール１３０を使用してインデックス化する。そして、候補リストを抽出し（１４０）、候補リスト（「Ｂ」）１２６に保存される。次に、入力表示画面をユーザに対して示し（１５０）、ユーザは種々の検索用語またはクエリを入力することが許可される。続いて、処理によりユーザ入力を監視し、クエリに対して非ヌルの応答が得られるようなクエリをユーザに提示する（１６０）。本ステップは、繰り返しループしてトラステッドクエリの処理をユーザに提供する。
【００４０】
図１のフラット化のステップ１２０において、典型的なデータベースのテーブルを簡単に表した図７に示されるデータベーステーブル７００にアクセスする。データベースのデータベーステーブル７００は、名前Ｄ（７２０）の型Ｔ（７１０）であり、Ｃｌ，Ｃ２，．．．，ＣＮでラベル付けされる複数のデータベーステーブルの列７３０と、値Ｔ１１，Ｔ１２，．．．Ｔ１Ｎ、Ｔ２１，Ｔ２２，．．．Ｔ２Ｎ、最後はＴＭ１，．．．，ＴＭＮ、で具体化される複数（Ｍ個）のデータベーステーブルの行７４０と、から成る。なお、本記載において、用語「列」と「フィールド」とは交換可能に使用される。
【００４１】
図１のステップ１２０において、データベースＡを、既知のデータベースフラット化技術を使用してフラット化すること、かつ、特定のフォーマットにフラット化することができ、特定のフォーマットでは、各行がデータベーステーブルの型、データベーステーブル名、データベースの列名（フィールド名）およびデータベーステーブルの行の具体的な値を識別する情報を含む。任意の適切なサーチエンジンを使用して、データベースをフラット化することでき、それには例えば、フランスのＥｘａｌｅａｄＳ．Ａ社から入手可能なＣＬＯＵＤＶＩＥＷ（登録商標）サーチエンジンがある。ステップ１２０において、複数のデータベースおよび各データベースの複数のテーブルをフラット化かつインデックス化することができ、例示の目的のためだけであるが、このようなテーブルが図７に示される。
【００４２】
図２は、データベースをフラット化するために行われるステップをより詳細に示し、図１のステップ１２０に対応する。例えば、図７のデータベーステーブルをフラット化形式に変換して図８に示す。図８に示すフラット化フォーマットでは、各データベーステーブルの行を、列８１０、カンマ８２０およびセミコロンにより分離されるテキストの一本のライン上に再現し、行番号を示す位置、列名、列の値を示す。例えば、第２行の第２列の値は図７のＴ２２であり、図８にライン：
−ＲＯＷ−２：Ｔ／Ｄ／Ｃｌ，Ｔ２１；Ｔ／Ｄ／Ｃ２，Ｔ２２；．．．；Ｔ／Ｄ／ＣＮ，Ｔ２Ｎ
として表される。
【００４３】
図８に示す本例においては、第１のフィールドであるＲＯＷ−２、８４０（セミコロンで分離される）が、このラインがテーブルの２番目の行に対応することを示す。このセミコロンは、Ｎ個のフィールドごとに続く。これらのフィールドの２番目には、カンマで分離される２つの項目、すなわち、Ｔ／Ｄ／Ｃ２およびＴ２２を含む。このフィールドはコロンの後の２番のフィールドであるので、テーブルの２番目の列に対応する。このフィールドの最初の項目は、データベースの型Ｔ（任意の値）、データベーステーブルの名前Ｄ、フィールドまたは列の名前Ｃ２を階層的に表示する。なお、これらの分離に関する在来の規則の代わりに任意の適切なまたは同等の分離スキームを使用することができ、このような適切な分離スキームについては、ＵＲＬ：ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｆｌａｔ＿ｆｉｌｅ＿ｄａｔａｂａｓｅにて確認することができる。
【００４４】
図２に示すように、クエリを、サーチエンジンを使用してデータベース上で実行し（２０２）、次の行のデータベースクエリの結果を、システム２０４に読み込み、または入力する。処理がデータベースクエリの結果の最後に達していない場合（２１０）、各列に対して（２１６）、行の最後に達したかどうかの判定を行う（２２６）。行の最後に達した場合（２２６）、「ｅｎｄ  ｏｆ  ｒｏｗ」のセパレータシンボルがその行の最後に書き込まれ（２３０）、処理はステップ２０４に戻り次の行を読み込む。
【００４５】
行の終わりに達していない場合（２２６）、列名、続いて列名のセパレータシンボルをファイルに書き込む（２５０）。次に、列の値、続いて列のセパレータシンボルをファイルに書き込む（２６０）。そして、ファイルにさらに列が存在するかどうかの判定を行う（２７０）。さらに列が存在する場合、処理はステップ２２６に戻り、行の処理を完了させる。さらなる列が存在しない場合、処理は終了点に移動する（２８０）。ステップ２１０において、ファイルの最後に達した場合、ルーチンが完了したとみなされ（２９０）、処理は終了点２８０に移動する。フラット化処理により、サーチエンジンが全ての列名およびフィールド値を一度に検索することが可能になり、それにより、一度の効率的なクエリでこのデータ全部に渡る候補リストを構築することができる。
【００４６】
図１に戻ると、ステップ１３０において、フラット化されたバージョンのデータベースＡを、ステップ１２０でフラット化された全ての他のデータベースと共にインデックス化する。データベースのフラット化は、文書のセクション内を検索することができる市販のサーチエンジンまたは標準のサーチエンジンを使用して行うことができる。このような標準のサーチエンジンでは、文書を入力として受け取り、文書内の全ての単語を転置ファイルのデータ構造に配列し、続いてこれを処理してユーザのクエリをユーザのクエリの用語を含む文書とマッチさせることが可能である。図８に示すフラット化されたデータベースの例では、文書のセクションをセミコロンで分離する。
【００４７】
図３は、図１のステップ１３０に示すインデックス化のステップに関してさらに詳細を示す。まず、市販のサーチエンジンがＳＰＬＩＴ演算子機能を持つかどうかの判定を行う（３１０）。ＳＰＬＩＴ演算子により、ユーザは文書のセクション内を検索することができる。ＳＰＬＩＴ演算子が利用可能でない場合（３１０）、処理は終了する（３１４）。ＳＰＬＩＴ演算子が利用可能である場合、フラット化されたデータベーステーブルをインデック化し（３２０）、処理が終了する（３１４）。
【００４８】
例えば、「（Ｔ／Ｄ／Ｃ２  ＡＮＤ  Ｔ２２）ＳＰＬＩＴ“；”」という検索を行うと、この例では文書ＲＯＷ−２を返す。図９は、顧客関係データベースから抽出された「Ａｌｌ  ｌｅａｄｓ」９００というテーブルの例を示し、図１０は、そのフラット化されたバージョン１０００を示す。図９および１０の「Ａｌｌ＿Ｌｅａｄｓ」というデータベーステーブル、および、本明細書に示さない同様に処理されたデータベーステーブルを使用して、以下で詳細に説明するトラステッドクエリのシステムおよび方法の機能を例示する。
【００４９】
次に図１に戻り、インデックス化のステップ（１３０）でインデックス化された全ての項目のリストを、ステップ１４０に示すように単語リスト「Ｂ」に書き込む。このステップは任意選択である。単語リストＢは、インデックス化のステップ１３０と同時に作成しても、ステップ１３０の後に作成しても良く、全く作成しなくても良い。単語リストＢは、スペルチェック目的や、音声検索等の他の自然言語処理に使用することができる。
【００５０】
次に、ユーザがテキストをクエリボックスに入力可能な、および／または、例えば、キーボード、ポインティングデバイス、タッチスクリーン、音声入力、等の入力装置を使用して種々の選択肢をクリック可能な、画面（１５０）または他のインターフェースを、ユーザに対して示す。適切な市販の音声認識ソフトウェアおよび／またはハードウェアを使用して、音声認識を実行すること、および、ユーザが発行する音声コマンドを処理すること、ができる。望ましくは、ユーザに対して示される初期の画面には、１ラインに１つ、１テーブル毎のインデックス化された行の数と共に、全てのインデックス化されたデータベーステーブルを表示する。この表示１１００の例を図１１に示し、ここでは３つのテーブル《Ａｌｌ−Ｌｅａｄｓ》１１１０、《Ａｌｌ−Ｃｏｎｔａｃｔｓ》１１２０、《Ａｌｌ−Ａｃｃｏｕｎｔｓ》１１３０をインデックス化し、それぞれ９７、７３、２１個のインデックス化された行の数と共に示す。
【００５１】
図１に示すステップ１６０において、クエリボックスに入力される任意のユーザ入力により、トラステッドクエリ候補の生成の反復処理を起動する。トラステッドクエリとは以下の条件を満たすクエリである。
【００５２】
（ａ）クエリは、サーチエンジンに向けて、良好に構造化されたクエリであること。
【００５３】
（ｂ）サーチエンジン上で実行される時、クエリは非ヌルの複数の回答を返す。選択的に、データベースの内容へのアクセスにユーザの許可が必要な場合、識別されたエンドユーザによってトラステッドクエリを実行すると、クエリはその識別されたエンドユーザに非ヌルの複数の回答を返す。
【００５４】
ステップ１６０では、各文字または音声をユーザにより入力デバイスを使用して入力した後、クエリを生成し、ユーザにより入力されたテキストに対応するサーチエンジンインデックス全体に渡って実行する。ステップ１５０および１６０で示す上述の処理を反復的に繰り返し、トラステッドデータベースクエリ処理１００を実行する。
【００５５】
図４は、図１のステップ１５０および１６０に関するさらなる詳細を示す。まず、クエリボックスを示すユーザインターフェースをユーザ１５０に対して示し、ユーザはクエリを入力できるようになる。ステップ１５０は処理の継続性のために本図に示されるものである。上記で触れたように、任意の適切なデータ入力または要求の方法を使用することができる。処理は連続してループし（４０４）、ユーザ入力を待つ。ユーザが自分のデータまたはクエリを入力した後、処理は「エンター」キーが押下されたかどうかを判定する（４０８）。エンターキーが押下された場合（４０８）、ユーザにより入力された（有効とされた）クエリをサーチエンジン４１０に対してサブミットし、ユーザに対して表示される結果のページを処理し（４１６）、処理は分岐してユーザインターフェースの表示１５０に戻る。別の実施形態においては、ユーザにより入力されたクエリを、１つまたは複数の元のデータベース１２２の構文にマッピングし、マッピングしたクエリをデータベース全体に渡って実行し、データベース検索の結果をユーザに対して示す（４１６）。
【００５６】
ユーザがエンターキーを押さない場合（４０８）、処理は提示された部分的なクエリの１つをユーザがクリックしたかどうかを判定する（４２０）。提示された部分的なクエリの１つをユーザがクリックしなかった場合（４２０）、処理はユーザがキーストロークを入力したかどうかを判定する（４３０）。ユーザがキーストロークを入力しなかった場合（４３０）、処理はユーザが候補以外をクリックしたと判定する（４４０）。ユーザが候補以外をクリックした場合（４４０）、候補をユーザから隠すことができ（４４６）、処理は分岐してユーザインターフェースの表示１５０に戻る。一実施形態において、候補は隠すことができるが、それはユーザが提供された候補以外の領域をクリックし、従って、ユーザが検索フィールドに注目もしておらず関心も無いと推測されるからである。
【００５７】
提示された部分的なクエリの１つをユーザがクリックした場合（４２０）、選択されたクエリをクエリの入力ボックスの入力フィールドに表示する（４６０）。次に、自動補完の候補をトラステッドクエリ処理から取得するが（４７０）、これについては図５を参照して以下で詳細に説明する。自動補完の候補をトラステッドクエリ処理から取得した後（４７０）、自動補完の候補を、ユーザに対する表示のために処理し（４８０）、処理は分岐してユーザインターフェースの表示１５０に戻る。
【００５８】
ステップ４３０において、ユーザがキーストロークを入力した場合、トラステッドクエリ処理から自動補完の候補を取得する（４７０）。処理が、ユーザが候補以外をクリックしないと判定する場合（４４０）、処理は分岐してユーザインターフェースの表示１５０に戻る。
【００５９】
ステップ４７０に示す自動補完の候補の取得の処理は、図５に詳細に示され、表示されるこのような自動補完の候補は、インデックス化されたフラット化データベース内で発見される可能性のある有効な補完の用語に相当する。自動補完の処理は、ユーザが入力しようと思う単語またはフレーズを、ユーザに実際にその単語またはフレーズを完全に入力することを要求せずに予測することを含む。
【００６０】
ステップ４７０に関して例示される一実施形態による自動補完の特徴として、電子メールのプログラム、ウェブブラウザ、またはコマンドラインインタープリタの場合のように、使用可能な単語または通常使用する単語の数に限りがある場合や、または、ソースコードエディタ等により、高度に構造化され、予測容易な言語で書かれたテキストを編集するときなど、ユーザにより既に入力済みの単語またはフレーズに基づき、打ち込まれている単語またはフレーズを予測することが簡単である場合に、特に効力がある。自動補完は、人とコンピュータとの対話のスピードを上げ、ユーザの満足度を向上させる。
【００６１】
トラステッドクエリシステム１１０の一実施形態における自動補完により、ユーザはＳＱＬ文でテーブル名を自動補完させ、ＳＱＬ文で参照されたテーブルの列名を自動補完させることができる。エディタにテキストが打ち込まれると、ＳＱＬ文内のカーソルのコンテキストが、ユーザがテーブルの補完を必要としているのか、テーブルの列の補完を必要としているのかの指標を与える。テーブル補完では、ユーザと接続されているデータベースサーバ内の利用可能なテーブルのリストを提供する。列補完では、ＳＱＬ文で参照されたテーブルのみについての列のリストを提供する。
【００６２】
トラステッドクエリシステム１１０の一実施形態における自動補完処理は、市販のソフトウェアプログラムと同様ものとすることができ、これには例えば、ＡｑｕａＦｏｌｄ社のＡｑｕａＤａｔａ  Ｓｔｕｄｉｏ，ｒｅｌｅａｓｅ７．５があり、ＡｑｕａＦｏｌｄ社はＳＱＬエディタの他に、データベースでの種々のクエリに対応する自動補完ツールを提供している。多くの単語処理プログラムにおいて、自動補完は、繰り返される単語およびフレーズを打ち込むのに要する時間を減少させる。自動補完のための原資料は、ユーザが作業している現在の文書、または、ユーザが定義した通常使用単語のリストから集めることができる。
【００６３】
現在、例えば、カリフォルニア州レッドウッドシティにあるオラクル社のＯｐｅｎＯｆｆｉｃｅ．ｏｒｇ、サンマイクロシステムズ（登録商標）社のＳｔａｒＯｆｆｉｃｅ、マイクロソフト（登録商標）社のＭｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ、ＫＤＥ社のＫＯｆｆｉｃｅでは、上記の自動補完がサポートされ、ＥｍａｃｓやＶｉｍのような高度なテキストエディタでも同様にサポートされる。Ｕｎｉｘ（登録商標）のｓｈもしくはｂａｓｈまたはＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のｃｍｄ．ｅｘｅもしくはＰｏｗｅｒＳｈｅｌｌ等のコマンドラインインタプリタにおいて、または同様のコマンドラインインターフェースにおいて、コマンド名およびファイル名の自動補完は、ユーザがアクセスし得るものの全ての可能性のある名前を追跡することにより達成することができる。
【００６４】
あるプログラムでは、単語の最初のいくつかの文字の打ち込みの後にタブキーを押すことにより自動補完を実行することができる。例えば、カレントディレクトリにｘで始まるファイルがｘＬｏｎｇＦｉｌｅＮａｍｅだけである場合、ユーザは、ｘを打ち込み、完全な名前を自動補完させることができる。ｘで始まる別のファイル名またはコマンドが同じ範囲に存在する場合、ユーザは、追加で文字を打ち込むか、タブキーを繰り返し押して適切なテキストを選択するであろう。トラステッドデータベースクエリのある実施形態において、有効な補完は、元のデータベース内で発見される任意の列名、または、元のデータベースにおける行の値の任意の部分的マッチとすることができる。本発明のある実施形態においては、列名および行の値の両方をインデックス化している。
【００６５】
図５では、図４のステップ４７０の自動補完の候補の処理をより詳細に示す。最初に、クエリボックスの内容が分析される（５０６）。クエリボックスが空である場合５１０、全てのテーブル名および各テーブルの行のカウントをサーチエンジンインデックスからの候補としてフェッチし（５２０）、フォーマットする（５３０）。
【００６６】
クエリボックスがテキストを含む場合（５１０）、クエリを構文解析する（５３４）。構文解析により、クエリボックス（構造化されたチャンク（まとまり））内のテーブル名および列名を認識かつ識別し、構造化された候補を生成するために、ユーザが入力する全フリーテキストを認識する。
【００６７】
構文解析５３４の後、処理は、全フリーテキストが構文解析の結果として認識されたかどうかを判定する（５３８）。全フリーテキストを構文解析した場合（５３８）、処理は分岐してテーブル名がクエリボックスに現れているかどうかを判定する（５４４）。この時点で、処理は、新しいテキストがテーブル名の後に続いているかどうかを判定する。テーブル名がクエリボックスに現れている場合（５４４）、指定されたテーブルの列名をフェッチし、全てのテーブルおよび列名に対してマッチし（５４６）、構造化クエリを形成する（５６４）。
【００６８】
フラット化されたデータベース全体に渡るクエリを、クエリボックスに入力済みの全ての単語および／またはフィールド名を含んで生成する。ステップ５４４では、テーブル名が前回の構造化されたチャンク内で指定されたかどうかを判定する。指定された場合、テーブル列名（５４６）に対する全文のマッチを実行する。テーブル名が前回の構造化されたチャンク内で指定されていない場合（５４４）、全てのテーブル名および全てのテーブル列名に対するマッチを実行する（５４８）。
【００６９】
指定されるテーブル名が無い場合（５４４）、全フリーテキストを全てのテーブル名およびその列名に対してマッチし（５４８）、候補を生成する。テーブル名を発見しても（５４６）、しなくても（５４８）、構造化クエリを形成する（５６４）。この構造化クエリは、クエリボックス内の全ての構造チャンク（テーブル名および列名）をＡＮＤ演算子で連結させ、かつ、検出されたフリーテキストに対して全文検索を加えることにより、構成することができる。
【００７０】
クエリが部分的または全体的に、フラット化されたデータベーステーブル（ステップ５４８を参照のこと）の列名の接頭語にマッチするとき、マッチした列のテーブル名をユーザインターフェースのウィンドウに表示し、部分的または全体的にマッチした列も、マッチした部分をボールドまたはハイライトにして表示する（５７６）。クエリが部分的または全体的にデータベーステーブルの列の値にマッチする時、値が発見されたデータベースのテーブル名をユーザインターフェース上のウィンドウに表示する。また、値が発見された列名も、マッチした部分をボールドまたはハイライトにされた値と共に表示する５７６。マッチした列名または列名がマッチした列の値に対応する、具体化された行の数も、例えば、二重括弧内の数字として表示する。
【００７１】
上述のように構成された構造化クエリを、次にサーチエンジン５７０に送る。この構造化クエリがサーチエンジンにおいてマッチする結果（ヒット）を持つ場合（５７２）、これらの結果から候補を抽出する（５７４）。抽出された結果のそれぞれが、テーブル名、列名、値を含有することができる。抽出された候補は所与のテーブルおよび所与の列の値に対応し、値はフリーテキストに対応し、指定されるテーブルの指定される列の値に現れる単語の完全マッチ、または、接頭語のマッチのどちらかによる。
【００７２】
次に、ステップ５４６、５４８および５７４で作成された全ての候補をまとめ、マッチする部分をハイライトする（５７６）。次いで、ハイライトされた候補をフォーマットする（５３０）。図面において、ハイライトされた箇所を例示の目的でフォントサイズを大きくして示す。しかし、任意の形式のテキストの強調を使用して、ユーザに対して提示されるクエリに簡単に注目させることができる。この構造化クエリがサーチエンジンにおいてマッチする結果（ヒット）を持たない場合（５７２）、抽出する候補が無く、ハイライトを実行する（５７６）。ハイライトは各クエリのヒットに対して繰り返される処理であるため、ヒットがない場合は、ハイライトを実行しない。
【００７３】
フォーマット処理５３０を、受け取る候補に全体に繰り返し適用し、各候補の候補の型に従って表示をフォーマットする。候補の型がテーブル名である場合（５７８）、全てのテーブル名を表示用に処理する（５８０）。候補の型が列名である場合（５７８）、全ての列名を表示用に処理する（５８２）。同様に、候補の型が値である場合（５７８）、全ての列名および値を表示用に処理する（５８４）。候補の型を表示用に処理した後（５８０、５８２、５８４）、処理候補を返し（５８６）、表示用に利用可能にする。処理は、図４のステップ４７０に示すようにサブルーチンの呼び出しのポイントに戻る。このようなフォーマットされた表示の例を、少なくとも図１１、１２、１６および１７に示す。
【００７４】
ステップ５３８に戻り、全フリーテキストを構文解析していない場合、処理はテーブル名が指定されているかどうかを判定する（５９０）。テーブル名が指定されていない場合（５９０）、処理は分岐して候補のフォーマットを行う（５３０）。テーブル名が指定されている場合（５９０）、指定されたテーブルの列名を返す（５９２）、処理は分岐して候補のフォーマットを行う（５３０）。なお、全フリーテキストが利用できない場合、テーブル名を記述する「構造化されたチャンク」が、指定されるテーブルの列名に対応して利用可能にする。
【００７５】
望ましい実施形態では、フラット化されたデータベーステーブルの各行を別の文書としてインテックス化し、その文書にはテーブル名が現れるだけでなく、（例えば、図１０に示すように）データベースのテーブル名、列名および列の値を区別すること、かつ、列の値を列名と関連付けすること、が可能であるようにフォーマットされた各列の値と共に各列の名前も現れるようにする。データベースのテーブル名と列名と列の値の間の区別を保持する、文書をインデックス化する任意の他の適切な方法を使用することができる。例えば、ある方法では、データベースのテーブル名およびテーブルの列名の全てを１つのサーチエンジンインデックスで個別にインデックス化し、データベースの値の全てを別のサーチエンジンインデックスで個別にインデックス化する。
【００７６】
一実施形態において、オントロジ等の簡素かつ構造化されたシソーラスまたは語彙意味構造を使用して、インデックス化する時またはクエリを行う時に、フラット化されたデータベース内の実際の値を代替の値のセットにマッピングすることができる。オントロジは、ドメイン内の概念とそれらの概念間の関係とのセットの正式な表現である。オントロジを、そのドメインの性質について推論するために使用すること、および、ドメインを定義するために使用することができる。理論的には、オントロジは「公式な、共有される概念化の明示的仕様」である。
【００７７】
オントロジは、ドメインをモデル化するために使用することが可能である、共有される語彙、すなわち、存在するオブジェクトおよび／または概念の型、ならびにその性質および関係、を提供する。オントロジを、人口知能、セマンティックウェブ、ソフトウェア工学、生物医学情報学、図書館学、情報アーキテクチャにおいて、世界またはその一部についての知識表現の形態として使用する。ほとんどのオントロジは、個体（インスタンス）、クラス（概念）、属性および関係、について記述する（追加の詳細についてはｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｏｎｔｏｌｏｇｙ（コンピュータサイエンス）を参照）．
【００７８】
例えば、オントロジは、《ｄｏｇ》が《ｐｏｏｄｌｅ》を代替の値として有すると規定するであろう。この場合、ユーザのクエリは、オントロジの代替語と列の値をマッチさせ、ユーザが自分のクエリを入力する間、オントロジの代替語もしくは元のクエリの値、またはその両方を表示させることができる。
【００７９】
別の代替実施形態において、クエリが列名とマッチし、その列名が元のデータベースに数値しか含まない時、システムにより、個々の値そのものを表示するのではなく、クエリにマッチする全ての列の値の合計または平均またはカウントなどを表示することを示すシンボルを表示させる追加的なメニューを有するユーザインターフェース内に列名を表示させることができる。
【００８０】
図１２は、これらの処理の結果の例を示し、ユーザが３つの文字《ｎａｍ》を図１１に示すクエリボックスに入力した場合である。これらの文字は、《Ａｌｌ−Ｌｅａｄｓ》テーブル内の列名（《ｎａｍｅ》）と部分的マッチ（ボールドにして示す）がある。この３文字はまた、《Ａｌｌ−Ｌｅａｄｓ》テーブル内の複数行で内容に部分的マッチがあり、８行の《ｎａｍｅ》列で《Ｒｏｂｅｒｔ  Ｎａｍａｉｓ》と部分的にマッチし、《Ａｌｌ−Ｌｅａｄｓ》テーブル内の１８行に現れる《Ｎａｍｉｂｉａ》と部分的にマッチする。同様に、入力された文字列《ｎａｍ》はまた、列名（《ｎａｍｅ》）およびフラット化された《Ａｌｌ−Ｃｏｎｔａｃｔｓ》テーブル内の行の値ともマッチする。構造化された項目は、図１２に示すように視覚的に階層化された様式で表示させることができ、例えば、「Ｎａｍｉｂｉａ」は「Ａｌｌ−ｌｅａｄｓ」テーブルの「ｃｏｕｎｔｒｙ」のフィールド内の値であり、または、「ｎａｍｅ」はこの「Ａｌｌ−ｌｅａｄｓ」テーブル内の別のフィールドである、とユーザには見える。構造化された項目を示すことで、ユーザは関連する非ヌルの部分的クエリを解釈することができる。各構造化された項目により、ユーザの検索の意図の曖昧さを明示的に除去し、ユーザは、その検索を正しく解釈し、かつ有意義であるという一定のレベルの信頼感が与えられる。このような構造化された項目は任意の適切な順序付け基準、例えば、アルファベット順、評判に基づくもの、または発見件数に基づくもの、などに従って順序付けられた、階層化された形式で示すことができる。
【００８１】
ユーザが何らかのテキストを入力すると、図１２に示すように、ユーザは以下のことを決定することができる。
【００８２】
１．テキストをさらに入力する（入力される新しい文字列に対応する値を用いて、図１２に見られるような出力を作成する）
２．リターンキーを押してクエリを有効化し、現在のテキストボックスの内容をクエリとして（図１３参照）送る、または
３．画面上のインスタンス化されたフィールドの１つをクリックする
（Ａ）インスタンス化されたフィールドに内容部分の部分的マッチが含まれる場合、そのマッチによりクエリボックス内の現在のテキストを置き換える。例えば、ユーザが図１２の《Ｒｏｂｅｒｔ  Ｎａｍｉａｓ》を含有するボックス上をクリックすると、ユーザに対して図１４を表示する。この図において、《Ｒｏｂｅｒｔ  Ｎａｍｉａｓ》をクリックしたフィールドが《Ａｌｌ−ｌｅａｄｓ》テーブルの《ｎａｍｅ》フィールドに現れたため、今度はテーブルおよびフィールド名がクエリボックスに現れ、ユーザが入力するテキストを置き換える、ことが分かる。これは図４に示す処理４６０に対応する（「選択されたクエリを入力フィールドに表示する」）。
【００８３】
（Ｂ）図１２の《Ａｌｌ−ｃｏｎｔａｃｔｓ》の部のフィールド名《ｎａｍｅ》等の、フィールド名に対応する部分マッチをユーザがクリックすると、図１５に示すように、この列名がクエリボックスに現れる。
【００８４】
（Ｃ）一般的に、クエリボックスのフリーな部分内の全ての単語（テーブル名および列名または値を含有する構造化部分の後に続く）、クリックされ選択された候補のテーブル名、列名、または値のいずれかにマッチするような、残された全ての単語を、フリーテキストの部分から除去し構造化部分と置き換える。
【００８５】
図１１に示すようにクエリボックスが空で、ユーザがテーブル名をクリックした場合、図１１のテーブル名《Ａｌｌ−ｃｏｎｔａｃｔｓ》をユーザがクリックすると現れる図１６に示すインターフェース上に、テーブルの列名を表示する。
【００８６】
この時点で、ユーザはフリーテキストを入力することが可能であり、図１７に示すように、フリーテキストに対応する自動補完の候補をこのデータベーステーブルに対して制約する。あるいは、ユーザはフィールド名をクリックすることが可能であり、これにより、図１８に示すようにこのフィールド名がクエリボックスに現れ、その後、さらにテキストを入力すると、図１９に示すようにこのフィールドに限定されるトラステッドクエリを作成する。
【００８７】
図２０において、上述の候補の１つをユーザが選択した時の結果を示す。図２１では、図１８のトラステッドクエリにテキストを打ち込んだ結果の例を示し、このテキストは図１８のトラステッドクエリの結果のある他の列内の行の内容と部分的にマッチする。ユーザはまた、図２２に示すように、リターンキーを押して現在のトラステッドクエリを下層のサーチエンジンに送ることもできる。
【００８８】
ここで図６を参照すると、トラステッドクエリ検索の実行に使用されるシステムの一実施形態の高度なハードウェアブロック図を示す。トラステッドクエリシステムは、コンピュータハードウェアコンポーネントと協働するシステムとして、および／またはコンピュータで実装される方法として、具現化することができる。トラステッドクエリシステム１１０には、複数のソフトウェアモジュールまたはサブシステムを含むことができる。モジュールまたはサブシステムは、ハードウェア、ソフトウェア、ファームウェア、または、ハードウェア、ソフトウェアおよびファームウェアの任意の組み合わせにおいて実装することができ、また、１つの物理的スペースまたは論理的スペース内に置いても置かなくても良い。例えば、本文書において参照され、図面に示されるまたは示されないモジュールまたはサブシステムは、互いに離れて配置させることができ、通信ネットワークで連結させることができる。
【００８９】
さらに、図６は、トラステッドクエリ処理を実装するソフトウェアまたはロジックの実行に使用することができるコンピュータシステム６００の高度なハードウェアブロック図である。コンピュータ６００は、パーソナルコンピュータとすることができ、ＲＡＭ６１４、ＲＯＭ６１６、ハードディスク記憶装置６１８、キャッシュメモリ６２０、データベースストレージ６２２など（「メモリサブシステム６２７」とも称する）の種々のハードウェアコンポーネントを含むことができる。コンピュータ６００には、コンピュータ、マイクロプロセッサ、ＲＩＳＣ（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｅｒ）プロセッサ、ＣＩＳＣ（ｃｏｍｐｌｅｘ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｅｒ）プロセッサ、メインフレームコンピュータ、ワークステーション、シングルチップコンピュータ、分散プロセッサ、サーバ、コントローラ、マイクロコントローラ、離散論理コンピュータ等、当該技術分野において周知の任意の適切な処理装置６２８を含むことができる。例えば、処理装置６２８は、Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ（登録商標）マイクロプロセッサ、ｘ８６互換マイクロプロセッサ、または、同等の装置とすることができ、サーバ、パーソナルコンピュータ、または任意の適切なコンピュータプラットフォームに組み込むことができる。
【００９０】
メモリサブシステム６２６には、ＲＡＭ、ＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、動的メモリ、静的メモリ、ＦＩＦＯ（ｆｉｒｓｔ−ｉｎ、ｆｉｒｓｔ−ｏｕｔ）メモリ、ＬＩＦＯ（ｌａｓｔ−ｉｎ、ｆｉｒｓｔ−ｏｕｔ）メモリ、循環メモリ、半導体メモリ、バブルメモリ、バッファメモリ、ディスクメモリ、光メモリ、キャッシュメモリ、等の任意の適切な記憶装置コンポーネントを含むことができる。磁気媒体上の固定記憶装置、半導体装置内の記憶装置、または通信リンクを介してアクセス可能な遠隔の記憶装置等、任意の適切な形式のメモリを使用することができる。ユーザインターフェースまたはシステムインターフェース６３０は、コンピュータ６００と連結することができ、システムマネージャにより選択可能なスイッチおよび／またはキーボード等の種々の入力装置６３６を含むことができる。ユーザインターフェースにはまた、ＬＣＤディスプレイ、ＣＲＴ、種々のＬＥＤ表示器、プリンタ、および／または音声出力装置等の、当該技術分野において周知の適切な出力装置６４０を含むこともできる。
【００９１】
コンピュータ６００と外部ソースとの通信を円滑にするために、通信インターフェース６４２をコンピュータシステムに操作可能に連結させることができる。通信インターフェース６４２は、例えば、イーサネットネットワーク、イントラネット、インターネット、または他の適切なネットワーク５４４、等のローカルエリアネットワークとすることができる。通信インターフェース６４２はまた、公衆交換電話網（ＰＳＴＮ）６４６またはＰＯＴＳ（ｐｌａｉｎ  ｏｌｄ  ｔｅｌｅｐｈｏｎｅ  ｓｙｓｔｅｍ）に接続させることができ、これによりインターネット６４４を介して通信を円滑にすることができる。任意の適切な市販の通信装置またはネットサークを使用することができる。
【００９２】
上述の論理、回路、処理は、ＣＤＲＯＭ（ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、磁気ディスクもしくは光ディスク、フラッシュメモリ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）もしくはＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、または、他の機械可読媒体、等の機械可読またはコンピュータ可読の媒体内に、例えば、プロセッサ、コントローラまたは他の処理装置による実行のための命令として符号化または記憶させることができる。
【００９３】
媒体は、命令実行可能システム、機器または装置により、またはこれらに接続されて、使用するための実行可能命令を、含む、記憶する、通信する、伝播する、または移送する任意の装置として実装することができる。あるいは、または加えて、１つまたは複数の集積回路、または、命令を実行する１つまたは複数のプロセッサ等のハードウェアを使用して、または、ＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）のソフトウェアで、もしくは共有されるメモリにおいて利用可能な機能またはローカルまたはリモートのプロシージャコールとして定義される機能であるダイナミックリンクライブラリ（ＤＬＬ）のソフトウェアで、またはハードウェアとソフトウェアとの組み合わせで、アナログ論理またはデジタル論理として論理を実装することができる。
【００９４】
他の実装において、論理は信号または伝播信号の媒体で表すことができる。例えば、任意の所与のプログラムの論理を実装する命令が、電気、磁気、光、電磁気、赤外線、または他のタイプの信号の形態をとることができる。上記のシステムは、このような信号を光ファイバインターフェース、アンテナ、または他のアナログもしくはデジタルの信号インターフェース等の通信インターフェースで受け取り、その信号から命令を取り出し、それらを機械可読メモリに記憶させ、および／または、それらをプロセッサで実行する、ことができる。
【００９５】
システムは、追加のまたは異なる論理を含むことができ、多くの異なる方法で実装することができる。プロセッサは、コントローラ、マイクロプロセッサ、マイクロコントローラ、ＡＳＩＣ（特定用途向け集積回路）、離散論理、または他のタイプの回路もしくは論理の組み合わせ、として実装することができる。同様に、メモリは、ＤＲＡＭ、ＳＲＡＭ、フラッシュ、または他のタイプのメモリとすることができる。パラメータ（例えば、条件や閾値）および他のデータ構造は、別々に記憶および管理することができ、シングルメモリまたはデータベースに組み込むことができ、または、論理的および物理的に多くの異なる方法で組織化することができる。プログラムおよび命令は、単一のプログラムの一部、個別のプログラムとすること、またはいくつかのメモリおよびプロセッサに分散させることができる。
【００９６】
本発明の種々の実施形態が記載されたが、本発明の範囲内でさらに多くの実施形態および実装が可能であることが当業者には明らかであろう。従って、本発明は、添付の請求項およびその同等物を考慮することを除いて制限されない。
【図１】
2013503381.tif 000003
【図２】
2013503381.tif 000004
【図３】
2013503381.tif 000005
【図４】
2013503381.tif 000006
【図５】
2013503381.tif 000007
【図６】
2013503381.tif 000008
【図７】
2013503381.tif 000009
【図８】
2013503381.tif 000010
【図９】
2013503381.tif 000011
【図１０】
2013503381.tif 000012
【図１１】
2013503381.tif 000013
【図１２】
2013503381.tif 000014
【図１３】
2013503381.tif 000015
【図１４】
2013503381.tif 000016
【図１５】
2013503381.tif 000017
【図１６】
2013503381.tif 000018
【図１７】
2013503381.tif 000019
【図１８】
2013503381.tif 000020
【図１９】
2013503381.tif 000021
【図２０】
2013503381.tif 000022
【図２１】
2013503381.tif 000023
【図２２】
2013503381.tif 000024
【国際調査報告】
2013503381.tif 000025
2013503381.tif 000026