(57)【特許請求の範囲】
【請求項１】
一部または、全部のレコードに、配下に属する下部レコードを有し、また、該下部レコードも配下に属する下部レコードを有する階層構造を有する検索対象レコードをキーワードで検索する情報検索方法であって、
検索するためのキーワードと該当する検索対象レコードへの実ポインタ情報と、該検索対象レコードの最上位レコードへのトップポインタ情報を組にして持つ索引レコードからなるインデックスデータから該索引レコードを検索し、
検索された前記索引レコードのポインタ情報に基づいて、検索対象レコードを階層構造を保って一次元に配列した検索本体データの検索対象レコードを検索し、
検索した前記検索対象レコードを階層構造に従って編集する、
ことを特徴とする情報検索方法。
【請求項２】
前記索引レコードを取得する際に、
検索した前記索引レコードをトップポインタ情報と実ポインタ情報の昇順にソートし、
重複したポインタ情報を持つ索引レコードを削除する請求項１記載の情報検索方法。
【請求項３】
前記検索対象レコードを編集する際に、
取得した前記索引レコードのトップポインタから該索引レコードの実ポインタまで、前記検索本体データの検索対象レコードを取得し、
前記実ポインタが指し示す検索対象レコードの上位の階層構造情報を逐次取得して編集する請求項１記載の情報検索方法。
【請求項４】
前記索引レコードを検索した際に得られたポインタ情報の順序で、前記トップポインタ情報が同一の索引レコードに対して、前記トップポインタ情報で取得される検索対象レコードから該索引レコードの実ポインタ情報を指す検索対象レコードまでの上位の階層構造情報を保存し、
逐次検索対象レコードを取得する毎に、階層構造情報を更新し、
次の索引レコードが指す検索対象レコードを取得し、編集する際に、前記階層構造情報を用いて、上位の階層情報を編集する請求項１記載の情報検索方法。
【請求項５】
前記検索された索引レコードが指し示す検索対象レコードが指し示す検索対象レコードが階層構造上、下部レコードとして包含関係にある場合に、前記下部レコードを検索データとして編集せずに、下部レコードを持つ検索対象レコードに下部レコードを有することを示す情報を編集する請求項４記載の情報検索方法。
【請求項６】
一部または、全部のレコードに配下に属する下部レコードと、該下部レコードも配下に属する下部レコードを有する階層構造を有する検索対象レコードをキーワードで検索する情報検索装置であって、
検索対象レコードを階層構造を保って一次元に配列した検索対象レコードからなる検索本体データと、
前記検索対象レコードへの実ポインタ情報と、該検索対象レコードの最上位レコードへのトップポインタ情報を組にして持つ索引レコードからなるインデックスデータと、
前記キーワードと該当する前記インデックスデータの索引レコードを検索するインデックス検索手段と、
前記インデックス検索手段により取得した前記索引レコードのポインタ情報に基づいて前記検索本体データの検索対象レコードを検索する検索対象レコード検索手段と、
前記検索対象レコード検索手段により検索された前記検索対象レコードを前記階層構造に従って編集する検索レコード編集手段と、
を有することを特徴とする情報検索装置。
【請求項７】
前記インデックス検索手段は、
検索した前記索引レコードをトップポインタ情報と実ポインタ情報の昇順にソートするソート手段と、
重複したポインタ情報を持つ索引レコードを削除する重複索引レコード削除手段とを含む請求項６記載の情報検索装置。
【請求項８】
前記検索対象レコード検索手段は、
前記索引レコード検索手段において取得した前記索引レコードのトップポインタから該索引レコードの実ポインタまで、前記検索本体データの検索対象レコードを取得する手段を有し、
前記検索データ編集手段は、
前記実ポインタが指し示す前記検索対象レコードの上位の階層構造を逐次取得して編集する手段を有する請求項６記載の情報検索装置。
【請求項９】
前記索引レコードを検索した際に得られたポインタ情報の順序で、前記トップポインタ情報が同一の索引レコードに対して、前記トップポインタ情報で取得される検索対象レコードから該索引レコードの実ポインタ情報を指す検索対象レコードまでの上位の階層構造情報を保存する階層構造情報保持手段と、
逐次検索対象レコードを取得する毎に、階層構造情報を更新する階層構造情報更新手段と、
次の索引レコードが指す検索対象レコードを取得すると、前記階層構造情報を用いて、上位の階層情報を編集する階層情報編集手段を有する請求項６記載の情報検索装置。
【請求項１０】
前記階層情報編集手段は、
前記検索された索引レコードが指し示す検索対象レコードが階層構造上、下部レコードとして包含関係にある場合に、前記下部レコードを検索データとして編集せずに、下部レコードを持つ検索対象データに下部レコードレコードを有することを示す情報を編集する手段を含む請求項９記載の情報検索装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報検索方法及び装置に係り、特に、ディレクトリ、電話帳の企業掲載等のように、トリー状の階層構造を有するデータベースにおいて、効率的な検索と検索結果の編集を実現するための情報検索方法及び装置に関する。
【０００２】
詳しくは、ＣＤ−ＲＯＭのようにシーク時間が読み出し時間に比べて大きいデータベース等の情報検索方法及び装置に関する。
【０００３】
【従来の技術】
従来の情報検索について階層構造を有するデータベースを、電話帳データベースの例を用いて説明する。
表１は、従来の電話帳データベースの例である。
【０００４】
【表１】
0003564590.tif 000002
【０００５】
表１に示すように、電話帳データは、○○会社の配下に、本社と新宿支店があり、本社の配下に総務部と営業部があるというように、階層構造を有するデータがある。
従来は、このような電話帳データを「○○会社」、または、「○○会社お客様窓口」等のキーワードで検索するためには、図９に示すように、検索対象レコードに上位のレコードへポインタ情報を格納して、上位の階層構造情報を参照する方式や、表２に示すように、各検索対象レコードの上位の階層構造情報を格納する方式等が採用されている。
【０００６】
【表２】
0003564590.tif 000003
【０００７】
【発明が解決しようとする課題】
しかしながら、上記従来の方式には、以下のような問題がある。
図９に示す方式では、表３に示すように、最上位のレコードのキー（名義）と下部レコードのキーを組み合わせたインデックスを作成し、インデックスを検索して該当するポインタ情報（レコード番号）を取得し、図９の検索対象レコードを得る。例えば、「○○会社お客様窓口」で検索した場合、表３のインデックスからポインタ情報としてレコード番号６を取得する。図９の６番目のレコードを検索して、「お客様窓口０３−１ＹＹＹ−ＸＸＸＸ新宿区新宿」を得る。
【０００８】
【表３】
0003564590.tif 000004
【０００９】
しかし、このレコードだけでは、どの会社のどの支店かは分からないので、上位へのポインタを辿って５番目の「新宿支店」、さらに、１番目の「○○会社」上位を得る必要がある。
つまり、図９に示す方式では、検索されたレコード毎に上位の階層構造情報を検索するため、検索時間が長くなり、特に、ＣＤ−ＲＯＭ等のようにランダムアクセスが遅い記憶装置に格納している場合、極端に検索時間が長くなる欠点がある。
【００１０】
また、表２の方式でも、表３のようなインデックスを設け、ポインタ情報から該当レコードを検索する。この方式では、各レコードに階層構造情報として上位の名称を持つので、図９の方式のような上位のポインタは不要である。しかし、上位の名称を各レコードで重複して持つことになり、データ量が大きくなる。
【００１１】
つまり、表２に示す方式では、上位の階層構造情報を検索する必要がない分だけ、高速に検索できるが、上位の階層構造情報を各レコードに持つため、データ容量が大きくなる欠点がある。
本発明は、上記の点に鑑みなされたもので、ＣＤ−ＲＯＭ等のシーク時間が長い記憶装置に適用しても、階層構造を有するデータが高速に検索でき、かつデータ容量が少ない情報検索方法及び装置を提供することを目的とする。
【００１２】
【課題を解決するための手段】
【００１３】
図１は、本発明の原理を説明するための図である。
本発明は、一部または、全部のレコードに、配下に属する下部レコードを有し、また、該下部レコードも配下に属する下部レコードを有する階層構造を有する検索対象レコードをキーワードで検索する情報検索方法であって、
検索するためのキーワードと該当する検索対象レコードへの実ポインタ情報と、該検索対象レコードの最上位レコードへのトップポインタ情報を組にして持つ索引レコードからなるインデックスデータから該索引レコードを検索し（ステップ１）、
検索された索引レコードのポインタ情報に基づいて、検索対象レコードを階層構造を保って一次元に配列した検索本体データの検索対象レコードを検索し（ステップ２）、
検索した検索対象レコードを階層構造に従って編集する（ステップ３）。
【００１４】
本発明は、索引レコードを取得する際に、検索した索引レコードをトップポインタ情報と実ポインタ情報の昇順にソートし、重複したポインタ情報をもつ索引レコードを削除する。
また、本発明は、検索対象レコードを編集する際に、取得した索引レコードのトップポインタから該索引レコードの実ポインタまで、検索本体データの検索対象レコードを取得し、実ポインタが指し示す検索対象レコードの上位の階層構造情報を逐次取得して編集する。
【００１５】
また、本発明は、索引レコードを検索した際に得られたポインタ情報の順序で、トップポインタ情報が同一の索引レコードに対して、トップポインタ情報で取得される検索対象レコードから該索引レコードの実ポインタ情報を指す検索対象レコードまでの上位の階層構造情報を保存し、
逐次検索対象レコードを取得する毎に、階層構造情報を更新し、
次の索引レコードが指す検索対象データを取得し、編集する際に、階層構造情報を用いて、上位の階層情報を編集する。
【００１６】
また、本発明は、検索された索引レコードが指し示す検索対象レコードが階層構造上、下部レコードとして包含関係にある場合に、下部レコードを検索データとして編集しないで、下部レコードを持つ検索対象データに下部レコードを有することを示す情報を編集する。
【００１８】
図２は、本発明の原理構成図である。
本発明は、一部または、全部のレコードに配下に属する下部レコードと、該下部レコードも配下に属する下部レコードを有する階層構造を有する検索対象レコードをキーワードで検索する情報検索装置であって、
検索対象レコードを階層構造を保って一次元に配列した検索対象レコードからなる検索本体データ１０と、
検索対象レコードへの実ポインタ情報と、該検索対象レコードの最上位レコードへのトップポインタ情報を組にして持つ索引レコードからなるインデックスデータ２０と、
キーワードと該当するインデックスデータ２０の索引レコードを検索するインデックス検索手段３０と、
インデックス検索手段３０により取得した索引レコードのポインタ情報に基づいて検索本体データ１０の検索対象レコードを検索する検索対象レコード検索手段３５と、
検索対象レコード検索手３５段により検索された検索対象レコードを階層構造に従って編集する検索レコード編集手段４０と、を有する。
【００１９】
また、上記のインデックス検索手段３０は、検索した索引レコードをトップポインタ情報と実ポインタ情報の昇順にソートするソート手段と、重複したポインタ情報をもつ索引レコードを削除する重複索引レコード削除手段とを含む。
また、上記の検索対象レコード検索手段３５は、索引レコード検索手段３０において取得した索引レコードのトップポインタから該検索レコードの実ポインタまで、検索本体データから検索対象レコードを取得する手段を有し、
検索データ編集手段４０は、
実ポインタが指し示す検索対象レコードの上位の階層構造情報を逐次取得して編集する手段を有する。
【００２０】
また、本発明は、索引レコードを検索した際に得られたポインタ情報の順序で、トップポインタ情報が同一の索引レコードに対して、トップポインタ情報で取得される検索対象レコードから該索引レコードの実ポインタ情報を指す検索対象レコードまでの上位の階層構造情報を保存する階層構造情報保持手段と、
逐次検索対象レコードを取得する毎に、階層構造情報を更新する階層構造情報更新手段と、
次の索引レコードが指す検索対象レコードを取得すると、階層構造情報を用いて、上位の階層情報を編集する階層情報編集手段を有する。
【００２１】
また、上記の階層情報編集手段は、
検索された索引レコードが指し示す検索対象レコードが階層構造上、下部レコードとして包含関係にある場合に、下部レコードを検索データとして編集せずに、下部レコードを持つ検索対象レコードに下部レコードを有することを示す情報を編集する手段を含む。
【００２２】
上記のように、本発明では、検索対象レコードの階層構造は、レコードの配列により表現されるため、検索本体データに上位へのポインタや上位の情報を重複してもつ必要がない。
また、インデックスデータに、最上位の検索対象レコードを指すポインタを併せて持つことにより、最上位の検索対象レコードから配列の順に順次検索するため、ランダムなアクセスを行わずに、階層構造情報を取得し、編集することが可能となる。
【００２３】
また、検索された索引レコードをソートして、検索対象レコードを検索することにより、配列の近い順にアクセスでき、シーク時間が短縮できる。
【００２４】
【発明の実施の形態】
図３は、本発明の情報検索装置の構成を示す。
同図に示す情報検索装置は、検索本体データファイル（検索本体データ）１０、インデックスデータファイル（インデックスデータ）２０、インデックス検索部３０、検索データ編集部４０、表示部５０及び検索キー入力部６０から構成される。
【００２５】
検索本体データファイル１０の検索対象レコードは、階層構造を保って一次元に配列されている。
インデックスデータファイル２０の索引レコードは、検索対象レコードへの実ポインタ情報と当該検索対象レコードの最上位レコードへのトップポインタ情報を組して持つ。
【００２６】
インデックス検索部３０は、検索キー入力部６０より入力されたキーワードと該当するインデックスデータの索引レコードを検索する。
検索データ編集部４０は、検索された索引レコードのポインタ情報に基づいて、検索本体データファイル１０の検索対象レコードを検索し、検索された検索対象レコードを階層構造に従って編集する。
【００２７】
表示部５０は、検索データ編集部４０により編集された検索結果を表示する。キー入力部６０は、インデックス検索部３０において索引レコードを検索するためのキーワードを入力する。
図４は、本発明の検索データ編集部における索引レコード毎の編集処理のフローチャートである。
【００２８】
ステップ１０１）  検索本体データファイル１０を検索するレコード番号を格納する読み出しレジスタに、トップポインタの情報を設定する。
ステップ１０２）  読み出しレジスタの示す検索対象レコードを取得する。
ステップ１０３）  上位階層情報を保存するスタックの最上位（スタックトップ）と比較する。当該スタックに何もない場合には、ステップ１０４に移行し、それ以外の場合には、ステップ１０５に移行する。
【００２９】
ステップ１０４）  検索対象レコードをスタックにプッシュし、ステップ１０６に移行する。
ステップ１０５）  同一階層の名称が出るまでポップし、検索対象レコードをプッシュし、ステップ１０６に移行する。
【００３０】
ステップ１０６）  読み出しレジスタに格納されたレコード番号をインクリメントし、ステップ１０２に移行する。
ステップ１０７）  ステップ１０２において、読み出しレジスタと実ポインタが一致する場合には、スタックの保存された上位レコードの名称を付けて検索結果を編集出力する。
【００３１】
ステップ１０８）  １つの検索対象レコード分の処理が終了する。
【００３２】
【実施例】
以下、本発明の実施例と共に説明する。
以下の実施例は、表４に示す検索本体データファイル１０の内容及び、表５に示すインデックスデータファイル２０の内容に基づいて説明する。
【００３３】
【表４】
0003564590.tif 000005
【００３４】
【表５】
0003564590.tif 000006
【００３５】
［第１の実施例］
最初に、第１の実施例では、インデックス検索部３０において検索された索引レコードのトップポインタ情報をソートし、トップポインタ情報が同一の索引レコードに対して、トップポインタ情報で取得される検索対象レコードから索引レコードの実ポインタ情報を指す検索対象レコードまでの上位の階層構造情報を保持しておく。そして、逐次検索対象レコードを取得する毎に階層構造情報を更新する。また、検索データ編集部４０において、次の索引データが指す検索対象データを取得し、編集する際に、階層構造情報を用いて、上位の階層情報を編集する例を説明する。
【００３６】
具体的には、最上位の名称（表１に示す、○○会社、○□電気）を必須のキーとして、下部名義（例では、営業部、新宿支店等）でも検索できるように、キー項目を最上位名称と下部名称を組み合わせて索引レコードを構成した表４に示すインデックスデータファイル２０を用いて説明する。また、表４に示すように、「○○会社新宿支店お客様窓口」の検索対象レコード（レコード番号６）の索引レコードは、キー項目が「○○会社」と「お客様窓口」を持ち、最上位のレコードを指すトップポインタは、「○○会社」の検索対象レコード（レコード番号１）を示し、実ポインタは、「○○会社新宿支店お客様窓口」の検索対象レコード（レコード番号６）を示す。
【００３７】
表４に示すインデックスデータ２０は、一般的には検索の高速化から検索キー項目に関してソートされているため、索引レコードの順序は、検索対象レコードの配列順とは一致しない。
ここで、「○○会社のお客様窓口」を検索する場合を例に、動作を説明する。検索キーは、「○○会社」と「お客様窓口」を組み合わせたキー情報により、インデックス検索部３０では、インデックスデータ２０（表４）のキー項目と一致する検索レコードを検索する。この例では、「○○会社」と「お客様窓口」のキー項目を有する３番目の検索レコードが得られる。
【００３８】
次に、検索編集部４０は、インデックス検索部３０で得られた索引レコードのトップポインタと実ポインタの情報に基づいて、検索本体データを検索し、検索結果を表示部５０に表示する。
以下に、検索データ編集部４０における検索データの編集処理について説明する。
【００３９】
検索データ編集部４０の読み出しレジスタ（図示せず）にトップポインタの情報として、レコード番号１を設定する（ステップ１０１）。
次に、検索データ編集部４０は、読み出しレジスタの示す検索対象レコードとして、「○○会社」のレコードを取得する。実ポインタ情報（レコード番号６）と、読み出しレジスタの内容が、一致しないので、ステップ１０３に移行する（ステップ１０２）。
【００４０】
上位階層情報を保存するスタックの最上位（スタックトップ）を比較する（ステップ１０３）。この例では、スタックには何もないので、ステップ１０４に移行し、当該検索対象レコードの情報をスタックにプッシュする（ステップ１０４）。
【００４１】
読み出しレジスタのレコード番号をインクリメントし、ステップ１０２に移行する（ステップ１０６）。
次の検索対象レコード（レコード番号２の「本社」）を取得する（ステップ１０２）。実ポインタのレコード番号６を取得するまでは、ステップ１０３に移行することになる。レコード番号２の「本社」は、スタックトップの「○○会社」の下位の検索対象レコードであるので、「本社」をプッシュする（ステップ１０４）。同様に、「総務部」のレコードもスタックにプッシュされ、スタックは図５（Ａ）の状態となる。
【００４２】
次の「営業部」の検索対象レコードでは、スタックトップにある「総務部」と同一階層にあるので、ステップ１０５に移行し、「総務部」をポップして「営業部」をプッシュするので、スタックは、図５（Ｂ）の状態となる。
また、次の「新宿支店」の検索対象レコードでは、スタックトップの「営業部」とは階層関係にないので、ステップ１０５に移行し、「新宿支店」と同一階層の「本社」までポップして、「新宿支店」をプッシュし、スタックは図５（Ｃ）の状態となる（ステップ１０５）。
【００４３】
次に、読み出しレジスタのレコード番号をインクリメントすることにより、読み出しレジスタの内容が次の「お客様窓口」の検索対象レコードを示す「６」となり、ステップ１０２に移行する（ステップ１０６）。
レコード番号６の「お客様窓口」の検索対象レコードを読み出し、読み出しレジスタの内容が実ポインタの情報（レコード番号６）と一致するのでステップ１０７に移行する（ステップ１０２）。検索データ編集部４０は、図５に示すスタックの情報に基づいて以下に示す検索結果を最上位の名称から編集して表示部５０に表示する。
【００４４】
○○会社
新宿支店
お客様窓口  ０３−１ＹＹＹ−ＸＸＸＸ
上記の例において、検索データ編集部４０に使用した図５に示すようなスタックは、上位の階層構造情報を保存し、逐次検索対象レコードを取得する毎に、階層構造情報を更新する手段の一例である。検索本体データ１０が階層構造を表すように配列されているので、最上位のレコードから逐次処理することで同様な編集は可能である。
【００４５】
［第２の実施例］
本実施例では、図３に示す構成において、ソート機能を有するインデックス検索部３０について説明する。
表６に、検索本体データ１０の例を示す。
【００４６】
【表６】
0003564590.tif 000007
【００４７】
上記の表６を例に、「○□電気の営業」の条件で検索する場合を説明する。この場合、「○□電気」には、「営業」で始まる下部名称は、「本社営業本部」と「新宿営業所営業部」の２件が該当する。従って、インデックスデータ２０から表７に示す索引レコードが該当しているため、検索される。
【００４８】
【表７】
0003564590.tif 000008
【００４９】
インデックスデータ２０の並びは、検索本体データ１０の並びと同一ではない。そこで、インデックス検索部３０において、トップポインタと実ポインタをキーにしてソートすることにより、索引レコードは、検索本体データ１０と同じ並び（配列）になる。従って、トップポインタが同じ索引レコードについて、図４に示す処理フローにより検索結果を編集することで、検索本体データ１０の配列順序で連続的に読み出すことにより、以下のような検索結果の編集が可能となる。
【００５０】
○□電気
本店
営業本部        ０３−２ＹＹＹ−ＸＸＸＸ  千代田区内幸町
新宿営業所        ０３−２ＹＹＹ−ＸＸＸＸ  新宿区西新宿
営業部          ０３−２ＹＹＹ−ＸＸＸＸ  新宿区西新宿
また、表５に示す検索本体データ１０の「営業本部」を「営業センタ」でも検索できるように、表８に示すように、インデックスデータに「○□電気／営業センタ」を追加した場合を説明する。
【００５１】
【表８】
0003564590.tif 000009
【００５２】
「○□電気の営業」の条件で検索する場合、３件の検索対象レコードが該当し、「○□電気／営業センタ」と「○□電気／営業本部」は、同じトップポインタと実ポインタを持ち、検索されたどちらかの検索レコードは不要である。
インデックス検索部３０において検索された索引レコードをポインタ情報でソートし、連続する索引レコードのポインタ情報を比較し、重複するポインタ情報を一意にする機能により、不要な索引レコードを削除する。
【００５３】
［第３の実施例］
本実施例は、表１の検索本体データ１０を名称と住所から検索する場合の例を説明する。
名称と住所から検索するためには、表９のように、キー情報に住所を加えたインデックスデータにより実現できる。表９は、表１の「○○会社」、「本社」等の住所を持たないレコードに対しても、住所による検索ができるように、下位組織の住所をキー情報に付加して作成している。この例は、表９のレコード番号２，５，８が該当し、下位組織の住所が複数ある表１の「○○会社」「○□電気」の場合は、索引レコードを作成しないようにしている。
【００５４】
【表９】
0003564590.tif 000010
【００５５】
「新宿区西新宿の○で始まるレコード」を検索する場合について、図３の構成に基づいて説明する。
インデックス検索部３０により、表９のインデックスデータ２０を、「新宿区西新宿」と「○％」（％は、ワイルドカードでどの文字でも可能である意味）のＡＮＤ条件で、検索すると、表１０の索引レコードを取得する。表１１の索引レコードをトップポインタと実ポインタでソートすると、表１１となる。
【００５６】
【表１０】
0003564590.tif 000011
【００５７】
【表１１】
0003564590.tif 000012
【００５８】
図６は、本発明の第３の実施例における検索データ編集部の処理のフローチャートである。
ステップ２００）  インデックスデータ２０の索引レコードを読み出し、全て処理済であれば、処理を終了し、そうでなければ、前トップポインタと現在のトップポインタが一致するかを判定し、一致する場合には、ステップ２０２に移行し、不一致の場合にはステップ２０１に移行する。
【００５９】
ステップ２０１）  読み出しレジスタにトップポインタの内容を設定する。
ステップ２０２）  読み出しレジスタのレコード番号の検索対象レコードを取得する。
ステップ２０３）  取得した検索対象レコードの名称とスタックトップの名称の階層を比較する。下位の名称または、スタックに何もなければ、ステップ２０４に移行し、それ以外は、ステップ２０５に移行する。
【００６０】
ステップ２０４）  検索対象レコードをスタックにプッシュし、読み出しレジスタと実ポインタの値が不一致の場合には、ステップ２０６に移行し、一致した場合には、スタックに出力マークの有無をチェックし、ある場合にはステップ２０９に移行し、ない場合には、ステップ２０７に移行する。
【００６１】
ステップ２０５）  同一階層の名称が出現するまでポップし、検索対象レコードをプッシュし、読み出しレジスタと実ポインタの値が不一致の場合には、ステップ２０６に移行し、一致した場合には、スタックに出力マークの有無をチェックし、ある場合にはステップ２０９に移行し、ない場合には、ステップ２０７に移行する。
【００６２】
ステップ２０６）  読み出しレジスタのレコード番号をインクリメントし、ステップ２０２に移行する。
ステップ２０７）  スタックに保存された上位のレコード名称と下位組織の有無を付加して編集出力する。
【００６３】
ステップ２０８）  スタックトップに出力マークを設定する。
ステップ２０９）  前回のトップポインタに現在のトップポインタを保存し、読み出しレジスタのアドレスをインクリメントし、ステップ２００に移行する。
上記のフローチャートに沿って、本実施例を具体的に説明する。
【００６４】
まず、インデックスデータ２０から表１１の索引レコードを順次取り出し、表１１の「○○会社／本社」の索引レコードが取り出され、最初のレコードであるので、ステップ２０１に移行する（ステップ２００）。
読み出しレジスタ＝１となり（ステップ２０１）、「○○会社」の検索対象レコードが取得される（ステップ２０２）。前述の第１の実施例で説明したように、ステップ２０３、ステップ２０４の処理が実行され、このとき、スタックの状態は、図７（Ａ）となる（ステップ２０３、２０４）。
【００６５】
次に、読み出しレジスタのレコード番号をインクリメントし（ステップ２０６）、次の「本社」の検索対象レコードを取得する（ステップ２０２）。同様に、ステップ２０３、２０４が処理され、読み出しレジスタの内容と実ポインタが一致し、スタックに出力マークがないので、ステップ２０７に移行する（ステップ２０３、２０４）。スタックは、図７（Ｂ）の状態となり、下位組織を有するので、下位組織有りの記号を付加して、図８に示すように編集出力する（ステップ２０７）。
【００６６】
次に、スタックトップ（「本社」のエントリ）に、図８に示すように、出力マーク（同図において、出力マークは、網かけ部分）を設定する。
次に、前トップポインタに現在処理中の索引レコードのトップポインタの内容「レコード番号１」を保存し、読み出しレジスタ＝３として、ステップ２００に移行する（ステップ２０９）。
【００６７】
さらに、次の索引レコード（「○○会社／総務部」）、トップポインタ＝１、実ポインタ＝３）を取得する。前トップポインタと現在のトップポインタが共に「１」で一致するので、ステップ２０２に移行する（ステップ２００）。これにより、「○○会社／総務部」の検索対象レコードを取得して、ステップ２０３、ステップ２０４に移行する（ステップ２００）。これにより、スタックは、図７（Ｃ）の状態となる（ステップ２０３、２０４）。
【００６８】
また、読み出しレジスタと実ポインタが一致し、かつスタックに出力マークが付加された「本社」のエントリがあるので、ステップ２０９に移行し、前回のトップポインタとして現在のトップポインタを保持し、読み出しレジスタをインクリメントし、ステップ２００に移行する（ステップ２０４）。
【００６９】
そして、次の索引レコード（「○□電気／新宿営業所」、トップポインタ＝７、実ポインタ＝１１）を取得する（ステップ２００）。前トップポインタ＝１で、現在のトップポインタと一致しないので、ステップ２０１に移行し、トップポインタを設定して、読み出しレジスタ＝７となる。ステップ２０２において、レコード番号７の「○□電気」の検索対象レコードを取得し、ステップ２０３、ステップ２０５に進み、スタックは、図７（Ｅ）の状態となる。
【００７０】
以降の処理は、同様にして図８に示す編集結果を取得する。
なお、本発明は、上記の実施例において、電話帳の例を用いて説明したが、この例に限定されることなく、階層構造を有し、一次元に配列されたデータの検索に広く適用可能である。
【００７１】
また、ポインタ情報は、レコード番号とした場合を例として説明したが、ファイルのバイトアドレス等も同様に利用可能であることは言うまでもない。
なお、本発明は、上記の実施例に限定されることなく、特許請求の範囲内で種々変更・応用が可能である。
【００７２】
【発明の効果】
上述のように、本発明の情報検索方法及び装置によれば、企業組織、ファイルディレクトリ等のトリー状の階層構造をもつ情報を、電話帳リストのように階層構造をインデント（字下げ）により表し、一次元に配列されたデータを検索する場合に、インデックスデータに検索対象レコードを指すポインタ情報を持つことにより、本体データには、新たな情報を付加する必要がない。かつ、検索対象レコードへのポインタのみでなく、当該レコードの最上位レコードを指すポインタをインデックスデータに持つことにより、一次元に配列された階層構造をシーケンシャル（連続的）にアクセスできるため、ＣＤ−ＲＯＭのように、シーケンシャルアクセスが高速であるがランダムアクセスが遅い媒体に、検索対象データを格納した場合、階層構造の高速な検索及び、検索結果の表示が可能である。
【００７３】
検索対象レコードに対して複数のキーを派生させたり、１項目（カラム）に複数のキーをもつ場合に、１検索対象レコードに対して、複数のインデックスレコードが必要となる。この場合、検索条件に該当する同一の検索対象レコードを指す複数のインデックスレコードが該当することがある。本発明では、インデックスデータにポインタ情報を格納するため、冗長なレコードをポインタ情報のソートの際に、簡単に一意にすることができる。
【図面の簡単な説明】
【図１】本発明の原理を説明するための図である。
【図２】本発明の原理構成図である。
【図３】本発明の情報検索装置の構成図である。
【図４】本発明の第１の実施例の検索データ編集部における索引レコード毎の編集処理のフローチャートである。
【図５】本発明の第１の実施例のスタックの状態を示す図である。
【図６】本発明の第３の実施例における検索編集部の処理のフローチャートである。
【図７】本発明の第３の実施例のスタックの状態を示す図である。
【図８】本発明の第３の実施例の検索結果の出力例である。
【図９】従来の階層構造を有するデータの構成例である。
【符号の説明】
１０  検索本体データファイル（検索本体データ）
２０  インデックスデータファイル（インデックスデータ）
３０  インデックス検索部、インデックス検索手段
３５  検索対象レコード検索手段
４０  検索データ編集部、検索レコード編集手段
５０  表示部
６０  検索キー入力部
【図１】
0003564590.tif 000013
【図２】
0003564590.tif 000014
【図３】
0003564590.tif 000015
【図４】
0003564590.tif 000016
【図５】
0003564590.tif 000017
【図６】
0003564590.tif 000018
【図７】
0003564590.tif 000019
【図８】
0003564590.tif 000020
【図９】
0003564590.tif 000021