(57)【特許請求の範囲】
【請求項１】
索引記憶手段に格納されている索引レコードの集合から構成される索引を利用してテキスト記憶手段に格納されているテキストデータを検索するテキスト検索システムにおいて、
文字列を構成する各文字を当該文字と同一視すべき１つ以上のタイプの文字のうちの予め定められたタイプの文字に変換する文字列変換手段と、
前記テキスト記憶手段に格納されるテキストデータに存在する文字列を構成する各文字を前記文字列変換手段により変換させることによって変換後の文字列を取得して、当該変換後の文字列及び当該変換後の文字列と変換前の文字列との間で差異が有るかを示す差異情報を含む索引レコードを変換前の文字列が存在する前記テキストデータと対応付けて、前記索引に追加する索引管理手段と、
クライアント端末から与えられる検索要求の指定する検索文字列を構成する各文字を前記文字列変換手段により変換させることによって変換後の検索文字列を取得して、当該変換後の検索文字列に合致する文字列を含む索引レコードの群を前記索引から検索する同一視検索手段であって、前記検索要求によって同一視検索が指定されている場合には、当該検索された索引レコードの群に対応付けられたテキストデータの群を前記変換後の検索文字列と同一視すべき文字列を含むテキストデータの群として検索するための同一視検索を行う同一視検索手段と、
前記検索要求によって非同一視検索が指定されている場合、前記同一視検索手段によって検索された索引レコードの群に対応付けられたテキストデータの群を非同一視検索対象テキストデータの群として、当該非同一視検索対象テキストデータの群から前記検索要求の指定する検索文字列を含むテキストデータを検索するための非同一視検索を行う非同一視検索手段であって、前記同一視検索手段によって検索された索引レコードの群にそれぞれ含まれている差異情報に基づき、当該索引レコードの群に対応付けられた前記非同一視検索対象テキストデータの群から非同一視検索の結果にはなり得ないテキストデータを除外し、残りの非同一視検索対象テキストデータの群から前記検索要求の指定する検索文字列を含むテキストデータを検索する非同一視検索手段と
を具備することを特徴とするテキスト検索システム。
【請求項２】
前記検索要求によって非同一視検索が指定されている場合に、前記検索要求の指定する検索文字列と当該検索文字列に対応する前記変換後の検索文字列とが一致するかを判定する検索文字列判定手段を更に具備し、
前記非同一視検索手段は、前記検索文字列判定手段によって不一致が判定された場合、前記非同一視検索対象テキストデータの群のうち、対応する索引レコードに含まれている差異情報によって差異無しが示されているテキストデータを前記非同一視検索の結果にはなり得ないテキストデータと決定する
ことを特徴とする請求項１記載のテキスト検索システム。
【請求項３】
前記非同一視検索手段は、前記検索文字列判定手段によって一致が判定された場合、前記非同一視検索対象テキストデータの群のうち、対応する索引レコードに含まれている差異情報によって差異有りが示されているテキストデータを前記非同一視検索の結果にはなり得ないテキストデータと決定する
ことを特徴とする請求項２記載のテキスト検索システム。
【請求項４】
索引記憶手段に格納されている索引レコードの集合から構成される索引を利用してテキスト記憶手段に格納されているテキストデータを検索するコンピュータを、
文字列を構成する各文字を当該文字と同一視すべき１つ以上のタイプの文字のうちの予め定められたタイプの文字に変換する文字列変換手段と、
前記テキスト記憶手段に格納されるテキストデータに存在する文字列を構成する各文字を前記文字列変換手段により変換させることによって変換後の文字列を取得して、当該変換後の文字列及び当該変換後の文字列と変換前の文字列との間で差異が有るかを示す差異情報を含む索引レコードを変換前の文字列が存在する前記テキストデータと対応付けて、前記索引に追加する索引管理手段と、
クライアント端末から与えられる検索要求の指定する検索文字列を構成する各文字を前記文字列変換手段により変換させることによって変換後の検索文字列を取得して、当該変換後の検索文字列に合致する文字列を含む索引レコードの群を前記索引から検索する同一視検索手段であって、前記検索要求によって同一視検索が指定されている場合には、当該検索された索引レコードの群に対応付けられたテキストデータの群を前記変換後の検索文字列と同一視すべき文字列を含むテキストデータの群として検索するための同一視検索を行う同一視検索手段と、
前記検索要求によって非同一視検索が指定されている場合、前記同一視検索手段によって検索された索引レコードの群に対応付けられたテキストデータの群を非同一視検索対象テキストデータの群として、当該非同一視検索対象テキストデータの群から前記検索要求の指定する検索文字列を含むテキストデータを検索するための非同一視検索を行う非同一視検索手段であって、前記同一視検索手段によって検索された索引レコードの群にそれぞれ含まれている差異情報に基づき、当該索引レコードの群に対応付けられた前記非同一視検索対象テキストデータの群から非同一視検索の結果にはなり得ないテキストデータを除外し、残りの非同一視検索対象テキストデータの群から前記検索要求の指定する検索文字列を含むテキストデータを検索する非同一視検索手段と
して機能させるさせるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、索引を利用してテキストデータを検索するテキスト検索システムに係り、特に、タイプの異なる文字を同一視して検索するための同一視検索及び同一視しないで検索するための非同一視検索の両検索に好適なテキスト検索システム及びプログラムに関する。
【背景技術】
【０００２】
従来から、大量のテキストデータの中から、指定された文字列を含むテキストデータを検索するテキスト検索システムが知られている。このようなテキスト検索システムでは、指定された文字列を含むテキストデータの検索を高速化するために、索引を用いるのが一般的である。
【０００３】
また近年は、テキスト検索システムによるテキスト検索において、タイプの異なる文字（例えば、英大文字と英小文字、全角文字と半角文字、平仮名と片仮名など）を同一視して検索する機能（同一視検索機能）が求められる場合がある。索引を用いた検索手法は、同一視検索を高速化するためにも有効である。
【０００４】
そこで、例えば特許文献１は、同一視検索を行う場合と同一視検索を行わない場合（つまり非同一視検索を行う場合）とで、それぞれ別々の索引を用いる方法を開示している。
【０００５】
また、例えば特許文献２は、同一視すべき文字列（語彙）なら同じ値になるようなハッシュ値を用いることにより、ハッシュ値が同じ語彙の索引を、そのハッシュ値で特定されるロケーションにまとめて記憶することを開示している。この特許文献２はまた、同一視検索及び非同一視検索のいずれの場合にも、検索の対象となる文字列（検索文字列）の表記を当該文字列の複数の表記のうちの予め定められた表記に変換して、その変換された表記の文字列（変換後の検索文字列）のハッシュ値で特定されるロケーションを対象とする索引検索を行うことを開示している。この特許文献２に記載された索引検索によれば、その索引検索の結果に基づいて、同一視検索の場合には検索文字列と同一視可能な全ての文字列が取得され、非同一視検索の場合には検索文字列と完全に一致する文字列が取得される。
【特許文献１】特開平１１−３５３３２３号公報
【特許文献２】特開２００６−１０６８９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記したように、特許文献１に記載されている従来技術（第１の従来技術）においては、同一視検索用と非同一視検索用とに別々の索引が用意される。このため第１の従来技術では、同一視検索用と非同一視検索用の双方の索引（つまり、同一視検索用索引及び非同一視検索用索引）に、それぞれデータ（索引レコード）を登録しなければならない。したがって第１の従来技術においては、同一視検索用索引と非同一視検索用索引とにそれぞれ索引レコードを登録するための処理コスト、及び当該両索引を格納するための記憶領域を必要とする。
【０００７】
一方、特許文献２に記載されている従来技術（第２の従来技術）においては、同一視検索用と非同一視検索用とに別々の索引を用意する必要はないものの、ハッシュを用いて索引を管理する必要があり、また検索時には検索文字列のハッシュ値への変換が必要となる。
【０００８】
本発明は上記事情を考慮してなされたものでその目的は、索引を利用した同一視検索及び非同一視検索を、より少ない処理コストで、且つ、より少ない容量の索引記憶用領域で実現することができる、テキスト検索システム及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の１つの観点によれば、索引記憶手段に格納されている索引を利用してテキスト記憶手段に格納されているテキストデータを検索するテキスト検索システムが提供される。このテキスト検索システムは、文字列を構成する各文字を当該文字と同一視すべき１つ以上のタイプの文字のうちの予め定められたタイプの文字に変換する文字列変換手段と、前記テキスト記憶手段に格納されるテキストデータに存在する文字列を構成する各文字を前記文字列変換手段により変換させることによって変換後の文字列を取得し、当該変換後の文字列を変換前の文字列が存在する前記テキストデータと対応付けて、前記索引に追加する索引管理手段と、クライアント端末から与えられる検索要求の指定する検索文字列を構成する各文字を前記文字列変換手段により変換させることによって変換後の検索文字列を取得し、当該変換後の検索文字列及び前記索引に基づいて、当該変換後の検索文字列と同一視すべき文字列を含むテキストデータを検索するための同一視検索を行う同一視検索手段と、前記検索要求によって非同一視検索が指定されている場合、前記同一視検索手段によって検索されたテキストデータを検索対象テキストデータとして、当該検索対象テキストデータから前記検索要求の指定する検索文字列を含むテキストデータを検索するための非同一視検索を行う非同一視検索手段とを具備する。
【発明の効果】
【００１０】
本発明によれば、検索要求の指定する検索文字列を同一視検索のための文字列に変換して、この変換後の文字列と同一視検索のための索引とに基づいて同一視検索を行うことで、同一視検索の高速化を図りながら、検索要求によって非同一視検索が指定されている場合にも同一視検索を行い、その同一視検索結果（つまり同一視検索によって検索されたテキストデータ）を非同一視検索対象テキストデータとして、当該非同一視検索対象テキストデータの中から検索要求の指定する検索文字列を含むテキストデータを検索することにより、非同一視検索をも高速化することができる。しかも本発明においては、非同一視検索のための索引を必要としないため、索引を格納するのに必要な記憶領域のサイズを抑制することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係るテキスト検索システム５０を含むクライアント−サーバシステムのハードウェア構成を示すブロック図である。クライアント−サーバシステムは、主として、データベースサーバ（データベースサーバコンピュータ）１０と、複数のクライアント端末とから構成される。複数のクライアント端末はクライアント端末２０を含む。クライアント端末２０上では、データベースサーバ１０を利用するアプリケーション（アプリケーションプログラム）が動作する。クライアント端末２０を含む複数のクライアント端末は、ローカルエリアネットワーク（ＬＡＮ）のようなネットワーク３０を介してデータベースサーバ１０と接続されている。
【００１２】
なお、図１では、クライアント端末２０以外のクライアント端末は省略されている。そこで以下では、クライアント端末２０だけがテキスト検索システム５０を利用するものとして説明するが、他のクライアント端末もクライアント端末２０と同様にテキスト検索システム５０を利用できることは勿論である。
【００１３】
データベースサーバ１０は、主メモリのようなメモリ１１を有するコンピュータ（データベースサーバコンピュータ）である。データベースサーバ１０は、ハードディスクドライブのような２次記憶装置４０と接続されている。この２次記憶装置４０は、データベース管理プログラム４１、データベース４２及び変換規則（同一視変換規則情報）４３を格納する。本実施形態においてテキスト検索システム５０は、データベースサーバ１０及び２次記憶装置４０（に格納されているデータベース４２）によって実現される。
【００１４】
データベース管理プログラム４１は、データベースサーバ１０によるデータベース４２の管理、及びクライアント端末２０からの検索要求に基づく検索処理（テキスト検索処理）に用いられる。
【００１５】
データベース４２は、文書部４２１と索引部４２２とを含む。文書部４２１は、検索の対象となる複数の電子化された文書（テキスト文書）を格納するのに用いられる記憶領域（文書記憶手段）である。文書は文字列を含むテキストデータである。索引部４２２は、文書部４２１に格納されている文書を検索するための索引４２３を格納するのに用いられる記憶領域（索引記憶手段）である。
【００１６】
変換規則４３は、任意の文字列（キャラクタコード列）を構成する文字（キャラクタコード）を、同一視すべき１つ以上のタイプの文字のうちの予め定められたタイプの文字（代表文字）に変換するのに用いられる情報である。本実施形態において、テキスト検索システム５０が、例えば大文字のアルファベットと小文字のアルファベットとを同一視する機能（英字同一視機能）を有しているものとする。このようなテキスト検索システム５０で適用される変換規則４３は、例えば、大文字の「Ａ」と小文字の「ａ」とが同一視対象であり、大文字の「Ａ」が代表文字であるという情報を含む。  
データベースサーバ１０上では、データベース管理システム（ＤＢＭＳ）５１が動作する。
【００１７】
図２は、索引部４２２内の索引４２３のデータ構造を文書部４２１内の文書と関連付けて示す。索引４２３は、索引レコードＲｉ（ｉ＝１，２…）の集合である。索引レコードＲｉは、文字列フィールドＦ１と文書位置フィールドＦ２との対を含む。
【００１８】
文字列フィールドＦ１には文書内に存在する文字列が変換規則４３に従って変換された状態で保持される。文書位置フィールドＦ２には、当該フィールドＦ２と対をなす文字列フィールドＦ１に保持されている文字列の変換前の文字列が存在する文書のＩＤ（文書ＩＤ）が保持される。この文書の文書ＩＤは、当該文書がＤＢＭＳ５１内の後述する文書登録／更新部５３によってデータベース４２に登録される際に当該文書登録／更新部５３によって付与される。本実施形態において、文書ＩＤは、文書番号である。この文書ＩＤ（文書番号）によりデータベース４２（内の文書部４２１）に格納されている文書の集合に含まれる１つの文書が特定される。つまり、文書ＩＤ（文書番号）は文書を特定する情報であり、また、当該文書ＩＤで特定される文書のデータベース４２（内の文書部４２１）における論理的な格納位置（ロケーション）を示す一種の位置情報でもある。なお、文書位置フィールドＦ２に、文書ＩＤ（文書番号）に加えて、当該フィールドＦ２と対をなす文字列フィールドＦ１に保持される文字列の変換前の文字列が存在する文書内の位置（ロケーション）を示す位置情報が保持される構成であっても構わない。この場合、文書のみでなく文書内の位置まで検索することが可能となる。
【００１９】
図２の例では、文書部４２１に、文書ＩＤが「１」の文書＃１及び文書ＩＤが「２」の文書＃２を含む文書の集合が格納されている。文書＃１には文字列「ＡＢＣ」が存在し、文書＃２には文字列「ａｂｃ」が存在する。
【００２０】
一方、索引部４２２に格納される索引４２３は、文書＃１上の文字列「ＡＢＣ」に対応する索引レコードＲ１（ｉ＝１）及び文書＃２上の文字列「ａｂｃ」に対応する索引レコードＲ２（ｉ＝２）を含む。先に挙げた変換規則４３の例では、索引レコードＲ１及びＲ２の文字列フィールドＦ１には、いずれも文字列「ＡＢＣ」が保持される。また、索引レコードＲ１及びＲ２の文書位置フィールドＦ２には、それぞれ文書＃１及び＃２の文書ＩＤが保持される。
【００２１】
図３は図１に示されるテキスト検索システム５０の主として機能構成を示すブロック図である。テキスト検索システム５０内のＤＢＭＳ５１は、要求処理部５２、文書登録／更新部５３、索引管理部５４、検索部５５、文字列変換部５６及びデータベース操作部５７を含む。
【００２２】
ＤＢＭＳ５１はまた、変換規則記憶部５８を含む。変換規則記憶部５８は、データベースサーバ１０が有するメモリ１１内の一部の記憶領域を用いて実現されるものとする。変換規則記憶部５８には、２次記憶装置４０に格納されている変換規則４３が、テキスト検索システム５０の起動時にロードされる。
【００２３】
要求処理部５２は、クライアント端末２０からの要求（コマンド）を受け付けて当該要求の種別を判別し、その判別結果に基づいて当該要求を文書登録／更新部５３または検索部５５に送出する入力インタフェースとして機能する。ここでは要求処理部５２は、クライアント端末２０からの要求が文書登録要求または文書更新要求ならば当該文書登録要求または文書更新要求を文書登録／更新部５３に送出し、検索要求ならば当該検索要求を検索部５５に送出する。要求処理部５２はまた、クライアント端末２０からの要求に対する文書登録／更新部５３または検索部５５からの応答を当該クライアント端末２０に返す出力インタフェースとしても機能する。
【００２４】
文書登録／更新部５３は、クライアント端末２０からの文書登録要求を要求処理部５２を介して受け取り、当該文書登録要求で指定された文書をデータベース４２に登録（格納）する文書登録処理を行う。文書登録／更新部５３は、クライアント端末２０からの文書更新要求を要求処理部５２を介して受け取り、当該文書更新要求で指定された、データベース４２内の文書を更新する文書更新処理を行う。
【００２５】
文書登録／更新部５３はまた、データベース４２への文書登録時に、当該文書に含まれる文字列に基づく索引レコードＲｉの作成を索引管理部５４に要求する。文書登録／更新部５３はまた、データベース４２内の文書の更新時に、当該更新によって更新される文字列に対応する索引レコードＲｉの更新を索引管理部５４に要求する。なお、文書の更新時には、索引レコードＲｉの作成／削除を伴うこともある。
【００２６】
索引管理部５４は、文書登録／更新部５３からの索引レコード作成要求に応じ、当該文書登録／更新部５３によってデータベース４２に登録される文書に含まれる文字列に基づいて索引レコードＲｉを作成する。索引レコードＲｉの作成に際し、索引管理部５４は、当該索引レコードＲｉの作成に用いられる文字列（変換前の文字列）を、文字列変換部５６により、変換規則４３で定められたタイプの文字列に変換させる。索引レコードＲｉは、この変換された文字列（変換後の文字列）を用いて作成される。索引管理部５４は、作成された索引レコードＲｉをデータベース操作部５７によって索引４２３に追加させる。
【００２７】
検索部５５は、クライアント端末２０から送られた検索要求を要求処理部５２を介して受け取り、当該検索要求で指定された検索条件に基づいて同一視検索または非同一視検索を行う。検索部５５は、判定部５５１、同一視検索部５５２及び非同一視検索部５５３を含む。  
判定部５５１は検索種別判定部として機能して、検索要求で指定された検索が、同一視検索または非同一視検索のいずれであるかを判定する。
【００２８】
同一視検索部５５２は、検索要求によって指定された検索文字列を文字列変換部５６により、変換規則４３で定められたタイプの文字列に変換させる。同一視検索部５５２は、変換後の文字列（検索文字列）に基づき、索引４２３から当該文字列を含む索引レコードＲｉの群を検索するための同一視検索処理を実行する。同一視検索部５５２は、検索要求によって同一視検索が指定されている場合、検索された索引レコードＲｉの群に基づき、検索文字列に対して同一視される文字列を含む文書の群を特定する。
【００２９】
非同一視検索部５５３は、同一視検索部５５２によって検索された索引レコードＲｉの群を利用し、これによって示される文書の群の中から（当該文書の群の各文書内を参照することにより）変換前の検索文字列を含む文書の群を特定するための非同一視検索処理を実行する。
【００３０】
文字列変換部５６は、索引管理部５４または検索部５５（内の同一視検索部５５２）によって要求された文字列（キャラクタコード列）を構成する文字を、変換規則記憶部５８にロード（格納）されている変換規則４３に基づいて、当該変換規則４３によって指定されるタイプの文字（キャラクタコード）に変換する。
【００３１】
データベース操作部５７は、文書登録／更新部５３、索引管理部５４及び検索部５５がデータベース４２にアクセスするのを可能とするインタフェースとして機能して、当該データベース４２に対する処理を行う。
【００３２】
本実施形態において、要求処理部５２、文書登録／更新部５３、索引管理部５４、検索部５５、文字列変換部５６及びデータベース操作部５７は、図１のデータベースサーバ１０が２次記憶装置４０に格納されているデータベース管理プログラム４１を当該サーバ１０内のメモリ１１に読み込んで実行することにより実現されるものとする。このプログラム４１は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム４１が、ネットワーク３０を介してデータベースサーバ１０にダウンロードされても構わない。なお、要求処理部５２、文書登録／更新部５３、索引管理部５４、検索部５５、文字列変換部５６及びデータベース操作部５７がハードウェアで構成されていても構わない。
【００３３】
次に、本実施形態におけるテキスト検索システム５０の動作について説明する。  
＜文書登録処理＞
まず、本実施形態における文書登録処理について、図４のフローチャートを参照して説明する。
【００３４】
今、ユーザが、データベース４２に登録されるべき文書（テキストデータ）を指定して、当該文書の登録を指示するための操作を、クライアント端末２０上で行ったものとする。するとクライアント端末２０は、テキスト検索システム５０に対して、指定の文書をデータベース４２に登録させるための登録要求（文書登録要求）をネットワーク３０経由で送出する。
【００３５】
要求処理部５２は、クライアント端末２０からの登録要求を受け取ると、当該登録要求を文書登録／更新部５３に渡す。文書登録／更新部５３は、クライアント端末２０からの登録要求を要求処理部５２を介して受け取ると、当該要求で指定された文書に存在する文字列の索引レコード化を索引管理部５４に要求する。
【００３６】
すると索引管理部５４は、文字列変換部５６を用いて以下に述べる索引（索引レコード）作成処理（ステップＳ１）を行う。まず索引管理部５４は、文書登録／更新部５３によってデータベース４２内の文書部４２１に登録されるべき文書に存在する索引レコード化の対象となる文字列（例えば単語を構成する文字列）を抽出する（ステップＳ１１）。索引管理部５４は、抽出された文字列（キャラクタコード列）の変換を文字列変換部５６に要求する。これを受けて文字列変換部５６は、要求された文字列（キャラクタコード列）を構成する各文字（キャラクタコード）を、変換規則記憶部５８に格納されている変換規則４３に従い、当該変換規則４３の示すタイプの文字（キャラクタコード）、つまり代表文字に変換する（ステップＳ１２）。
【００３７】
ここで、データベース４２に登録されるべき文書が図２に示される文書＃１であり、当該文書＃１から抽出された文字列が、「ＡＢＣ」であるものとする。この場合、文字列変換部５６は、文字列「ＡＢＣ」を構成する文字「Ａ」「Ｂ」「Ｃ」を、それぞれ変換規則４３で定められたタイプ（例えば英大文字）の代表文字「Ａ」「Ｂ」「Ｃ」に変換する。つまり文字列変換部５６は、文字列「ＡＢＣ」を文字列「ＡＢＣ」に変換する。この例では、変換後の文字列は、変換前の文字列に一致する。
【００３８】
同様に、データベース４２に登録されるべき文書が図２に示される文書＃２であり、当該文書＃２から抽出された文字列が、「ａｂｃ」であるものとする。この場合、文字列変換部５６は、文字列「ａｂｃ」を構成する文字「ａ」「ｂ」「ｃ」を、それぞれ変換規則４３で定められたタイプ（英大文字）の代表文字「Ａ」「Ｂ」「Ｃ」に変換する。つまり文字列変換部５６は、文字列「ａｂｃ」を文字列「ＡＢＣ」に変換する。なお、抽出された文字列が例えば「Ａｂｃ」である場合も、文字列「ＡＢＣ」に変換される。
【００３９】
文字列変換部５６は、変換結果、つまり変換後の文字列を索引管理部５４に渡す。索引管理部５４は、文字列変換部５６から変換後の文字列を受け取ると、当該変換後の文字列と、変換前の文字列が存在している文書の文書ＩＤとに基づき索引レコードＲｉを作成する（ステップＳ１３）。即ち索引管理部５４は、変換後の文字列が文字列フィールドＦ１に設定され、変換前の文字列が存在している文書の文書ＩＤが文書位置フィールドＦ２に設定された索引レコードＲｉを作成する。索引管理部５４は、作成された索引レコードＲｉを、データベース４２内の索引部４２２に格納されている索引４２３に追加する（ステップＳ１４）。
【００４０】
次に索引管理部５４は、文書登録／更新部５３によってデータベース４２内の文書部４２１に登録されるべき文書に存在する全ての索引レコード化の対象となる文字列について処理したかを判定する（ステップ１５）。もし、未処理の文字列が存在するならば、索引管理部５４は上記ステップＳ１１に戻って、当該未処理の文字列を抽出する。
【００４１】
これに対して、未処理の文字列が存在しないならば、索引管理部５４は索引作成処理（ステップＳ１）を終了し、その旨を文書登録／更新部５３に通知する。すると文書登録／更新部５３は、索引管理部５４による索引作成処理（ステップＳ１）の対象となっていた文書をデータベース４２（内の文書部４２１）に格納するための格納処理を行う（ステップＳ２）。ここでは、データベース４２に格納される文書自体に対しては、文字列変換部５６による代表文字への変換は行われない。したがって、図２の文書＃２の場合、当該文書＃２上の文字列「ａｂｃ」は、その「ａｂｃ」のままで、データベース４２に格納される。なお、索引管理部５４による索引作成処理に先行して文書登録／更新部５３による文書登録処理が行われても、或いは、両処理が並行して行われても構わない。
【００４２】
＜テキスト検索処理＞
次に、本実施形態におけるテキスト検索処理について、図５のフローチャートを参照して説明する。
【００４３】
今、ユーザがクライアント端末２０を操作することにより、当該クライアント端末２０からテキスト検索システム５０に対して検索要求が送出されたものとする。この検索要求は検索条件として検索種別と検索文字列（キーワード）とを含む。検索種別は、同一視検索または非同一視検索のいずれの検索を行うかを指定する。
【００４４】
要求処理部５２は、クライアント端末２０からの検索要求を受け取ると、当該検索要求を検索部５５に渡す。検索部５５は、クライアント端末２０からの検索要求を要求処理部５２を介して受け取るとテキスト検索処理を開始する。まず検索部５５内の同一視検索部５５２は、検索要求で指定された検索種別に無関係に、当該検索要求で指定された検索文字列の変換を文字列変換部５６に要求する。
【００４５】
文字列変換部５６は、同一視検索部５５２から要求された検索文字列を構成する各文字を、変換規則記憶部５８に格納されている変換規則４３に従い、当該変換規則４３の示すタイプの文字（代表文字）に変換する（ステップＳ２１）。文字列変換部５６は、変換後の検索文字列を同一視検索部５５２に渡す。
【００４６】
同一視検索部５５２は、変換後の検索文字列を文字列変換部５６から受け取ると、当該変換後の検索文字列を同一視検索のための検索文字列として用いることにより、当該検索文字列（変換後の検索文字列）に一致する文字列フィールドＦ１を含む索引レコードＲｉの群を索引４２３から検索する（ステップＳ２２）。すると要求処理部５２内の判定部５５１は検索種別判定部（後述する検索種別判定部５５１ａに相当）として機能して、検索要求で指定された検索種別が同一視検索であるかを判定する（ステップＳ２３）。
【００４７】
もし、検索要求で指定された検索種別が同一視検索であるならば（ステップＳ２３）、判定部５５１はその旨を同一視検索部５５２に通知する。すると同一視検索部５５２は、ステップＳ２２で検索された索引レコードＲｉの群の文書位置フィールドＦ２によって示される文書ＩＤの文書の群を検索結果とする（ステップＳ２４）。
【００４８】
これに対し、検索要求で指定された検索種別が同一視検索でないならば（ステップＳ２３）、即ち非同一視検索であるならば、判定部５５１はその旨を非同一視検索部５５３に通知する。
【００４９】
すると非同一視検索部５５３は、データベース４２内の文書部４２１に格納されている文書の集合のうち、同一視検索部５５２によって検索された索引レコードＲｉの群の文書位置フィールドＦ２によって示される文書ＩＤの文書の群だけを非同一視検索の対象とする文書（以下、非同一視検索候補文書と称する）の群として、非同一視検索を行う（ステップＳ２５）。
【００５０】
非同一視検索では、例えばアルファベットの小文字の文字列「ａｂｃ」とアルファベットの大文字の文字列「ＡＢＣ」とは異なる文字列として扱う必要がある。そこで、上記ステップＳ２５において非同一視検索部５５３は、非同一視検索候補文書（同一視検索部５５２によって検索された文書）の群の内容をデータベース４２内の文書部４２１から読み込んで参照することにより、更に具体的に述べるならば、当該文書の群の内容と検索要求で指定された検索文字列（つまり変換前の検索文字列）とを比較することにより、当該検索文字列が存在する部分を検索する。
【００５１】
非同一視検索部５５３は、非同一視検索候補文書の群のうち、変換前の検索文字列に一致する部分が存在する文書のみを検索結果とする（ステップＳ２６）。ここで、非同一視検索候補文書の群のうちの残りの文書、即ち変換前の検索文字列に一致する部分が存在しない文書は検索結果から除外される。  
ステップＳ２４またはＳ２６での検索結果は、要求処理部５２及びネットワーク３０を介してクライアント端末２０に通知される。
【００５２】
このように本実施形態においては、非同一視検索が、同一視検索で検索された索引レコードＲｉの群の文書位置フィールドＦ２によって示される文書ＩＤの文書の群だけを対象に行われる。つまり本実施形態においては、同一視検索結果を利用することで、非同一視検索の対象とされるべき文書の候補を絞ることができる。これにより本実施形態によれば、非同一視検索のための索引を用いないにも拘わらずに、一般に処理コストが高い非同一視検索のための文書内での検索回数を削減することができる。よって本実施形態においては、索引を格納するのに必要な記憶領域のサイズを抑制しつつ、非同一視検索を高速化することができる。
【００５３】
［変形例］
上記実施形態によれば、非同一視検索候補文書の群を、同一視検索で求められた文書の群に絞ることができる。しかし、非同一視検索候補文書を更に絞ることも可能である。そこで、非同一視検索候補文書を上記実施形態よりも更に絞ることを可能とする上記実施形態の変形例について、図１及び図３を援用して説明する。但し、索引４２３に代えて索引４２４が用いられるものとする。必要があれば、図１及び図３において、索引４２３を索引４２４に読み替えられたい。
【００５４】
図６は、索引部４２２内の索引４２４のデータ構造を文書部４２１内の文書と関連付けて示す。図６において、図２と同様の部分には同一符号を付してある。索引４２４が図２に示される索引４２３と相違するのは、索引レコードＲｉの構造である。索引４２４の索引レコードＲｉは、図６に示されるように、文字列フィールドＦ１と文書位置フィールドＦ２とに加えて、例えば１ビットの差異フラグフィールドＦ３を含む。差異フラグフィールドＦ３には、当該フィールドＦ３と組をなす文字列フィールドＦ１に保持される文字列（つまり変換規則４３に基づく変換後の文字列）と元の文字列（つまり変換前の文字列）との間に差異が有るかを示すフラグビット（差異フラグ）が保持される。本実施形態において、このフラグビットは“１”のとき「差異有り（不一致）」を示し、“０”のとき「差異無し（一致）」を示す。
【００５５】
図６の例では、図２と同様に、文書部４２１に、文書ＩＤが「１」の文書＃１及び文書ＩＤが「２」の文書＃２を含む文書の集合が格納されている。文書＃１には文字列「ＡＢＣ」が存在し、文書＃２には文字列「ａｂｃ」が存在する。
【００５６】
また、索引部４２２に格納される索引４２４は、文書＃１上の文字列「ＡＢＣ」に対応する索引レコードＲ１及び文書＃２上の文字列「ａｂｃ」に対応する索引レコードＲ２を含む。索引レコードＲ１及びＲ２の文字列フィールドＦ１には、いずれも文字列「ＡＢＣ」が保持される。また、索引レコードＲ１及びＲ２の文書位置フィールドＦ２には、それぞれ文書＃１及び＃２の文書ＩＤが保持される。そして索引レコードＲ１及びＲ２の差異フラグフィールドＦ３には、それぞれフラグビット（差異フラグ）として“０”及び“１”が保持される。なお、文書部４２１に登録されるべき文書から抽出された文字列が例えば「Ａｂｃ」である場合、当該文字列に対応する索引レコードＲｉの差異フラグフィールドＦ３には“１”が保持される。
【００５７】
図７は、本変形例で適用される判定部５５１の構成を示すブロック図である。本変形例において判定部５５１は、検索種別判定部５５１ａ及び検索文字列判定部５５１ｂを含む。検索種別判定部５５１ａは、検索要求で指定された検索が、同一視検索または非同一視検索のいずれであるかを判定する。検索文字列判定部５５１ｂは、検索要求で指定された検索文字列（つまり変換前の文字列）と変換後の文字列とが一致するかを判定する。
【００５８】
＜索引作成処理＞
次に、本変形例における索引作成処理の上記実施形態と相違する部分について、図８のフローチャートを参照して説明する。
【００５９】
本変形例における索引作成処理が、上記実施形態と相違するのは、文書部４２１に登録されるべき文書から抽出された文字列を構成する各文字が、変換規則４３で定められたタイプ（英大文字）の代表文字に変換されるステップＳ１２（図４参照）の後の索引管理部５４の動作である。つまり本変形例では、上記実施形態におけるステップＳ１３に代えて、以下のステップＳ１３ａ乃至Ｓ１３ｃが実行される。ステップＳ１２までの処理及びステップＳ１３ａ乃至Ｓ１３ｃより後の処理（ステップＳ１４以降の処理）については、図４のフローチャートを参照されたい。
【００６０】
索引管理部５４は、文字列変換部５６から変換後の文字列を受け取ると、当該変換後の文字列を変換前の文字列と比較することにより、両文字列の間に差異が有るかを判定する（ステップＳ１３ａ）。もし、差異が有るならば（ステップＳ１３ａ）、索引管理部５４は、差異有りを示す判定結果と、変換後の文字列と、変換前の文字列が存在している文書の文書ＩＤとに基づき索引レコードＲｉを作成する（ステップＳ１３ｂ）。ここでは、索引レコードＲｉの差異フラグフィールドＦ３に“１”が設定される。
【００６１】
これに対し、差異が無いならば（ステップＳ１３ａ）、索引管理部５４は、差異無しを示す判定結果と、変換後の文字列と、変換前の文字列が存在している文書の文書ＩＤとに基づき索引レコードＲｉを作成する（ステップＳ１３ｃ）。ここでは、索引レコードＲｉの差異フラグフィールドＦ３に“０”が設定される。
【００６２】
なお、文字列変換部５６が、変換前の文字列を構成する各文字が代表文字であるかを判定し、代表文字である場合には変換動作を行わずに、当該変換前の文字列をそのまま変換後の文字列として決定する機能を有していてもよい。この場合、索引管理部５４は、変換後の文字列を変換前の文字列と比較する代わりに、文字列変換部５６が文字列を変換したかを当該文字列変換部５６に問い合わせればよい。
【００６３】
索引管理部５４は、ステップＳ１３ｂまたは１３ｃで索引レコードＲｉを作成すると、上記実施形態においてステップＳ１３を実行した場合と同様にステップＳ１４（図４参照）に進んで、当該作成された索引レコードＲｉを、データベース４２内の索引部４２２に格納されている索引４２４に追加する。
【００６４】
＜テキスト検索処理＞
次に、本変形例におけるテキスト検索処理について、図９のフローチャートを参照して説明する。なお、図９において、図５のフローチャートと同一のステップには同一符号を付してある。
【００６５】
今、要求処理部５２が、クライアント端末２０から送出された検索要求を受け取って、当該検索要求を検索部５５に渡したものとする。すると検索部５５内の同一視検索部５５２は、クライアント端末２０からの検索要求で指定された検索文字列の変換を文字列変換部５６に要求する。
【００６６】
文字列変換部５６は、同一視検索部５５２から要求された検索文字列を構成する各文字を、変換規則４３の示すタイプの文字（代表文字）に変換する（ステップＳ２１）。同一視検索部５５２は、文字列変換部５６による変換後の検索文字列を同一視検索のための検索文字列として用いることにより、当該検索文字列（変換後の検索文字列）に一致する文字列フィールドＦ１を含む索引レコードＲｉの群を索引４２４から検索する（ステップＳ２２）。すると要求処理部５２内の判定部５５１（に含まれている検索種別判定部５５１ａ）は、検索要求で指定された検索種別が同一視検索であるかを判定する（ステップＳ２３）。
【００６７】
もし、検索要求で指定された検索種別が同一視検索であるならば（ステップＳ２３）、判定部５５１はその旨を同一視検索部５５２に通知する。すると同一視検索部５５２は、ステップＳ２２で検索された索引レコードＲｉの群の文書位置フィールドＦ２によって示される文書ＩＤの文書の群を検索結果とする（ステップＳ２４）。
【００６８】
ここまでの動作は、上記実施形態と同様である（図５のフローチャート参照）。これに対し、検索要求で指定された検索種別が同一視検索でない場合（ステップＳ２３）、即ち非同一視検索である場合の動作は、以下に述べるように上記実施形態と異なる。
【００６９】
まず判定部５５１内の検索種別判定部５５１ａは、検索要求で指定された検索種別が非同一視検索である場合、当該判定部５５１内の検索文字列判定部５５１ｂを起動する。すると検索文字列判定部５５１ｂは、文字列変換部５６による変換前の検索文字列と文字列変換部５６による変換後の検索文字列とが一致するかを判定する（ステップＳ３１）検索文字列判定部５５１ｂは、このステップＳ３１での判定結果を非同一視検索部５５３に通知する。
【００７０】
ここで、変換前の検索文字列と変換後の検索文字列とが一致している第１の場合（ステップＳ３１がＹＥＳ）、同一視検索部５５２によって検索された索引レコードＲｉの群のうち、差異フラグが“１”の索引レコードＲｉの文字列フィールドＦ１に設定されている文字列の変換前の文字列は、上記変換前の検索文字列とは相違することに注意する。つまり、第１の場合、同一視検索部５５２によって検索された索引レコードＲｉの群の示す文書のうち、差異フラグが“１”の索引レコードＲｉによって示される文書は非同一視検索結果にはなり得ない。
【００７１】
一方、変換前の検索文字列と変換後の検索文字列とが一致していない第２の場合（ステップＳ３１がＮＯ）、上記検索された索引レコードＲｉの群のうち、差異フラグが“０”の索引レコードＲｉの文字列フィールドＦ１に設定されている文字列の変換前の文字列は、上記変換前の検索文字列とは相違することに注意する。つまり、第２の場合、同一視検索部５５２によって検索された索引レコードＲｉの群の示す文書のうち、差異フラグが“０”の索引レコードＲｉによって示される文書は非同一視検索結果にはなり得ない。
【００７２】
そこで非同一視検索部５５３は、第１の場合（ステップＳ３１がＹＥＳ）、上記検索された索引レコードＲｉの群から、差異フラグフィールドＦ３に設定されている差異フラグが“１”の索引レコードＲｉを除外する（ステップＳ３２）。そして非同一視検索部５５３は、除外されなかった索引レコードＲｉの群（つまり残りの索引レコードＲｉの群）の文書位置フィールドＦ２によって示される文書ＩＤの文書の群を検索結果とする（ステップＳ３３）。明らかなように、残りの索引レコードＲｉの群は、検索された索引レコードＲｉの群のうち、差異フラグが“０”の索引レコードＲｉの群である。
【００７３】
このように本変形例においては、第１の場合、即ち変換前の検索文字列と変換後の検索文字列とが一致している場合には、非同一視検索のための索引を用いないにも拘わらず、文書（同一視検索で検索された索引レコードＲｉの群の文書位置フィールドＦ２によって示される文書ＩＤの文書）内から検索文字列を検索しなくて済む。
【００７４】
一方、第２の場合（ステップＳ３１がＮＯ）、非同一視検索部５５３は、上記検索された索引レコードＲｉの群から、差異フラグフィールドＦ３に設定されている差異フラグが“０”の索引レコードＲｉを除外する（ステップＳ３４）。そして非同一視検索部５５３は、データベース４２内の文書部４２１に格納されている文書の集合のうち、ステップＳ３４で除外されなかった索引レコードＲｉの群（残りの索引レコードＲｉの群）の文書位置フィールドＦ２によって示される文書ＩＤの文書の群だけを非同一視検索候補文書として、非同一視検索を行う（ステップＳ３５）。
【００７５】
明らかなように、残りの索引レコードＲｉの群は、検索された索引レコードＲｉの群のうち、差異フラグが“１”の索引レコードＲｉの群である。上記ステップＳ３５において非同一視検索部５５３は、上記実施形態のステップＳ２５と同様に、非同一視検索候補文書の群の内容をデータベース４２内の文書部４２１から読み込み、当該文書の群の内容と検索要求で指定された検索文字列（変換前の検索文字列）とを比較することにより、当該検索文字列が存在する部分を検索する。  
非同一視検索部５５３は、非同一視検索候補文書の群のうち、変換前の検索文字列に一致する部分が存在する文書のみを検索結果とする（ステップＳ３６）。
【００７６】
このように本変形例においては、第２の場合、即ち変換前の検索文字列と変換後の検索文字列とが一致していない場合には、非同一視検索が、同一視検索で検索された索引レコードＲｉの群によって示される文書の群のうち、差異フラグが“０”の索引レコードＲｉによって示される文書だけを対象に行われる。つまり本変形例においては、同一視検索結果と、同一視検索で検索された索引レコードＲｉの群の差異フラグとを利用することで、非同一視検索の対象とされるべき文書の候補を上記実施形態よりも更に絞ることができる。これにより本変形例によれば、非同一視検索のための索引を用いないにも拘わらずに、非同一視検索のための文書内での検索回数を上記実施形態よりも更に削減することができる。
【００７７】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態及びその変形例では、データベース４２（内の文書部４２１）に格納された文書（テキストデータ）を検索することを前提としている。しかし本発明は、例えばファイルシステムにおけるファイル検索にも適用することが可能である。
【００７８】
また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００７９】
【図１】本発明の一実施形態に係るテキスト検索システムを含むクライアント−サーバシステムのハードウェア構成を示すブロック図。
【図２】同実施形態で適用される索引部内の索引のデータ構造を、文書部内の文書と関連付けて示す図。
【図３】図１に示されるテキスト検索システムの主として機能構成を示すブロック図。
【図４】同実施形態における文書登録処理の手順を示すフローチャート。
【図５】同実施形態におけるテキスト検索処理の手順を示すフローチャート。
【図６】上記実施形態の変形例で適用される索引部内の索引のデータ構造を、文書部内の文書と関連付けて示す図。
【図７】同変形例で適用される判定部の構成を示すブロック図
【図８】同変形例における索引作成処理の上記実施形態と相違する部分の手順を示すフローチャート。
【図９】同変形例におけるテキスト検索処理の手順を示すフローチャート。
【符号の説明】
【００８０】
１０…データベースサーバ、２０…クライアント端末、３０…ネットワーク、４０…２次記憶装置、４１…データベース管理プログラム、４２…データベース、４３…変換規則、５０…テキスト検索システム、５１…データベース管理システム（ＤＢＭＳ）、５２…要求処理部、５３…文書登録／更新部、５４…索引管理部、５５…検索部、５６…文字列変換部、５７…データベース操作部、４２１…文書部（テキスト記憶手段）、４２２…索引部（索引記憶手段）、４２３，４２４…索引、５５１…判定部、５５１ａ…検索種別判定部、５５１ｂ…検索文字列判定部、５５２…同一視検索部、５５３…非同一視検索部、Ｒ１，Ｒ２…索引レコード、Ｆ１…文字列フィールド、Ｆ２…文書位置フィールド、Ｆ３…差異フラグフィールド。
【図１】
0004734363.tif 000002
【図２】
0004734363.tif 000003
【図３】
0004734363.tif 000004
【図４】
0004734363.tif 000005
【図５】
0004734363.tif 000006
【図６】
0004734363.tif 000007
【図７】
0004734363.tif 000008
【図８】
0004734363.tif 000009
【図９】
0004734363.tif 000010