(57)【特許請求の範囲】
【請求項１】
記憶手段に格納したインデクスデータを参照して可変長文字列データの情報検索を行う情報検索装置における情報検索方法において、
可変長文字列データ長が所定の長さよりも長い場合に可変長文字列データの前方文字列及び後方文字列を示すインデクスデータを生成して前記記憶手段に格納し、可変長文字列データ長が所定の長さ以下である場合に可変長文字列データ全体を示すインデクスデータを生成して前記記憶手段に格納し、前記記憶手段に格納されたインデクスデータから、入力した検索条件に対応する前記記憶手段に格納されたインデクスデータを前記記憶手段より参照して抽出し、そのインデクスデータに対応する可変長文字列データのデータ格納位置を情報検索装置により取得するステップと、
前記取得したデータ格納位置で示される可変長文字列データを記憶手段から読み出して抽出するステップと、前記抽出した可変長文字列データと検索文字列データとを比較して検索条件を満たす可変長文字列データを前記検索条件の結果として出力するステップとを有することを特徴とする情報検索方法。
【請求項２】
文字列長に応じて前記前方文字列及び後方文字列を示すインデクスデータまたは可変長文字列データ全体を示すインデクスデータを前記記憶手段から読み出して検索文字列データと比較するステップを有することを特徴とする請求項１に記載された情報検索方法。
【請求項３】
可変長文字列データの情報検索を行う情報検索装置において、
可変長文字列データ長が所定の長さよりも長い場合に可変長文字列データの前方文字列及び後方文字列を示すインデクスデータを設定し、可変長文字列データ長が所定の長さ以下である場合に可変長文字列データ全体を示すインデクスデータを設定するインデクスデータ作成処理部と、
前記設定したインデクスデータから検索条件に対応するインデクスデータを抽出し、そのインデクスデータに対応する可変長文字列データのデータ格納位置を取得するインデクス走査処理部と、
前記取得したデータ格納位置で示される可変長文字列データを抽出するデータ抽出処理部と、前記抽出した可変長文字列データと検索文字列データとを比較して検索条件を満たす可変長文字列データを出力する文字列比較処理部とを備えることを特徴とする情報検索装置。
【請求項４】
文字列長に応じて前記前方文字列及び後方文字列を示すインデクスデータまたは可変長文字列データ全体を示すインデクスデータと検索文字列データとを比較することを特徴とする請求項３に記載された情報検索装置。
【請求項５】
可変長文字列データの情報検索を行う情報検索装置としてコンピュータを機能させる為のプログラムを記録したコンピュータ読み取り可能な記録媒体において、
可変長文字列データ長が所定の長さよりも長い場合に可変長文字列データの前方文字列及び後方文字列を示すインデクスデータを設定し、可変長文字列データ長が所定の長さ以下である場合に可変長文字列データ全体を示すインデクスデータを設定するインデクスデータ作成処理部と、
前記設定したインデクスデータから検索条件に対応するインデクスデータを抽出し、そのインデクスデータに対応する可変長文字列データのデータ格納位置を取得するインデクス走査処理部と、
前記取得したデータ格納位置で示される可変長文字列データを抽出するデータ抽出処理部と、前記抽出した可変長文字列データと検索文字列データとを比較して検索条件を満たす可変長文字列データを出力する文字列比較処理部としてコンピュータを機能させる為のプログラムを記録したことを特徴とする記録媒体。
【請求項６】
文字列長に応じて前記前方文字列及び後方文字列を示すインデクスデータまたは可変長文字列データ全体を示すインデクスデータと検索文字列データとを比較する処理部としてコンピュータを機能させる為のプログラムを記録したことを特徴とする請求項５に記載された記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は可変長文字列の情報検索を行う情報検索システムに関し、特に可変長文字列に対する完全一致検索方法・前方一致検索方法・後方一致検索を行う情報検索システムに適用して有効な技術に関するものである。
【０００２】
【従来の技術】
従来、インデクス容量を削減し、かつ、文字列データを高速に検索する技術として、例えば、特開平４−２０９０６９号公報及び特開平６−１６２０９２号公報に記載のものが知られている。
【０００３】
特開平４−２０９０６９号公報に記載のものは、例えば英単語の様な文字列データに対する前方一致検索に関するものである。これは、文字列データの前方文字列からインデクスを作成するインデクス作成手段と、検索条件に指定された文字列からインデクスデータを作成し、インデクス表を走査して前方一致する文字列を抽出するデータ検索手段から構成されている。データ検索手段において、検索条件に指定された文字列がインデクスデータの文字列データ長よりも長い場合、抽出した文字列データと更に各文字を比較して条件に一致する文字列の検索を行う。
【０００４】
また、特開平６−１６２０９２号公報に記載のものは、例えば文書データの様な文字列データに対して、指定した単語を含む文書を抽出する手段に関するものである。これは、文書データ中に含まれる単語毎にインデクスとして作成し、更に単語毎のインデクスの各単語の固定長の前方文字列を別途インデクスとして作成するインデクス作成手段と、検索条件に指定された文字列から前方文字列と一致する単語毎のインデクスのデータを抽出し、単語毎のインデクスのデータから文書データを抽出するデータ検索手段から構成されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、特開平４−２０９０６９号公報に記載の技術は、文字列データの前方文字列のみからインデクスデータを作成しているので、インデクス容量を削減でき、また前方一致検索を高速に行なうことができるものの、後方一致検索については記載されていない。更に、この技術を完全一致検索に適応した場合、例えば住所等の様な文字列データでは、前方文字列に県名や市名等の重複が多く、前方文字列のインデクスでは十分にデータを絞り込むことができないという問題がある。
【０００６】
また、特開平６−１６２０９２号公報に記載の技術は、文字列の全てのデータから構成されるインデクスに対して別の文字列の先頭のみから構成されるインデクスを作成するので、前方一致検索は高速にできるものの、文字列データ長が長くなるとインデクスの容量が膨大になるという問題がある。
【０００７】
本発明の目的は上記問題を解決し、可変長文字列の文字列データ長が長大になってもインデクス容量を一定に保った情報検索処理を行うことが可能な技術を提供することにある。
【０００８】
【課題を解決するための手段】
本発明は、可変長文字列データの情報検索を行う情報検索システムにおいて、可変長文字列データの前方文字列及び後方文字列または可変長文字列データ全体を示すインデクスデータを用いてインデクス検索を行うものである。
【０００９】
本発明の情報検索システムでは、まず情報検索の対象となる可変長文字列データの所定の長さの前方文字列及び後方文字列または可変長文字列データ全体を示すインデクスデータを用いてインデクスを作成しておく。
【００１０】
次に検索文字列データとインデクスデータとを検索条件に従って比較し、前記作成したインデクスの中から検索条件に対応するインデクスデータを抽出する。そして、そのインデクスデータに対応する可変長文字列データの格納位置を示すデータ格納位置を取得する。
【００１１】
次に、前記取得したデータ格納位置で示される可変長文字列データを抽出し、前記抽出した可変長文字列データと検索文字列データとを比較して検索条件を満たす可変長文字列データを出力する。
【００１２】
前記の様に本発明では、可変長文字列データの前方文字列及び後方文字列を示すインデクスデータを作成することによってインデクス容量を削減し、このインデクスを用いてデータを絞り込むことにより、高速に検索を行うことが可能である。
【００１３】
以上の様に本発明の情報検索システムによれば、可変長文字列データの前方文字列及び後方文字列または可変長文字列データ全体を示すインデクスデータを用いてインデクス検索を行うので、可変長文字列の文字列データ長が長大になってもインデクス容量を一定に保った情報検索処理を行うことが可能である。
【００１４】
【発明の実施の形態】
以下に可変長文字列データの情報検索を行う一実施形態の情報検索システムについて説明する。
【００１５】
図１は本実施形態の情報検索システムの構成を示す図である。図１に示す様に本実施形態の情報検索システムは、データ格納処理装置１０１と、データ検索処理装置１０２と、インデクス表ファイル１０３と、データ表ファイル１０４とを有している。
【００１６】
データ格納処理装置１０１は、可変長文字列データのデータ入力１１１を受けてデータ格納処理を行う装置である。データ検索処理装置１０２は、検索文字列入力１０５を受けてインデクス表ファイル１０３及びデータ表ファイル１０４から検索文字列に一致するデータを抽出する装置である。
【００１７】
インデクス表ファイル１０３は、可変長文字列データの前方文字列及び後方文字列または可変長文字列データ全体を示すインデクスデータと対応する可変長文字列データの格納位置を格納するファイルである。データ表ファイル１０４は、検索対象の可変長文字列データを格納するファイルである。
【００１８】
データ格納処理装置１０１は、インデクスデータ作成処理部１１２と、インデクス表作成処理部１１３と、データ表作成処理部１１４とを有している。
【００１９】
インデクスデータ作成処理部１１２は、可変長文字列データ長がインデクス文字列データ長よりも長い場合に可変長文字列データの前方文字列及び後方文字列を示すインデクスデータを設定し、可変長文字列データ長がインデクス文字列データ長以下である場合に可変長文字列データ全体を示すインデクスデータを設定する処理部である。
【００２０】
インデクス表作成処理部１１３は、インデクスデータ作成処理部１１２から出力されるインデクスデータを受けて、インデクス表ファイル１０３にインデクスデータを格納する処理部である。データ表作成処理部１１４は、可変長文字列データのデータ入力１１１を受けてデータ表ファイル１０４に入力データを格納する処理部である。
【００２１】
データ格納処理装置１０１をインデクスデータ作成処理部１１２、インデクス表作成処理部１１３及びデータ表作成処理部１１４として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。
【００２２】
データ検索処理装置１０２は、インデクスデータ作成処理部１０６と、インデクス走査処理部１０７と、データ抽出処理部１０８と、文字列比較処理部１０９とを有している。
【００２３】
インデクスデータ作成処理部１０６は、インデクスデータ作成処理部１１２と同様にして検索文字列データのインデクスデータを作成する処理部である。インデクス走査処理部１０７は、可変長文字列データの前方文字列及び後方文字列または可変長文字列データ全体を示すインデクスデータを格納したインデクス表ファイル１０３から検索条件に対応するインデクスデータを抽出し、そのインデクスデータに対応する可変長文字列データのデータ格納位置を取得する処理部である。
【００２４】
データ抽出処理部１０８は、インデクス走査処理部１０７で取得したデータ格納位置で示される可変長文字列データをデータ表ファイル１０４から抽出する処理部である。文字列比較処理部１０９は、データ抽出処理部１０８で抽出した可変長文字列データと検索文字列入力１０５で指定された検索文字列データとを比較して検索条件を満たす可変長文字列データをデータ出力１１０に出力する処理部である。
【００２５】
データ検索処理装置１０２をインデクスデータ作成処理部１０６、インデクス走査処理部１０７、データ抽出処理部１０８及び文字列比較処理部１０９として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。
【００２６】
次に、各インデクスデータの構成について説明する。インデクスデータは図２のインデクスデータ形式または図３のインデクスデータ形式で作成される。
【００２７】
図２は本実施形態のインデクスデータ形式の第１の例を示す図である。図２では、可変長文字列データ２０１から作成されるインデクスデータ２０２を表している。可変長文字列データ２０１の文字列データ長ｎバイトの内、文字列データ長・前方ｍバイトの文字列データ・後方ｍバイトの文字列データにより、インデクスデータ２０２を作成する。
【００２８】
図３は本実施形態のインデクスデータ形式の第２の例を示す図である。図３では、可変長文字列データ３０１から作成されるインデクスデータ３０２を表している。文字列データ長及び可変長文字列データ３０１の全ての文字列データにより、インデクスデータ３０２を作成する。
【００２９】
インデクス文字列データ長２０３の２ｍは、インデクスに格納する文字列の長さをバイト単位で表したパラメータであり、その内ｍバイトが元の可変長文字列の前方文字列、残りのｍバイトが元の可変長文字列の後方文字列にそれぞれ対応する。２ｍは２以上かつ可変長文字列の最大長以下の値である。図２の文字列データ長と２ｍを比較して、文字列データ長の方が２ｍよりも大きい場合は、インデクスデータ２０２の形式でインデクスデータを作成する。逆に、文字列データ長が２ｍ以下の場合は、インデクスデータ３０２の形式でインデクスデータを作成する。
【００３０】
文字列データ長が２ｍ以下の場合にインデクスデータ２０２の形式でインデクスデータを作成すると、インデクスデータ２０２中に無駄な領域が生じてしまうことが考えられるが、前記の様に本実施形態では文字列データ長が２ｍ以下の場合にインデクスデータ３０２の形式でインデクスデータを作成しているので、無駄な領域の発生を防止することができる。また、インデクスデータ毎にｍの値を格納する領域を設け、可変長文字列データの性質や長さに合わせて前記のｍの値をインデクスデータ毎に変化させても良い。
【００３１】
次に、図１のインデクスデータ作成処理部１０６及びインデクスデータ作成処理部１１２について説明する。図４は本実施形態のインデクスデータ作成処理部１０６及びインデクスデータ作成処理部１１２の処理手順を示すフローチャートである。図４において、まず、文字列データの読込みを行い（ステップ４０１）、インデクスデータ２０２の先頭の文字列データ長として、この文字列データの長さを設定する（ステップ４０２）。
【００３２】
次に、文字列データ長と２ｍの大小の判別を行い（ステップ４０３）、文字列データ長の方が大きければ、インデクスデータ２０２の前方文字列データとして、文字列データの前方ｍバイトを設定し（ステップ４０５）、インデクスデータ２０２の後方文字列データとして、文字列データの後方ｍバイトを設定する（ステップ４０６）。文字列データ長が２ｍ以下ならば、インデクスデータ３０２の形式で作成する（ステップ４０４）。ステップ４０７では、インデクスデータの出力を行って処理を終了する。
【００３３】
図５は本実施形態のインデクス走査処理部１０７の処理手順を示すフローチャートである。図５において、まず、１回目の処理か２回目以降の処理かの判別を行い（ステップ５０１）、１回目の処理であれば、インデクス表から１件目のインデクスデータを読み込む（ステップ５０２）。ステップ５０１で２回目以降の処理であれば、インデクス表から前回のインデクスデータの直後のインデクスデータを読み込む（ステップ５０３）。
【００３４】
次に、インデクスデータを読み込んだ結果、インデクスデータが存在したかどうかの判別を行い（ステップ５０４）、存在しない場合は処理を終了する。インデクスデータが存在する場合は、検索条件が完全一致条件かそれ以外の条件か判別する（ステップ５０５）。検索条件が完全一致条件であれば、完全一致比較処理を実行し（ステップ５０６）、比較結果が一致か不一致かを判別する（ステップ５１０）。
【００３５】
ステップ５０５で検索条件が完全一致条件以外であれば、次に検索条件が前方一致条件かそれ以外の条件か判別する（ステップ５０７）。検索条件が前方一致条件であれば、前方一致比較処理を実行し（ステップ５０８）、比較結果が一致か不一致かを判別する（ステップ５１０）。ステップ５０７で検索条件が前方一致条件でなければ、後方一致比較処理を実行し（ステップ５０９）、比較結果が一致か不一致かを判別する（ステップ５１０）。
【００３６】
ステップ５１０で比較結果が一致すれば、インデクスデータに対応するデータの格納位置を取得し（ステップ５１１）、データのデータ表中の格納位置を出力して（ステップ５１２）、ステップ５０１へ戻る。
【００３７】
ステップ５１０で比較結果が不一致であれば、１回目の処理か２回目以降の処理かの判別を行い（ステップ５１３）、１回目の処理であれば、再度ステップ５０１に戻り、処理を続行する。ステップ５１３で２回目以降であれば、前回の処理でインデクスデータと検索文字列は一致と判別されたか判別を行い（ステップ５１４）、不一致であれば再度ステップ５０１に戻って処理を続行し、一致であれば処理を終了する。
【００３８】
次に、サブルーチンである完全一致比較処理（図５のステップ５０６）について、図６を用いて説明する。
【００３９】
図６は本実施形態の完全一致比較処理の処理手順を示すフローチャートである。図６において、まず、検索文字列データの文字列データ長とインデクスデータの文字列データ長が一致するか判別する（ステップ６０１）。不一致であれば、戻値に不一致を設定して（ステップ６０５）、処理を終了する。
【００４０】
ステップ６０１で一致であれば、検索文字列データの文字列データ長とインデクス文字列データ長６０８の２ｍの大小を比較する（ステップ６０２）。検索文字列データの文字列データ長の方が大きければ、検索文字列データの前方ｍバイトの文字列とインデクスデータの前方文字列が一致するか判別する（ステップ６０３）。不一致であれば、戻値に不一致を設定して（ステップ６０５）、処理を終了する。
【００４１】
ステップ６０３で一致であれば、検索文字列データの後方ｍバイトの文字列とインデクスデータの後方文字列が一致するか判別する（ステップ６０４）。不一致であれば、戻値に不一致を設定して（ステップ６０５）、処理を終了する。一致であれば、戻値に一致を設定して（ステップ６０７）、処理を終了する。
【００４２】
ステップ６０２で、検索文字列データの文字列データ長が２ｍ以下の場合は、検索文字列とインデクスデータの文字列が完全一致するか判別して（ステップ６０６）、不一致であれば、戻値に不一致を設定して（ステップ６０５）、処理を終了する。一致であれば、戻値に一致を設定して（ステップ６０７）、処理を終了する。
【００４３】
次に、サブルーチンである前方一致比較処理（図５のステップ５０８）について、図７を用いて説明する。
【００４４】
図７は本実施形態の前方一致比較処理の処理手順を示すフローチャートである。図７において、まず、検索文字列データの文字列データ長とインデクスデータに対応する文字列データのデータ長の大小を判別する（ステップ７０１）。検索文字列データの文字列データ長の方が大きければ、戻値に不一致を設定して（ステップ７０５）、処理を終了する。
【００４５】
検索文字列データの文字列データ長がインデクスデータに対応する文字列データのデータ長以下であれば、インデクスデータに対応する文字列データのデータ長とインデクス文字列データ長７０９の２ｍの大小を判別する（ステップ７０２）。
【００４６】
インデクスデータに対応する文字列データのデータ長の方が大きければ、検索文字列データの文字列データ長とｍの大小を判別する（ステップ７０３）。検索文字列データの文字列データ長がｍ以下であれば、検索文字列データとインデクスデータの文字列について、検索文字列データ長分前方一致するか判別する（ステップ７０４）。不一致であれば、戻値に不一致を設定して（ステップ７０５）、処理を終了する。一致であれば、戻値に一致を設定して（ステップ７０７）、処理を終了する。
【００４７】
ステップ７０３で、検索文字列データの文字列データ長がｍより大きければ、検索文字列データの前方ｍバイト分の文字列とインデクスデータの前方文字列が一致するか判別する（ステップ７０６）。不一致であれば、戻値に不一致を設定して（ステップ７０５）、処理を終了する。一致であれば、更に検索文字列データの長さがインデクスデータに対応する文字列の内、後方文字列を除いた部分の長さより長いかを判別する（ステップ７１０）。ステップ７１０が偽であれば、戻値に一致を設定して（ステップ７０７）、処理を終了する。
【００４８】
ステップ７１０が真であれば、更に検索文字列データの後方ｎｓ−ｎｘ＋ｍバイトとインデクスデータの後方文字列の前方ｎｓ−ｎｘ＋ｍバイトが一致するか判別する（ステップ７１１）。一致であれば、戻値に一致を設定して（ステップ７０７）、処理を終了する。ステップ７１１で不一致であれば、戻値に不一致を設定して（ステップ７０５）、処理を終了する。この様に本実施形態では、前方一致検索であっても必要に応じてインデクスデータの後方文字列を使用することにより、更にデータを絞り込んでいる。
【００４９】
ステップ７０２で、インデクスデータに対応する文字列データのデータ長が２ｍ以下であれば、検索文字列データとインデクスデータの文字列について、検索文字列データ長分前方一致するか判別する（ステップ７０８）。不一致であれば、戻値に不一致を設定して（ステップ７０５）、処理を終了する。一致であれば、戻値に一致を設定して（ステップ７０７）、処理を終了する。
【００５０】
次に、サブルーチンである後方一致比較処理（図５のステップ５０９）について、図８を用いて説明する。
【００５１】
図８は本実施形態の後方一致比較処理の処理手順を示すフローチャートである。図８において、まず、検索文字列データの文字列データ長とインデクスデータに対応する文字列データのデータ長の大小を判別する（ステップ８０１）。検索文字列データの文字列データ長の方が大きければ、戻値に不一致を設定して（ステップ８０５）、処理を終了する。
【００５２】
検索文字列データの文字列データ長がインデクスデータに対応する文字列データのデータ長以下であれば、インデクスデータに対応する文字列データのデータ長とインデクス文字列データ長８０９の２ｍの大小を判別する（ステップ８０２）。
【００５３】
インデクスデータに対応する文字列データのデータ長の方が大きければ、検索文字列データの文字列データ長とｍの大小を判別する（ステップ８０３）。検索文字列データの文字列データ長がｍ以下であれば、検索文字列データとインデクスデータの文字列について、検索文字列データ長分後方一致するか判別する（ステップ８０４）。不一致であれば、戻値に不一致を設定して（ステップ８０５）、処理を終了する。一致であれば、戻値に一致を設定して（ステップ８０７）、処理を終了する。
【００５４】
ステップ８０３で、検索文字列データの文字列データ長がｍより大きければ、検索文字列データの後方ｍバイト分の文字列とインデクスデータの後方文字列が一致するか判別する（ステップ８０６）。不一致であれば、戻値に不一致を設定して（ステップ８０５）、処理を終了する。一致であれば、更に検索文字列データの長さがインデクスデータに対応する文字列の内、前方文字列を除いた部分の長さより長いか判別する（ステップ８１０）。ステップ８１０が偽であれば、戻値に一致を設定して（ステップ８０７）、処理を終了する。
【００５５】
ステップ８１０が真であれば、更に検索文字列データの前方ｎｓ−ｎｘ＋ｍバイトとインデクスデータの前方文字列の後方ｎｓ−ｎｘ＋ｍバイトが一致するか判別する（ステップ８１１）。一致であれば、戻値に一致を設定して（ステップ８０７）、処理を終了する。ステップ８１１で不一致であれば、戻値に不一致を設定して（ステップ８０５）、処理を終了する。この様に本実施形態では、後方一致検索であっても必要に応じてインデクスデータの前方文字列を使用することにより、更にデータを絞り込んでいる。
【００５６】
ステップ８０２で、インデクスデータに対応する文字列データのデータ長が２ｍ以下であれば、検索文字列データとインデクスデータの文字列について、検索文字列データ長分後方一致するか判別する（ステップ８０８）。不一致であれば、戻値に不一致を設定して（ステップ８０５）、処理を終了する。一致であれば、戻値に一致を設定して（ステップ８０７）、処理を終了する。
【００５７】
前記の様に本実施形態のインデクス走査処理部１０７では、検索文字列データとインデクス表ファイル１０３のインデクスデータとを比較して対応する可変長文字列データのデータ格納位置を取得しているが、図１に示す様にインデクスデータ作成処理部１０６により検索文字列データのインデクスデータを作成し、その検索文字列データのインデクスデータとインデクス表ファイル１０３のインデクスデータとを比較して対応する可変長文字列データのデータ格納位置を取得しても良い。
【００５８】
図９は本実施形態の文字列比較処理部１０９の処理手順を示すフローチャートである。図９において、まず、データ抽出処理部１０８から出力された抽出済みデ―タを受け取る（ステップ９０１）。
【００５９】
次に、検索条件が完全一致条件かそれ以外の条件かを判別し（ステップ９０２）、完全一致条件の場合は、検索文字列データの文字列長と２ｍの大小を比較する（ステップ９１０）。検索文字列データの文字列長が２ｍ以下であれば、抽出済みデータをそのまま出力して（ステップ９０９）、処理を終了する。ステップ９１０で、検索文字列データの文字列長が２ｍより大きければ、検索文字列データと抽出済みデータの可変長文字列が完全一致するか判別する（ステップ９１１）。一致していれば、抽出済みデータをそのまま出力し（ステップ９０９）、不一致であれば、出力なしで（ステップ９０８）処理を終了する。
【００６０】
ステップ９０２で、検索条件が完全一致条件以外であれば、検索文字列データの文字列長とｍの大小を判別する（ステップ９０３）。検索文字列データの文字列長がｍ以下であれば、抽出済みデータをそのまま出力して（ステップ９０９）、処理を終了する。ステップ９０３で検索文字列データの文字列長がｍより大きければ、抽出済みデータ中の可変長文字列のデータ長と２ｍの大小を判別する（ステップ９０４）。抽出済みデータ中の可変長文字列のデータ長が２ｍ以下であれば、抽出済みデータをそのまま出力し（ステップ９０９）、処理を終了する。
【００６１】
抽出済みデータ中の可変長文字列のデータ長が２ｍより大きければ、検索条件が前方一致条件かそれ以外の条件かを判別する（ステップ９０５）。前方一致条件であれば、抽出済みデータ中の可変長文字列と検索文字列データについて、検索文字列データ長分前方一致するか判別し（ステップ９０７）、一致していれば、抽出済みデータをそのまま出力し（ステップ９０９）、不一致であれば、出力なしで（ステップ９０８）処理を終了する。
【００６２】
ステップ９０５で前方一致条件でなければ、検索条件は後方一致条件なので、抽出済みデータ中の可変長文字列と検索文字列データについて、検索文字列データ長分後方一致するか判別し（ステップ９０６）、一致していれば、抽出済みデータをそのまま出力し（ステップ９０９）、不一致であれば、出力なしで（ステップ９０８）処理を終了する。
【００６３】
前記の様に本実施形態では、可変長文字列データの前方文字列及び後方文字列を示すインデクスデータを作成することによってインデクス容量を削減し、このインデクスを用いてデータを絞り込むことにより、高速に検索を行うことが可能である。
【００６４】
特に完全一致検索では、住所等に代表される前方文字列の重複の多い文字列に対しても、番地部分の様に変化の多い後方文字列部分もインデクスに取り込むことにより、十分にデータを絞り込むことができる。また前方一致検索でも、条件に指定された文字列の長さによっては前方文字列と合わせて後方文字列も用いることにより、やはり十分にデータを絞り込むことが可能である。
【００６５】
以上説明した様に本実施形態の情報検索システムによれば、可変長文字列データの前方文字列及び後方文字列または可変長文字列データ全体を示すインデクスデータを用いてインデクス検索を行うので、可変長文字列の文字列データ長が長大になってもインデクス容量を一定に保った情報検索処理を行うことが可能である。
【００６６】
【発明の効果】
本発明によれば可変長文字列データの前方文字列及び後方文字列または可変長文字列データ全体を示すインデクスデータを用いてインデクス検索を行うので、可変長文字列の文字列データ長が長大になってもインデクス容量を一定に保った情報検索処理を行うことが可能である。
【図面の簡単な説明】
【図１】本実施形態の情報検索システムの構成を示す図である。
【図２】本実施形態のインデクスデータ形式の第１の例を示す図である。
【図３】本実施形態のインデクスデータ形式の第２の例を示す図である。
【図４】本実施形態のインデクスデータ作成処理部１０６及びインデクスデータ作成処理部１１２の処理手順を示すフローチャートである。
【図５】本実施形態のインデクス走査処理部１０７の処理手順を示すフローチャートである。
【図６】本実施形態の完全一致比較処理の処理手順を示すフローチャートである。
【図７】本実施形態の前方一致比較処理の処理手順を示すフローチャートである。
【図８】本実施形態の後方一致比較処理の処理手順を示すフローチャートである。
【図９】本実施形態の文字列比較処理部１０９の処理手順を示すフローチャートである。
【符号の説明】
１０５…検索文字列入力、１１０…データ出力、１１１…データ入力、１０１…データ格納処理装置、１０２…データ検索処理装置、１０３…インデクス表ファイル、１０４…データ表ファイル、１１２…インデクスデータ作成処理部、１１３…インデクス表作成処理部、１１４…データ表作成処理部、１０６…インデクスデータ作成処理部、１０７…インデクス走査処理部、１０８…データ抽出処理部、１０９…文字列比較処理部、２０１…可変長文字列データ、２０２…インデクスデータ、２０３…インデクス文字列データ長、３０１…可変長文字列データ、３０２…インデクスデータ、３０３…インデクス文字列データ長、６０８…インデクス文字列データ長、７０９…インデクス文字列データ長、８０９…インデクス文字列データ長。
【図１】
0004298138.tif 000002
【図２】
0004298138.tif 000003
【図３】
0004298138.tif 000004
【図４】
0004298138.tif 000005
【図５】
0004298138.tif 000006
【図６】
0004298138.tif 000007
【図７】
0004298138.tif 000008
【図８】
0004298138.tif 000009
【図９】
0004298138.tif 000010