(57)【特許請求の範囲】
【請求項１】
各文書が複数の論理構造で構成される構造化文書群から、指定した検索タームが指定した論理構造の中に存在する文書を検索する構造化文書検索方法において、
文書の登録時に前記複数の論理構造の各々について論理構造の始まりを表わす前方マーカを検出するステップと、該前方マーカから該前方マーカに対応する論理構造の終わりを表わす後方マーカまでのテキスト長を算出するステップと、該前方マーカに該論理構造長を付加して検索用データベースを作成するステップを有し、
文書の検索時に照合対象とするテキスト中から前方マーカを検出するとともに検索対象に指定した論理構造に該当する前方マーカであるか否かを判定するステップと、前記判定の結果、前方マーカが検索対象に指定された論理構造に該当する前方マーカであると判定された場合には、該当する論理構造に含まれるテキストに対し指定された検索タームとの文字列照合処理を行うステップと、前記判定の結果、前方マーカが検索対象に指定された論理構造に該当する前方マーカでないと判定された場合には、該論理構造長を参照して、該論理構造長だけテキストをスキップし文字列照合処理の対象から外すステップを有することを特徴とする構造化文書検索方法。
【請求項２】
各文書が複数の論理構造で構成される構造化文書群から、指定した検索タームが指定した論理構造の中に存在する文書を検索する構造化文書検索方法において、
文書の登録時には、
前記複数の論理構造の各々について論理構造の始まりを表わす前方マーカを検出するステップと、検出された前記前方マーカが表す論理構造に対応する識別番号を取得するステップと、該前方マーカから該前方マーカに対応する論理構造の終わりを表わす後方マーカまでのテキスト長を算出するステップと、検出された前記前方マーカを論理構造の先頭を表す特定の制御コードに置換するとともに、前記取得された論理構造に対応する識別番号及び前記算出された論理構造長を付加し、前記検出された後方マーカを削除して検索用データベースを作成するステップを有し、
文書の検索時には、
検索対象とした論理構造に対応する識別番号を取得するステップと、照合対象とするテキストから論理構造の先頭を表す特定の制御コード及び識別番号を検出し、検索対象とした論理構造に対応する識別番号と一致するかを判定するステップと、
前記判定の結果、識別番号が一致すると判定された場合には、該当する論理構造に含まれるテキストに対し指定された検索タームとの文字列照合処理を行うステップと、
前記判定の結果、識別番号が一致しないと判定された場合には、前記論理構造長を参照し前記論理構造長だけテキストをスキップして文字列照合処理の対象からはずすステップを有することを特徴とする構造化文書検索方法。
【請求項３】
前記検索用データベースを作成するステップにおいて、
前記文書が複数の階層からなる論理構造で定義されている場合には、前記論理構造の識別番号を階層的に定義し、
前記識別番号を取得するステップにおいて、
検索対象とした論理構造に対応する識別番号を階層的に取得し、
識別番号と一致するかを判定するステップにおいて、
階層ごとに識別番号を判定する
ことを特徴とする請求項２に記載の構造化文書検索方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
ＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式で記述された文書などのように、１件の文書が複数の論理構造で構成される構造化文書に対し、目的とする論理構造だけを対象とした検索を行う構造化文書検索方法と、そのシステムに関する。
【０００２】
【従来の技術】
近年、情報化社会の本格的な進展に伴い、ワードプロセッサやパーソナルコンピュータ、ワークステーションなどが急速に拡大、普及してきている。これに伴い、作成される電子化文書情報も急速に増加してきている。このような状況下で、大量の文書情報の中から目的とする文書を探し出す手法の一つとして、文字列データからなる文書群の中から検索者が指定したある特定の文字列（以下、検索タームと呼ぶ）を含む全ての文書を探し出すことが一つの重要な処理となっている。
【０００３】
その中でも、最近ＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）などのように１件の文書が複数の論理構造で構成される文書（以下、構造化文書と呼ぶ）が用いられるようになるにつれ、目的とする論理構造を指定した検索（以下、構造指定検索と呼ぶ）を行うことが、精度の高い検索を実現する上で重要な機能として挙げられてきている。
【０００４】
このような構造指定検索を実現する方法の一例が、「ＳＧＭＬと全文データベース」（情報の科学と技術，４３巻１２号，１９９３，ｐｐ１０９７〜１１０３）に述べられている。以下、本従来方法について例を挙げて説明する。
【０００５】
まず始めに、構造化文書における論理構造の識別方法について簡単に説明する。
【０００６】
構造化文書では、文書の論理構造を識別するために各論理構造の先頭および末尾に特定の文字列（以下、前方マーカおよび後方マーカと呼ぶ）が書き込まれる。例えばＳＧＭＬ文書では、前方マーカおよび後方マーカはそれぞれ開始タグおよび終了タグと呼ばれ、開始タグは“＜”＋識別文字列＋”＞”で、また終了タグは“＜／”＋識別文字列＋”＞”で表される。以後、本識別文字列を論理構造識別子と呼ぶ。論理構造識別子は該当する論理構造に何が記述されているのかを識別するためのものであり、通常は記述内容の名称の省略記号で表わされる。例えば、電子出願特許明細書テキストにおいて要約の論理構造を示す開始タグは”＜ＳＤＯ  ＡＢＪ＞”で、終了タグは”＜／ＳＤＯ＞”で表されている（ＳＤＯは  ＳｕｂＤＯｃｕｍｅｎｔの、ＡＢＪは  ＡＢｓｔｒａｃｔ  Ｊａｐａｎの省略記号である）。
【０００７】
次に、本従来方法における構造指定検索の実現方法について図２に例を挙げて説明する。
【０００８】
この例では、ＳＧＭＬ形式で記述された電子出願特許明細書テキストにおいて、要約という論理構造中に“音声認識”という文字列を含む文書を検索する場合を想定している。
【０００９】
先に述べたように、電子出願特許明細書テキストにおいて要約の論理構造に対応する開始タグは”＜ＳＤＯ  ＡＢＪ＞”で、終了タグは”＜／ＳＤＯ＞”で表されるため、検索条件は「文字列”＜ＳＤＯ  ＡＢＪ＞”と文字列”＜／ＳＤＯ＞”で囲まれる範囲に“音声認識”という文字列を含む文書を検索する」という条件と同じになる。すなわち指定された条件の検索は、”＊”を可変長の不定文字（ｄｏｎ’ｔ  ｃａｒｅ文字）とすると電子出願特許明細書テキスト全文中に検索ターム”＜ＳＤＯ  ＡＢＪ＞＊音声認識＊＜／ＳＤＯ＞”が含まれる文書を検索するという処理を行うことにより実現される。
【００１０】
【発明が解決しようとする課題】
従来の方法で、電子出願特許明細書テキスト１０万件（約１００日分、  容量：約
１，４００ＭＢ）に対し、要約という論理構造中に“音声認識”という文字列が含まれる明細書を検索する時の検索時間を推定すると以下のようになる。
【００１１】
文書の内容を全部読んで検索するフルテキストサーチ方式としては、
「ワークステーション内蔵型フルテキストデータベースプロセッサＳＤＰ」（情報処理学会研究報告，Ｖｏｌ．９１，Ｎｏ．８６，計算機アーキテクチャ９０−８，１９９１．１０．７）が発表されている。このフルテキストサーチシステムではメモリ上に格納したテキストに対し文字列照合専用のハードウェアを用いて１０ＭＢ／秒の検索速度が実現されている。これをもとに、テキストをメモリ上に格納した際の検索速度を１０ＭＢ／秒と仮定すると、検索に要する時間としては、
１，４００ＭＢ  ÷  １０ＭＢ／秒  ＝  １４０秒  ＝  ２分２０秒
掛かることになる。しかし、電子出願特許明細書テキスト１０万件（容量：約
１，４００ＭＢ）の内、要約という論理構造に対応するテキストは約５０ＭＢのため、要約の論理構造だけを照合処理の対象とした場合の検索時間は
５０ＭＢ  ÷  １０ＭＢ／秒  ＝  ５秒
となる。
【００１２】
つまり、従来の方法では電子出願特許明細書テキスト１０万件全文（約１，４００ＭＢ）に対して照合処理を行う必要があるため、要約の論理構造（約５０ＭＢ）だけに対して照合処理を行う場合に比べ、検索時間が５秒から１４０秒へと約３０倍長く掛かってしまうことになる。
【００１３】
すなわち、本発明が解決しようとする課題は、実用規模の構造化文書データベースを対象とした場合でも、実用上許容しうる十分な検索時間で検索結果が得られる高速な構造化文書検索方法を提供することにある。
【００１４】
【課題を解決するための手段】
上記課題は、以下のステップから構成される構造化文書検索方法により解決される。
【００１５】
すなわち本発明による構造化文書検索方法は、
（１）  文書の登録時に、論理構造の始まりを表わす前方マーカを検出する前方マーカ検出ステップと
（２）  前方マーカ検出ステップにおいて検出された前方マーカに対応する後方マーカまでのテキスト長（以後、論理構造長と呼ぶ）を算出する論理構造長算出ステップと
（３）  上記前方マーカに、上記論理構造長を付加して検索用データベースを作成する検索用データベース作成ステップと
（４）  文書の検索時に、照合対象とするテキスト中から前方マーカを検出するとともに検索対象に指定した論理構造に該当する前方マーカであるか否かを判定する前方マーカ判定ステップと
（５）  上記前方マーカ判定ステップにおいて前方マーカが、検索対象に指定された論理構造に該当する前方マーカであると判定された場合には、該当する論理構造に含まれるテキストに対し指定された検索タームとの文字列照合処理を行う文字列照合ステップと、
（６）  上記前方マーカ判定ステップにおいて前方マーカが、検索対象に指定された論理構造に該当する前方マーカでないと判定された場合には、該当する論理構造長を参照して、この論理構造長だけテキストをスキップし文字列照合処理の対象から外す照合処理スキップステップ
により構成する。
【００１６】
【作用】
本発明によると、文字列照合処理の対象を検索対象に指定した論理構造中のテキストに限定することができるため、全文に対して照合処理を行う従来方法に比べ検索時間を大幅に削減することが可能になる。
【００１７】
すなわち、本発明による構造指定検索方法では、まず前方マーカ検出ステップと論理構造長算出ステップにおいて、登録文書に対し各論理構造の前方マーカを検出するとともに各論理構造の論理構造長を算出する。そして、検索用データベース作成ステップにおいて各論理構造の前方マーカの後に該当する論理構造の論理構造長を付加して検索用データベースを作成する。すなわち図２に示す例では、要約の前方マーカである“＜ＳＤＯ  ＡＢＪ＞”の後に要約の論理構造長を付加して検索用データベースを作成する。
【００１８】
次に、検索時には検索用データベースから検索対象文書を読み出し、この中に含まれるテキストに対し文字列照合処理を行う。この時、まず前方マーカ判定ステップで各論理構造の前方マーカを検出し、検出された前方マーカが検索対象に指定された論理構造に対応する前方マーカであるか否かを判定する。そして、前方マーカ判定ステップにおける判定の結果、検索対象に指定された論理構造であると判定された場合には文字列照合ステップを実行する。すなわち、前方マーカの後に格納されている論理構造長を読み込むとともにその後に続く論理構造長分のテキストに対し文字列照合処理を行う。また、前方マーカ判定ステップにおける判定の結果、検索対象に指定された論理構造ではないと判定された場合には照合処理スキップステップを実行する。すなわち、前方マーカの後に格納されている論理構造長を読み込み論理構造長だけその後に続くテキストをスキップすることにより、該当する論理構造中のテキストを文字列照合処理の対象から外す。
【００１９】
このようにして、本発明による構造指定検索方法では検索対象に指定されない論理構造中のテキストを照合処理の対象から外すことにより、文字列照合処理の対象を指定された論理構造中のテキストのみに削減できるため、検索に要する時間を大幅に削減することが可能となる。
【００２０】
例えば、従来の方法では電子出願特許明細書テキスト１０万件（約１００日分、  容量：約１，４００ＭＢ）に対し文字列照合処理を行うため検索に１４０秒（１，４００ＭＢ÷１０ＭＢ／秒）の時間を要していたものを、本発明では要約に対応するテキスト（約５０ＭＢ）に対して文字列照合処理を行うだけで済むため、検索に要する時間を５秒（５０ＭＢ÷１０ＭＢ／秒）に削減することが可能になる。
【００２１】
【実施例】
本発明の構造指定検索方法を用いた第一の実施例について、技術報告書を検索対象としたときを例に説明する。
【００２２】
まず始めに、本発明の構造指定検索方法を実現する検索システムの構成を図１を用いて説明する。本検索システムは、ディスプレイ１、キーボード２、中央制御装置ＣＰＵ３、フロッピーディスクドライバ４、フロッピーディスク５、主メモリ６および磁気ディスク装置７で構成され、磁気ディスク装置７には検索用データベース格納領域８が確保されている。また、主メモリ６には前方マーカ検出プログラム１０、論理構造長算出プログラム２０、検索用データベース作成プログラム３０、前方マーカ検出プログラム４０、文字列照合プログラム５０、照合処理スキッププログラム６０、登録制御プログラム７０および検索制御プログラム８０が格納されるとともにデータエリア９０が確保されている。なお、本実施例において検索用データベース格納領域８を磁気ディスク装置７上に確保したが、光磁気ディスク装置など他の二次記憶装置であっても構わない。
【００２３】
以上が本検索システムの構成である。
【００２４】
次に、実施例で検索の対象とする構造化文書の論理構造について図３を用いて説明する。
【００２５】
本実施例で検索対象とする技術報告書は表題、作成日、著者名、緒言、章題、章本文および結言で構成されるものとする。そして、各論理構造はそれぞれ開始タグおよび終了タグによって分割されているものとする。すなわち、例えば表題という論理構造は開始タグ“＜表題＞”および終了タグ“＜／表題＞”で囲まれている。
【００２６】
さらに、本実施例に示す構造指定検索方法の文書登録時の処理と検索時の処理についてそれぞれ図４および図６を用いて説明する。
【００２７】
まず、文書登録時の処理を図４に示したプログラムの処理フローにしたがって図３に示した例を用いて詳細に説明する。
【００２８】
始めに、キーボード２から入力されるコマンドにより登録制御プログラム７０を起動する。そして、フロッピーディスクドライバ４に挿入されたフロッピーディスクから登録文書を読み込み、データエリア９０に格納する。そして、前方マーカ検出ステップ１０で各論理構造の始まりを表わす開始タグを検出するとともに、論理構造識別子をデータエリア９０に格納する。ここで、開始タグの検出は開始タグまたは終了タグの先頭を表わす“＜”に続く１文字が“／”以外であるか否かによって判定される。例えば図３に示す例では、表題という論理構造の開始タグである“＜表題＞”を検出するととも“表題”という文字列を論理構造識別子として格納する。
【００２９】
次に、論理構造長算出ステップ２０では前方マーカ検出ステップ１０で検出した前方マーカに対応する論理構造の論理構造長を算出する。この例では、表題に対応するテキストは“画像認識システムの技術動向”で、１３文字すなわち２６Ｂｙｔｅ（１文字を２バイトの文字コードで表す）であるため、表題という論理構造に対応する論理構造長は２６と算出される。
【００３０】
そして、前方マーカ検出ステップ１０および論理構造長算出ステップ２０を登録文書の末尾まで繰り返した後、検索用データベース作成ステップ３０で各論理構造の開始タグの後に先に算出した各論理構造の論理構造長を付加するとともに、文書の先頭を表す特定の制御コードｔｏｔ（ｔｏｐ  ｏｆ  ｔｅｘｔ）、登録文書に対応する文書の識別番号（以後、文書ＩＤと呼ぶ）、文書の終了を表す特定の制御コードｅｏｔ（ｅｎｄ  ｏｆ  ｔｅｘｔ）を書き込み込み検索用データベースを作成する。そして、全文書の登録が終了するまで以上の処理を繰り返した後、検索用データベースの末尾を表わす特定のコード（ｅｎｄ  ｏｆ  ｆｉｌｅ）を書き込み検索用データベースを作成するとともに、これを検索用データベース格納領域８に格納する。すなわち、図３に示した例では、表題という論理構造に対しては開始タグである“＜表題＞”の後に表題の論理構造長である２６を固定長のバイナリデータとして書き込み検索用データベースを作成する。
【００３１】
以上の処理によって作成した検索用データベースの例を図５に示す。
【００３２】
以上が登録時処理の具体的内容である。
【００３３】
次に、本発明の構造指定検索方法を用いた第一の実施例における文書検索時の処理フローを図６に示す。以下、図５に示した検索用データベースに対し、緒言の中に“ワークステーション”という文字列を含む文書を検索する場合について具体的に例を挙げて説明する。
【００３４】
始めに、検索条件を入力する前に予めキーボード２から入力されるコマンドにより検索制御プログラム８０を起動し、磁気ディスク内７の検索用データベース格納領域８に格納された検索用データベースを主メモリ６上のデータエリア９０に読み込む。そして、検索条件が入力されるとデータエリア９０に読み込まれた検索用データベースからｔｏｔを検出するとともにｔｏｔに続くバイナリデータを文書ＩＤとして保持する。すなわち、図５に示す例では文書ＩＤとして１８５７が保持されることになる。
【００３５】
次に、ｅｏｔ１１０が現れるまで前方マーカ判定ステップ４０を実行する。すなわち、ここで、開始タグの検出は開始タグまたは終了タグの先頭を表わす“＜”に続く１文字が“／”以外であるか否かを判定することによって論理構造の開始タグを検出し、開始タグの末尾を表わす“＞”まで文字列を論理構造識別子として取り込むとともに、開始タグの後に現れるバイナリデータを論理構造長としてデータエリア９０に保持する。すなわち、図５に示した例では表題の開始タグである“＜表題＞”中から“表題”の文字列が読み込まれるとともに論理構造長として２６が読み込まれることになる。そして、先ほど取り込んだ論理構造識別子が検索対象に指定した論理構造の論理構造識別子であるか否かを判定する。検索対象に指定した論理構造に対応した論理構造識別子を求める方法として本実施例では図７に示す対応表を用いている。この方法では、検索用データベースを作成する際に、ＳＧＭＬ文書におけるＤＴＤ（Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）などの構造化文書の型定義文をもとに、登録制御プログラム７０で論理構造名と各論理構造に固有の番号（以後、論理構造識別番号と呼ぶ）および論理構造識別子の間の対応表をあらかじめ作成する。そして検索時には、この対応表をもとに検索者が指定した論理構造に対応する論理構造識別子を求める。すなわち、図７に示す対応表中の論理構造名と目的とする論理構造名を比較し、一致した時の論理構造識別番号に該当する論理構造識別子を目的とする論理構造識別子として用いる。また、検索対象とする論理構造識別子を指定する方法として、目的とする論理構造の論理構造識別子を検索者が入力する方法であっても構わない。
【００３６】
前方マーカー判定ステップ４０における判定の結果、検索対象に指定した論理構造である場合には、文字列照合ステップ５０を実行する。すなわち、先ほど読み込んだ論理構造長分のテキストに対して照合処理を行う。また判定の結果、検索対象に指定した論理構造でない場合には、照合処理スキップステップを実行する。すなわち、先ほど読み込んだ論理構造長分のテキストをスキップし、文字列照合処理の対象から外す。例えば図５に示した例では、検索対象に指定された論理構造の論理構造識別子は“緒言”なのに対し、取り込まれた論理構造識別子は“表題”であり検索対象に指定された論理構造ではないため、該当する論理構造長すなわち２６Ｂｙｔｅ分のテキスト“画像認識システムの技術動向”を読み飛ばし照合処理の対象から外す。続いて読み込まれる作成日および著者名に含まれるテキストも同様に照合処理の対象から外される。次に、論理構造識別子として”緒言”が読み込まれるが、これは検索対象とする論理構造の識別子であるため緒言の論理構造長である６３６Ｂｙｔｅ分のテキストに対して照合処理を開始する。最後に検索タームがヒットしたか否かを判定し、検索タームがヒットした場合には該当する文書の文書ＩＤを照合結果としてデータエリア９０に出力する。
【００３７】
そして、以上の処理を検索用データベースの終了を表わすｅｏｆが現われるまで繰り返す。
【００３８】
以上が、文書検索時処理の具体的内容である。
【００３９】
以上のように本発明の第一の実施例では、文書登録時に各論理構造の前方マーカの後にその論理構造のテキスト長を書き込み検索用データベースを作成し、検索時には検索対象に指定されていない論理構造については、その論理構造長分だけテキストを読み飛ばし文字列照合処理の対象から外し、無駄な照合処理を省くことにより構造指定検索を高速に実現することが可能になる。
【００４０】
なお、本実施例では検索用データベースは検索条件を入力する前に予め磁気ディスク７上の検索用データベース格納領域８から主メモリ６上のデータエリア
９０に読み込む場合について説明したが、検索条件が入力される度毎に磁気ディスク７から主メモリ６に検索用データベースを読み出す方法を用いても構わない。
【００４１】
また、本実施例では前方マーカおよび後方マーカとしてＳＧＭＬタグを用いた例について説明したが、ＯＤＡ（Ｏｆｆｉｃｅ  Ｄｏｃｕｍｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）タグを用いた文書であっても構わない。各論理構造の先頭および末尾が特定の文字列により区切られる文書であれば、本発明に示す構造指定検索が実現可能であることは明らかである。
【００４２】
さらに、本実施例では各論理構造に対応巣る論理構造長が付加されていない構造か文書に対し、データベース登録時に各論理構造の先頭を表す前方マーカと、該当する論理構造の末尾を表す後方マーカを検出することにより該当する論理構造長を算出し、これを文書中に付加する方式について説明した。しかし、ワードプロセッサ等を用いて文書を作成する際に予め論理構造長が付加された文書や、メール等のようにネットワークア等を通じて文書を転送する際に予め論理構造長が付加された文書をそのままデータベースに格納した場合についても、本実施例における検索時処理と同様に検索対象に指定されていない論理構造については、その論理構造長野分だけテキストを読み飛ばし、つまり文字列照合処理の対象から外し、無度名照合処理を省くことにより構造指定検索を高速に実現することが可能である。
【００４３】
以上に述べた第一の実施例では、検索用データベース内で論理構造の区切りを表す文字列として開始タグおよび終了タグをそのまま用いている。しかし、この方式ではタグ内の論理構造識別子に含まれる文字列が検索タームに指定されたときには、不要な文書が検索されてしまうという問題が生じる。すなわち、図５に示した検索用データベースを対象として技術報告書全文中に“作成”という文字列を含む文書を検索した際には、作成日という論理構造に対応する開始タグおよび終了タグである“＜作成日＞”および“＜／作成日＞”に含まれる“作成”が照合されてしまうという問題が生じる。そこで次に説明する本発明の第二の実施例では、以上述べた問題を解決するためＳＧＭＬ文書中のタグを特定の制御コードに置き換えて検索用データベースを作成する。
【００４４】
まず、第二の実施例おける文書登録時の処理を図８に示したプログラムの処理フローにしたがって説明する。なお、本図に示す文書登録時の処理フローは第一の実施例における登録処理フロー（図４）において、前方マーカ検出ステップ
１０の後に該当する論理構造識別番号を算出する処理を加えるとともに、検索用データベース作成ステップ３０における処理の内容を一部変更したものである。
【００４５】
始めに、前方マーカ検出ステップ１０では第一の実施例と同様に登録文書に対し、開始タグまたは終了タグの先頭を表わす“＜”に続く１文字が“／”以外であるか否かを判定することにより開始タグの検出を行う。そして、開始タグの終了を表す“＞”までの文字列を論理構造識別子としてデータエリア９０に取り込む。そして、該当する論理構造識別子に対応する論理構造識別番号を図７に示した論理構造識別子と論理構造識別番号の対応表から算出する。例えば図３に示した例では、開始タグ“＜表題＞”から論理構造識別子“表題”を取り込むとともに、図７に示す対応表を参照し論理構造識別番号として“１”の値を得る。
【００４６】
そして、論理構造長算出ステップ２０では該当する論理構造の論理構造長を算出する。
【００４７】
さらに、検索用データベース作成ステップ３０で各論理構造の開始タグの代わりに論理構造の先頭を表す特定の制御コード“α”を書き込むとともに、先ほど算出した論理構造識別番号および論理構造長を制御コード“α”の後に書き込む。また、終了タグを削除するとともにｔｏｔ、文書ＩＤ、ｅｏｔなどの制御コードを書き込み検索用データベースを作成する。そして、全文書の登録が終了するまで以上の処理を繰り返した後、検索用データベースの末尾を表わすｅｏｆを書き込み検索用データベースを作成する。
【００４８】
以上が、文書登録時の処理である。
【００４９】
以上の処理によって作成した検索用データベースの例を図９に示す。本図に示す検索用データベースは、第一の実施例で用いた検索用データベース（図５）において開始タグを論理構造の先頭を表す制御コードα３００および論理構造識別番号３１０で置き換えるとともに終了タグを削除したものである。
【００５０】
次に、第二の実施例における検索時の処理フローを図１０に示し、処理内容について説明する。なお、本図に示す検索時処理フローは本発明第一の実施例における検索時処理フロー（図６）に対し前方マーカ判定ステップ４０の内容を変更したものである。以下、図９に示した検索用データベースに対し、緒言の中に“ワークステーション”という文字列を含む文書を検索する場合について具体的に例を挙げて説明する。
【００５１】
始めに前方マーカ判定ステップ４０では、検索用データベース中から制御コード“α”を検出するとともに、続くバイナリデータを論理構造識別番号としてデータエリア９０に保持する。さらに、続くバイナリデータを論理構造長として保持する。そして、検索対象に指定した論理構造に対応する論理構造識別番号と、先ほどデータエリア９０に保持した論理構造識別番号を比較することにより該当する論理構造が検索対象に指定した論理構造であるか否かの判定を行う。そして、第一の実施例と同様に前方マーカ判定ステップ４０の判定結果が検索対象に指定された論理構造である場合には文字列照合処理ステップ５０を実行する。すなわち、該当する論理構造長分のテキストに対し文字列照合処理を行う。また、検索対象に指定されていない論理構造の場合には照合処理スキップステップを実行する。すなわち、図９に示す例では制御コードαに続く論理構造識別番号として“０００１”が取り込まれるが、これは検索対象に指定した緒言の論理構造に対応する論理構造識別番号“０００４”ではないため、該当する論理構造長すなわち２６Ｂｙｔｅ分のテキスト“画像認識システムの技術動向”を読み飛ばし照合処理の対象から外す。続いて読み込まれる論理構造識別番号“０００２”および“０００３”に含まれるテキストも同様に照合処理の対象から外される。次に、論理構造識別番号として“０００４”が読み込まれるが、これは検索対象とする論理構造識別番号に等しいため該当する論理構造長である６３６Ｂｙｔｅ分のテキストに対して照合処理を開始する。
【００５２】
以上が、第二の実施例における検索時の処理フローである。
【００５３】
以上のように、第一の実施例における検索用データベース内で論理構造の区切りを表す文字列として開始タグおよび終了タグをそのまま用いたのに対し、第二の実施例ではこれを特定の制御コードに置き換えて検索用データベースを作成する。この第二の実施例によれば、第一の実施例と同様にテキストの検索対象に指定されない論理構造部分については文字列照合処理がスキップされるので高速の構造指定検索が実現し、加えて、タグ内の論理構造識別子に含まれる文字列が検索タームに指定された場合にも不要な文書が検索されないので高い検索精度を実現することができる。
【００５４】
次に、階層構造を持つ構造化文書を対象とした際に、前方マーカ判定処理の頻度が低減し、もって上述の第一、第二の実施例よりさらに高速の構造指定検索が可能な第三の実施例について説明する。
【００５５】
図１１には階層構造を持つ構造化文書の例を示す。図示した技術報告書は書誌と本文で構成される。さらにこの書誌は表題、作成日及び著者名で構成され、一方本文は緒言、複数の章題及びその章本文、並びに結言で構成される。つまりこの文書は、第１階層目の論理構造として書誌と本文とを有し、第２階層目の論理構造として書誌に対して表題、作成日及び著者名を、本文に対して緒言、章題、章本文及び結言をそれぞれ有する。この階層構造を持つ構造化文書を検索対象とし、緒言という論理構造中に“ワークステーション”という文字列を含む文書を抽出するばあいを考える。検索対象とする論理構造は本文中の緒言であり、書誌については前方マーカの判定処理を行う必要はない。それにもかかわらず、上述の第一、第二の．実施例の構造指定検索方法では、書誌内の全ての論理構造に対しても前方マーカ判定ステップを実行するという無駄な処理が発生する。これに対して、図１２から図１４で示す第三の実施例では、論理構造識別番号を複数レベルで設定する手法を採用して無駄な処理を省き、より一増すの高速化を達成する。
【００５６】
始めに、本実施例で用いる論理構造名と論理構造識別子との対応表を図１２に示すとともに、この対応表を用いた構造指定検索方法の概要について簡単に説明する。なお、図１２に示す対応表は本発明第一の実施例において用いた対応表（図７）において、論理構造識別番号を階層的に定義したものである。
【００５７】
まず、登録時の処理については本発明第二の実施例における登録処理（図８）と同じ処理フローにより実現される。すなわち、前方マーカ検出ステップ１０では第一の実施例と同様に登録文書に対し、開始タグまたは終了タグの先頭を表わす“＜”に続く１文字が“／”以外であるか否かを判定することにより開始タグの検出を行う。そして、開始タグの終了を表す“＞”までの文字列を論理構造識別子としてデータエリア９０に取り込む。そして、該当する論理構造識別子に対応する論理構造識別番号を図１２に示した論理構造識別子と論理構造識別番号の対応表から算出する。例えば図１１に示した例では、開始タグ“＜書誌＞”から論理構造識別子“書誌”を取り込むとともに、図１２に示す対応表を参照しレベル１の論理構造識別番号として“０００１”を、レベル２の論理構造識別番号として
“００００”の値を得る。そして、論理構造長算出ステップ２０では該当する論理構造の論理構造長を算出する。さらに、検索用データベース作成ステップ３０で各論理構造の開始タグの代わりに論理構造の先頭を表す特定の制御コード“α”を書き込むとともに、先ほど算出した論理構造識別番号および論理構造長を制御コード“α”の後に書き込む。また、終了タグを削除するとともにｔｏｔ、文書ＩＤ、ｅｏｔなどの制御コードを書き込み検索用データベースを作成する。そして、全文書の登録が終了するまで以上の処理を繰り返した後、検索用データベースの終了を表わすｅｏｆを書き込み検索用データベースを作成する。
【００５８】
以上が、文書登録時の処理である。
【００５９】
以上の処理によって作成した検索用データベースの例を図１３に示す。本図に示す検索用データベースは、第二の実施例で用いた検索用データベース（図９）において論理構造識別番号３１０を２レベルで構成したものである。
【００６０】
次に、第三の実施例における検索時の処理フローを図１４に示し、処理内容について説明する。なお、本図に示す検索時処理フローは本発明第二の実施例における検索時処理フロー（図１０）に対し前方マーカ判定ステップ４０の内容を変更したものである。
【００６１】
始めに前方マーカ判定ステップ４０では、データエリア９０に読み込まれた検索用データベース中から制御コード“α”を検出するとともに、続く２個のバイナリデータをレベル１とレベル２の論理構造識別番号としてデータエリア９０に保持する。さらに、続くバイナリデータを論理構造長として保持する。そして、検索対象に指定した論理構造に対応する論理構造識別番号と、先ほどデータエリア９０に保持した論理構造識別番号をレベル１とレベル２の２段階で比較することにより、検索対象に指定した論理構造であるか否かを判定する。以下、本判定処理の概要について説明する。
【００６２】
第一に、レベル１の判定では１階層目の論理構造について検索対象に指定した論理構造であるか否かを判定する。そして、検索対象に指定された論理構造である場合には、引き続きレベル２の判定を行う。検索対象に指定されない論理構造の場合には該当する論理構造長分のテキストをスキップし照合処理の対象から外す。
【００６３】
第二に、レベル２の判定では２階層目の論理構造について検索対象に指定した論理条件であるか否かを判定する。そして、検索対象に指定した論理構造である場合には該当する論理構造長のテキストに対し文字列照合処理を開始する。また、検索対象に指定されない論理構造である場合には、レベル２の論理構造識別番号が“０”でないか否か、すなわち該当する論理構造識別子が１階層目のものであるか、２階層目のものであるかを判定する。そして、レベル２の論理構造識別番号が“０”でない時、すなわち２階層目の論理構造識別子の時には該当する論理構造長のテキストをスキップし、文字列照合処理の対象から外す処理を行う。また、レベル２の論理構造識別番号が“０”である時、すなわち１階層目の論理構造識別子の時には、引き続き前方マーカ判定処理を行うことにより、２階層目の論理構造に対し構造指定検索を実行する。
【００６４】
以上が文書検索時の概要である。
【００６５】
次に、図１３に示した検索用データベースに対し緒言の中に“ワークステーション”という文字列を含む文書を検索する場合について具体的に例を挙げて説明する。
【００６６】
まず、図１２に示す論理構造名と論理構造識別番号の対応表から検索対象とする緒言の論理構造識別番号を求める。その結果、レベル１とレベル２の論理構造識別番号として、それぞれ“２”と“１”を得る。次に、検索用データベース中から制御コードαを検出し、検索対象に指定した論理構造であるか否かの判定を行う。すなわち図１３に示す例では、まず始めに制御コードαに続く“１”をレベル１の、”０”をレベル２の論理構造識別番号として取り込む。そして、これが検索対象に指定した論理構造に対応する論理構造識別番号であるか否かを判定する。その結果、レベル１の判定で検索対象に指定した論理構造でないと判定されるため、該当する１階層目の論理構造、すなわち書誌に含まれるテキストをスキップし文字列照合処理の対象から外す。続いて、“２”をレベル１の、“０”をレベル２の論理構造識別番号として取り込む。そしてレベル１の判定の結果、検索対象に指定した論理構造であると判定されるため、引き続きレベル２の判定を実行する。その結果、検索対象に指定した論理構造でないと判定されるが、レベル２の論理構造識別番号が“０”、すなわち、１階層目の論理構造である本文に対応する論理構造であるため、引き続き前方マーカ判定処理を行うことにより２階層目の論理構造に対し構造指定検索を実行する。そして、次に取り込まれる論理構造識別番号はレベル１が“２”、レベル２が“１”であり、検索対象に指定した論理構造に対応する論理構造識別番号に等しいため、該当する論理構造長である６３６Ｂｙｔｅ分のテキストに対し文字列照合処理を開始する。
【００６７】
以上が、本発明第三の実施例における検索時の処理フローである。
【００６８】
以上のように、本発明第三の実施例における構造指定検索方法では、論理構造識別番号を複数レベルで定義することにより、無駄な前方マーカ検出処理を省略することができ検索時間をさらに短縮することができる。なお、本実施例において論理構造が２階層の場合について例を挙げて説明したが、３階層以上の論理構造からなる構造化文書に対しても適応できることは明らかである。
【００６９】
さらに上述の第一の実施例における構造指定検索方法では、検索条件が入力される前に予め磁気ディスク７内の検索用データベースをメモリ６上のデータエリア８に読み込んでいた。これに代えて、検索条件が入力される度毎に検索用データベースを磁気ディスク７からデータエリア９０に読み込む方法も可能である。ただし、この方法を採用した場合には磁気ディスクからの読み出し時間が大きく影響し、検索時間の短縮の効果が十分に上がらないいという問題点がある。すなわち、第一の実施例では、メモリ６上のデータエリア９０に格納されたテキストに対して前方マーカ判定ステップ４０、文字列照合ステップ５０および照合処理スキップステップ６０を実行し、文字列照合処理の対象とするテキスト容量を削減することにより検索時間を短縮したが、検索用データベースをメモリ６上のデータアリア９０に取り込む際には全ての論理構造に対応するテキストを磁気ディスク７から読み出す必要があ。このため、特に検索条件が入力される度毎に検索用データベースを磁気ディスク７からデータエリア９０に読み込む方法を採用した場合には、磁気ディスク７からの読み出し速度がボトルネックとなって検索時間の短縮の効果が半減する。
【００７０】
そこで、次に説明する本発明の第四の実施例では、開始タグと終了タグ以外のテキストのみを格納したテキストファイルと、論理構造を表わすタグや各論理構造の先頭アドレスおよび論理構造長などの論理構造の領域を表わすファイル（以後、領域情報ファイルと呼ぶ）を別々のファイルに格納して検索用データベースを作成する。
【００７１】
始めに、文書登録時の処理は本発明の第一の実施例における文書登録処理フロー（図４）における検索用データベース作成ステップ３０において登録文書から開始タグおよび終了タグを取り除いたテキストファイルとは別に、領域情報ファイルを作成する。
【００７２】
次に図３に示す構造化文書に対し作成したテキストファイルと領域情報ファイルの例を図１５に示す。なお、本図に示すテキストファイルは図３に示す構造化文書から開始タグおよび終了タグを削除した構成をとっている。また領域情報ファイルは、第一の実施例における検索用データベース（図５）から各論理構造に対応するテキスト以外を抜き出すとともに、テキストファイルにおいて各論理構造に対応するテキストが格納されている領域の先頭アドレス２２０を各論理構造の先頭タグの後に付加した構成を取っている。
【００７３】
最後に、本発明第四の実施例における検索時の処理フローを図１６に示し、処理内容について説明する。なお、本図に示す検索時処理フローは本発明第一の実施例における処理フロー（図６）に対し文字列照合ステップ５０の処理内容を変更したものである。
【００７４】
以下、図１６に示す検索処理フローの概要について説明する。
【００７５】
始めに、検索条件が入力される前に予め磁気ディスク７上の検索用データベース格納領域８に格納された領域情報ファイルをメモリ６上のデータエリア９０に読み出す。領域情報ファイルは１件当り約１００Ｂｙｔｅの容量であり、テキストファイル（１件当り数ｋＢｙｔｅ）に比べ小さいため、テキストファイル全体をメモリ上に読み込む場合に比べ必要とするデータエリア９０のメモリ容量は小さくて済む。
【００７６】
次に、図１５に示す領域情報ファイルに対し図１６に示す検索プログラムを実行する。すなわち、前方マーカ判定ステップでは本発明第一の実施例における検索処理フローと同様に領域情報ファイル内のテキストから開始タグを検出し、これが検索対象に指定した論理構造に対応する開始タグであるか否かを判定する。そして、検索対象に指定した論理構造であると判定された場合には文字列照合ステップ５０を実行する。すなわち、開始タグに続いて取り込まれる２個のバイナリデータを、テキストファイル内で該当する論理構造が格納されている先頭アドレスと論理構造長として保持する。次に、先程取り込んだ先頭アドレスと論理構造長をもとに、該当する論理構造に対応するテキストを磁気ディスク７内に格納されたテキストファイルからメモリ６上のデータエリア６０に読み込み文字列照合処理を行う。また、検索対象に指定した論理構造でないと判定された場合には、照合処理スキップステップを実行する。すなわち、該当する論理構造に対応するテキストを磁気ディスク７から読み込むことなく照合処理の対象から外す。
【００７７】
以上が、本発明第四の実施例における検索処理の概要である。
【００７８】
次に、図１５に示す検索用データベースに対し緒言の中に“ワークステーション”という文字列を含む文書を検索する場合について具体的に例を挙げて説明する。
【００７９】
始めに、図１６に示す領域情報ファイルから開始タグとして“＜表題＞”から論理構造識別子として“表題”が検出される。しかし、これは検索対象に指定した緒言の論理構造識別子“緒言”と異なるため照合処理スキップステップを実行する。すなわち、該当する論理構造に対応するテキストをテキストファイルから読みだすことなく文字列照合処理の対象から外す。次に、作成日、著者名に対応する論理構造識別子が検出されるが、これも検索対象に指定した緒言の論理構造識別子“緒言”と異なるため、該当する論理構造に対応するテキストをテキストファイルから読みだすことなく文字列照合処理の対象から外す。次に、緒言に対応する論理構造識別子である“緒言”が取り込まれ、これは検索対象に指定した論理構造に対応する論理構造識別子であるため文字列照合ステップを実行する。すなわち、緒言の開始タグに続く２個のバイナリデータを先頭アドレスと論理構造長として保持する。そして、この先頭アドレスと論理構造長に対応するテキストを磁気ディスク上のテキストファイルからメモリ上のデータエリアに読み込み文字列照合処理を行う。
【００８０】
以上が、第四の実施例における検索処理の例である。
【００８１】
第四の実施例における構造指定検索方法では、各論理構造に対応するテキストを格納するテキストファイルと、各論理構造に対応するテキストがテキストファイル内のどの位置に格納されているかを表わす領域情報ファイルに分けて検索用データベースを作成する。そして、検索時には領域情報ファイルを対象に構造指定検索を実行し、検索対象に指定した論理構造に対応するテキストだけを磁気ディスク上に格納したテキストファイルからメモリ上に読み込むことにより磁気ディスクから読み出すデータ量を削減し検索時間を短縮することが可能になる。
【００８２】
なお、本発明では検索条件が入力される前に予め領域情報ファイルを磁気ディスク７から読み出しメモリ６上のデータエリア９０に読み出す方法について説明した。しかし、先に説明したように領域情報ファイル１件当り約１００Ｂｙｔｅの容量であり、１件当り数ｋＢｙｔｅのテキストファイルに比べ容量が小さいため、検索条件が入力される度毎に領域情報ファイルを磁気ディスク７からメモリ上に読み込んだ場合にでも、高速な構造指定検索を実現することができる。
【００８３】
以上に、各論理構造の先頭や末尾を表すタグや、各論理構造の先頭アドレス及び論理構造長など、論理構造の領域を表す領域情報ファイルの作成されていない構造化文書に対し、データベース登録時に各論理構造の先頭を表す前方マーカと該当する論理構造の末尾を表す後方マーカを検出することにより、開始タグと終了タグ以外のテキストのみを格納したテキストファイルと、それとは別に各論理構造の領域を表す領域情報ファイルを作成する実施例について説明した。しかし、ワードプロセッサ等を用いて文書を作成する際に予めテキストファイルとは別に領域情報ファイルの作成され文書や、メール等のようにネットワーク等を通じて文書を転送する際に予めテキストファイルとは別に領域情報ファイルの作成された文書をそのままデータベースに格納した場合についも、本実施例における検索時処理と同様に領域情報ファイルを対象に構造指定検索を実行し、検索対象に指定した論理構造に対応するテキストだけを磁気ディスク上に格納したテキストファイルからメモリ上に読み込むことにより、磁気ディスクから読みだすデータ量を削減し、検索時間を短縮することができる。
【００８４】
【発明の効果】
本発明によれば、１件の文書が複数の論理構造から構成される構造化文書に対し目的とする論理構造を指定した検索（構造指定検索）を実現する際に、目的とする論理構造以外のテキストを読み飛ばし照合処理の対象から外すことにより、大規模な構造化文書に対しても実用的な時間で構造指定検索を実現することができる。
【図面の簡単な説明】
【図１】本発明による構造化文書検索システムの構成を表わす図である。
【図２】構造指定検索方法の従来方法を表わす図である。
【図３】技術報告書の論理構造の例を表わす図である。
【図４】本発明の第一の実施例における登録処理フローを表わす図である。
【図５】本発明の第一の実施例における検索用データベースの一例を表わす図である。
【図６】本発明の第一の実施例における検索処理フローを表わす図である。
【図７】本発明第一の実施例における論理構造名と論理構造識別子の対応表の一例を示す図である。
【図８】本発明の第二の実施例における登録処理フローを表わす図である。
【図９】本発明の第二の実施例における検索用データベースの一例を表わす図である。
【図１０】本発明の第二の実施例における検索処理フローを表わす図である。
【図１１】本発明第三の実施例における技術報告書の論理構造の例を表わす図である。
【図１２】本発明第三の実施例における論理構造名と論理構造識別子の対応表の一例を示す図である。
【図１３】本発明の第三の実施例における検索用データベースの一例を表わす図である。
【図１４】本発明の第三の実施例における検索処理フローを表わす図である。
【図１５】本発明の第四の実施例における検索用データベースの一例を表わす図である。
【図１６】本発明の第四の実施例における検索処理フローを表わす図である。
【符号の説明】
１…ディスプレイ、２…キーボード、３…中央制御装置ＣＰＵ、４…フロッピーディスクドライバ、５…フロッピーディスク、６…主メモリ、７…磁気ディスク装置、８…検索用データベース、１０…格納領域前方マーカ検出プログラム、２０…論理構造長算出プログラム、３０…検索用データベース作成プログラム、４０…前方マーカ検出プログラム、５０…文字列照合プログラム、６０…照合処理スキッププログラム、７０…登録制御プログラム、８０…検索制御プログラム、９０…データエリア、１００…文書の先頭を表わす制御コードｔｏｔ、１１０…文書の終了を表わす制御コードｅｏｔ、１２０…検索用データベースの終了を表わす制御コードｅｏｆ、２００…文書の識別番号ＩＤ、２１０…論理構造長、２２０…先頭アドレス、３００…論理構造の区切りを表わす制御コードα、
３１０…論理構造識別番号。
【図１】
0003555181.tif 000002
【図２】
0003555181.tif 000003
【図３】
0003555181.tif 000004
【図４】
0003555181.tif 000005
【図５】
0003555181.tif 000006
【図６】
0003555181.tif 000007
【図７】
0003555181.tif 000008
【図８】
0003555181.tif 000009
【図９】
0003555181.tif 000010
【図１０】
0003555181.tif 000011
【図１１】
0003555181.tif 000012
【図１２】
0003555181.tif 000013
【図１３】
0003555181.tif 000014
【図１４】
0003555181.tif 000015
【図１５】
0003555181.tif 000016
【図１６】
0003555181.tif 000017