(57)【要約】【課題】文書データベースが大規模で、また、検索文字列の長さが所定の部分文字列に対して長い場合であっても、文書検索を高速に行えるようにすること。【解決手段】文書検索装置の索引情報記憶領域１１には、文書の検索に使用する索引情報１１Ａが記憶される。索引情報１１Ａは、文書データベースの各文書に含まれる個々の部分文字列をそれぞれインデクスとする転置索引の情報である。個々のインデクスはレコードとして少なくとも１つの部分文字列出現情報を備えている。個々の部分文字列出現情報は、少なくとも特定の文書内での当該部分文字列に後続する部分文字列、および、当該後続する部分文字列に対応するインデクスのレコードにおける抽出すべき部分文字列出現情報の配置位置を示す情報を含んでいる。また、個々の部分文字列出現情報の少なくとも一部は、文書を識別するための文書識別情報である文書番号を含んでいる。【選択図】図１
2010146273.tif 000002
【特許請求の範囲】
【請求項１】
記憶媒体に記憶される複数の文書の中から、入力装置を通じて指定される検索文字列を含む文書を検索する文書検索装置であって、
各文書に含まれる個々の部分文字列をそれぞれインデクスとし、個々のインデクスはレコードとして少なくとも１つの部分文字列出現情報を備え、個々の部分文字列出現情報は、少なくとも当該部分文字列を含む文書内での当該部分文字列に後続する部分文字列、および、当該後続する部分文字列に対応するインデクスのレコードにおける抽出すべき部分文字列出現情報の配置位置を指定するものであり、個々の部分文字列出現情報の少なくとも一部が文書を識別するための文書識別情報を含んでいる、索引情報を記憶する索引情報記憶手段と、
入力装置を通じて指定される検索文字列を複数の部分文字列に区切る部分文字列区切手段と、
区切られた検索文字列の先頭に位置する部分文字列に対応する前記索引情報内のインデクスのレコードから全ての部分文字列出現情報を読み出す手段と、
読み出された全ての部分文字列出現情報のうち、指定されている後続の部分文字列が前記検索文字列の中の後続する部分文字列に合致するものがある場合に、該当する部分文字列出現情報を抽出する手段と、
抽出された部分文字列出現情報に指定されている後続の部分文字列に対応する前記索引情報内のインデクスのレコードから、当該抽出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出す手段と、
読み出された部分文字列出現情報に指定されている後続の部分文字列が前記検索文字列の中の後続する部分文字列に合致する場合に、当該読み出された部分文字列出現情報に指定されている後続の部分文字列に対応する前記索引情報内のインデクスのレコードから、当該読み出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出すという処理を繰り返す手段と、
前記繰り返しの処理において読み出される部分文字列出現情報に指定されている後続の部分文字列が、前記検索文字列の中の終端に位置する部分文字列に合致した時点で、個々の部分文字列出現情報のいずれかの読み出しにおいて得られた文書識別情報を出力する手段と
を具備することを特徴とする文書検索装置。
【請求項２】
前記索引情報の中には、文書識別情報を含む部分文字列出現情報と、文書識別情報を含まない部分文字列出現情報とが存在することを特徴とする請求項１に記載の文書検索装置。
【請求項３】
各文書を構成する複数の部分文字列のうち、１つおきに配置された部分文字列に対応する前記索引情報内のインデクスは、当該文書の文書識別情報が省略された部分文字列出現情報を備えていることを特徴とする請求項１に記載の文書検索装置。
【請求項４】
個々の部分文字列は、文字列をＮ文字ごとのＮ−ｇｒａｍに分解したものであることを特徴とする請求項１乃至３に記載の文書検索装置。
【請求項５】
個々の部分文字列は、文字列を形態素解析により個々の形態素に分解したものであることを特徴とする請求項１乃至３のいずれか１項に記載の文書検索装置。
【請求項６】
文書の文書識別情報毎に、レコードとして、当該文書の先頭に位置する部分文字列、および、当該部分文字列に対応する前記索引情報内のインデクスのレコードにおける抽出すべき部分文字列出現情報の配置位置が指定された先頭情報を有する、文書復元用情報を記憶する手段と、
入力装置を通じて指定される文書識別情報もしくは前記出力する手段から出力される文書識別情報に対応する先頭情報を、前記文書復元用情報内のレコードから読み出す手段と、
読み出された先頭情報に指定されている部分文字列を前記記憶領域に記憶させると共に、当該読み出された先頭情報に指定されている部分文字列に対応する前記索引情報内のインデクスのレコードから、当該読み出された先頭情報に指定されている配置位置にある部分文字列出現情報を読み出す手段と、
読み出された部分文字列出現情報に指定されている後続の部分文字列を所定の記憶領域に記憶させると共に、当該読み出された部分文字列出現情報に指定されている後続の部分文字列に対応する前記索引情報内のインデクスのレコードから、当該読み出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出すという処理を繰り返す手段と、
前記繰り返しの処理において読み出される部分文字列出現情報に後続の部分文字列が指定されていないことが認められた時点で、前記記憶領域に記憶されている個々の部分文字列を合わせたものを１つの文書として出力する手段と
を更に具備することを特徴とする請求項１乃至５のいずれか１項に記載の文書検索装置。
【請求項７】
記憶媒体に記憶される複数の文書の中から、入力装置を通じて指定される検索文字列を含む文書を検索するためのプログラムであって、
各文書に含まれる個々の部分文字列をそれぞれインデクスとし、個々のインデクスはレコードとして少なくとも１つの部分文字列出現情報を備え、個々の部分文字列出現情報は、少なくとも当該部分文字列を含む文書内での当該部分文字列に後続する部分文字列、および、当該後続する部分文字列に対応するインデクスのレコードにおける抽出すべき部分文字列出現情報の配置位置を指定するものであり、個々の部分文字列出現情報の少なくとも一部が文書を識別するための文書識別情報を含んでいる、索引情報を記憶媒体に記憶させる機能と、
入力装置を通じて指定される検索文字列を複数の部分文字列に区切る機能と、
区切られた検索文字列の先頭に位置する部分文字列に対応する前記索引情報内のインデクスのレコードから全ての部分文字列出現情報を読み出す機能と、
読み出された全ての部分文字列出現情報のうち、指定されている後続の部分文字列が前記検索文字列の中の後続する部分文字列に合致するものがある場合に、該当する部分文字列出現情報を抽出する機能と、
抽出された部分文字列出現情報に指定されている後続の部分文字列に対応する前記索引情報内のインデクスのレコードから、当該抽出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出す機能と、
読み出された部分文字列出現情報に指定されている後続の部分文字列が前記検索文字列の中の後続する部分文字列に合致する場合に、当該読み出された部分文字列出現情報に指定されている後続の部分文字列に対応する前記索引情報内のインデクスのレコードから、当該読み出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出すという処理を繰り返す機能と、
前記繰り返しの処理において読み出される部分文字列出現情報に指定されている後続の部分文字列が、前記検索文字列の中の終端に位置する部分文字列に合致した時点で、個々の部分文字列出現情報のいずれかの読み出しにおいて得られた文書識別情報を出力する機能と
をコンピュータに実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索対象の文字列を含む文書を検索する文書検索装置およびプログラムに関する。
【背景技術】
【０００２】
大規模な文書データベースから指定された検索文字列が含まれる文書を高速に探し出す方式として、転置索引方式が知られている。
【０００３】
転置索引方式とは、文書の登録時に文書から所定の部分文字列を抽出し、各々の部分文字列を、文書を識別する文書識別情報（文書番号など）を含む部分文字列出現情報を備えるインデクスとして格納しておき、検索時には検索文字列を所定の部分文字列に区切り、各部分文字列に対応するインデクスを読み出し、当該部分文字列を含む文書を識別する文書識別情報を抽出することによって、当該検索文字列を含む文書を探し出す方式である。
【０００４】
文書から部分文字列を抽出するに当たっては、文書の文字列を辞書を使って形態素（意味を持つ最小の単位）に分解する形態素解析により個々の形態素を取り出す方法や、文書の文字列をＮ文字ごとのＮ−ｇｒａｍと呼ばれる部分文字列に区切って個々のＮ−ｇｒａｍを取り出す方法が知られている。
【０００５】
以下に、Ｎ−ｇｒａｍ（Ｎ＝２）を用いた転置索引の例について説明する。
【０００６】
図９に示されるように、文書データベースには、文書番号１で識別される文書の文字列「ａｂｒａｃａｄａｂｒａ」と、文書番号２で識別される文書の文字列「ａｃａｄｅｍｉａ」とが登録されるものとする。また、図１０に示されるように、検索文字列として「ｂｒａｃａ」が入力されるものとする。
【０００７】
文書の登録時には、図１１に示されるように、文書中の全てのＮ−ｇｒａｍ、即ち、部分文字列「ａ○」、「ａｂ」、「ａｃ」、「ａｄ」、「ｂｒ」、「ｃａ」、「ｄａ」、「ｄｅ」、「ｅｍ」、「ｉａ」、「ｍｉ」、「ｒａ」をそれぞれインデクスとする索引情報を登録する。なお、「ａ○」は、「ａ」一文字で文書の終端に達していることを示す。索引情報の中において、個々のインデクスはレコードとして少なくとも１つの部分文字列出現情報を備え、個々の部分文字列出現情報は、当該部分文字列を含む文書の文書番号と、その文書の中での当該部分文字列の出現場所を示す情報とを含んでいる。
【０００８】
検索時には、指定された検索文字列をＮ−ｇｒａｍである部分文字列に区切り、それぞれの部分文字列に対応するインデクスから部分文字列出現情報を読み出す。次に、読み出された個々の部分文字列情報に共通して含まれる文書番号を抽出することにより、当該検索文字列を含む文書を探し出す。なお、指定された検索文字列が複数の部分文字列から成る場合においては、部分文字列出現情報間で出現位置情報の隣接判定を行うことにより、より正確に当該検索文字列を含む文書を探し出すことができる。
【０００９】
例えば、「ｂｒａｃａ」という文字列を含む文書を検索したい場合、当該検索文字列は、「ｂｒ」、「ａｃ」、「ｃａ」という三つの部分文字列に分割される（もし、検索文字列の終端で一文字だけ残ってしまった場合には、先行する部分文字列と一文字重なる部分文字列を用いる）。
【００１０】
次に、それぞれの部分文字列に対応するインデクスを読み出す。この場合、「ｂｒ」に対応するインデクスには、［文書番号＝１、出現場所＝２］と［文書番号＝１、出現場所＝９］の二つの部分文字列出現情報が備えられ、「ａｃ」に対応するインデクスには、［文書番号＝１、出現場所＝４］と［文書番号＝２、出現場所＝１］の二つの部分文字列出現情報が備えられ、「ｃａ」に対応するインデクスには、［文書番号＝１、出現場所＝５］と［文書番号＝２、出現場所＝２］の二つの部分文字列出現情報が備えられている。
【００１１】
これを付き合わせると、［文書番号＝１、出現場所＝２］に「ｂｒ」があり、「文書番号＝１、出現場所＝４」に「ａｃ」があり、「文書番号＝１、出現場所＝５」に「ｃａ」があることから、文書番号１の２文字目から「ｂｒａｃａ」という文字列が含まれていることがわかる。これにより、「ｂｒａｃａ」を含む文書は、文書番号１の文書であるという結果が得られる。
【００１２】
以上のように、転置索引方式は、文書全体を走査することなしに、インデクスの読込みと出現位置情報の隣接判定だけで検索が行えるため、大規模な文書データベースに適用した場合においても高速なフルテキストサーチを実現できる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、大規模な文書データベースに転置索引方式を適用した場合、文書データベースに登録された文書に含まれる部分文字列の数は膨大なものとなり、それに従い、個々のインデクスの容量も大きくなる。
【００１４】
また、従来の文書検索装置では、検索文字列を所定の部分文字列に分割した後、それぞれの部分文字列に対応するインデクスを全て読み出し、隣接判定を行わなければならない。前述した例では、「ｂｒ」に対応するインデクス、「ａｃ」に対応するインデクス、「ｃａ」に対応するインデクスを全て読み出す必要がある。このため、検索文字列を所定の部分文字列に区切り、対応するインデクスを読み出す際に、全ての部分文字列に対応する部分文字列出現情報を読み出すのにかなりの時間を要し、検索に時間がかかる。
【００１５】
また、読み出した部分文字列出現情報から、共通の文書識別情報を抽出する作業や、出現位置情報による隣接判定の回数も増えるため、やはり検索に時間がかかる。
【００１６】
特に、検索文字列の長さが、所定の部分文字列に対して長い場合、対応するインデクスも多くなり、部分文字列出現情報の読み出しや、共通の文書識別情報の抽出、出現位置情報による隣接判定にかかる時間が増え、検索時間が長くなってしまう。
【００１７】
本発明は上記実情に鑑みてなされたものであり、文書データベースが大規模で、また、検索文字列の長さが所定の部分文字列に対して長い場合であっても、文書検索を高速に行うことができる文書検索装置を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明の一態様による文書検索装置は、記憶媒体に記憶される複数の文書の中から、入力装置を通じて指定される検索文字列を含む文書を検索する文書検索装置であって、各文書に含まれる個々の部分文字列をそれぞれインデクスとし、個々のインデクスはレコードとして少なくとも１つの部分文字列出現情報を備え、個々の部分文字列出現情報は、少なくとも当該部分文字列を含む文書内での当該部分文字列に後続する部分文字列、および、当該後続する部分文字列に対応するインデクスのレコードにおける抽出すべき部分文字列出現情報の配置位置を指定するものであり、個々の部分文字列出現情報の少なくとも一部が文書を識別するための文書識別情報を含んでいる、索引情報を記憶する索引情報記憶手段と、入力装置を通じて指定される検索文字列を複数の部分文字列に区切る部分文字列区切手段と、区切られた検索文字列の先頭に位置する部分文字列に対応する前記索引情報内のインデクスのレコードから全ての部分文字列出現情報を読み出す手段と、読み出された全ての部分文字列出現情報のうち、指定されている後続の部分文字列が前記検索文字列の中の後続する部分文字列に合致するものがある場合に、該当する部分文字列出現情報を抽出する手段と、抽出された部分文字列出現情報に指定されている後続の部分文字列に対応する前記索引情報内のインデクスのレコードから、当該抽出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出す手段と、読み出された部分文字列出現情報に指定されている後続の部分文字列が前記検索文字列の中の後続する部分文字列に合致する場合に、当該読み出された部分文字列出現情報に指定されている後続の部分文字列に対応する前記索引情報内のインデクスのレコードから、当該読み出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出すという処理を繰り返す手段と、前記繰り返しの処理において読み出される部分文字列出現情報に指定されている後続の部分文字列が、前記検索文字列の中の終端に位置する部分文字列に合致した時点で、個々の部分文字列出現情報のいずれかの読み出しにおいて得られた文書識別情報を出力する手段とを具備することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、文書データベースが大規模で、また、検索文字列の長さが所定の部分文字列に対して長い場合であっても、文書検索を高速に行えるようにすることができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して、本発明の実施の形態について説明する。
【００２１】
図１は、本発明の一実施形態に係る文書検索装置の構成の一例を示す図である。
【００２２】
本実施形態に係る文書検索装置は、部分文字列として、Ｎ−ｇｒａｍ（Ｎ＝２）を用いた転置索引により検索を行うものである。この文書検索装置は、例えばコンピュータであり、記憶部１、メモリ２、制御部３、入力部４、表示部５などを備えている。
【００２３】
記憶部１は、例えばハードディスクなどの不揮発性の情報記憶媒体であり、文書の検索を行うための文書検索プログラム、文書の復元を行うための文書復元プログラム、文書の検索に使用する索引情報、文書の復元に使用する文書復元用情報、各種の文書を含む文書データベースなどを格納している。
【００２４】
メモリ２は、例えばＲＡＭなどの揮発性の情報記憶媒体であり、制御部３により記憶部１からロードされる各種の情報を保持する。
【００２５】
制御部３は、例えばＣＰＵなどのプロセッサであり、文書検索プログラムや文書復元プログラムを実行するものである。
【００２６】
入力部４は、例えばキーボードやマウスなどの入力装置であり、文書検索の際に検索文字列を入力したり、文書復元の際に文書番号を入力したりするものである。
【００２７】
表示部５は、例えばＬＣＤなどの表示装置であり、文書検索の際に検索文字列の入力を促す画面、文書検索の結果を示す画面、文書復元の際に文書番号を入力を促す画面、文書復元の結果を示す画面などを表示するものである。
【００２８】
文書の検索を行う際には、メモリ２上に、索引情報記憶領域１１、検索文字列記憶領域１２、および検索作業領域１３が形成される。
【００２９】
索引情報記憶領域１１には、文書の検索に使用する索引情報１１Ａが記憶される。索引情報１１Ａは、文書データベースの各文書に含まれる個々の部分文字列をそれぞれインデクスとする転置索引の情報である。個々のインデクスはレコードとして少なくとも１つの部分文字列出現情報を備えている。個々の部分文字列出現情報は、少なくとも特定の文書内での当該部分文字列に後続する部分文字列、および、当該後続する部分文字列に対応するインデクスのレコードにおける抽出すべき部分文字列出現情報の配置位置を示す情報を含んでいる。また、個々の部分文字列出現情報の少なくとも一部は、文書を識別するための文書識別情報である文書番号を含んでいる。
【００３０】
検索文字列記憶領域１２には、文書を検索するために入力部１から入力された検索文字列が記憶される。検索文字列は、制御部３により複数の部分文字列、例えばＮ文字ごとのＮ−ｇｒａｍ（Ｎ＝２）に区切られる。
【００３１】
検索作業領域１３には、文書の検索作業において索引情報１１Ａ内から順次読み出される部分文字列出現情報が記憶されると共に、当該部分文字列出現情報から得られる文書番号が記憶される。検索作業領域１３に記憶された文書番号は、検索処理が検索文字列の終端にまで達した時点で、検索対象の文書を確定するために使用される。なお、検索作業領域１３に記憶される部分文字列出現情報は、新たな部分文字列出現情報が読み出されるたびに上書きされてもよい。
【００３２】
また、文書の復元を行う際には、メモリ２上に、さらに復元用情報記憶領域１４および復元作業領域１５が形成される。
【００３３】
復元用情報記憶領域１４には、文書の復元に使用する文書復元用情報１４Ａが記憶される。文書復元用情報１４Ａは、文書の文書番号毎に、レコードとして、当該文書の先頭に位置する部分文字列、および、当該部分文字列に対応する索引情報１１Ａ内のインデクスのレコードにおける抽出すべき部分文字列出現情報の配置位置が指定された先頭情報を有する。
【００３４】
復元作業領域１５には、復元対象となる文書の文書番号が記憶されると共に、文書の復元作業において文書復元情報内から読み出される当該文書の先頭に位置する部分文字列をはじめ、索引情報１１Ａ内から順次読み出される部分文字列出現情報から得られる部分文字列が順次記憶される。
【００３５】
制御部３により実行される文書検索プログラムは、記憶部１から索引情報１１Ａを取り出してメモリ２の索引情報記憶領域１１に記憶させる機能と、入力部４を通じて指定される検索文字列を、検索文字領域１２に記憶させ、複数の部分文字列に区切る機能と、区切られた検索文字列の先頭に位置する部分文字列に対応する索引情報１１Ａ内のインデクスのレコードから全ての部分文字列出現情報を読み出して検索作業領域１３に記憶させる機能と、読み出された全ての部分文字列出現情報のうち、指定されている後続の部分文字列が前記検索文字列の中の後続する部分文字列に合致するものがある場合に、該当する部分文字列出現情報を抽出する機能と、抽出された部分文字列出現情報に指定されている後続の部分文字列に対応する索引情報１１Ａ内のインデクスのレコードから、当該抽出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出して検索作業領域１３に記憶させる機能と、読み出された部分文字列出現情報に指定されている後続の部分文字列が前記検索文字列の中の後続する部分文字列に合致する場合に、当該読み出された部分文字列出現情報に指定されている後続の部分文字列に対応する索引情報１１Ａ内のインデクスのレコードから、当該読み出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出して検索作業領域１３に記憶させるという処理を繰り返す機能と、前記繰り返しの処理において読み出される部分文字列出現情報に指定されている後続の部分文字列が、前記検索文字列の中の終端に位置する部分文字列に合致した時点で、個々の部分文字列出現情報のいずれかの読み出しにおいて得られた文書番号（および対応する文書の内容もしくはその一部）を表示部５に出力する機能とを実現させる。
【００３６】
また、制御部３により実行される文書復元プログラムは、記憶部１から文書復元用情報１４Ａを取り出してメモリ２の復元用情報記憶領域１４に記憶させる機能と、入力部４を通じて指定される文書番号もしくは前記出力する機能から出力される文書番号に対応する先頭情報を、文書復元用情報１４Ａ内のレコードから読み出す機能と、読み出された先頭情報に指定されている部分文字列を復元作業領域１５に記憶させると共に、当該読み出された先頭情報に指定されている部分文字列に対応する前記索引情報内のインデクスのレコードから、当該読み出された先頭情報に指定されている配置位置にある部分文字列出現情報を読み出す機能と、読み出された部分文字列出現情報に指定されている後続の部分文字列を復元作業領域１５に記憶させると共に、当該読み出された部分文字列出現情報に指定されている後続の部分文字列に対応する前記索引情報内のインデクスのレコードから、当該読み出された部分文字列出現情報に指定されている配置位置にある部分文字列出現情報を読み出すという処理を繰り返す機能と、前記繰り返しの処理において読み出される部分文字列出現情報に後続の部分文字列が指定されていないことが認められた時点で、復元作業領域１５に記憶されている個々の部分文字列を合わせたものを１つの文書として記憶部１もしくは表示部５に出力する機能とを実現させる。
【００３７】
なお、本実施形態における個々の部分文字列は、文字列をＮ文字ごとのＮ−ｇｒａｍに分解したものであるが、代わりに、文字列を、辞書を使って形態素解析により個々の形態素（意味を持つ最小の単位）に分解したものとすることも可能である。
【００３８】
図２は、索引情報１１Ａの具体例を示す図である。
【００３９】
記憶部１の文書データベースには、前述の図９に示したように、文書番号１で識別される文書の文字列「ａｂｒａｃａｄａｂｒａ」と、文書番号２で識別される文書の文字列「ａｃａｄｅｍｉａ」とが登録されるものとする。これらの文書の登録時には、文書中の全てのＮ−ｇｒａｍ（Ｎ＝２）、即ち、部分文字列「ａ○」、「ａｂ」、「ａｃ」、「ａｄ」、「ｂｒ」、「ｃａ」、「ｄａ」、「ｄｅ」、「ｅｍ」、「ｉａ」、「ｍｉ」をそれぞれインデクスとする索引情報１１Ａを登録する。なお、「ａ○」は、「ａ」一文字で文書の終端に達していることを示す。索引情報１１Ａの中において、個々のインデクスはレコードとして少なくとも１つの部分文字列出現情報を備えている。個々の部分文字列出現情報は、当該部分文字列を含む文書を識別するための文書識別情報としての文書番号、その文書内での当該部分文字列に後続する部分文字列、および、当該後続する部分文字列に対応するインデクスのレコードにおける抽出すべき部分文字列出現情報の配置位置を示す情報を含んでいる。
【００４０】
例えば、部分文字列「ａｂ」に対応するインデクスの１つ目の部分文字列出現情報は、後続する部分文字列が「ｒａ」であり、当該後続する部分文字列に対応するインデクスのレコードにおける抽出すべき部分文字列出現情報の位置は、１つ目であることを示している。
【００４１】
ここで、図２に示される索引情報に基づき、例えば前述の図１０に示した検索文字列「ｂｒａｃａ」を含む文書を検索する場合の手順について説明する。
【００４２】
最初に、検索文字列「ｂｒａｃａ」は、「ｂｒ」、「ａｃ」、「ａ○」という３つの部分文字列、即ち、３つのＮ−ｇｒａｍ（Ｎ＝２）に分割される。
【００４３】
次に、検索文字列の中の先頭に位置する部分文字列「ｂｒ」に対応するインデクスのレコードから全ての部分文字列出現情報を読み出す。
【００４４】
「ｂｒ」に対応するインデクスには、［文書番号＝１、後続＝「ａｃ」、１］と［文書番号＝１、後続＝「ａ○」、１］の二つの部分文字列出現情報が備えられており、この中で、後続する部分文字列が、検索文字列の中の後続する部分文字列「ａｃ」に合致するものは、［文書番号＝１、後続＝「ａｃ」、１］であることがわかるので、「ａｃ」に対応するインデクスのレコードから１つ目の部分文字列出現情報［文書番号＝１、後続＝「ａｄ」、１］を読み出す。
【００４５】
読み出された部分文字列出現情報［文書番号＝１、後続＝「ａｄ」、１］から、後続する部分文字列が、検索文字列の中の後続する部分文字列「ａ○」に合致する部分文字列出現情報を抽出すると、［文書番号＝１、後続＝「ａｄ」、１］が得られる。ここで、検索文字列の部分文字列としての「ａ○」は、文字ａの後に何が続いても良いことを示すので、「ａｄ」も合致するものに含まれる。このとき、本検索処理が検索文字列の終端に達しているため、「ａ○」に対応するインデクスのレコードから部分文字列出現情報を読み出す必要はない。
【００４６】
この結果から、「ｂｒａｃａ」を含む文書は、文書番号１の文書であることが確認できる。
【００４７】
このように本実施形態においては、検索文字列を部分文字列に区切った後は、図３に示されるように、最初の部分文字列に対応するインデクス（例えば「ｂｒ」）のレコードを全て読み出し、当該インデクスのレコードに格納された個々の部分文字列出現情報のうち、後続する部分文字列が当該検索文字列の中の後続する部分文字列に合致するもののみを抽出し、得られた部分文字列出現情報に指定されているインデクス（例えば「ａｄ」）のレコードから、当該抽出された部分文字列出現情報に指定されている配置位置の部分文字列出現情報のみを読み出す処理を、検索文字列の終端の部分文字列（例えば「ａ○」）に達するまで繰り返すことにより、文書を高速に検索することが可能となる。すなわち、従来は各レコードに存在する全ての部分文字列出現情報を読み出さなければならなかったのに対し、本実施形態では図３のように読み出すべき部分文字列出現情報を少なくすることを可能としている。
【００４８】
また、本実施形態では、部分文字列出現情報に含まれる後続する部分文字列と検索文字列の後続する部分文字列との比較を行うだけで、部分文字列出現情報を容易に抽出でき、読み出した部分文字列出現情報から、共通の文書識別情報を抽出する作業や、出現位置情報による隣接判定のような複雑な処理を行う必要がない。
【００４９】
図４は、図２に示される索引情報の変形例を示す図である。
【００５０】
図２の索引情報は、全ての部分文字列出現情報が文書番号を含むものであったが、図４の索引情報は、一部の部分文字列出現情報のみが文書番号を含んでおり、文書番号を含まない部分文字列出現情報も存在する。
【００５１】
即ち、図４の索引情報では、例えば図５に示されるように、各文書を構成する複数の部分文字列のうち、１つおきに配置された部分文字列（文書番号１の文書の例では、「ａｂ」、「ｃａ」、「ｂｒ」、「ｂｒ」、「ａｄ」、「ｒａ」が該当し、文書番号２の文書の例では、「ａｃ」、「ｅｍ」、「ｃａ」、「ｍｉ」が該当する）に対応する索引情報内のインデクスは、当該文書の文書番号を含む部分文字列出現情報を備えており、一方、上記の部分文字列以外の、１つおきに配置された部分文字列（文書番号１の文書の例では、「ｒａ」、「ｄａ」、「ａ○」、「ａｃ」、「ａｂ」が該当し、文書番号２の文書の例では、「ａｄ」、「ｉａ」、「ｄｅ」、「ａ○」が該当する。）に対応する前記索引情報内のインデクスは、当該文書の文書番号が省略された部分文字列出現情報を備えている。
【００５２】
ここで、図４に示される索引情報に基づき、例えば前述の図１０に示した検索文字列「ｂｒａｃａ」を含む文書を検索する場合の手順について説明する。
【００５３】
最初に、検索文字列「ｂｒａｃａ」は、「ｂｒ」、「ａｃ」、「ａ○」という３つの部分文字列、即ち、３つのＮ−ｇｒａｍ（Ｎ＝２）に分割される。
【００５４】
次に、検索文字列の中の先頭に位置する部分文字列「ｂｒ」に対応するインデクスのレコードから全ての部分文字列出現情報を読み出す。
【００５５】
「ｂｒ」に対応するインデクスには、［文書番号＝１、後続＝「ａｃ」、１］と［文書番号＝１、後続＝「ａ○」、１］の二つの部分文字列出現情報が備えられており、この中で、後続する部分文字列が、検索文字列の中の後続する部分文字列「ａｃ」に合致するものは、［文書番号＝１、後続＝「ａｃ」、１］であることがわかるので、「ａｃ」に対応するインデクスのレコードから１つ目の部分文字列出現情報［後続＝「ａｄ」、１］を読み出す。
【００５６】
読み出された部分文字列出現情報［後続＝「ａｄ」、１］から、後続する部分文字列が、検索文字列の中の後続する部分文字列「ａ○」に合致する部分文字列出現情報を抽出すると、［後続＝「ａｄ」、１］が得られる。ここで、検索文字列の部分文字列としての「ａ○」は、文字ａの後に何が続いても良いことを示すので、「ａｄ」も合致するものに含まれる。このとき、本検索処理が検索文字列の終端に達しているため、「ａ○」に対応するインデクスのレコードから部分文字列出現情報を読み出す必要はない。
【００５７】
この結果から、「ｂｒａｃａ」を含む文書は、文書番号１の文書であることが確認できる。
【００５８】
このように、文書番号が省略された部分文字列出現情報を備えた索引情報を採用することにより、レコードのサイズをより一層小さくすることが可能となる。
【００５９】
次に、文書を文書データベースに残していないか、もしくは消失してしまった場合に、当該文書を索引情報１１Ａを利用して復元する方法について説明する。
【００６０】
ここでは、図６に示される文書復元用情報に基づき、例えば図２に示される索引情報を利用して文書番号２の文書「ａｃａｄｅｍｉａ」を復元する場合の手順を説明する。
【００６１】
図６の文書復元用情報から、復元対象の文書の文書番号２に対応する先頭情報［先頭＝「ａｃ」、２］を読み出す。
【００６２】
読み出された先頭情報［先頭＝「ａｃ」、２］を参照すると、復元対象の文書の先頭にある部分文字列は「ａｃ」であり、次に参照すべき部分文字列出現情報は、「ａｃ」に対応するインデクスのレコードにある２つ目の部分文字列出現情報［文書番号＝２、後続＝「ａｄ」、２］であることがわかる。
【００６３】
この部分文字列出現情報［文書番号＝２、後続＝「ａｄ」、２］に含まれる、後続する部分文字列を指定する情報を参照すると、後続する部分文字列は「ａｄ」であり、次に参照すべき部分文字列出現情報は、「ａｄ」に対応するインデクスのレコードにある２つ目の部分文字列出現情報［文書番号＝２、後続＝「ｅｍ」、２］であることがわかる。
【００６４】
この部分文字列出現情報［文書番号＝２、後続＝「ｅｍ」、２］に含まれる、後続する部分文字列を指定する情報を参照すると、後続する部分文字列は「ｅｍ」であり、次に参照すべき部分文字列出現情報は、「ｅｍ」に対応するインデクスの１つ目のレコードにある部分文字列出現情報［文書番号＝２、後続＝「ｉａ」、１］であることがわかる。
【００６５】
この部分文字列出現情報［文書番号＝２、後続＝「ｉａ」、１］に含まれる、後続する部分文字列を指定する情報を参照すると、後続する部分文字列は「ｉａ」であり、次に参照すべき部分文字列出現情報は、「ｉａ」に対応するインデクスのレコードにある１つ目の部分文字列出現情報［文書番号＝２、後続＝なし］であることがわかる。
【００６６】
この部分文字列出現情報［文書番号＝２、後続＝なし］に含まれる、後続する部分文字列を特定する情報を参照すると、後続する部分文字列は無いため、当該文書の最後まで達したことがわかる。
【００６７】
ここで、先頭から始まる部分文字列に対応する部分文字列出現情報に対応する部分文字列である「ａｃ」から後続の部分文字列を結合していくと、「ａｃ」「ａｄ」「ｅｍ」「ｉａ」となり、文書番号２に対応する文書の文字列「ａｃａｄｅｍｉａ」を復元することができる。
【００６８】
このように、登録後に文書が残っていなくても、当該文書を復元することが可能となる。
【００６９】
次に、図７を参照して、制御部３が文書検索プログラムを実行することにより実現される文書検索の動作の一例を説明する。
【００７０】
制御部３は、検索文字列を入力すると（ステップＳ１１）、この検索文字列を検索文字列記憶領域１２において一定の部分文字列、即ち、Ｎ文字ごとのＮ−ｇｒａｍ（Ｎ＝２）に区切り（ステップＳ１２）、先頭の部分文字列に対応する索引情報１１Ａ内のインデクスのレコードから全ての部分文字列出現情報を読み出し、検索作業領域１３に記憶させる（ステップＳ１３）。
【００７１】
次に、制御部３は、読み出した全ての部分文字列出現情報のうち、指定されている後続の部分文字列が検索文字列の中の後続する部分文字列に合致するものがあるか否かを判定する（ステップＳ１４）。合致するものがなければ（ステップＳ１５のＮＯ）、該当する文書が無いことを示すメッセージを表示部５に出力し（ステップＳ２２）、一方、合致するものがあれば（ステップＳ１５のＹＥＳ）、当該部分文書文字列情報を抽出する（ステップＳ１６）。また、当該部分文書文字列情報から文書番号が得られれば、その文書番号を検索作業領域１３に記憶させる。
【００７２】
次に、制御部３は、当該部分文書文字列情報に指定されている後続の部分文字列に対応するインデクスのレコードから、当該部分文書文字列情報に指定されている配置位置の部分文字列出現情報を読み出し、検索作業領域１３に記憶させる（ステップＳ１７）。また、当該部分文書文字列情報から文書番号が得られれば、その文書番号を検索作業領域１３に記憶させる。
【００７３】
次に、制御部３は、読み出した部分文字列出現情報に指定されている後続の部分文字列が、検索文字列の中の後続する部分文字列に合致するか否かを判定する（ステップＳ１８）。合致しなければ（ステップＳ１９のＮＯ）、該当する文書が無いことを示すメッセージを表示部５に出力し（ステップＳ２２）、一方、合致すれば（ステップＳ１９のＹＥＳ）、本検索処理が検索文字列の終端に達していない限り（ステップＳ２０のＮＯ）、ステップＳ１７からの処理を繰り返す。
【００７４】
本検索処理が検索文字列の終端に達している場合には（ステップＳ２０のＹＥＳ）、いずれかの部分文字列出現情報から得られた文書番号（検索作業領域１３に記憶されている文書番号）を表示部５に出力する（ステップＳ２１）。
【００７５】
次に、図８を参照して、制御部３が文書復元プログラムを実行することにより実現される文書復元の動作の一例を説明する。
【００７６】
制御部３は、文書番号を入力すると（ステップＳ３１）、この文書番号を復元作業領域１５に記憶し、文書復元用情報記憶領域１４に記憶されている文書復元用情報１４Ａから、当該文書番号に対応する先頭情報を読み出し（ステップＳ３２）、読み出した先頭情報に指定されている部分文字列を復元作業領域１５に記憶させる（ステップＳ３３）。
【００７７】
次に、制御部３は、読み出した先頭情報に指定されている部分文字列に対応する索引情報１１Ａ内のインデクスのレコードから、当該部分文書文字列情報に指定されている配置位置の部分文字列出現情報を読み出す（ステップＳ３４）。
【００７８】
次に、制御部３は、読み出した部分文字列出現情報に後続の部分文字列が指定されていれば（ステップＳ３５のＹＥＳ）、当該部分文字列出現情報に指定されている後続の部分文字列を復元作業領域１５に記憶させ（ステップＳ３６）、当該部分文字列出現情報に指定されている後続の部分文字列に対応する索引情報１１Ａ内のインデクスのレコードから、当該部分文書文字列情報に指定されている配置位置の部分文字列出現情報を読み出し（ステップＳ３７）、再びステップＳ３５からの処理を繰り返す。
【００７９】
一方、読み出した部分文字列出現情報に後続の部分文字列が無ければ（ステップＳ３５のＮＯ）、文書の復元に必要な全ての部分文字列が得られたことになるため、復元作業領域１５に記憶されている個々の部分文字列を合わせた文字列を出力し、文書として記憶部１に記憶させる（ステップＳ３８）。
【００８０】
以上説明したように本実施形態によれば、文書データベースが大規模で、また、検索文字列の長さが所定の部分文字列に対して長い場合であっても、文書検索を高速に行うことができ、また、文書を文書データベースに残していなくても、文書を容易に復元することができる。
【００８１】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００８２】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００８３】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【００８４】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００８５】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【００８６】
なお、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【００８７】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【００８８】
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００８９】
【図１】本発明の一実施形態に係る文書検索装置の構成の一例を示す図。
【図２】図１中の索引情報記憶領域に記憶される索引情報の具体例を示す図。
【図３】読み出すべき部分文字列出現情報が少ないことを示す図。
【図４】図２に示される索引情報の変形例を示す図。
【図５】図４に示される索引情報の中で文書番号が省略される部分文字列出現情報を説明するための図。
【図６】図１中の文書復元用情報記憶領域に記憶される文書復元用情報の具体例を示す図。
【図７】制御部が文書検索プログラムを実行することにより実現される文書検索の動作の一例を示すフローチャート。
【図８】制御部が文書復元プログラムを実行することにより実現される文書復元の動作の一例を示すフローチャート。
【図９】文書データベースに登録される文書の例を示す図。
【図１０】検索文字列の一例を示す図。
【図１１】従来の転置索引情報の一例を示す図。
【符号の説明】
【００９０】
１…記憶部、２…メモリ、３…制御部、４…入力部、５…表示部、１１…索引情報記憶領域、１２…検索文字列記憶領域、１３…検索作業領域、１４…復元用情報記憶領域、１４Ａ…索引情報、１５…復元作業領域、１５Ａ…文書復元用情報。
【図１】
2010146273.tif 000003
【図２】
2010146273.tif 000004
【図３】
2010146273.tif 000005
【図４】
2010146273.tif 000006
【図５】
2010146273.tif 000007
【図６】
2010146273.tif 000008
【図７】
2010146273.tif 000009
【図８】
2010146273.tif 000010
【図９】
2010146273.tif 000011
【図１０】
2010146273.tif 000012
【図１１】
2010146273.tif 000013