(57)【特許請求の範囲】
【請求項１】
特定の検索タームを含むテキストデータを検索する文書検索方法において、
検索タームの部分文字列に対応するインデクスにより、該検索タームの部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索ステップと、
テキストデータの部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較ステップと、
該インデクスのサイズが該基準インデクスサイズより大きい場合に、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する検索可能性判定ステップと、
該部分文字列が前記インデクス検索ステップで検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメントステップとを有することを特徴とする文書検索方法。
【請求項２】
インデクスの読み出し回数を管理する参照頻度テーブルを更新する参照頻度テーブル更新ステップを有し、
前記検索可能性判定ステップは、前記参照頻度テーブル内の該インデクスに対応する参照頻度と予め定められた基準参照頻度とを比較して、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する参照頻度比較ステップであることを特徴とする請求項１に記載された文書検索方法。
【請求項３】
ユーザが入力した重要語を重要語テーブルに格納する重要語登録ステップを有し、
前記検索可能性判定ステップは、該インデクスに対応する部分文字列が前記重要語テーブルに格納されている重要語に含まれるかどうかを調べ、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する重要文字列検索ステップであることを特徴とする請求項１に記載された文書検索方法。
【請求項４】
相互に関連のある語を予め関連付けて格納した関連語ファイルを上記検索タームで探索し、該検索タームに関連のある１つ以上の関連語を取得する検索ターム展開ステップを有し、
前記インデクス検索ステップは、前記検索タームまたは関連語における部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出し、
前記検索可能性判定ステップは、該インデクスに対応する部分文字列が前記関連語テーブルに格納されている関連語に含まれるかどうかを調べ、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する展開語検索ステップであることを特徴とする請求項１に記載された文書検索方法。
【請求項５】
特定の検索タームを含むテキストデータを検索する文書検索方法において、
検索タームの部分文字列に対応するインデクスにより、前記検索タームの部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索ステップと、
前記インデクス検索ステップにおける処理時間を測定し、該処理時間が予め定められた基準処理時間より長い場合に、前記インデクス検索ステップにおいて得られた位置情報をインデクスとして登録するインデクス作成ステップとを有することを特徴とする文書検索方法。
【請求項６】
特定の検索タームを含むテキストデータを検索する文書検索装置において、
検索タームの部分文字列に対応するインデクスにより、前記検索タームの部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索処理部と、
テキストデータの部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較処理部と、
該インデクスのサイズが該基準インデクスサイズより大きい場合に、該インデクスに対応する部分文字列が前記インデクス検索処理部で検索される可能性が高いかどうかを判定する検索可能性判定処理部と、
該部分文字列が前記インデクス検索処理部で検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメント処理部とを備えることを特徴とする文書検索装置。
【請求項７】
特定の検索タームを含むテキストデータを検索する文書検索装置としてコンピュータを機能させる為のプログラムを記録した媒体において、検索タームの部分文字列に対応するインデクスにより、前記検索タームにおける部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索処理部と、
テキストデータから作成した部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較処理部と、該インデクスのサイズが該基準インデクスサイズより大きい場合に、該インデクスに対応する部分文字列が前記インデクス検索処理部で検索される可能性が高いかどうかを判定する検索可能性判定処理部と、
該部分文字列が前記インデクス検索処理部で検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメント処理部としてコンピュータ機能させる為のプログラムを記録したことを特徴とする媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は新聞記事や特許明細書の様に日々増加していく大規模な文書データベースから所望の文書を探索する文書検索システムに関し、特に指定した文字列の存在を文書の全文を対象として探索するフルテキストサーチの為の文書検索システムに適用して有効な技術に関するものである。
【０００２】
【従来の技術】
指定された検索文字列（以下、検索タームと呼ぶ）が含まれる文書を大規模な文書データベースから高速に探し出す方法として、ｎ−ｇｒａｍインデクス方式（以下、方法１と呼ぶ）がある。
【０００３】
ｎ−ｇｒａｍインデクス方式とは、文書の登録時に文書中の全てのｎ−ｇｒａｍ（連続するｎ文字からなる文字列）についてその出現位置情報をインデクスとして格納しておき、検索時には検索ターム中のｎ−ｇｒａｍに対してそのインデクスを参照し、検索ターム中の位置関係とインデクス中の位置関係が等しいかどうかを判定（以下、隣接判定と呼ぶ）することによって、検索タームが出現する文書を探し出す方法である。
【０００４】
図２０は従来の１−ｇｒａｍインデクス方式の一例を示す図である。本図に示す様に、方法１では、文書の登録時に文書中の全てのｎ−ｇｒａｍ（図２０の例ではｎ＝１）についてその出現位置情報をインデクスとして格納する。例えば、“に”という１−ｇｒａｍは文書‘００１’の‘３’文字目に出現するので、その文書番号‘００１’と文字位置‘３’を“に”に対応するインデクス２００に格納する。
【０００５】
検索時には、指定された検索タームから抽出したｎ−ｇｒａｍのインデクス間で出現位置情報の隣接判定を行うことにより、検索タームの出現位置情報を取得する。例えば、“微生物”が検索タームとして指定された場合には、この検索タームからまず、１−ｇｒａｍ“微”、“生”及び“物”を抽出する。そして、“微”に対応するインデクス２０１、“生”に対応するインデクス２０２及び“物”に対応するインデクス２０３の間で出現位置情報の隣接判定を行うことによって、“微生物”の出現位置情報を取得する。本図の例では、“微”、“生”及び“物”が文書番号‘００１’の‘９’文字目からと、文書番号‘０５６’の‘５’文字目からとで隣り合っているので、それらの出現位置に“微生物”が存在することが分かる。
【０００６】
以上の様に方法１では、文書を走査することなしにインデクスの読込みと出現位置情報の隣接判定だけで検索が行える為、大規模な文書データベースに適用した場合でも高速なフルテキストサーチを実現できる可能性がある。
【０００７】
しかし方法１では、ｎを１とすると、すなわち１−ｇｒａｍのインデクスを用いると、１−ｇｒａｍは全文書中（データベース中）における出現頻度が高い為、一つの１−ｇｒａｍに対する出現位置情報が増え、個々のインデクスのサイズが大きくなる。この為インデクスの読込みに時間が掛かるばかりでなく、出現位置情報による隣接判定の回数も増える為、検索に時間が掛かるという問題が生じる。
【０００８】
検索を高速にする為にはｎの値を増やしたサイズの小さなインデクスを作成する必要があるが、短い検索タームが指定された場合でも検索が行える様にｎの小さなインデクスも全て作成しておかなければならない。その結果、総インデクスサイズが膨大になってしまう。
【０００９】
また、方法１の様なインデクス型の文書検索方法では、“キー探索技法−ＩＶトライとその応用”（青江順一著、情報処理Ｖｏｌ．３４、Ｎｏ．２、１９９３、ｐｐ．２４４−２５１）に記載されているトライの様な木構造で文字列（方法１の場合はｎ−ｇｒａｍ）を管理する必要がある。
【００１０】
トライとは検索対象となる文字列すなわちキーワードの集合（以下、キー集合と呼ぶ）における各キーワード（以下、キーと呼ぶ）に共通な前方部分文字列を共通の節で括り出して作られる木構造である。
【００１１】
このトライは登録や検索の際に用いられ、登録する文字列或いは検索ターム中の文字列でキーを辿ってトライを探索することにより、その文字列に対応するインデクスを指し示すポインタ情報を取得することができる。トライの探索に掛かる時間はキーの数に依存しない為、大規模なデータベースに適用した場合でも、高速にキーワードを探索できるという特徴がある。
【００１２】
図２１は従来のキー集合｛ｂａｂｙ、ｂａｄｇｅ、ｂａｄｇｅｒ、ｊａｒ｝に対応するトライの構成を示す図である。このトライでは節１（３００）から節２（３０１）へ枝ラベルｂ（３０２）が定義され、二重丸で示すキーの末尾にあたる節にはそのキーに対するインデクスへのポインタ情報が設定されている。
【００１３】
例えば、検索タームとして“ｂａｂｙ”が指定された場合には、文字列“ｂａｂｙ”で本図のトライを探索することにより、節５（３０３）に設定されているポインタ情報Ｐｔ１が得られ、このポインタ情報Ｐｔ１が示す先に検索ターム“ｂａｂｙ”に対応するインデクスが格納されていることになる。
【００１４】
方法１において、このトライを用いてｎ−ｇｒａｍを管理する際、個々のインデクスのサイズを小さくして検索を高速にする為にｎ−ｇｒａｍを長くしたインデクスを作成すると、ｎ−ｇｒａｍの種類が増え、トライの節が増える為、トライ全体の規模が膨大になってしまうという問題がある。
【００１５】
以上説明した、検索時間の長大化と、総インデクスサイズとインデクスを管理する木構造サイズの巨大化という相反する問題を解決する為に、インデクスのサイズがある基準値（以下、基準インデクスサイズと呼ぶ）を超えたｎ−ｇｒａｍに対してのみ、ｎの値を増やしてサイズの小さなインデクスを作成することにより、常にサイズの小さなインデクスの読込みと出現位置情報の隣接判定で済む様にして、高速な検索を実現すると共に、総インデクスサイズ及びインデクスを管理する木構造（以下、トライで説明する）サイズの巨大化を防ぐ文書検索方法及び装置が特開平８−１９４７１８号公報（以下、公知例１と呼ぶ）に開示されている。
【００１６】
図２２は従来の公知例１の処理内容を示す図である。本方法では、文書の登録時にｎ−ｇｒａｍに対応するインデクスを作成する共に、文書中の２文字の接続情報をトライ４０１に登録する。そして、文書を登録していき、インデクスのサイズが基準インデクスサイズを超えた場合には、対応するｎ−ｇｒａｍに文字列を追加したｎ−ｇｒａｍ（以下、拡張ｎ−ｇｒａｍと呼ぶ）のインデクスを作成する。
【００１７】
以下、図２２を用いてインデクスの作成方法を具体的に説明する。ｎ−ｇｒａｍに文字列を追加した拡張ｎ−ｇｒａｍを作成する為には、まずトライ４０１を参照してそのｎ−ｇｒａｍに続く可能性のあるｎ−ｇｒａｍを取得する。
【００１８】
そして、検出されたｎ−ｇｒａｍ（以下、接続ｎ−ｇｒａｍと呼ぶ）のインデクスと基準インデクスサイズよりサイズが大きくなったｎ−ｇｒａｍ（以下、基準インデクス超過ｎ−ｇｒａｍと呼ぶ）のインデクスの間で出現位置情報の隣接判定を行うことにより、拡張ｎ−ｇｒａｍのインデクスを作成する。
【００１９】
本図の例では、“生”という１−ｇｒａｍに対応するインデクスが基準インデクスサイズより大きくなっており、“生”が基準インデクス超過ｎ−ｇｒａｍとなる。ここで、まず“生”という文字でトライ４０１を探索し、“生”に続く接続ｎ−ｇｒａｍを取得する。本図に示す例では、トライ４０１を探索することにより、“生”の後ろに“物”と“息”が続くことが分かる。そこで、“生”と“物”、“生”と“息”のインデクスの間で出現位置情報の隣接判定を行うことにより、“生物”、“生息”といった“生”に文字列を追加した拡張ｎ−ｇｒａｍのインデクス４００を作成する。
【００２０】
以上の様に、公知例１に開示されている文書検索方法及び装置を用いることにより、サイズが大きく検索に時間が掛かるインデクスに対しては、そのｎ−ｇｒａｍに文字列を追加した拡張ｎ−ｇｒａｍに対するインデクスを作成する為、サイズの小さなインデクスの読込みと出現位置情報の隣接判定で済む様になり、高速な検索を実現することができる様になる。また、それ以外のインデクスに対しては、ｎ−ｇｒａｍの長さを増やしたインデクスを作成しない為、総インデクスサイズ及びｎ−ｇｒａｍを管理する木構造（トライ）サイズの巨大化を防ぐことができる。
【００２１】
【発明が解決しようとする課題】
以上説明した公知例１に開示されている文書検索方法及び装置によると、基準インデクスサイズよりサイズが大きく検索に時間が掛かるインデクスに対しては、そのキーであるｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成することになる為、サイズの小さなインデクスの読込みと出現位置情報の隣接判定で済む様になり、高速な検索を実現することが可能となる。また、基準インデクスサイズよりサイズの小さなインデクスに対しては、それ以上ｎ−ｇｒａｍを長くしたインデクスを作成しない為、総インデクスサイズ及びｎ−ｇｒａｍを管理する木構造（トライ）サイズの巨大化を防ぐことが可能となる。
【００２２】
しかし、公知例１に開示されている文書検索方法及び装置では、インデクスのサイズのみに基づいてｎ−ｇｒａｍに文字列を追加した拡張ｎ−ｇｒａｍのインデクスを作成している。その結果、実際には検索にあまり用いられることのないｎ−ｇｒａｍ（例えば、助詞として用いられる平仮名等）に対してもインデクスサイズが大きくなった場合には、拡張ｎ−ｇｒａｍのインデクスが作成されることになる。
【００２３】
これらのｎ−ｇｒａｍは検索にあまり用いられることがない為、インデクスサイズというコストを支払っても、検索性能の高速化というメリットが得られないｎ−ｇｒａｍであり、無駄なインデクスになるという問題がある。
【００２４】
本発明の目的は上記問題を解決し、検索性能の高速化を図ると共に総インデクスサイズの増加を最小限に抑えることが可能な技術を提供することにある。
【００２５】
【課題を解決するための手段】
本発明は、特定の検索タームを含むテキストデータを検索する文書検索システムにおいて、テキストデータから作成した部分文字列に対応するインデクスのサイズが基準インデクスサイズより大きく、該インデクスに対応する部分文字列が検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成するものである。
【００２６】
本発明の文書検索システムでは、まずインデクス作成登録ステップで、文書情報を文字コードデータとして蓄積したテキストデータベースを対象として、登録対象テキストデータから所定の部分文字列と、該部分文字列の該対象テキストデータにおけるテキスト識別情報及び出現位置情報を含む位置情報とを抽出し、該位置情報をインデクスとして記憶し、前記部分文字列と前記インデクスの記憶位置を管理する為の部分文字列テーブルを更新する。
【００２７】
特定の検索タームを含むテキストデータを検索する場合には、インデクス検索ステップにより、前記部分文字列テーブルを参照して検索タームから所定の部分文字列を抽出し、該当インデクスを読み出し、該検索タームにおける部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出する。
【００２８】
一方、インデクスサイズ比較ステップでは、テキストデータから作成した部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較し、該インデクスのサイズが該基準インデクスサイズより大きい場合には、検索可能性判定ステップにより、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する。
【００２９】
該部分文字列が前記インデクス検索ステップで検索される可能性が高い場合には、文字列インクリメントステップにより、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成し、前記部分文字列テーブルを更新する。
【００３０】
前記検索可能性判定ステップは、特定のインデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを、例えばインデクスに対応する参照頻度に応じて判定する。
【００３１】
すなわち、前記インデクス検索ステップでインデクスの読み出しを行った際に、インデクスの読み出し回数を管理する参照頻度テーブルを参照頻度テーブル更新ステップにより更新し、前記検索可能性判定ステップである参照頻度比較ステップは、前記参照頻度テーブル内の該インデクスに対応する参照頻度と予め定められた基準参照頻度とを比較し、前記参照頻度テーブル内の該インデクスに対応する参照頻度が基準参照頻度より大きい場合には、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを文字列インクリメントステップにより作成する。
【００３２】
また前記検索可能性判定ステップは、特定のインデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを、ユーザが入力した重要語に応じて判定しても良い。
【００３３】
すなわち、ユーザが入力した重要語を重要語登録ステップにより重要語テーブルに格納しておき、前記検索可能性判定ステップである重要文字列検索ステップは、該インデクスに対応する部分文字列が前記重要語テーブルに格納されている重要語に含まれるかどうかを調べる。該インデクスに対応する部分文字列が前記重要語テーブルの重要語に含まれている場合には、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを文字列インクリメントステップにより作成する。
【００３４】
また前記検索可能性判定ステップは、特定のインデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを、相互に関連のある語を予め関連付けた関連語に応じて判定しても良い。
【００３５】
すなわち、相互に関連のある語を予め関連付けて格納した関連語ファイルを作成しておき、前記検索可能性判定ステップである展開語検索ステップは、該インデクスに対応する部分文字列が前記関連語テーブルに格納されている関連語に含まれるかどうかを調べる。該インデクスに対応する部分文字列が前記関連語テーブルの関連語に含まれている場合には、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを文字列インクリメントステップにより作成する。
【００３６】
なお前記関連語ファイルは、前記インデクス検索ステップで検索ターム及び関連語における部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出する際に、検索ターム展開ステップにより用いられるファイルである。
【００３７】
前記の様に本発明によれば、基準インデクスサイズよりインデクスサイズが大きい部分文字列に対して、そのインデクスへの参照頻度と予め定められた基準参照頻度とを比較し、基準参照頻度より多い場合にはその部分文字列に文字列を増やしたサイズの小さなインデクスを作成することにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い部分文字列に対しては、検索を高速化することが可能となる。
【００３８】
また、インデクスは大きいが、実際には検索にあまり用いられることのない部分文字列（例えば、助詞として用いられる平仮名等）に対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。その結果、総インデクスサイズの最小限の増加で、検索性能の向上を図ることが可能な文書検索システムを実現することができる。
【００３９】
以上の様に本発明の文書検索システムによれば、インデクスサイズが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い部分文字列に対してのみ、文字数を増やしたサイズの小さなインデクスを作成するので、検索性能の高速化を図ると共に総インデクスサイズの増加を最小限に抑えることが可能である。
【００４０】
【発明の実施の形態】
（実施形態１）
以下にサイズが大きく参照頻度の高いインデクスについて、当該インデクスに対応するｎ−ｇｒａｍに文字列を追加した拡張ｎ−ｇｒａｍと拡張ｎ−ｇｒａｍに対応するインデクスを作成する実施形態１の文書検索システムについて説明する。
【００４１】
図１は本実施形態の文書検索システムの概略構成を示す図である。本実施形態の文書検索システムは、ディスプレイ１００、キーボード１０１、中央演算処理装置（ＣＰＵ）１０２、テキスト１０７及びインデクス１０８を格納する二次記憶装置としての磁気ディスク装置１０６、フロッピディスクドライブ（ＦＤＤ）１０４、主記憶装置１０９から構成される。また、バス１０３にはＣＰＵ１０２、磁気ディスク装置１０６、ＦＤＤ１０４及び主記憶装置１０９が接続されている。
【００４２】
フロッピディスク１０５に格納されている情報は、ＦＤＤ１０４によりアクセスされる。主記憶装置１０９には、システム制御プログラム１１０、文書登録制御プログラム１１１、インクリメント制御プログラム１１２、検索制御プログラム１１３、インデクス作成登録プログラム１１４、インクリメントプログラム１１５、検索プログラム１１９が格納されると共にトライ格納テーブル１２２、参照頻度テーブル１２３及びワークエリア１２４が確保される。
【００４３】
インクリメントプログラム１１５は、インデクスサイズ比較プログラム１１６、参照頻度比較プログラム１１７及びｎ−ｇｒａｍインクリメントプログラム１１８で構成される。検索プログラム１１９はインデクス検索プログラム１２０及び参照頻度テーブル更新プログラム１２１で構成される。
【００４４】
以上のプログラムは磁気ディスク装置１０６、フロッピディスク１０５やＣＤ−ＲＯＭ等のコンピュータで読み書きできる記録媒体に格納することもできる。
【００４５】
なおインデクス検索プログラム１２０は、検索タームの部分文字列に対応するインデクスにより、前記検索タームにおける部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索ステップの処理を行う。
【００４６】
インデクスサイズ比較プログラム１１６は、テキストデータから作成した部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較ステップの処理を行う。
【００４７】
参照頻度比較プログラム１１７は、該インデクスのサイズが該基準インデクスサイズより大きい場合に、参照頻度テーブル１２３内の該インデクスに対応する参照頻度と予め定められた基準参照頻度とを比較して、該インデクスに対応する部分文字列がインデクス検索プログラム１２０で検索される可能性が高いかどうかを判定する参照頻度比較ステップの処理を行う。
【００４８】
ｎ−ｇｒａｍインクリメントプログラム１１８は、該部分文字列がインデクス検索プログラム１２０で検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメントステップの処理を行う。
【００４９】
参照頻度テーブル更新プログラム１２１は、インデクスの読み出し回数を管理する参照頻度テーブル１２３を更新する参照頻度テーブル更新ステップの処理を行う。
【００５０】
システム制御プログラム１１０はキーボード１０１からの指示を受け起動する。文書登録制御プログラム１１１はキーボード１０１からの文書登録指示により、システム制御プログラム１１０によって起動され、インデクス作成登録プログラム１１４の制御を行う。
【００５１】
インクリメント制御プログラム１１２はキーボード１０１からのインクリメント指示により、システム制御プログラム１１０によって起動され、インクリメントプログラム１１５の制御を行う。検索制御プログラム１１３はキーボード１０１からの検索指示により、システム制御プログラム１１０によって起動され、検索プログラム１１９の制御を行う。
【００５２】
以下、本実施形態における処理内容の概要を説明する。登録の際には、キーボード１０１からの文書登録指示により、システム制御プログラム１１０が文書登録制御プログラム１１１を起動する。そして、文書登録制御プログラム１１１はインデクス作成登録プログラム１１４を起動し、フロッピディスク１０５からテキストデータを読み込んでテキスト１０７として磁気ディスク装置１０６に格納すると共に、テキスト１０７における所定のｎ−ｇｒａｍの出現位置情報をインデクス１０８として磁気ディスク装置１０６に格納する。
【００５３】
このインデクス作成登録プログラム１１４の処理内容は公知例１に開示されている方法と同様である。またテキストデータはフロッピディスク１０５を用いて入力するだけに限らず、通信回線やＣＤ−ＲＯＭ装置（図示せず）等を用いて他の装置から入力する様な構成をとることも可能である。
【００５４】
検索の際には、キーボード１０１からの検索指示により、システム制御プログラム１１０が検索制御プログラム１１３を起動し、検索制御プログラム１１３が検索プログラム１１９を起動する。
【００５５】
図２は本実施形態の検索プログラム１１９の処理内容を示す図である。検索プログラム１１９は、図２のＰＡＤ（Ｐｒｏｂｌｅｍ  Ａｎａｌｙｓｉｓ  Ｄｉａｇｒａｍ）図に示す様に、ステップ６００でインデクス検索プログラム１２０を起動し、キーボード１０１から入力された検索タームのテキスト１０７における出現位置情報をインデクス１０８から取得する。このインデクス検索プログラム１２０の処理内容は方法１及び公知例１に開示されている方法と同様である。
【００５６】
そして、ステップ６０１で参照頻度テーブル更新プログラム１２１を起動し、インデクス検索プログラム１２０で用いたインデクスに対応する参照頻度テーブル１２３内の該当参照頻度を更新する。
【００５７】
インクリメントの際には、キーボード１０１からのインクリメント指示により、システム制御プログラム１１０がインクリメント制御プログラム１１２を起動し、インクリメント制御プログラム１１２がインクリメントプログラム１１５を起動する。
【００５８】
図３は本実施形態のインクリメントプログラム１１５の処理内容を示す図である。図３に示す様にインクリメントプログラム１１５は、ステップ７００で全てのインデクスに対してステップ７０１からステップ７０５までの一連の処理を繰り返す。
【００５９】
この繰り返し処理中でインクリメントプログラム１１５は、まずステップ７０１でインデクスサイズ比較プログラム１１６を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。
【００６０】
そして、ステップ７０２で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ７０３で参照頻度比較プログラム１１７を起動し、参照頻度テーブル１２３に格納されている処理対象インデクスの参照頻度と予め定められた基準参照頻度を比較する。
【００６１】
そして、ステップ７０４で処理対象インデクスの参照頻度が基準参照頻度より多いと判断された場合には、ステップ７０５でｎ−ｇｒａｍインクリメントプログラム１１８を起動し、処理対象インデクスのキーであるｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成する。このｎ−ｇｒａｍインクリメントプログラム１１８の処理内容は公知例１に開示されている方法と同様である。
【００６２】
図４は本実施形態の文書検索システムの処理例を示す図である。以下、本実施形態の処理概要について図４を用いて説明する。インデクス作成登録プログラム１１４の処理は、公知例１に開示されている方法と同様なので省略する。
【００６３】
まず、検索プログラム１１９の処理概要について説明する。インデクス検索プログラム１２０では、ユーザが入力した検索タームから、トライの様なｎ−ｇｒａｍテーブルを参照して所定のｎ−ｇｒａｍを抽出し、ｎ−ｇｒａｍに対応するインデクスの記憶位置を取得する。そして、取得したｎ−ｇｒａｍに対応するインデクスの記憶位置からインデクスを読み出し、検索タームにおけるｎ−ｇｒａｍと同じ位置関係を持つ位置情報を抽出する。この位置情報取得ステップは方法１及び公知例１に開示されている方法と同様の処理になる。
【００６４】
参照頻度テーブル更新プログラム１２１では、位置情報取得ステップで読み出したインデクスの参照頻度（読み出した回数）を更新する。図４の例では、検索タームとして、“微生物”と“生物”が用いられたので、“微”に対応する参照頻度を‘１’“生”に対応する参照頻度を‘２’“物”に対応する参照頻度を‘２’に更新する。ここで、“に”に対応するインデクスは検索に用いられていないので参照頻度は‘０’のままである。
【００６５】
次に、インクリメントプログラム１１５の処理概要を説明する。インデクスサイズ比較プログラム１１６では、インデクス作成登録プログラム１１４によってテキストデータから作成したｎ−ｇｒａｍに対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較する。
【００６６】
インデクスサイズ比較プログラム１１６で、ｎ−ｇｒａｍに対応するインデクスのサイズが予め定められた基準インデクスサイズより大きいと判断された場合には、参照頻度比較プログラム１１７でインデクスに対応する参照頻度を参照頻度テーブル１２３から取得し、予め定められた基準参照頻度と比較する。
【００６７】
参照頻度比較プログラム１１７で、ｎ−ｇｒａｍに対応するインデクスの参照頻度が予め定められた基準参照頻度よりも多いと判断された場合には、ｎ−ｇｒａｍインクリメントプログラム１１８で該当インデクスに対応するｎ−ｇｒａｍに文字列を追加した拡張ｎ−ｇｒａｍと拡張ｎ−ｇｒａｍに対応するインデクスを作成する。
【００６８】
インデクスサイズ比較プログラム１１６及びｎ−ｇｒａｍインクリメントプログラム１１８は公知例１に開示されている方法と同様の処理になる。図４に示す例の場合、“に”と“生”のインデクスが大きくなっており、インデクスサイズ比較プログラム１１６で基準インデクスサイズよりも大きいと判断される。その為、“に”と“生”に対して参照頻度比較プログラム１１７が実行される。
【００６９】
参照頻度比較プログラム１１７では、“に”と“生”の参照頻度を参照頻度テーブル１２３から取得し、予め定められた基準参照頻度と比較する。図４に示す例の場合、基準参照頻度は‘１’である。この結果、“生”に対応する参照頻度のみが基準参照頻度より多いと判断され、ｎ−ｇｒａｍインクリメントプログラム１１８が実行されることにより、“生”に文字列を追加した拡張ｎ−ｇｒａｍに対応するインデクスが作成される。ここで“に”に対応する参照頻度は基準参照頻度より少ないので、インデクスが大きいにもかかわらず、拡張ｎ−ｇｒａｍのインデクスは作成されない。
【００７０】
以上の様に、本実施形態では、基準インデクスサイズよりインデクスが大きいｎ−ｇｒａｍに対して、そのインデクスへの参照頻度と予め定められた基準参照頻度とを比較し、基準参照頻度より多い場合にはそのｎ−ｇｒａｍに文字列を増やしたサイズの小さなインデクスを作成する。そして、基準参照頻度より参照頻度が少ない場合には、たとえインデクスが大きいとしても、そのｎ−ｇｒａｍに文字列を増やしたサイズの小さなインデクスを作成しない。
【００７１】
こうすることにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いｎ−ｇｒａｍに対しては、検索を高速化することができる。そして、インデクスは大きいが、実際には検索にあまり用いられることのないｎ−ｇｒａｍ（例えば、助詞として用いられる平仮名等）に対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。その結果、総インデクスサイズの最小限の増加で、検索性能の向上を図ることが可能となる。
【００７２】
以下、本実施形態における処理内容のうち、公知例１に開示されている方法と異なる検索プログラム１１９及びインクリメントプログラム１１５の処理内容を具体例を用いて詳細に説明する。
【００７３】
検索プログラム１１９の処理内容は図２に示す通りである。まずステップ６００で、インデクス検索プログラム１２０を起動し、キーボード１０１から入力された検索タームのテキスト１０７における出現位置情報をインデクス１０８から取得する。本処理内容は図２０（図２０の例ではｎ＝１）に示す様に方法１及び公知例１に開示されている方法と同様である。
【００７４】
例えば“微生物”が検索タームとして指定された場合には、この検索タームからまず、１−ｇｒａｍ“微”、“生”及び“物”を抽出する。そして“微”に対応するインデクス２０１、“生”に対応するインデクス２０２及び“物”に対応するインデクス２０３の間で出現位置情報の隣接判定を行うことによって“微生物”の出現位置情報を取得する。
【００７５】
本図の例では、“微”、“生”及び“物”が文書番号‘００１’の‘９’文字目から、文書番号‘０５６’の‘５’文字目から隣り合っているので、それらが示す位置に“微生物”が存在することが分かる。
【００７６】
次にステップ６０１で、参照頻度テーブル更新プログラム１２１を起動し、インデクス検索プログラム１２０で用いたインデクスに対応する参照頻度テーブル１２３内の該当参照頻度を更新する。
【００７７】
図５は本実施形態の更新前の参照頻度テーブル１２３の初期状態を示す図である。本図に示す様に、参照頻度テーブル１２３は、個々のインデクスに対応した参照頻度が格納されるエントリで構成される。
【００７８】
図６は本実施形態の検索タームとして“微生物”が指定された場合の参照頻度テーブル１２３の更新結果を示す図である。インデクス検索プログラム１２０では、１−ｇｒａｍ“微”、“生”及び“物”のインデクスを用いて、“微生物”の出現位置情報を取得する。その為、参照頻度テーブル更新プログラム１２１では、“微”、“生”及び“物”のインデクスに対応する参照頻度テーブル１２３の該当参照頻度を‘１’に増やす。このとき、“に”のインデクスに対応する個所は‘０’のままである。
【００７９】
次に、検索タームとして“生物”が指定されたとする。このとき、インデクス検索プログラム１２０では、１−ｇｒａｍ“生”及び“物”のインデクスを用いて、“生物”の出現位置情報を取得する。その為、参照頻度テーブル更新プログラム１２１では、“生”及び“物”のインデクスに対応する参照頻度テーブル１２３の該当参照頻度を‘１’増やす。
【００８０】
図７は本実施形態の検索ターム“生物”における参照頻度テーブル更新プログラム１２１の処理内容を示す図である。“生”及び“物”のインデクスに対応する参照頻度は‘２’となり、“に”の参照頻度は‘０’、“微”の参照頻度は‘１’のままである。以上が、検索プログラム１１９の詳細な処理内容である。
【００８１】
インクリメントプログラム１１５の処理内容は図３に示す通りである。まずステップ７００で、テキスト１０７から作成された全てのインデクスに対してステップ７０１からステップ７０５までの一連の処理を繰り返す。
【００８２】
この繰り返し処理では、まずステップ７０１で、インデクスサイズ比較プログラム１１６を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。図４に示した例では、“に”及び“生”のインデクスが基準インデクスサイズより大きくなっている。
【００８３】
次に、ステップ７０２でインデクスが基準インデクスサイズより大きいと判断された場合には、ステップ７０３で参照頻度比較プログラム１１７を起動し、参照頻度テーブル１２３に格納されている処理対象インデクスの参照頻度と予め定められた基準参照頻度を比較する。
【００８４】
そして、ステップ７０４で参照頻度が基準参照頻度より多いと判断された場合には、ステップ７０５でｎ−ｇｒａｍインクリメントプログラム１１８を起動し、処理対象インデクスのキーであるｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成する。
【００８５】
図４の例では、“に”及び“生”のインデクスが基準インデクスサイズより大きいと判断される為、これらのインデクスに対応する参照頻度と予め定められた基準参照頻度を比較する。
【００８６】
図４の例では、基準参照頻度を１としている。そこで、参照頻度が‘２’である“生”のインデクスはｎ−ｇｒａｍインクリメントプログラム１１８の処理対象となるが、参照頻度が‘０’である“に”のインデクスはｎ−ｇｒａｍインクリメントプログラム１１８の処理対象とはならない。
【００８７】
最後に、“生”に文字列を追加したサイズの小さなインデクスを作成して、インクリメントプログラム１１５の処理を終了する。ｎ−ｇｒａｍインクリメントプログラム１１８の処理内容は図２２に示す公知例１に開示されている方法と同様である。
【００８８】
以上説明した様に、本実施形態では、基準インデクスサイズよりインデクスが大きいｎ−ｇｒａｍに対して、そのインデクスへの参照頻度と予め定められた基準参照頻度とを比較し、基準参照頻度より多い場合にはそのｎ−ｇｒａｍに文字列を増やしたサイズの小さなインデクスを作成する。
【００８９】
そして、基準参照頻度より参照頻度が少ない場合には、たとえインデクスが大きいとしても、そのｎ−ｇｒａｍに文字列を増やしたサイズの小さなインデクスを作成しない。こうすることにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いｎ−ｇｒａｍに対しては、検索を高速化することが可能となる。
【００９０】
また、インデクスは大きいが、実際には検索にあまり用いられることのないｎ−ｇｒａｍ（例えば、助詞として用いられる平仮名等）に対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。
【００９１】
以上により、新聞記事や特許明細書の様に日々件数が増大していく大規模な文書データベースにおいて、出現頻度が高い、すなわちインデクスが大きい検索タームが指定された場合でも、総インデクスサイズの最小限の増加で高速な検索が実現できることになる。
【００９２】
以上説明した様に本実施形態の文書検索システムによれば、インデクスサイズが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い部分文字列に対してのみ、文字数を増やしたサイズの小さなインデクスを作成するので、検索性能の高速化を図ると共に総インデクスサイズの増加を最小限に抑えることが可能である。
【００９３】
（実施形態２）
以下にインデクスサイズが大きく重要語に含まれるインデクスについて、当該インデクスに対応するｎ−ｇｒａｍに文字列を追加した拡張ｎ−ｇｒａｍと拡張ｎ−ｇｒａｍに対応するインデクスを作成する実施形態２の文書検索システムについて説明する。
【００９４】
本実施形態は、基準インデクスサイズよりインデクスが大きいｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成する際に、ユーザが指定した重要語にそのｎ−ｇｒａｍが含まれているかどうかを検索し、含まれている場合にのみ文字列を追加したサイズの小さなインデクスの作成を行う方法である。
【００９５】
検索に良く用いると思われる重要語をユーザに指定してもらうことにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いｎ−ｇｒａｍに対しての検索の高速化を、総インデクスサイズの最低限の増加で実現できることになる。
【００９６】
本実施形態は基本的に実施形態１（図１）と同様の構成をとるが、その中の主記憶装置１０９内の構成が異なる。
【００９７】
図８は本実施形態の主記憶装置１０９ａの概略構成を示す図である。主記憶装置１０９ａには、システム制御プログラム１１０ａ、文書登録制御プログラム１１１、インクリメント制御プログラム１１２、検索制御プログラム１１３、重要語登録制御プログラム１１００、インデクス作成登録プログラム１１４、インクリメントプログラム１１５ａ、検索プログラム１１９ａ、重要語登録プログラム１１０２が格納されると共にトライ格納テーブル１２２、重要語テーブル１１０３及びワークエリア１２４が確保される。
【００９８】
インクリメントプログラム１１５ａはインデクスサイズ比較プログラム１１６、重要文字列検索プログラム１１０１及びｎ−ｇｒａｍインクリメントプログラム１１８で構成される。検索プログラム１１９ａはインデクス検索プログラム１２０で構成される。以上のプログラムは磁気ディスク装置１０６、フロッピディスク１０５やＣＤ−ＲＯＭ等のコンピュータで読み書きできる記録媒体に格納することもできる。
【００９９】
なお重要文字列検索プログラム１１０１は、該インデクスに対応する部分文字列が重要語テーブル１１０３に格納されている重要語に含まれるかどうかを調べ、該インデクスに対応する部分文字列がインデクス検索プログラム１２０で検索される可能性が高いかどうかを判定する重要文字列検索ステップの処理を行う。また重要語登録プログラム１１０２は、ユーザが入力した重要語を重要語テーブル１１０３に格納する重要語登録ステップの処理を行う。
【０１００】
システム制御プログラム１１０ａはキーボード１０１からの指示を受け起動する。文書登録制御プログラム１１１はキーボード１０１からの文書登録指示により、システム制御プログラム１１０ａによって起動され、インデクス作成登録プログラム１１４の制御を行う。
【０１０１】
インクリメント制御プログラム１１２はキーボード１０１からのインクリメント指示により、システム制御プログラム１１０ａによって起動され、インクリメントプログラム１１５ａの制御を行う。検索制御プログラム１１３はキーボード１０１からの検索指示により、システム制御プログラム１１０ａによって起動され、検索プログラム１１９ａの制御を行う。重要語登録制御プログラム１１００はキーボード１０１からの検索指示により、システム制御プログラム１１０ａによって起動され、重要語登録プログラム１１０２の制御を行う。
【０１０２】
以下、実施形態１と異なる検索プログラム１１９ａ、重要語登録プログラム１１０２及びインクリメントプログラム１１５ａの処理概要を説明する。
【０１０３】
検索の際には、キーボード１０１からの検索指示により、システム制御プログラム１１０ａが検索制御プログラム１１３を起動し、検索制御プログラム１１３が検索プログラム１１９ａを起動する。
【０１０４】
検索プログラム１１９ａは、インデクス検索プログラム１２０を起動し、キーボード１０１から入力された検索タームのテキスト１０７における出現位置情報をインデクス１０８から取得する。このインデクス検索プログラム１２０の処理内容は方法１及び公知例１に開示されている方法と同様である。
【０１０５】
重要語を登録する際には、キーボード１０１からの重要語登録指示により、システム制御プログラム１１０ａが重要語登録制御プログラム１１００を起動し、重要語登録制御プログラム１１００が重要語登録プログラム１１０２を起動する。重要語登録プログラム１１０２は、キーボード１０１から入力された重要語を重要語テーブル１１０３に格納する。
【０１０６】
インクリメントの際には、キーボード１０１からのインクリメント指示により、システム制御プログラム１１０ａがインクリメント制御プログラム１１２を起動し、インクリメント制御プログラム１１２がインクリメントプログラム１１５ａを起動する。
【０１０７】
図９は本実施形態のインクリメントプログラム１１５ａの処理内容を示す図である。インクリメントプログラム１１５ａは、図９に示す様に、ステップ１２００で、テキスト１０７から作成された全てのインデクスに対してステップ１２０１からステップ１２０５までの一連の処理を繰り返す。
【０１０８】
この繰り返し処理では、まずステップ１２０１で、インデクスサイズ比較プログラム１１６を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。
【０１０９】
そして、ステップ１２０２で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ１２０３で重要文字列検索プログラム１１０１を起動し、処理対象ｎ−ｇｒａｍで、重要語テーブル１１０３に格納されている重要語を検索する。
【０１１０】
そして、ステップ１２０４で処理対象ｎ−ｇｒａｍが重要語テーブル１１０３に格納されている重要語の一部を構成していると判断された場合には、ステップ１２０５でｎ−ｇｒａｍインクリメントプログラム１１８を起動し、処理対象インデクスのキーであるｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成する。このｎ−ｇｒａｍインクリメントプログラム１１８の処理内容は公知例１に開示されている方法と同様である。以上が本実施形態における処理内容の概要である。
【０１１１】
以下、本実施形態における処理内容のうち、方法１、公知例１に開示されている方法及び実施形態１と異なる重要語登録プログラム１１０２及びインクリメントプログラム１１５ａの処理内容を具体例を用いて詳細に説明する。
【０１１２】
重要語登録プログラム１１０２では、キーボード１０１から入力された重要語を重要語テーブル１１０３に格納する。
【０１１３】
図１０は本実施形態の重要語テーブル１１０３の一例を示す図である。本図に示す例では、ユーザは“微生物”に関する文書でデータベースを構築しており、頻繁に検索に用いる単語である“ウイルス”、“バクテリア”、“かび”、“酵母”、“細菌”、“単細胞生物”、“微生物”、…をキーボード１０１から入力した。重要語登録プログラム１１０２はこれら入力された文字列を重要語として重要語テーブル１１０３に格納する。
【０１１４】
インクリメントプログラム１１５ａの処理内容は図９に示す通りである。まずステップ１２００で、テキスト１０７から作成された全てのインデクスに対してステップ１２０１からステップ１２０５までの一連の処理を繰り返す。
【０１１５】
この繰り返し処理では、まずステップ１２０１で、インデクスサイズ比較プログラム１１６を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。このインデクスサイズ比較プログラム１１６の処理内容は実施形態１と同様である。
【０１１６】
図１１は本実施形態のインクリメントプログラム１１５ａの処理内容の例を示す図である。本図に示す例では、“に”及び“生”のインデクスが基準インデクスサイズより大きくなっている。
【０１１７】
次に、ステップ１２０２で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ１２０３で重要文字列検索プログラム１１０１を起動し、処理対象ｎ−ｇｒａｍで、重要語テーブル１１０３に格納されている重要語を検索する。
【０１１８】
そして、ステップ１２０４で処理対象ｎ−ｇｒａｍが重要語テーブル１１０３に格納されている重要語の一部を構成していると判断された場合には、ステップ１２０５でｎ−ｇｒａｍインクリメントプログラム１１８を起動し、処理対象インデクスのキーであるｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成する。
【０１１９】
図１１の例では、“に”及び“生”のインデクスが基準インデクスサイズより大きいと判断される為、“に”及び“生”で、重要語テーブル１１０３に格納されている重要語を検索する。
【０１２０】
図１１の例では、“生”は重要語“単細胞生物”及び“微生物”に含まれるが、“に”を含む重要語は存在しない。そこで、“生”のインデクスはｎ−ｇｒａｍインクリメントプログラム１１８の処理対象となるが、“に”のインデクスはｎ−ｇｒａｍインクリメントプログラム１１８の処理対象とはならない。
【０１２１】
最後に、“生”に文字列を追加したサイズの小さなインデクスを作成して、インクリメントプログラム１１５ａの処理を終了する。ｎ−ｇｒａｍインクリメントプログラム１１８の処理内容は図２２に示す公知例１に開示されている方法と同様である。
【０１２２】
以上説明した様に、本実施形態では、基準インデクスサイズよりインデクスが大きいｎ−ｇｒａｍに対して、そのｎ−ｇｒａｍがユーザが指定した重要語に含まれているかどうかを検索し、含まれている場合にはそのｎ−ｇｒａｍに文字列を増やしたサイズの小さなインデクスを作成する。
【０１２３】
そして、ｎ−ｇｒａｍがユーザが指定した重要語に含まれていない場合には、たとえインデクスが大きいとしても、そのｎ−ｇｒａｍに文字列を増やしたサイズの小さなインデクスを作成しない。
【０１２４】
検索に良く用いると思われる重要語をユーザに指定してもらうことにより、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い重要語に含まれるｎ−ｇｒａｍに対しては、検索を高速化することが可能となる。
【０１２５】
また、インデクスは大きいが、ユーザが検索にあまり用いないｎ−ｇｒａｍに対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。
【０１２６】
以上により、新聞記事や特許明細書の様に日々件数が増大していく大規模な文書データベースにおいて、出現頻度が高い、すなわちインデクスが大きい検索タームが指定された場合でも、総インデクスサイズの最小限の増加で高速な検索が実現できることになる。
【０１２７】
（実施形態３）
以下にインデクスサイズが大きく関連語に含まれるインデクスについて、当該インデクスに対応するｎ−ｇｒａｍに文字列を追加した拡張ｎ−ｇｒａｍと拡張ｎ−ｇｒａｍに対応するインデクスを作成する実施形態３の文書検索システムについて説明する。
【０１２８】
ユーザがある検索タームを指定し、その検索タームと同じ意味を持つ語（以下、同義語）の検索も同時に行うことを指定した場合には、ユーザが指定した検索タームが一つであったとしても、実際に検索を行う検索タームの数は多くなり、検索に時間が掛かることになる。
【０１２９】
そこで、本実施形態では、基準インデクスサイズよりインデクスが大きいｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成する際に、同義語展開用の辞書やルールを参照して、複数に展開される語に含まれるｎ−ｇｒａｍであるかどうかを検索し、含まれる場合にのみ文字列を追加したサイズの小さなインデクスを作成する方法である。
【０１３０】
こうすることにより、インデクスが大きく検索に時間が掛かり、かつ同義語の検索の様に複数語に対して検索を行わなければならない場合でも、総インデクスサイズの最低限の増加で高速な検索を実現できることになる。
【０１３１】
本実施形態は基本的に実施形態１（図１）と同様の構成をとるが、その中の主記憶装置１０９内の構成が異なる。
【０１３２】
図１２は本実施形態の主記憶装置１０９ｂの概略構成を示す図である。主記憶装置１０９ｂには、システム制御プログラム１１０、文書登録制御プログラム１１１、インクリメント制御プログラム１１２、検索制御プログラム１１３、インデクス作成登録プログラム１１４、インクリメントプログラム１１５ｂ、検索プログラム１１９ｂが格納されると共にトライ格納テーブル１２２、同義語展開用辞書１５０２及びワークエリア１２４が確保される。
【０１３３】
インクリメントプログラム１１５ｂはインデクスサイズ比較プログラム１１６、展開語検索プログラム１５００及びｎ−ｇｒａｍインクリメントプログラム１１８で構成される。検索プログラム１１９ｂは検索ターム展開プログラム１５０１及びインデクス検索プログラム１２０で構成される。
【０１３４】
以上のプログラムは磁気ディスク装置１０６、フロッピディスク１０５やＣＤ−ＲＯＭ等のコンピュータで読み書きできる記録媒体に格納することもできる。
【０１３５】
展開語検索プログラム１５００は、該インデクスに対応する部分文字列が同義語展開用辞書１５０２に格納されている同義語に含まれるかどうかを調べ、該インデクスに対応する部分文字列がインデクス検索プログラム１２０で検索される可能性が高いかどうかを判定する展開語検索ステップの処理を行う。
【０１３６】
また検索ターム展開プログラム１５０１は、相互に関連のある語を予め関連付けて格納した関連語ファイルに相当する同義語展開用辞書１５０２を上記検索タームで探索し、該検索タームに関連のある１つ以上の同義語を取得する検索ターム展開ステップの処理を行い、インデクス検索プログラム１２０は、前記検索ターム及び同義語における部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出する処理を行う。
【０１３７】
システム制御プログラム１１０はキーボード１０１からの指示を受け起動する。文書登録制御プログラム１１１はキーボード１０１からの文書登録指示により、システム制御プログラム１１０によって起動され、インデクス作成登録プログラム１１４の制御を行う。
【０１３８】
インクリメント制御プログラム１１２はキーボード１０１からのインクリメント指示により、システム制御プログラム１１０によって起動され、インクリメントプログラム１１５ｂの制御を行う。検索制御プログラム１１３はキーボード１０１からの検索指示により、システム制御プログラム１１０によって起動され、検索プログラム１１９ｂの制御を行う。
【０１３９】
以下、実施形態１と異なる検索プログラム１１９ｂ及びインクリメントプログラム１１５ｂの処理概要を説明する。
【０１４０】
検索の際には、キーボード１０１からの検索指示により、システム制御プログラム１１０が検索制御プログラム１１３を起動し、検索制御プログラム１１３が検索プログラム１１９ｂを起動する。
【０１４１】
図１３は本実施形態の検索プログラム１１９ｂの処理内容を示す図である。図１３に示す様に検索プログラム１１９ｂは、ステップ１６００で検索ターム展開プログラム１５０１を起動し、キーボード１０１から入力された検索タームで同義語展開用辞書１５０２を探索し、検索タームを複数の同義語に展開する。
【０１４２】
次にステップ１６０１で、インデクス検索プログラム１２０を起動し、検索ターム展開プログラム１５０１によって展開された同義語全てのテキスト１０７における出現位置情報をインデクス１０８から取得する。このインデクス検索プログラム１２０の処理内容は方法１及び公知例１に開示されている方法と同様である。
【０１４３】
インクリメントの際には、キーボード１０１からのインクリメント指示により、システム制御プログラム１１０がインクリメント制御プログラム１１２を起動し、インクリメント制御プログラム１１２がインクリメントプログラム１１５ｂを起動する。
【０１４４】
図１４は本実施形態のインクリメントプログラム１１５ｂの処理内容を示す図である。図１４に示す様にインクリメントプログラム１１５ｂは、ステップ１７００でテキスト１０７から作成された全てのインデクスに対してステップ１７０１からステップ１７０５までの一連の処理を繰り返す。
【０１４５】
この繰り返し処理では、まずステップ１７０１で、インデクスサイズ比較プログラム１１６を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。
【０１４６】
そして、ステップ１７０２で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ１７０３で展開語検索プログラム１５００を起動し、処理対象ｎ−ｇｒａｍで、同義語展開用辞書１５０２に格納されている同義語を検索する。
【０１４７】
そして、ステップ１７０４で処理対象ｎ−ｇｒａｍが複数に展開される語に含まれると判断された場合には、ステップ１７０５でｎ−ｇｒａｍインクリメントプログラム１１８を起動し、処理対象インデクスのキーであるｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成する。このｎ−ｇｒａｍインクリメントプログラム１１８の処理内容は公知例１に開示されている方法と同様である。以上が本実施形態における処理内容の概要である。
【０１４８】
以下、本実施形態における処理内容のうち、実施形態１と異なる検索プログラム１１９ｂ及びインクリメントプログラム１１５ｂの処理内容を具体例を用いて詳細に説明する。
【０１４９】
検索プログラム１１９ｂの処理内容は図１３に示す通りである。まずステップ１６００で、検索ターム展開プログラム１５０１を起動し、キーボード１０１から入力された検索タームで同義語展開用辞書１５０２を探索し、検索タームを複数の同義語に展開する。
【０１５０】
図１５は本実施形態の同義語展開用辞書１５０２による検索タームの同義語展開の例を示す図である。例えば、検索タームとして“計算機”が指定されたとする。検索ターム展開プログラム１５０１は、この検索ターム“計算機”で同義語展開用辞書１５０２を探索し、“計算機”と同じ意味を持つ語である同義語を取得する。
【０１５１】
図１５に示す同義語展開用辞書１５０２の例では、同義語の集合をカンマ（、）をデリミタとして一行に記載している。この同義語展開用辞書１５０２を用いて“計算機”を同義語の集合に展開すると、展開後検索ターム１８００として“計算機”、“電子計算機”、“電算機”、“ＣＯＭＰＵＴＥＲ”及び“コンピュータ”が得られる。
【０１５２】
次にステップ１６０１で、インデクス検索プログラム１２０を起動し、検索ターム展開プログラム１５０１によって展開された同義語全てのテキスト１０７における出現位置情報をインデクス１０８から取得する。このインデクス検索プログラム１２０の処理内容は方法１及び公知例１に開示されている方法と同様である。
【０１５３】
インクリメントプログラム１１５ｂの処理内容は図１４に示す通りである。まずステップ１７００で、テキスト１０７から作成された全てのインデクスに対してステップ１７０１からステップ１７０５までの一連の処理を繰り返す。
【０１５４】
この繰り返し処理では、まずステップ１７０１で、インデクスサイズ比較プログラム１１６を起動し、処理対象インデクスのサイズと予め定められた基準インデクスサイズを比較する。このインデクスサイズ比較プログラム１１６の処理内容は実施形態１と同様である。
【０１５５】
図１６は本実施形態のインクリメントプログラム１１５ｂの処理内容を示す図である。本図に示す例では、“に”及び“生”のインデクスが基準インデクスサイズより大きくなっている。
【０１５６】
次に、ステップ１７０２で処理対象インデクスが基準インデクスサイズより大きいと判断された場合には、ステップ１７０３で展開語検索プログラム１５００を起動し、処理対象ｎ−ｇｒａｍで、同義語展開用辞書１５０２に格納されている同義語を検索する。
【０１５７】
そして、ステップ１７０４で処理対象ｎ−ｇｒａｍが複数に展開される語に含まれると判断された場合には、ステップ１７０５でｎ−ｇｒａｍインクリメントプログラム１１８を起動し、処理対象インデクスのキーであるｎ−ｇｒａｍに文字列を追加したサイズの小さなインデクスを作成する。
【０１５８】
図１６の例では、“に”及び“生”のインデクスが基準インデクスサイズより大きいと判断される為、“に”及び“生”で、同義語展開用辞書１５０２に格納されている重要語を検索する。
【０１５９】
図１６の例では、“生”は“海洋生物”及び“海生生物”に含まれるが、“に”を含む語は存在しない。そこで、“生”のインデクスはｎ−ｇｒａｍインクリメントプログラム１１８の処理対象となるが、“に”のインデクスはｎ−ｇｒａｍインクリメントプログラム１１８の処理対象とはならない。
【０１６０】
最後に、“生”に文字列を追加したサイズの小さなインデクスを作成して、インクリメントプログラム１１５ｂの処理を終了する。ｎ−ｇｒａｍインクリメントプログラム１１８の処理内容は図２２に示す公知例１に開示されている方法と同様である。
【０１６１】
以上説明した様に、本実施形態では、基準インデクスサイズよりインデクスが大きいｎ−ｇｒａｍに対して、同義語展開用の辞書やルールを参照して、複数に展開される語に含まれるｎ−ｇｒａｍであるかどうかを検索し、含まれている場合にはそのｎ−ｇｒａｍに文字列を増やしたサイズの小さなインデクスを作成する。そして、ｎ−ｇｒａｍが複数に展開される語に含まれていない場合には、たとえインデクスが大きいとしても、そのｎ−ｇｒａｍに文字列を増やしたサイズの小さなインデクスを作成しない。
【０１６２】
こうすることにより、インデクスが大きく検索に時間が掛かり、かつ同義語の検索の様に複数語に対して検索を行わなければならない場合でも、検索を高速化することが可能となる。また、インデクスは大きいが、複数に展開される語に含まれていないｎ−ｇｒａｍに対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。
【０１６３】
以上により、新聞記事や特許明細書の様に日々件数が増大していく大規模な文書データベースにおいて、出現頻度が高い、すなわちインデクスが大きい検索タームが指定され、その検索タームの同義語の検索も同時に行うことが指定された場合でも、総インデクスサイズの最小限の増加で高速な検索が実現できることになる。
【０１６４】
（実施形態４）
以下にインデクスサイズが大きく処理時間の大きいインデクスについて、当該インデクスに対応するｎ−ｇｒａｍに文字列を追加した拡張ｎ−ｇｒａｍと拡張ｎ−ｇｒａｍに対応するインデクスを作成する実施形態４の文書検索システムについて説明する。
【０１６５】
本実施形態は、インデクスの読込み及び隣接判定により検索タームの出現位置情報を取得する際に、その処理時間を計測しておき、その処理時間が予め定められた目標検索時間を超過した場合には、取得した出現位置情報をインデクス化し、磁気ディスク装置へ格納する方法である。
【０１６６】
検索に時間が掛かる検索タームについては一度検索を行えば、二度目からは一度目に作成したインデクスの読込みだけで検索タームの出現位置情報が取得できる為、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いｎ−ｇｒａｍに対しての検索の高速化を、総インデクスサイズの最低限の増加で実現できることになる。しかも、一度目の検索時に取得した出現位置情報をそのままインデクスとして利用できる為、高速なインデクス作成を行うことができる。
【０１６７】
本実施形態は基本的に実施形態１（図１）と同様の構成をとるが、その中の主記憶装置１０９内の構成が異なる。
【０１６８】
図１７は本実施形態の主記憶装置１０９ｃの概略構成を示す図である。主記憶装置１０９ｃには、システム制御プログラム１１０ｃ、文書登録制御プログラム１１１、検索制御プログラム１１３ｃ、インデクス作成登録プログラム１１４、検索及びインクリメントプログラム２０００が格納されると共にトライ格納テーブル１２２及びワークエリア１２４が確保される。検索及びインクリメントプログラム２０００はインデクス検索プログラム１２０及びインデクス作成プログラム２００１で構成される。
【０１６９】
以上のプログラムは磁気ディスク装置１０６、フロッピディスク１０５やＣＤ−ＲＯＭ等のコンピュータで読み書きできる記録媒体に格納することもできる。
【０１７０】
なおインデクス作成プログラム２００１は、インデクス検索プログラム１２０における処理時間を測定し、該処理時間が予め定められた基準処理時間より長い場合に、インデクス検索プログラム１２０において得られた位置情報をインデクスとして登録するインデクス作成ステップの処理を行う。
【０１７１】
システム制御プログラム１１０ｃはキーボード１０１からの指示を受け起動する。文書登録制御プログラム１１１はキーボード１０１からの文書登録指示により、システム制御プログラム１１０ｃによって起動され、インデクス作成登録プログラム１１４の制御を行う。検索制御プログラム１１３ｃはキーボード１０１からの検索指示により、システム制御プログラム１１０ｃによって起動され、検索及びインクリメントプログラム２０００の制御を行う。
【０１７２】
以下、実施形態１と異なる検索及びインクリメントプログラム２０００の処理概要を説明する。検索の際には、キーボード１０１からの検索指示により、システム制御プログラム１１０ｃが検索制御プログラム１１３ｃを起動し、検索制御プログラム１１３ｃが検索及びインクリメントプログラム２０００を起動する。
【０１７３】
図１８は本実施形態のインクリメントプログラム２０００の処理内容を示す図である。図１８に示す様に検索及びインクリメントプログラム２０００は、まずステップ２１００でインデクス検索プログラム１２０を起動し、キーボード１０１から入力された検索タームのテキスト１０７における出現位置情報をインデクス１０８から取得すると共に、インデクス検索プログラム１２０の処理時間を計測する。インデクス検索プログラム１２０の処理内容は方法１及び公知例１に開示されている方法と同様である。
【０１７４】
そして、計測した処理時間が予め定められた目標検索時間を超過したとステップ２１０１で判断された場合には、ステップ２１０２でインデクス作成プログラム２００１を起動し、取得した出現位置情報をインデクス１０８として磁気ディスク装置１０６に格納する。
【０１７５】
そして、ステップ２１０３で、検索タームをキーとしてトライ格納テーブル１２２に登録し、インデクスへのポインタ情報を格納する。このトライ格納テーブル１２２へのキーの追加方法は公知例１に開示されている方法と同様である。以上が本実施形態における処理内容の概要である。
【０１７６】
以下、本実施形態における処理内容のうち、実施形態１と異なる検索及びインクリメントプログラム２０００の処理内容を具体例を用いて詳細に説明する。
【０１７７】
検索及びインクリメントプログラム２０００の処理内容は図１８に示すとおりである。まずステップ２１００で、インデクス検索プログラム１２０を起動し、キーボード１０１から入力された検索タームのテキスト１０７における出現位置情報をインデクス１０８から取得すると共に、インデクス検索プログラム１２０の処理時間を計測する。インデクス検索プログラム１２０の処理内容は方法１及び公知例１に開示されている方法と同様である。
【０１７８】
図１９は本実施形態のインクリメントプログラム２０００の処理例を示す図である。本図に示す例では、検索タームとして“生物”が指定されている。その為、インデクス検索プログラム１２０は“生”のインデクス２０２と“物”のインデクス２０３を磁気ディスク装置１０６からワークエリア１２４に読み込み、これらのインデクス間で隣接判定を行うことにより、“生物”の出現位置情報２２００を取得する。
【０１７９】
検索及びインクリメントプログラム２０００は、このインデクス検索プログラム１２０の処理時間を計測しておく。そして、計測した処理時間が予め定められた目標検索時間を超えているとステップ２１０１で判断された場合には、ステップ２１０２でインデクス作成プログラム２００１を起動し、取得した出現位置情報２２００をインデクス１０８として磁気ディスク装置１０６に格納する。
【０１８０】
図１９に示す例では、インデクス検索プログラム１２０の処理時間は予め定められた目標検索時間を超えている為、“生物”の出現位置情報２２００を“生物”のインデクス２２０１として磁気ディスク装置１０６に格納する。
【０１８１】
最後に、ステップ２１０３で、検索タームをキーとしてトライ格納テーブル１２２に登録し、インデクスへのポインタ情報を格納する。このトライ格納テーブル１２２へのキーの追加方法は公知例１に開示されている方法と同様である。
【０１８２】
以上説明した様に、本実施形態では、インデクスの読込み及び隣接判定により検索タームの出現位置情報を取得する際に、その処理時間を計測しておき、その処理時間が予め定められた目標検索時間を超過した場合には、取得した出現位置情報をインデクス化し、磁気ディスク装置１０６へ格納する。
【０１８３】
検索に時間が掛かる検索タームについては一度検索を行えば、二度目からは一度目に作成したインデクスの読込みだけで検索タームの出現位置情報が取得できる為、インデクスが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高いｎ−ｇｒａｍに対しては、検索を高速化することが可能となる。
【０１８４】
また、インデクスは大きいが、検索に用いられないｎ−ｇｒａｍに対しては、文字列を増やしたインデクスを作成しない為、総インデクスサイズを抑えることが可能となる。しかも、一度目の検索時に取得した出現位置情報をそのままインデクスとして利用できる為、高速なインデクス作成が可能となる。
【０１８５】
以上により、新聞記事や特許明細書の様に日々件数が増大していく大規模な文書データベースにおいて、出現頻度が高い、すなわちインデクスが大きい検索タームが指定された場合でも、総インデクスサイズの最小限の増加で高速な検索が実現できることになる。
【０１８６】
【発明の効果】
本発明によればインデクスサイズが大きく検索に時間が掛かり、かつ検索に用いられる可能性が高い部分文字列に対してのみ、文字数を増やしたサイズの小さなインデクスを作成するので、検索性能の高速化を図ると共に総インデクスサイズの増加を最小限に抑えることが可能である。
【図面の簡単な説明】
【図１】実施形態１の文書検索システムの概略構成を示す図である。
【図２】実施形態１の検索プログラム１１９の処理内容を示す図である。
【図３】実施形態１のインクリメントプログラム１１５の処理内容を示す図である。
【図４】実施形態１の文書検索システムの処理例を示す図である。
【図５】実施形態１の更新前の参照頻度テーブル１２３の初期状態を示す図である。
【図６】実施形態１の検索タームとして“微生物”が指定された場合の参照頻度テーブル１２３の更新結果を示す図である。
【図７】実施形態１の検索ターム“生物”における参照頻度テーブル更新プログラム１２１の処理内容を示す図である。
【図８】実施形態２の主記憶装置１０９ａの概略構成を示す図である。
【図９】実施形態２のインクリメントプログラム１１５ａの処理内容を示す図である。
【図１０】実施形態２の重要語テーブル１１０３の一例を示す図である。
【図１１】実施形態２のインクリメントプログラム１１５ａの処理内容の例を示す図である。
【図１２】実施形態３の主記憶装置１０９ｂの概略構成を示す図である。
【図１３】実施形態３の検索プログラム１１９ｂの処理内容を示す図である。
【図１４】実施形態３のインクリメントプログラム１１５ｂの処理内容を示す図である。
【図１５】実施形態３の同義語展開用辞書１５０２による検索タームの同義語展開の例を示す図である。
【図１６】実施形態３のインクリメントプログラム１１５ｂの処理内容を示す図である。
【図１７】実施形態４の主記憶装置１０９ｃの概略構成を示す図である。
【図１８】実施形態４のインクリメントプログラム２０００の処理内容を示す図である。
【図１９】実施形態４のインクリメントプログラム２０００の処理例を示す図である。
【図２０】従来の１−ｇｒａｍインデクス方式の一例を示す図である。
【図２１】従来のキー集合｛ｂａｂｙ、ｂａｄｇｅ、ｂａｄｇｅｒ、ｊａｒ｝に対応するトライの構成を示す図である。
【図２２】従来の公知例１の処理内容を示す図である。
【符号の説明】
１００…ディスプレイ、１０１…キーボード、１０２…ＣＰＵ、１０３…バス、１０４…ＦＤＤ、１０５…フロッピディスク、１０６…磁気ディスク装置、１０７…テキスト、１０８…インデクス、１０９…主記憶装置、１１０…システム制御プログラム、１１１…文書登録制御プログラム、１１２…インクリメント制御プログラム、１１３…検索制御プログラム、１１４…インデクス作成登録プログラム、１１５…インクリメントプログラム、１１６…インデクスサイズ比較プログラム、１１７…参照頻度比較プログラム、１１８…ｎ−ｇｒａｍインクリメントプログラム、１１９…検索プログラム、１２０…インデクス検索プログラム、１２１…参照頻度テーブル更新プログラム、１２２…トライ格納テーブル、１２３…参照頻度テーブル、１２４…ワークエリア、１１００…重要語登録制御プログラム、１１０１…重要文字列検索プログラム、１１０２…重要語登録プログラム、１１０３…重要語テーブル、１５００…展開語検索プログラム、１５０１…検索ターム展開プログラム、１５０２…同義語展開用辞書、１８００…展開後検索ターム、２０００…インクリメントプログラム、２００１…インデクス作成プログラム、２２００…出現位置情報、２２０１…インデクス、２００〜２０３…インデクス、４００…インデクス、４０１…トライ。
【図１】
0003620968.tif 000002
【図２】
0003620968.tif 000003
【図３】
0003620968.tif 000004
【図４】
0003620968.tif 000005
【図５】
0003620968.tif 000006
【図６】
0003620968.tif 000007
【図７】
0003620968.tif 000008
【図８】
0003620968.tif 000009
【図９】
0003620968.tif 000010
【図１０】
0003620968.tif 000011
【図１１】
0003620968.tif 000012
【図１２】
0003620968.tif 000013
【図１３】
0003620968.tif 000014
【図１４】
0003620968.tif 000015
【図１５】
0003620968.tif 000016
【図１６】
0003620968.tif 000017
【図１７】
0003620968.tif 000018
【図１８】
0003620968.tif 000019
【図１９】
0003620968.tif 000020
【図２０】
0003620968.tif 000021
【図２１】
0003620968.tif 000022
【図２２】
0003620968.tif 000023