(57)【要約】【課題】異表記を同一視する場合としない場合の、いずれの検索も効果的に実現することを可能とする【解決手段】Ｎグラム分割部１２１は、データベース１０にテキストデータが登録される際に、当該データに含まれる文字列をＮグラムに分割する。ハッシュ値変換部１２２は、分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換する。語彙索引登録部１２３は、分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、ハッシュ値変換部１２２によって変換されたハッシュ値で特定されるハッシュテーブル１０３のエントリまたは当該エントリにリンクしたコリジョンチェーン１０４に登録する。【選択図】      図１
2006106896.tif 000002
【特許請求の範囲】
【請求項１】
テキストデータをデータベースに登録するデータベース登録システムにおいて、
前記データベースにテキストデータが登録される際に、当該テキストデータに含まれている文字列を登録対象文字列としてＮグラムに分割する分割手段と、
前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するハッシュ値変換手段と、
前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、前記ハッシュ値変換手段によって変換されたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録する語彙索引登録手段と
を具備することを特徴とするデータベース登録システム。
【請求項２】
前記ハッシュ値変換手段は、
前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該グラムを構成する文字列の表記を当該複数の表記のうちの予め定められた表記に統一するための表記変換を行う表記統一変換手段と、
前記表記統一変換手段によって表記変換された文字列のハッシュ値を計算するハッシュ値計算手段と
を含むことを特徴とする請求項１記載のデータベース登録システム。
【請求項３】
各語彙毎に、当該語彙に対応付けて当該語彙の代表的な表記の語彙を保持する表記変換辞書を更に具備し、
前記表記統一変換手段は、前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列で前記表記変換辞書を参照することにより、当該グラムを構成する文字列の表記変換を行うことを特徴とする請求項２記載のデータベース登録システム。
【請求項４】
前記語彙索引登録手段は、
前記ハッシュ値変換手段によって変換されたハッシュ値で特定される前記ハッシュテーブルのエントリに、前記ハッシュ値変換手段による当該ハッシュ値への変換の対象となった文字列とは異なる表記の文字列の語彙索引が既に登録されているか否かによって、ハッシュ値の衝突の有無を判定する衝突判定手段と、
前記衝突判定手段によってハッシュ値の衝突がないことが判定された場合に、前記ハッシュ値変換手段による前記ハッシュ値への変換の対象となった文字列の語彙索引を、当該ハッシュ値で特定される前記ハッシュテーブルのエントリに登録する第１の登録手段と、
前記衝突判定手段によってハッシュ値の衝突があることが判定された場合に、前記ハッシュ値変換手段による前記ハッシュ値への変換の対象となった文字列の語彙索引を、当該ハッシュ値で特定される前記ハッシュテーブルのエントリにリンクしたリストに登録する第２の登録手段と
を含むことを特徴とする請求項１記載のデータベース登録システム。
【請求項５】
請求項１記載のデータベース登録システムによって登録された語彙索引を用いて、前記データベースに格納されたテキストデータ中の文字列を検索するデータベース検索システムにおいて、
検索対象文字列をＮグラムに分割する分割手段と、
前記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するハッシュ値変換手段と、
前記分割手段によって分割された各グラムについて、前記ハッシュ値変換手段によって変換されたハッシュ値で特定される前記ハッシュテーブルのエントリまたは当該エントリにリンクしたリストを走査することによって、当該グラムを構成する文字列の語彙索引を検索する語彙索引検索手段と、
前記語彙索引検索手段の語彙索引検索結果に基づいて、前記検索対象文字列と完全に一致する文字列のみ、または前記検索対象文字列と同一視可能な全ての文字列を取得する検索結果処理手段と
を具備することを特徴とするデータベース検索システム。
【請求項６】
異表記同一視検索のための語彙索引登録方法であって、
データベースにテキストデータを登録する際に、当該テキストデータに含まれている文字列を登録対象文字列としてＮグラムに分割するステップと、
前記分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するステップと、
前記分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、当該文字列から変換されたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録するステップと
を具備することを特徴とする語彙索引登録方法。
【請求項７】
請求項６記載の語彙索引登録方法によって登録された語彙索引を用いて異表記同一視検索を行うための異表記同一視検索方法であって、
検索対象文字列をＮグラムに分割するステップと、
前記分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するステップと、
前記変換されたハッシュ値で特定される前記ハッシュテーブルのエントリまたは当該エントリにリンクしたリストを走査することによって対応する語彙索引を検索するステップと、
前記語彙索引の検索結果に基づいて、前記検索対象文字列と完全に一致する文字列のみ、または前記検索対象文字列と同一視可能な全ての文字列を取得するステップと
を具備することを特徴とする異表記同一視検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキストデータをデータベースに登録するデータベース登録システム及びデータベースに格納されたテキストデータ中の文字列を検索するデータベース検索システムに係り、特に異表記同一視検索に適した語彙索引の登録と、登録された語彙索引を利用した異表記同一視検索に好適な、データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法に関する。
【背景技術】
【０００２】
複数の文書（文書のテキストデータ）が格納されたデータベースから、ユーザの指定する検索条件に合致した文書等を検索するデータベース検索システムが種々開発されている。このデータベースに文書を格納する場合、検索の高速化のために、当該文書中のテキストデータ（文字列）に索引付けがなされるのが一般的である。例えば、テキストデータを細かい語彙に分割し、それらを語彙索引として利用する索引付けの手法は、従来からよく知られた技術である。今、データベース検索システム内に、語彙索引"発明"と、語彙索引"特許"と、語彙索引"提案者"を含む語彙索引集合が存在するものとする。このデータベース検索システムにおいて、「発明」という文字列を検索する際は、まず語彙索引集合の中から語彙索引"発明"を検索する。この語彙索引"発明"には、対応する語彙索引情報がデータベース内のどこに格納されているかを示すポインタ情報が付加されている。語彙索引"発明"のポインタ情報で指定される語彙索引情報は、"発明"という語彙がデータベース内のどこに格納されているかを示す格納位置情報を含む。そこで、この語彙索引情報を参照することで検索処理を実行することができる。また、「特許提案者」のような長い文字列を検索する際は、「特許」と「提案者」のように短い文字列に分割して、それぞれの語彙索引情報を参照する。そのため、「特許提案者」を含むテキストデータをデータベースに格納する際に、「特許提案者」を「特許」と「提案者」とに分割して、それぞれの語彙索引を生成しておくのが一般的である。ここでは、語彙索引集合の中から"特許"と"提案者"とを検索して、それぞれの語彙索引情報を取得し、それらをマージすることにより、文字列"特許提案者"の検索が実行できる。
【０００３】
長い文字列を分割する技術として、主に、予め用意された単語辞書と照らし合わせながら細かい文字列(単語)に分割していく形態素解析技術と、一定の文字数で分割していくＮグラム（N-gram）技術との２通りがよく知られている。
【０００４】
以下、単語辞書を必要とせずに、また新しい単語が出現しても分割に失敗することのないＮグラム技術を適用した、語彙索引の作成手法について、"patent"という文字列をデータベースに格納する場合の索引付けを例に述べる。まず初めに、この文字列をＮグラムに分割する。Ｎ＝３の場合、グラム分割により"pat","ate","ten","ent","nt","t"の各グラムが得られる。これらの各グラムについて、それぞれハッシュ値を計算し、対応する語彙索引を、そのハッシュ値で特定されるハッシュテーブルのエントリに登録する。ここで語彙索引には、対応する語彙がデータベース内のどこに格納されたかを示す位置情報（データベース内の格納位置の情報）を含む語彙索引情報へのポインタの情報が付加されている。計算されたハッシュ値で特定されるハッシュテーブルのエントリに、当該ハッシュ値の計算の対象となったグラム（文字列）とは異なるグラム（文字列）の語彙索引が既に登録されている場合、即ちハッシュ値が衝突した場合は、重複する語彙索引をリストでつないで管理する。このリストを、コリジョンチェーンと呼ぶ。以上の処理を全てのグラムに対して行い、語彙索引をハッシュテーブルまたはコリジョンチェーンに登録する。上述の"patent"をＮグラム分割した場合、"ten"と"ent"の両グラムのハッシュ値が衝突したとする。
【０００５】
次に、語彙索引の集合（ハッシュテーブル及びコリジョンチェーン）を利用した検索処理について述べる。文字列"patent"を検索する場合は、まず当該文字列を分割し、それぞれのハッシュ値を計算する。ここで、登録時は"patent"をＮグラム（Ｎ＝３）分割して、"pat","ate","ten","ent","nt","t"の６つのグラムに区分したが、検索時は"pat"と"ent"とに２分割する。
【０００６】
次に、得られたハッシュ値からハッシュテーブルを参照する。ここでは、"pat"の語彙索引はハッシュテーブルに登録され、"ten"との間でハッシュ値が衝突した"ent"の語彙索引は、コリジョンチェーンにつながれているものとする。このような場合、"pat"の語彙索引はハッシュテーブルから簡単に取得できる。これに対し、"ent"の語彙索引を取得するにはコリジョンチェーンを走査しなければならない。"pat"と"ent"の両グラムについて語彙索引を取得できたなら、対応する語彙索引情報をマージすることにより、文字列"patent"のデータベース内の格納位置を知ることができる。
【０００７】
このように、上記した先行技術（以下、第１の先行技術と称する）において、ハッシュ値が衝突したグラム（語彙）の語彙索引を検索する場合、コリジョンチェーンを走査する必要がある。このため、第１の先行技術において異表記の語彙を同一視して検索する際には、以下に述べるように、ハッシュテーブル参照とコリジョンチェーン走査という処理を多数実施しなければならないという問題がある。ここでは大文字／小文字を同一視して検索する場合を想定するが、上記の問題は、大文字／小文字以外にも全角／半角、ひらがな／カタカナ等、異表記された語彙を同一視しようとする際に生じる。
【０００８】
そこで、第１の先行技術において、文字列"patent"の大文字／小文字（異表記）同一視検索を行う場合について、図７を参照して説明する。まず、図７において矢印Ａ１で示すように、"patent"を"pat"と"ent"の２つのグラムに分割する。次に、図７において矢印Ａ２で示すように、"pat"のハッシュ値を計算する。次に、得られたハッシュ値からハッシュテーブル７１及びコリジョンチェーン７２を参照し、語彙索引情報を取得する。ここまでの処理は、前述した場合と同様である。ところが、大文字／小文字同一視検索を実施する場合、例えば"pat"に関しては、"paT"，"PAt"，"PAT"等についても、図７において矢印Ａ３で示すように、"pat"と同様にハッシュ値を計算して、ハッシュテーブル７１及びコリジョンチェーン７２の参照を行わなければならない。
【０００９】
アルファベット３文字の文字列で大文字／小文字のみが異なる文字列の組み合わせは全部で８通りある。このため、大文字／小文字を同一視する場合には、ハッシュ値計算からハッシュテーブル参照、コリジョンチェーン走査という処理を８回実施しなければならないことになる。また、ここでは大文字／小文字の同一視についてのみを想定しているが、全角／半角の同一視等とも組み合わせて考えると、前述の処理を繰り返す数が更に飛躍的に増加する。
【００１０】
一方、特許文献１には、大文字／小文字、全角／半角、ひらがな／カタカナ等、異表記された語彙を同一視するのに適した語彙索引（インデックス）の作成と、検索のための技術（以下、第２の先行技術と称する）が記載されている。この第２の先行技術では、異表記同一視の対象となり得る複数の表記に共通のインデックス（語彙索引）が作成され、そのインデックスにリンクしたリーフ（語彙索引情報）の集合が作成される。各リーフは、データベース中の対応する文字列（語彙）の格納位置を示す場所情報と、当該文字列（語彙）の表記（大文字／小文字、全角／半角など）の違いを識別するための特別の構造の文字情報とから構成される。
【００１１】
第２の先行技術においては、異表記を同一視する検索の場合、検索対象文字列に対応するインデックスにリンクした全てのリーフの情報を取得すれば良い。これにより、大文字／小文字同一視検索を効率的に実行できる。一方、異表記を同一視しない検索の場合には、検索対象文字列に対応するインデックスにリンクした全てのリーフの情報、つまり検索対象文字列と同一視可能なデータベース中の全文字列のリーフの情報（語彙索引情報）を参照して、そのリーフ中の文字情報と検索対象文字列とを比較し、検索対象文字列と表記が一致する文字情報を含むリーフの情報だけを取得すれば良い。しかし、検索対象文字列と同一視可能なデータベース中の全文字列のリーフの情報を参照して上記比較を行うことは、極めて効率が悪い。また、データベース中の文字列毎に、対応する文字情報と格納位置の情報とを含むリーフの情報を必要とするため、情報量が膨大となる。
【特許文献１】特開平８−７７１８８号公報（段落０００８乃至００１０）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記した第１の先行技術においては、異表記同一視検索を行う場合に、同一視の対象となる異なる表記毎に、ハッシュ値計算、ハッシュテーブル参照及びコリジョンチェーン走査を含む一連の処理を行わなければならないため、効率が悪いという問題がある。
【００１３】
一方、第２の先行技術においては、異表記同一視検索の効率向上を図ることはできるものの、データベース中の文字列毎に、対応する文字情報と格納位置の情報とを含むリーフの情報を必要とするため、情報量が膨大となるという問題がある。また、異表記を同一視しない検索では、検索対象文字列と同一視可能なデータベース中の全文字列のリーフの情報を参照して、そのリーフ中の文字情報と検索対象文字列とを比較しなければならないため、検索効率が著しく低下するという問題もある。
【００１４】
本発明は上記事情を考慮してなされたものでその目的は、異表記を同一視する場合としない場合の、いずれの検索も効果的に実現することを可能とする、データベース登録システム、データベース検索システム、語彙索引登録方法及び異表記同一視検索方法を提供することにある。
【課題を解決するための手段】
【００１５】
本発明の第１の観点によれば、テキストデータをデータベースに登録するデータベース登録システムが提供される。このデータベース登録システムは、上記データベースにテキストデータが登録される際に、当該テキストデータに含まれている文字列を登録対象文字列としてＮグラムに分割する分割手段と、この分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するハッシュ値変換手段と、上記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の語彙索引を、上記ハッシュ値変換手段によって変換されたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録する語彙索引登録手段とを備える。
【００１６】
このような構成においては、語彙索引の登録対象となる語彙（文字列）の表記が、異表記同一視の対象となり得る複数の表記のいずれの場合でも、同一の値となるハッシュ値にハッシュ値変換手段によって変換される。このハッシュ値変換手段によるハッシュ値変換によって、異表記同一視の対象となり得る、表記の異なる全ての語彙のハッシュ値が揃えられる。これにより、異表記同一視の対象となり得る語彙の語彙索引は全て、上記揃えられたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録される。この結果、異表記同一視検索時には、上記統一されたハッシュ値で特定されるハッシュテーブルのエントリにリンクしたリスト（コリジョンチェーン）を走査するだけで良く、ハッシュテーブルの複数のエントリにそれぞれリンクした同数のリストを個々に走査する先行技術に比べて、走査すべきリストを減らすことができ、検索性能を向上できる。特に、上記リストがデータベース内に格納される構成を適用する場合、異表記同一視の対象となり得る語彙の語彙索引が、当該データベース内で近接した局所領域に集中して配置されることから、先行技術に比べて一層走査効率が高くなり、より検索性能を向上できる。また、異表記を同一視しない場合には、上記統一されたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストの中から、目的の表記の語彙索引だけを検索するだけで良く、異表記を同一視しない場合の検索も簡単に実行できる。
【００１７】
ここで、上記ハッシュ値変換手段によるハッシュ値変換を、上記分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該グラムを構成する文字列の表記を当該複数の表記のうちの予め定められた表記に統一するための表記変換を行う表記統一変換手段と、この表記統一変換手段によって表記変換された文字列のハッシュ値を計算するハッシュ値計算手段とにより実現すると良い。
【００１８】
本発明の第２の観点によれば、上記構成のデータベース登録システムによって登録された語彙索引を用いて、上記データベースに格納されたテキストデータ中の文字列を検索するデータベース検索システムが提供される。このデータベース検索システムは、検索対象文字列をＮグラムに分割する分割手段と、この分割手段によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換するハッシュ値変換手段と、上記分割手段によって分割された各グラムについて、上記ハッシュ値変換手段によって変換されたハッシュ値で特定される上記ハッシュテーブルのエントリまたは当該エントリにリンクしたリストを走査することによって、当該グラムを構成する文字列の語彙索引を検索する語彙索引検索手段と、この語彙索引検索手段の語彙索引検索結果に基づいて、上記検索対象文字列と完全に一致する文字列のみ、または上記検索対象文字列と同一視可能な全ての文字列を取得する検索結果処理手段とを備える。
【００１９】
このような構成においては、異表記同一視検索時には、ハッシュ値変換手段によって揃えられたハッシュ値で特定されるハッシュテーブルのエントリ及びリストを走査して語彙索引が調べられるため、異表記を同一視する場合、しない場合のどちらの検索も容易に実行できる。
【発明の効果】
【００２０】
本発明によれば、語彙索引の登録時に、異表記同一視の対象となり得る語彙に対応するハッシュ値を揃えることにより、異表記同一視の対象となり得る語彙の語彙索引を全て、当該揃えられたハッシュ値で特定されるハッシュテーブルのエントリまたは当該エントリにリンクしたリストに登録することができるため、異表記同一視検索時に走査すべきリストの数を減らして検索性能の向上を図ることができる。しかも、異表記同一視の対象となり得る語彙に対応するハッシュ値を揃えながら、表記の異なる語彙毎に語彙索引が用意されるため、異表記同一視検索をしない場合に、目的の表記の語彙索引だけを検索するだけで良く、異表記を同一視しない場合の検索も簡単に実行できる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の一実施形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る、データベース登録機能を有するデータベース検索システムの構成を示すブロック図である。図１のデータベース検索システムは、データベース１０と、データベース登録のための文字列入力部１１と、データベース登録部１２と、データベース検索のための文字列入力部１３と、データベース検索部１４とを備える。
【００２２】
データベース１０は、データ格納領域１０１と語彙索引情報格納領域１０２とを含む。データ格納領域１０１には、テキストデータ、例えばＸＭＬ(Extensible Markup Language)に代表される、論理構造を有する構造化文書のデータが格納される。語彙索引情報格納領域１０２には、語彙索引情報が格納される。語彙索引情報は、対応する語彙が格納されているデータベース１０内の全ての格納位置の情報を含む。
【００２３】
データベース１０にはまた、ハッシュテーブル１０３及びコリジョンチェーン１０４の群も格納される。ハッシュテーブル１０３は、語彙索引を保持するためのエントリの群を有する。ハッシュテーブル１０３内の各エントリは、それぞれ固有のハッシュ値によって特定される。ここで、ハッシュテーブル１０３のエントリを特定するハッシュ値は、先行技術とは異なって、必ずしも当該エントリに登録される語彙のハッシュ値に一致するとは限らない。本実施形態において、ハッシュテーブル１０３のエントリを特定するハッシュ値は、当該エントリに登録される語彙索引の示す語彙の表記に複数の表記が存在する場合に、その複数の表記のうちの予め定められた表記を用いて算出されるハッシュ値である。コリジョンチェーン１０４は、ハッシュテーブル１０３のあるエントリにリンクされ、当該エントリに既に登録されている語彙索引との間でハッシュ値が衝突した場合に、重複する語彙索引を登録するのに用いられる。
【００２４】
文字列入力部１１は、ユーザの入力操作に応じてアプリケーションから与えられるデータベース登録要求に従い、データベース１０への登録対象となるテキストデータを入力すると共に、当該テキストデータから、語彙索引を付与すべき文字列（登録対象文字列）を抽出する。
【００２５】
データベース登録部１２は、文字列入力部１１により入力されたテキストデータをデータベース１０に登録する機能を有する。データベース登録部１２はまた、このテキストデータをデータベース１０に登録する際に、文字列入力部１１によって当該テキストデータから抽出される文字列の語彙索引の群をハッシュテーブル１０３またはコリジョンチェーン１０４に登録する機能（語彙索引登録機能）を有する。データベース登録部１２は、Ｎグラム分割部１２１、ハッシュ値変換部１２２及び語彙索引登録部１２３を含む。
【００２６】
Ｎグラム分割部１２１は、登録対象となる文字列をＮグラムに分割する。ハッシュ値変換部１２２は、Ｎグラム分割部１２１によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換する。ハッシュ値変換部１２２は、表記統一変換部１２２ａ及びハッシュ値計算部１２２ｂを含む。
【００２７】
表記統一変換部１２２ａは、Ｎグラム分割部１２１によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該グラムを構成する文字列の表記を当該複数の表記のうちの予め定められた表記に統一するための表記変換を行う。本実施形態では、説明を簡略化するために、登録または検索対象となる文字列の文字種が英字のみであり、且つ全角／半角のうちの半角文字のみに限られているものとする。この場合、表記統一変換部１２２ａは、文字列を構成する文字の表記を全て大文字または小文字のいずれか一方、例えば大文字に統一するように表記変換を行う。表記統一変換部１２２ａの表記変換の対象となる文字列の文字種と、変換後の表記との関係を図２に示す。図２において、統一表記に関する「文字種」と「全角／半角」の両項目に記載された「−」は、「文字種」と「全角／半角」の表記は変換の対象外であることを示す。
【００２８】
明らかなように、文字列を構成する全ての文字（英字）が大文字の場合には表記変換は不要である。しかし本実施形態における表記統一変換部１２２ａは、表記変換の対象となる文字の大文字／小文字に無関係に、その文字を大文字に形式的に変換するように構成されている。この例では、変換前の文字が大文字の場合、その変換前の文字と変換後の文字とは、結果的に同一表記となる。勿論、表記統一変換部１２２ａが、変換前の文字が大文字であるか小文字であるかを識別し、大文字である場合には、その文字をそのまま表記変換結果として出力することも可能である。  
ハッシュ値計算部１２２ｂは、表記統一変換部１２２ａによって表記が統一された文字列（各グラム）のハッシュ値を計算する。
【００２９】
語彙索引登録部１２３は、表記統一変換部１２２ａによる表記変換前の文字列の語彙索引を、ハッシュテーブル１０３のエントリに登録する。この語彙索引が登録される、ハッシュテーブル１０３のエントリは、ハッシュ値計算部１２２ｂによって算出された、表記統一変換部１２２ａによる表記変換後の文字列のハッシュ値で特定される。但し、上記特定されるハッシュテーブル１０３のエントリに、上記表記変換前の文字列とは表記（ここでは大文字／小文字）が異なる語彙索引が既に登録されている場合、つまりハッシュ値が衝突した場合には、語彙索引登録部１２３は対応する語彙索引を、当該エントリにリンクしたコリジョンチェーン（リスト）１０４に登録する。
【００３０】
文字列入力部１３は、ユーザの入力操作に応じてアプリケーションから与えられるデータベース検索要求に従い、検索の対象となる文字列（検索対象文字列）を入力する。
【００３１】
データベース検索部１４は、文字列入力部１３により入力された検索対象文字列をデータベース１０から検索する機能を有する。データベース検索部１４は、データベース登録部１２内のＮグラム分割部１２１及びハッシュ値変換部１２２にそれぞれ相当する、Ｎグラム分割部１４１及びハッシュ値変換部１４２を含むと共に、語彙索引検索部１４３及び検索結果処理部１４４を含む。
【００３２】
Ｎグラム分割部１４１は、検索対象文字列をＮグラムに分割する。ハッシュ値変換部１４２は、Ｎグラム分割部１４１によって分割された各グラムについて、そのグラムを構成する文字列の表記に異表記同一視の対象となり得る複数の表記が存在するものとして、当該複数の表記のいずれの場合にも同一の値となるハッシュ値に変換する。ハッシュ値変換部１４２は、ハッシュ値変換部１２２内の表記統一変換部１２２ａ及びハッシュ値計算部１２２ｂにそれぞれ相当する、表記統一変換部１４２ａ及びハッシュ値計算部１４２ｂを含む。
【００３３】
語彙索引検索部１４３は、ハッシュ値計算部１４２ｂによって算出された、表記統一変換部１４２ａによる表記変換後の文字列のハッシュ値で特定されるハッシュテーブル１０３のエントリを参照することによって対応する語彙索引を検索する。また語彙索引検索部１４３は、ハッシュテーブル１０３のエントリの参照時には、ハッシュ値衝突の有無を判定する。語彙索引検索部１４３は、ハッシュ値衝突を判定した場合、当該ハッシュ値で特定されるハッシュテーブル１０３のエントリにリンクしたコリジョンチェーン１０４を走査することによって、対応する語彙索引を検索する。
【００３４】
検索結果処理部１４４は、語彙索引検索部１４３による語彙索引検索結果に基づいて、検索対象文字列と完全に一致する文字列のみ、または検索対象文字列と同一視可能な全ての文字列を取得する。
【００３５】
データベース登録部１２及びデータベース検索部１４は、計算機システムにインストールされた特定のソフトウェアプログラムを当該計算機システム（内のＣＰＵ）が読み取って実行することにより実現可能である。このプログラムは、コンピュータで読み取り可能な記憶媒体（フロッピー（登録商標）ディスクに代表される磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤに代表される光ディスク、フラッシュメモリに代表される半導体メモリ等）に予め格納して頒布可能である。また、このプログラムが、ネットワークを介してダウンロード（頒布）されても構わない。
【００３６】
次に、図１のデータベース検索システムにおける動作を、語彙索引の登録処理を例に、図３及び図４を参照して説明する。なお、図３は語彙索引の登録処理の手順を示すフローチャート、図４は異表記の文字列"patent"，"Patent"または"PATENT"を対象とする語彙索引の登録処理を説明するための図である。
【００３７】
まず、ユーザの入力操作に応じてアプリケーションから与えられるデータベース登録要求に従い、文字列入力部１１がデータベース１０への登録対象となるテキストデータを入力したものとする。このテキストデータはデータベース登録部１２によってデータベース１０のデータ格納領域１０１に格納される。このとき文字列入力部１１は、データ格納領域１０１に格納されるテキストデータから、語彙索引を付与すべき登録対象文字列を順次抽出する。今、登録対象文字列として"patent"が抽出されたものとする。文字列入力部１１は、この登録対象文字列"patent"をデータベース登録部１２内のＮグラム分割部１２１に渡す。
【００３８】
Ｎグラム分割部１２１は、文字列入力部１１から渡された登録対象文字列"patent"を、図４において矢印Ｂ１で示すように、Ｎグラムに分割する（ステップＳ１）。ここでは、Ｎは例えば３である。Ｎグラム分割部１２１によって分割されたグラム列は、ハッシュ値変換部１２２内の表記統一変換部１２２ａに渡される。このグラム列は、登録対象文字列が"patent"である本実施形態では、グラム（文字列）"pat"を含む。
【００３９】
表記統一変換部１２２ａは、Ｎグラム分割部１２１から渡されたグラム列の中から未処理のグラムを１つ選択する（ステップＳ２）。そして表記統一変換部１２２ａは、選択されたグラムについて、そのグラムを構成する文字列（英文字列）の表記を予め定められた表記、例えば大文字表記に統一するための表記変換を行う（ステップＳ３）。これにより、変換対象グラムが上述の"pat"の場合には、当該"pat"は大文字表記の"PAT"に変換される。つまり、英字の文字列の表記が大文字表記に統一される。この表記統一変換部１２２ａによる表記の統一のための表記変換は、同一視（ここでは大文字／小文字同一視）の対象となり得る異表記のグラムについて、表記変換後のグラムのハッシュ値を同一値に揃えるために行われる。
【００４０】
表記統一変換部１２２ａによる表記変換後（大文字表記への変換後）のグラム（文字列）はハッシュ値計算部１２２ｂに渡される。このとき、表記統一変換部１２２ａによる表記変換前のグラムが語彙索引登録部１２３に渡される。
【００４１】
ハッシュ値計算部１２２ｂは、表記変換後のグラム（文字列）のハッシュ値を計算する（ステップＳ４）。ハッシュ値計算部１２２ｂによるハッシュ値計算結果は語彙索引登録部１２３に渡される。語彙索引登録部１２３は、ハッシュ値計算部１２２ｂから渡されたハッシュ値で特定される、ハッシュテーブル１０３のエントリを参照することにより、ハッシュ値の衝突の有無を判定する（ステップＳ５）。即ち語彙索引登録部１２３は、参照されたハッシュテーブル１０３のエントリに、表記統一変換部１２２ａによる表記変換前のグラム（文字列）とは異なる表記の文字列の語彙索引が既に登録されているならば、ハッシュ値の衝突があったと判定する。これに対し、参照されたハッシュテーブル１０３のエントリに語彙索引が登録されていないか、或は語彙索引が登録されていても、その語彙索引が表記統一変換部１２２ａによる表記変換前のグラム（文字列）と同一表記の文字列の語彙索引であるならば、ハッシュ値の衝突がなかったと判定する。
【００４２】
今、ハッシュ値計算部１２２ｂから語彙索引登録部１２３に渡されたハッシュ値が、表記統一変換部１２２ａによって"pat"から変換された"PAT"のハッシュ値ＨＰであるものとする。また、このハッシュ値ＨＰで特定される、ハッシュテーブル１０３のエントリが、図４に示すようにエントリ１０３ａであり、当該エントリ１０３ａには語彙索引が登録されていないものとする。この場合、語彙索引登録部１２３はハッシュ値の衝突がなかったと判定し、ハッシュテーブル１０３のエントリ１０３ａに、表記統一変換部１２２ａによる表記変換前のグラム"pat"の語彙索引を登録する（ステップＳ６）。このステップＳ６では、データベース１０のデータ格納領域１０１における"pat"の格納位置の情報を含む語彙索引情報が、データベース１０の語彙索引情報格納領域１０２に登録される。この"pat"の格納位置は、データベース１０にテキストデータが格納される際に、当該テキストデータから抽出された登録対象文字列"patent"中の"pat"の格納位置である。ハッシュテーブル１０３のエントリ１０３ａに登録された、"pat"の語彙索引（つまり表記統一変換部１２２ａによる表記変換前の文字列"pat"）には、この登録対象文字列"patent"中の"pat"の格納位置の情報を含む語彙索引情報を指し示すポインタ情報が付加される。
【００４３】
なお、"pat"の語彙索引が既にハッシュテーブル１０３のエントリ１０３ａに登録され、したがって当該語彙索引により指し示される語彙索引情報がデータベース１０の語彙索引情報格納領域１０２に既に登録されている場合には、当該語彙索引情報に、上記"pat"の格納位置の情報が語彙索引登録部１２３によって追加される。ここでは、この"pat"の格納位置の情報が、ハッシュテーブル１０３のエントリ１０３ａに登録された語彙索引により指し示される語彙索引情報に追加されるだけの場合も、当該"pat"の語彙索引が等価的にハッシュテーブル１０３のエントリ１０３ａに登録されたものとして扱う。
【００４４】
さて、語彙索引登録部１２３によってステップＳ６または後述するＳ７が実行されると、表記統一変換部１２２ａは、Ｎグラム分割部１２１によって分割されたグラム列中に未処理のグラムが存在するかを判定する（ステップＳ８）。もし、未処理のグラムが存在するならば、表記統一変換部１２２ａは未処理のグラムを１つ選択して（ステップＳ２）、そのグラムを構成する文字列の表記を大文字表記に統一するための表記変換を行う（ステップＳ３）。以下、上述した"pat"の場合と同様の動作が行われる。この動作の繰り返しによって、Ｎグラム分割部１２１によって分割されたグラム列中に未処理のグラムが存在しなくなったならば、つまりＮグラム分割部１２１によって分割された全てのグラムについて、対応する語彙索引を登録する処理が行われたならば、指定された登録対象文字列"patent"に関する一連の語彙索引の登録処理は終了となる。
【００４５】
その後、文字列入力部１１によって"Patent"または"PATENT"が登録対象文字列として抽出されたものとする。この場合、Ｎグラム分割部１２１は、登録対象文字列"Patent"または"PATENT"を、それぞれ図４において矢印Ｂ２またはＢ３で示すように、Ｎグラム（Ｎ＝３）に分割する（ステップＳ１）。Ｎグラム分割部１２１によって分割されたグラム列は表記統一変換部１２２ａに渡される。このグラム列は、登録対象文字列が"Patent"または"PATENT"の場合、それぞれグラム（文字列）"Pat"または"PAT"を含む。
【００４６】
表記統一変換部１２２ａは、Ｎグラム分割部１２１から渡されたグラム列の中から未処理のグラムを１つ選択する（ステップＳ２）。表記統一変換部１２２ａは、選択されたグラムについて、そのグラムを構成する文字列（英文字列）の表記を大文字表記に統一するための表記変換を行う（ステップＳ３）。これにより、変換対象グラムが"Pat"の場合には、当該"Pat"は、上述の"pat"の場合と同様に大文字表記"PAT"に変換される。また、変換対象グラムが"PAT"の場合には、その表記は既に大文字表記であることから、表記統一変換部１２２ａによる変換結果は、表記変換が行われない場合と同一の表記となる。この表記統一変換部１２２ａによる変換結果、つまり大文字表記に統一されたグラムが、ハッシュ値計算部１２２ｂによるハッシュ値計算の対象となる。したがって、表記統一変換部１２２ａによる表記変換前のグラムが"Pat"またはPAT"の場合、ステップＳ４においてハッシュ値計算部１２２ｂによって算出されるハッシュ値は、上述の"pat"の場合と同一値ＨＰとなる。
【００４７】
ハッシュ値計算部１２２ｂによって算出されたハッシュ値は語彙索引登録部１２３に渡される。このハッシュ値が、表記統一変換部１２２ａによって"Pat"またはPAT"から変換された"PAT"のハッシュ値ＨＰであるものとする。語彙索引登録部１２３は、このハッシュ値ＨＰで特定される、ハッシュテーブル１０３のエントリを参照することにより、ハッシュ値の衝突の有無を判定する（ステップＳ５）。ハッシュ値ＨＰで特定される、ハッシュテーブル１０３のエントリは、上述したように"pat"の語彙索引が既に登録されているエントリ１０３ａである。この場合、語彙索引登録部１２３はハッシュ値の衝突があったと判定する。すると語彙索引登録部１２３は、図４において矢印Ｃ１で示すように、ハッシュテーブル１０３のエントリ１０３ａにリンクした、データベース１０内のコリジョンチェーン１０４を辿って、当該チェーン１０４に、"Pat"またはPAT"の語彙索引を登録する（ステップＳ７）。このステップＳ７では、データベース１０のデータ格納領域１０１における登録対象文字列"Patent"または"PATENT"中の"Pat"またはPAT"の格納位置の情報を含む語彙索引情報が、データベース１０の語彙索引情報格納領域１０２に登録される。コリジョンチェーン１０４に登録された、"Pat"またはPAT"の語彙索引（つまり表記統一変換部１２２ａによる表記変換前の文字列"Pat"またはPAT"）には、この登録対象文字列"Patent"または"PATENT"中の"Pat"またはPAT"の格納位置の情報を含む語彙索引情報を指し示すポインタ情報が付加される。
【００４８】
なお、"Pat"またはPAT"の語彙索引が既にコリジョンチェーン１０４に登録され、したがって当該語彙索引により指し示される語彙索引情報がデータベース１０の語彙索引情報格納領域１０２に既に登録されている場合には、当該語彙索引情報に、上記"Pat"またはPAT"の格納位置の情報が追加される。ここでは、この"Pat"またはPAT"の格納位置の情報が、コリジョンチェーン１０４に登録された語彙索引により指し示される語彙索引情報に追加されるだけの場合も、当該"Pat"またはPAT"の語彙索引が等価的にコリジョンチェーン１０４に登録されたものとして扱う。また、ハッシュテーブル１０３のエントリ１０３ａにリンクしたコリジョンチェーン１０４が存在しない場合には、語彙索引登録部１２３は、当該エントリ１０３ａにリンクしたコリジョンチェーン１０４をデータベース１０内に新たに生成し、当該チェーン１０４に、"Pat"またはPAT"の語彙索引を登録する。このとき語彙索引登録部１２３は、生成されたコリジョンチェーン１０４を指し示すポインタ情報を、ハッシュテーブル１０３のエントリ１０３ａに付加する。また語彙索引登録部１２３は、データベース１０のデータ格納領域１０１における登録対象文字列"patent"中の"Pat"またはPAT"の格納位置の情報を含む語彙索引情報を、データベース１０の語彙索引情報格納領域１０２に登録する。
【００４９】
このように本実施形態においては、表記が異なるグラム（文字列）"pat"，"Pat"及び"PAT"の表記を全てハッシュ値変換部１２２内の表記統一変換部１２２ａによって大文字"PAT"に統一し、その統一された表記"PAT"を対象にハッシュ値変換部１２２内のハッシュ値計算部１２２ｂによるハッシュ値計算が行われるようにした。これにより、表記が異なる"pat"，"Pat"及び"PAT"に対応するハッシュ値を、大文字表記"PAT"のハッシュ値ＨＰに揃えることができる。この結果、表記が異なる"pat"，"Pat"及び"PAT"に対応するハッシュ値をＨＰに揃えたにも拘わらずに、"pat"，"Pat"及び"PAT"に共通の語彙索引を作成せずに、"pat"，"Pat"及び"PAT"個々の語彙索引を作成していながら、これら共通のハッシュ値ＨＰのグラムの集合（"pat"，"Pat"及び"PAT"）に対応する語彙索引の集合を、当該ハッシュ値ＨＰで特定される、ハッシュテーブル１０３のエントリ１０３ａ及び当該エントリ１０３ａにリンクされたコリジョンチェーン１０４に集中して登録することができる。
【００５０】
つまり本実施形態によれば、異表記されたグラム（"pat"，"Pat"及び"PAT"）に対応するハッシュ値をハッシュ値変換部１２２によって揃えることで、当該異表記されたグラムの語彙索引の集合を、データベース１０内の局所領域に集中して配置することができる。これにより、後述するように、異表記された語彙を同一視して検索する場合に、ハッシュテーブル１０３のエントリ１０３ａにリンクされた１つのコリジョンチェーン１０４を辿る（走査する）だけで、対応する全ての語彙索引を高速に検索することが可能となる。また、異表記を同一視しないで検索する場合には、上記揃えられたハッシュ値で特定されるハッシュテーブル１０３のエントリまたは当該エントリにリンクしたコリジョンチェーン１０４の中から、目的の表記の語彙索引だけを検索するだけで良く、異表記を同一視しない場合の検索も簡単に実行できる。
【００５１】
通常、データベース１０が置かれるディスクドライブからのデータ読み出しは、ページ或はブロックと呼ばれる、一定のサイズのデータ単位で行われる。ディスクドライブ（データベース１０）から読み出された一定サイズのデータは、キャッシュメモリに保持されるのが一般的である。したがって、異表記されたグラムの語彙索引の集合に含まれている語彙索引をディスクドライブ（データベース１０）から読み出す際には、当該語彙索引の集合がまとめて読み出されてキャッシュメモリに保持される可能性が高い。この場合、上記集合中の他の語彙索引のキャッシュヒット率が高くなるため、当該他の語彙索引の一層の高速検索が可能となる。
【００５２】
次に、データベース１０を対象に大文字／小文字同一視検索を行う文字列検索処理について、図５及び図６を参照して説明する。なお、図５は文字列検索処理の手順を示すフローチャート、図６は検索対象文字列が"patent"の場合の文字列検索処理を説明するための図である。
【００５３】
まず、ユーザの入力操作に応じてアプリケーションから与えられるデータベース検索要求に従い、文字列入力部１３によって検索対象文字列"patent"が入力されたのとする。文字列入力部１３は、この検索対象文字列"patent"をデータベース検索部１４内のＮグラム分割部１４１に渡す。
【００５４】
Ｎグラム分割部１４１は、文字列入力部１３から渡された検索対象文字列"patent"を、図６において矢印Ｄ１で示すように、Ｎグラム（Ｎ＝３）に分割する（ステップＳ１１）。Ｎグラム分割部１４１によって分割されたグラム列は表記統一変換部１４２ａに渡される。このグラム列は、検索対象文字列が"patent"である本実施形態では、グラム（文字列）"pat"を含む。
【００５５】
表記統一変換部１４２ａは、Ｎグラム分割部１４１から渡されたグラム列の中から未処理のグラムを１つ選択する（ステップＳ１２）。表記統一変換部１４２ａは、選択されたグラムについて、そのグラムを構成する文字列（英文字列）の表記を大文字表記に統一するための表記変換を行う（ステップＳ１３）。これにより、変換対象グラムが"pat"の場合には、当該"pat"は大文字表記"PAT"に変換される。明らかにように、変換対象グラムが、"pat"とは表記の異なる"paT"，"Pat"，"PAt"などである場合にも、大文字表記"PAT"に変換される。この表記統一変換部１４２ａによる変換結果、つまり大文字表記に統一されたグラムが、ハッシュ値計算部１４２ｂによるハッシュ値計算の対象となる。
【００５６】
ハッシュ値計算部１４２ｂは、表記統一変換部１４２ａによって"pat"から変換された"PAT"のハッシュ値を計算する。このハッシュ値は、上述した語彙索引登録時の動作から明らかにように、ＨＰとなる。この"PAT"のハッシュ値ＨＰで特定される、ハッシュテーブル１０３のエントリ１０３ａと、当該エントリ１０３ａにリンクされたコリジョンチェーン１０４とには、図６に示すように、"PAT"だけでなく、"pat"，"paT"，"Pat"及び"PAt"のように、大文字／小文字のみ異なる異表記のグラムが、全て同じハッシュ値ＨＰで登録されている。
【００５７】
そこで語彙索引検索部１４３は、ハッシュ値計算部１４２ｂによって算出されたハッシュ値ＨＰで特定される、ハッシュテーブル１０３のエントリ１０３ａに、"pat"の語彙索引または"pat"とは大文字／小文字のみ異なるグラムの語彙索引が登録されているかを判定する（ステップＳ１５）。もし、登録されているならば、語彙索引検索部１４３はハッシュテーブル１０３のエントリ１０３ａに登録されている語彙索引に従って、対応する語彙索引情報を取得する（ステップＳ１６）。ここでは、ハッシュテーブル１０３のエントリ１０３ａには、"pat"の語彙索引が登録されている。これにより語彙索引検索部１４３は、この"pat"の語彙索引から、"pat"が格納されているデータベース１０内の全ての格納位置を示す語彙索引情報を取得する。
【００５８】
語彙索引検索部１４３は、ステップＳ１６を実行すると、ステップＳ１７に進む。このステップ１７において、語彙索引検索部１４３は、ハッシュテーブル１０３のエントリ１０３ａにリンクしたコリジョンチェーン１０４に、"pat"または"pat"とは大文字／小文字のみ異なるグラムの語彙索引が登録されているかを判定する。もし、登録されているならば、語彙索引検索部１４３は上記コリジョンチェーン１０４に登録されている語彙索引に従って、対応する語彙索引情報を取得する（ステップＳ１８）。ハッシュテーブル１０３のエントリ１０３ａにリンクしたコリジョンチェーン１０４には、図６に示すように、"pat"とは大文字／小文字のみ異なるグラム（"paT"，"Pat"，"PAt"，"PAT"など）の語彙索引が登録されている。これにより語彙索引検索部１４３は、この"pat"とは大文字／小文字のみ異なるグラムに対応する各語彙索引から、対応する表記の文字列（"paT"，"Pat"，"PAt"，"PAT"など）が格納されているデータベース１０内の全ての格納位置を示す語彙索引情報を取得する。一方、ハッシュテーブル１０３のエントリ１０３ａに目的とする語彙索引が登録されていない場合には（ステップＳ１５）、語彙索引検索部１４３はそのままステップＳ１７に進む。
【００５９】
このように本実施形態においては、大文字／小文字のみ異なるグラムについては全て同じハッシュ値で登録されている。このため、検索対象文字列”patent”からＮグラムに分割されたグラム列中の”pat”について、"pat"と、当該"pat"とは大文字／小文字のみ異なる"paT"，"Pat"及び"PAt"などのグラムに共通となるハッシュ値ＨＰを計算するならば、当該ハッシュ値ＨＰに対応するハッシュテーブル１０３のエントリ１０３ａと、当該エントリ１０３ａにリンクしたコリジョンチェーン１０４を１回走査するするだけで、"pat"は勿論、"paT"，"Pat"及び"PAt"などに関する語彙索引情報を取得できる。従来は、"pat"に関して大文字／小文字を同一視して検索する場合は、８回の走査を必要とする。このことから、本実施形態においては、大文字／小文字を同一視して検索する場合の検索性能を向上できることが理解されよう。つまり本実施形態によれば、同一視したい表記の語彙を含むグラムの語彙索引をハッシュテーブル１０３またはコリジョンチェーン１０４に登録する際に、当該グラムの表記を統一してハッシュ値が同一値となるような処理を施すことにより、ハッシュテーブル１０３の参照からコリジョンチェーン１０４の走査という処理を１度しか行わなくてよくなるため、検索性能を向上させることができる。しかも、データベース１０（が置かれるディスクドライブ）内で、図６のコリジョンチェーン１０４のように、"pat"とは大文字／小文字のみ異なる"paT"や"PAt","PAT"の語彙索引を、局所的に集中して配置することができるため、これらの語彙索引の検索や対応する情報の取得も高速に実行できる。
【００６０】
さて、語彙索引検索部１４３によってステップＳ１８が実行された場合、或はハッシュテーブル１０３のエントリ１０３ａにリンクしたコリジョンチェーン１０４に、"pat"または"pat"とは大文字／小文字のみ異なるグラムの語彙索引のいずれも登録されていないことが語彙索引検索部１４３によって判定された場合（ステップＳ１５，Ｓ１７）、表記統一変換部１４２ａは、Ｎグラム分割部１４１によって分割されたグラム列中に未処理のグラムが存在するかを判定する（ステップＳ１９）。もし、未処理のグラムが存在するならば、表記統一変換部１４２ａは未処理のグラムを１つ選択して（ステップＳ１２）、そのグラムを構成する文字列の表記を大文字表記に統一するための表記変換を行う（ステップＳ１３）。以下、上述した"pat"の場合と同様の動作が行われる。この動作の繰り返しにより、Ｎグラム分割部１４１によって分割されたグラム列中に未処理のグラムが存在しなくなったならば、データベース検索部１４内の検索結果処理部１４４は、Ｎグラム分割部１４１によって分割された全グラムについて、語彙索引検索部１４３によって取得された語彙索引情報をマージする（ステップＳ２０）。これにより検索結果処理部１４４は、データベース１０上の文字列"patent"の検索が実行できる。
【００６１】
次に、大文字／小文字（異表記）を同一視しない検索について、検索対象文字列"patent"から分割された文字列"pat"に対応する語彙索引を検索する場合を例に説明する。まず、文字列"pat"に対する表記統一変換部１４２ａの表記変換結果は"PAT"となり、この"PAT"に対するハッシュ値計算部１４２ｂのハッシュ値計算結果はＨＰとなる。この場合、語彙索引検索部１４３は、ハッシュ値ＨＰで特定される、ハッシュテーブル１０３のエントリ１０３ａと、当該エントリ１０３ａにリンクしたコリジョンチェーン１０４の中から、表記統一変換部１４２ａによる表記変換前の文字列"pat"に対応する唯一の語彙索引を探して、その"pat"の語彙索引で指し示される語彙索引情報だけを取得すれば良い。このため本実施形態においては、文字列"pat"と同一視可能なデータベース中の全文字列のリーフの情報を参照して、そのリーフ中の文字情報と文字列"pat"とを比較する必要のある前記第２の先行技術と異なって、異表記を同一視しない検索を効率的に行える。しかも本実施形態においては、システムに唯一存在する"pat"の語彙索引で指し示される語彙索引情報に、データベース１０中の全文字列"pat"のそれぞれの格納位置情報を含めるだけで良いため、全文字列"pat"のそれぞれにリーフの情報を作成して、そのリーフの情報に文字列"pat"の文字情報と格納位置情報を含める必要のある第２の先行技術と異なって、情報量を著しく削減できる。
【００６２】
ところで、ハッシュ値を揃えて同一視検索を高速化するのに、図１のデータベース検索システムの外側(アプリケーション側)で、同一視したい複数の語彙を１つの語彙に統一して登録する手法を適用することも可能である。しかしこの手法では、語彙索引がどれも同じものとして登録されるため、同一視しない検索ができなくなってしまう。本実施形態ではこのような問題は起きず、同一視する場合／しない場合のどちらの検索も可能である。
【００６３】
上記実施形態では、登録または検索対象となる文字列の文字種が英字であり、且つ全角／半角のうちの半角文字のみに限られている場合を想定して、ハッシュ計算に用いられるグラムの表記を大文字に統一する構成（つまり大文字／小文字が異なる語彙についてハッシュ値を揃える構成）を適用している。しかし、ハッシュ計算に用いられるグラムの表記を小文字に統一する構成であっても構わない。また、登録または検索対象となる文字列を構成する英字に全角文字及び半角文字の両方が存在し得る場合には、ハッシュ計算に用いられるグラムの表記を、大文字または小文字で且つ全角または半角のいずれかに統一する構成とすれば良い。この構成は、「カタカナ」の大文字／小文字の違い(ソフトウェアとソフトウエア等)などを同一視する場合にも適用可能である。また、登録または検索対象となる文字列を構成する文字の文字種として「ひらがな」と「カタカナ」の両方が存在し得る場合には、ハッシュ計算に用いられるグラムの表記を「ひらがな」または「カタカナ」のいずれか一方に統一する構成とすれば良い。同様に、漢字の「斉,斎,齊,齋」のような字体の違いを同一視する場合には、字体を「斉,斎,齊,齋」のうちのいずれか１つ、例えば「斉」に統一する構成とすれば良い。そのためには、図１のハッシュ値変換部１２２，１４２内に、「斉,斎,齊,齋」を、統一すべき表記「斉」に対応付けるための、異表記統一辞書１２２ｃ，１４２ｃ（図１参照）を設けると良い。ここでは、表記統一変換部１２２ａ，１４２ａは、「斉」「斎」「齊」または「齋」で異表記統一辞書１２２ｃ，１４２ｃを参照することにより、その文字に対応付けられている「斉」を表記変換結果として出力すれば良い。この異表記統一辞書１２２ｃ，１４２ｃが、データベース１０に格納されていても構わない。
【００６４】
このように、ある１つの語彙を検索する際、同時に検索する可能性の高い語彙が複数あることが想定される場合、ハッシュ値を揃えてグループ化することにより、検索性能の向上を図ることが可能となる。
【００６５】
また上記実施形態では、図１のデータベース検索システムが、テキストデータ登録及び語彙索引の登録を含むデータベース登録機能を有している場合を想定している。しかし、データベース検索システムが、必ずしもデータベース登録機能を有している必要はない。この場合、文字列入力部１１及びデータベース登録部１２は不要となる。つまり、データベース登録機能を有するデータベース登録システムと、データベース検索機能を有するデータベース検索システムとが分離された構成であっても構わない。ここで、データベース登録システムには、少なくともデータベース登録部１２を持たせればよい。
【００６６】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００６７】
【図１】本発明の一実施形態に係る、データベース登録機能を有するデータベース検索システムの構成を示すブロック図。
【図２】表記変換の対象となる文字列の文字種と、変換後の表記との関係を示す図。
【図３】同実施形態における語彙索引の登録処理の手順を示すフローチャート。
【図４】同実施形態における異表記の文字列"patent"，"Patent"または"PATENT"を対象とする語彙索引の登録処理を説明するための図。
【図５】同実施形態における文字列検索処理の手順を示すフローチャート。
【図６】同実施形態における検索対象文字列が"patent"の場合の文字列検索処理を説明するための図。
【図７】検索対象文字列が"patent"の場合の従来の文字列検索処理を説明するための図。
【符号の説明】
【００６８】
１０…データベース、１１，１３…文字列入力部、１２…データベース登録部、１４…データベース検索部、１０１…データ格納領域、１０２…語彙索引情報格納領域、１０３…ハッシュテーブル、１０４…コリジョンチェーン（リスト）、１２１，１４１…Ｎグラム分割部、１２２，１４２…ハッシュ値変換部、１２２ａ，１４２ａ…表記統一変換部、１２２ｂ，１４２ｂ…ハッシュ値計算部、１２２ｃ，１４２ｃ…異表記統一辞書、１２３…語彙索引登録部、１４３…語彙索引検索部、１４４…検索結果処理部。
【図１】
2006106896.tif 000003
【図２】
2006106896.tif 000004
【図３】
2006106896.tif 000005
【図４】
2006106896.tif 000006
【図５】
2006106896.tif 000007
【図６】
2006106896.tif 000008
【図７】
2006106896.tif 000009