(57)【特許請求の範囲】
【請求項１】
検索処理において参照される情報であって、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられた対応情報を生成するコンピュータに、
対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出し、
前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記対応情報に登録する、
処理を実行させるための生成プログラム。
【請求項２】
前記コンピュータに、さらに、
少なくとも前記第２の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報、および、少なくとも前記第４の文字情報における末尾の文字情報と前記他の言語単位に後続する言語単位に対する他の文字情報の冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記対応情報に登録する、
処理を実行させることを特徴とする請求項１に記載の生成プログラム。
【請求項３】
前記対象ファイル内に、前記第１の文字情報、前記第２の文字情報、前記第３の文字情報、前記第４の文字情報、前記他の文字情報の順で文字情報が含まれている、
ことを特徴とする請求項１または請求項２に記載の生成プログラム。
【請求項４】
前記第１の表記はルビの親文字での表記であり、前記第２の表記はルビ文字での表記である、
ことを特徴とする請求項１〜３のいずれか１項に記載の生成プログラム。
【請求項５】
前記コンピュータに、さらに、
前記対応情報における前記文字情報を照合文字情報とし、前記ある言語単位の照合として、前記第１の文字情報と前記照合文字情報における第１の対象文字情報との第１の照合処理および前記第２の文字情報と前記照合文字情報における前記第１の対象文字情報との第２の照合処理を行ない、前記第１の照合処理の結果を示す第１状態情報および前記第２の照合処理の結果を示す第２の状態情報を生成し、
少なくとも前記第１の状態情報および前記第２の状態情報のうち照合処理の結果が一致することを示す一方の状態情報に基づいて、前記第３の文字情報と前記照合文字情報において前記第１の対象文字情報に後続する第２の対象文字情報との照合処理を行なう、
処理を実行させることを特徴とする請求項１〜４のいずれか１項に記載の生成プログラム。
【請求項６】
前記コンピュータに、さらに、
前記対象ファイルから前記指示の読み出しに応じて、前記指示の読み出し前までに行なわれた照合の結果を示す状態情報を複製する、
処理を実行させ、
前記第１の照合処理は、複製して得られた一方の状態情報に基づいて行なわれ、前記第２の照合処理は、複製して得られた他方の状態情報に基づいて行なわれる、
ことを特徴とする請求項５に記載の生成プログラム。
【請求項７】
前記状態情報は複数桁のアドレスによって示される記憶領域に格納され、
前記状態情報を複製する処理は、前記複数桁のうちの状態情報の複製回数に応じた桁が第１値である第１のアドレスによって示される前記記憶領域のうちの第１の記憶領域から前記桁が第２値である第２のアドレスによって示される前記記憶領域のうちの第２の記憶領域に前記状態情報を複製する、
ことを特徴とする請求項６に記載の生成プログラム。
【請求項８】
前記コンピュータに、さらに、
前記第１の状態情報および前記第２の状態情報のうちの他方の状態情報に基づいて、前記第３の文字情報と前記第２の対象文字情報との照合処理を行なう、
処理を実行させることを特徴とする請求項６または請求項７に記載の生成プログラム。
【請求項９】
検索処理において参照される情報であって、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられた対応情報を生成するコンピュータによって実行される生成方法において、
前記コンピュータが、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出し、
前記コンピュータが、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字情報に対応付けて前記対応情報に登録する、
ことを特徴とする生成方法。
【請求項１０】
検索処理において参照される情報であって、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられた対応情報を記憶する記憶部と、
対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出し、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記対応情報に登録する生成部と、
を有することを特徴とする生成装置。
【請求項１１】
コンピュータに、
検索文字列に含まれる検索対象文字情報を抽出し、
文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられたインデックス情報が記憶された記憶部を参照して、抽出した前記検索対象文字情報に対応する存否を示す情報を前記インデックス情報から取得することであって、前記インデックス情報は、前記インデックス情報を生成するコンピュータによって、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出する処理と、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記インデックス情報に登録する処理が実行されることによって生成されたものであり、
取得した前記検索対象文字情報に対応する存否を示す情報が検索対象文字情報を含むことを示すファイルに対して前記検索文字列に基づく文字列検索を行なう、
処理を実行させるための検索プログラム。
【請求項１２】
コンピュータによって実行される検索方法において、
前記コンピュータが、検索文字列に含まれる検索対象文字情報を抽出し、
前記コンピュータが、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられたインデックス情報が記憶された記憶部を参照して、抽出した前記検索対象文字情報に対応する存否を示す情報を前記インデックス情報から取得することであって、前記インデックス情報は、前記インデックス情報を生成するコンピュータによって、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出する処理と、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記インデックス情報に登録する処理が実行されることによって生成されたものであり、
前記コンピュータが、取得した前記検索対象文字情報に対応する存否を示す情報が前記検索対象文字情報を含むことを示す前記ファイルに対して前記検索文字列に基づく文字列検索を行なう、
ことを特徴とする検索方法。
【請求項１３】
検索文字列に含まれる検索対象文字情報を抽出する抽出部と、
文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられたインデックス情報を記憶する記憶部であって、前記インデックス情報は、前記インデックス情報を生成するコンピュータによって、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出する処理と、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記インデックス情報に登録する処理が実行されることによって生成されたものであり、
前記記憶部に記憶された前記インデックス情報から、抽出した前記検索対象文字情報に対応する存否を示す情報を取得し、取得した前記検索対象文字情報に対応する存否を示す情報が前記検索対象文字情報を含むことを示すファイルを文字列検索の対象とする絞込部と、
前記文字列検索の対象とされた前記ファイルに対して前記検索文字列に基づく文字列検索を行なう検索部と、
を含むことを特徴とする検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字情報の検索技術に関する。
【背景技術】
【０００２】
電子書籍や電子辞書などに関する全文検索や見出し検索において、検索文字列内の文字情報がファイル群のうちのいずれのファイルに含まれているかの対応関係を示すインデックス情報を用いて、検索対象ファイルを絞り込む技術がある。例えば、検索文字列にある文字情報Ｃが含まれる場合に、予め生成されたインデックス情報に文字情報Ｃを含むことが示されるファイルが、検索文字列に基づく文字列検索の検索対象となる。その一方で、前述の文字情報Ｃを含まないことがインデックス情報に示されているファイルには、文字列検索が行なわれなくとも、そのファイルが検索文字列を含まないことは明らかである。そのため、インデックス情報に文字情報Ｃを含むことが示されないファイルは、文字列検索の対象から除かれる。
【０００３】
各ファイルに対してビットを割り当て、割り当てられた各ビットの値により、文字情報がファイル群のうちのいずれのファイルに含まれているかを示すインデックス情報がある。そのインデックス情報では、ビットがファイル番号順に並んだビット列が各文字情報に対応する。ビット列中で値が「１」であるビットに対応するファイル番号のファイルには、そのビット列に対応する文字情報が存在する。一方、値が「０」であるビットに対応するファイル番号の対象ファイルには、そのビット列に対応する文字情報は存在しない。 
【０００４】
また、インデックス情報に、複数文字を含む文字情報に対して、いずれのファイルに含まれているかを示すビット列が含まれることがある。複数文字を含む文字情報は、例えば、２文字の文字情報であれば“ａｂ”、“七夕”、“夕祭”、“祭り”などがある。“ａｂｏｕｔ”という単語を含むファイルＦが存在する場合に、“ａｂ”、“ｂｏ”などの文字情報に対応するビット列中のファイルＦに対応するビットが「１」にセットされる。また、ファイルＦが“七夕祭り”という単語を含む場合に、“七夕”、“夕祭”、“祭り”のそれぞれに対応するビット列中のファイルＦに対応するビットを「１」にセットする。
【０００５】
例えば、“七夕祭り”という検索文字列でファイル群の検索が行なわれる場合には、“七夕祭り”という検索文字列に含まれる“七夕”、“夕祭”、“祭り”という文字情報のそれぞれについて、インデックス情報の対応箇所の参照が行なわれる。参照の結果、“七夕”、“夕祭”、“祭り”のいずれも含むことがインデックス情報に示される（いずれに対応するビットも「１」にセットされている）ファイルに対して、“七夕祭り”という検索文字列で文字列検索が行なわれる。
【０００６】
ｈｔｍｌなどのマークアップ言語において、文章の修飾情報（文字の大きさの指定、組版の状態など）は、テキストで表現されるタグなどを用いて指定される。修飾情報に基づいた修飾の１つとして、１つの意味を有する言語単位（単語又は文字などの言語を構成する単位）を複数の異なる表記による文字情報で併記させる修飾（例えば、ルビ付きの文字列の表示、ピン音付きの中国語の表示など）がある。マークアップ言語で記述されたテキスト内では、タグにより表記（表示位置、表示サイズなどの表示ルール）を指定される。例えば、文字列にルビを付与する場合には、ルビ文字であることが指定された表記か、ルビ文字が付される文字（親文字）であることが指定された表記かがタグにより識別される。例えば、ｈｔｍｌファイルにおいて、ファイルＦ中の「七夕祭り」という文字情報の部分は、「＜ｒｕｂｙ＞＜ｒｂ＞七夕＜／ｒｂ＞＜ｒｐ＞（＜／ｒｐ＞＜ｒｔ＞たなばた＜／ｒｔ＞＜ｒｐ＞）＜／ｒｐ＞＜ｒｂ＞祭＜／ｒｂ＞＜ｒｐ＞（＜／ｒｐ＞＜ｒｔ＞まつ＜／ｒｔ＞＜ｒｐ＞）＜／ｒｐ＞＜／ｒｕｂｙ＞り」などの記述（記述Ｄ１）で表現される。記述Ｄ１の場合、「七夕」が親文字で、「たなばた」がルビ文字である。このような表現でルビを指定することより、複数の異なる表記（「七夕」と「たなばた」、「祭り」と「まつり」）が合わせて表示される。
【０００７】
記述Ｄ１はタグ情報を除くと「七夕…たなばた…祭…まつ…り」となる。例えば、タグ情報を除いて２文字の文字情報ごとに対応するインデックス情報を生成すると、ファイルＦが“七夕”、“夕た”、“ たな”、“なば”、“ばた”、“た祭”、“祭ま”、“まつ”、“つり”のそれぞれについて、ファイルＦに対応するビットが「１」にセットされる。しかしながら、修飾情報の存在により、記述Ｄ１には、“夕祭”などの文字情報が含まれなくなっている。そのため、上述のテキストを含むファイルが「七夕祭り」などの検索文字列での検索対象として抽出されない可能性が生じる。
【０００８】
文字列検索において、ルビが付されない文字列か、親文字か、ルビ文字かを識別する情報を各文字情報（タグを除く）に対応付けておき、検索文字列の頭文字と合致する文字と同じ識別情報に対応する文字のみと、検索文字列を照合させる技術がある。照合処理により検索文字列の先頭と親文字が一致した場合には、後続の親文字までの間に存在するルビ文字との照合をスキップし、スキップされたルビ文字に後続する文字情報との照合が行なわれる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００３−３３０９１７号公報
【特許文献２】特開２０１１−１３８２３０号公報
【特許文献３】国際公開２００６−１２３４２９号公報
【特許文献４】国際公開２００８−０９０６０６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
記述Ｄ１によれば、「七夕」と「たなばた」というように、親文字とルビ文字とを併記させるので、表示される文字情報においては、「たなばた」と「祭り」も連続するし、「七夕」と「まつり」も連続する。しかしながら、ファイルＦの記述Ｄ１からタグ情報を除いたテキスト「七夕…たなばた…祭…まつ…り」においては、「た祭」や「夕ま」は含まれない。そのため、インデックス情報の生成で、ルビに関する指定が含まれる記述の一部（「たなばた」及び「まつ」もしくは「七夕」及び「祭」）をスキップしても、検索文字列が「たなばた祭り」や「七夕まつり」であると、ファイルＦが検索対象として絞り込まれなくなってしまう。
【００１１】
本開示の一側面において、複数表記を併記させる指示を連続して含むファイルが、ファイルに基づき表示させると連続して示される文字情報を含む検索文字列の検索対象から除かれることの抑制を目的とする。
【課題を解決するための手段】
【００１２】
開示の生成プログラムは、検索処理において参照される情報であって、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられた対応情報を生成するコンピュータに、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出し、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記対応情報に登録する、処理を実行させる。 
【００１３】
開示の生成方法は、検索処理において参照される情報であって、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられた対応情報を生成するコンピュータによって実行される生成方法において、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出し、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字情報に対応付けて前記対応情報に登録する、方法である。 
【００１４】
開示の生成装置は、検索処理において参照される情報であって、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられた対応情報を記憶する記憶部と、
対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出し、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記対応情報に登録する生成部と、を有する。 
【００１５】
開示の検索プログラムは、コンピュータに、検索文字列に含まれる検索対象文字情報を抽出し、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられたインデックス情報が記憶された記憶部を参照して、抽出した前記検索対象文字情報に対応する存否を示す情報を前記インデックス情報から取得することであって、前記インデックス情報は、前記インデックス情報を生成するコンピュータによって、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出する処理と、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記インデックス情報に登録する処理が実行されることによって生成されたものであり、取得した前記検索対象文字情報に対応する存否を示す情報が検索対象文字情報を含むことを示すファイルに対して前記検索文字列に基づく文字列検索を行なう、処理を実行させる。 
【００１６】
開示の検索方法は、コンピュータによって実行される検索方法において、検索文字列に含まれる検索対象文字情報を抽出し、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられたインデックス情報が記憶された記憶部を参照して、抽出した前記検索対象文字情報に対応する存否を示す情報を前記インデックス情報から取得することであって、前記インデックス情報は、前記インデックス情報を生成するコンピュータによって、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出する処理と、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記インデックス情報に登録する処理が実行されることによって生成されたものであり、取得した前記検索対象文字情報に対応する存否を示す情報が前記検索対象文字情報を含むことを示す前記ファイルに対して前記検索文字列に基づく文字列検索を行なう、方法である。 
【００１７】
開示の検索装置は、検索文字列に含まれる検索対象文字情報を抽出する抽出部と、文字情報とファイル内での前記文字情報の存否を示す情報とが対応付けられたインデックス情報を記憶する記憶部であって、前記インデックス情報は、前記インデックス情報を生成するコンピュータによって、対象ファイルに、ある言語単位に対する第１の表記である第１の文字情報と前記ある言語単位に対する第２の表記である第２の文字情報とを併記させるための指示が含まれ、かつ、前記ある言語単位に後続する他の言語単位に対する第３の表記である第３の文字情報と前記他の言語単位に対する第４の表記である第４の文字情報とを併記させるための指示が含まれていることを検出する処理と、前記存否を示す情報として、少なくとも前記第１の文字情報における末尾の文字情報と前記第３の文字情報における冒頭の文字情報とが連続した文字列情報が前記対象ファイルに含まれることを示す情報を前記文字列情報に対応付けて前記インデックス情報に登録する処理が実行されることによって生成されたものであり、前記記憶部に記憶された前記インデックス情報から、抽出した前記検索対象文字情報に対応する存否を示す情報を取得し、取得した前記検索対象文字情報に対応する存否を示す情報が前記検索対象文字情報を含むことを示すファイルを文字列検索の対象とする絞込部と、前記文字列検索の対象とされた前記ファイルに対して前記検索文字列に基づく文字列検索を行なう検索部と、を含む。 
【発明の効果】
【００１８】
本開示の一側面において、複数表記を併記させる指示を連続して含むファイルが、ファイルに基づき表示させると連続して示される文字情報を含む検索文字列の検索対象から除かれることを抑制する。
【図面の簡単な説明】
【００１９】
【図１Ａ−Ｂ】図１Ａ及びＢは、インデックス情報と、インデックス情報に基づき生成されるビット列との例を示す。
【図２】図２は、コンピュータ１の機能ブロックの例を示す。
【図３】図３は、生成部１３の機能ブロックの例を示す。
【図４】図４は、ファイル番号とファイルパスとの対応関係を示す。
【図５】図５は、絞込部１５の機能ブロックの例を示す。
【図６Ａ−Ｃ】図６Ａ−Ｃは、インデックス生成に用いるオートマトンの例を示す。
【図７Ａ】図７Ａは、オートマトンを用いた判定処理の説明図である。
【図７Ｂ】図７Ｂは、オートマトンを用いた判定処理の説明図である。
【図７Ｃ】図７Ｃは、オートマトンを用いた判定処理の説明図である。
【図８】図８は、コンピュータ１のハードウェア構成の例を示す。
【図９】図９は、コンピュータ１で動作するソフトウェアの構成例を示す。
【図１０】図１０は、インデックス生成の処理手順例を示す。
【図１１】図１１は、検索処理の処理手順例を示す。
【図１２】図１２は、インデックス参照の処理手順例を示す。
【図１３】図１３は、検索文字列との一致箇所を示すリストの例を示す。
【図１４Ａ】図１４Ａは、文字情報ＣｊがファイルＦｉに含まれるか否かの判定処理手順の例を示す。
【図１４Ｂ】図１４Ｂは、文字情報ＣｊがファイルＦｉに含まれるか否かの判定処理手順の例を示す。
【図１５Ａ】図１５Ａは、ファイルＦｉ内に含まれる文字情報を抽出する抽出処理の説明図である。
【図１５Ｂ】図１５Ｂは、ファイルＦｉ内に含まれる文字情報を抽出する抽出処理の説明図である。
【図１５Ｃ】図１５Ｃは、ファイルＦｉ内に含まれる文字情報を抽出する抽出処理の説明図である。
【図１６Ａ−Ｂ】図１６Ａ及びＢは、インデックス生成に用いるオートマトンの例を示す。
【図１７Ａ】図１７Ａは、オートマトンを用いた判定処理の説明図である。
【図１７Ｂ】図１７Ｂは、オートマトンを用いた判定処理の説明図である。
【図１８】図１８は、オートマトンを用いた判定処理の説明図である。
【図１９】図１９は、オートマトンのデータ構造例を示す。
【図２０】図２０は、オートマトンの生成手順の例を示す。
【発明を実施するための形態】
【００２０】
まず、インデックス情報を用いた検索対象ファイルの絞り込みついて、説明する。
【００２１】
図１Ａは、検索対象のファイル群Ｆ１〜Ｆｎに基づくインデックス情報Ｉ１を示す。図１Ａに示すインデックス情報Ｉ１中、最上行がファイル番号を示す。ファイル番号は、検索対象のファイル群Ｆ１〜Ｆｎそれぞれに対応する番号である。インデックス情報Ｉ１において、文字情報群Ｃ１〜Ｃｍのそれぞれが、ファイル群Ｆ１〜Ｆｎにおける存否に関するビット列と対応付けられる。
【００２２】
文字情報群Ｃ１〜Ｃｍに含まれる文字情報Ｃｊは、例えば、１文字もしくは複数の文字の組み合わせによる文字列である。もしくは、文字情報Ｃｊは、文字情報に対応するバイナリコードの一部分でもよい。例えば、文字情報群Ｃ１〜Ｃｍは、使用が想定される文字（たとえばＪＩＳコードが割り当てられている文字）から所定数の文字を組み合わせた全通りの組み合わせを含む。また、例えば、文字情報群Ｃ１〜Ｃｍは、使用頻度の高い基礎的な単語を含む。
【００２３】
例えば、ファイル群Ｆ１〜ＦｎのうちのあるファイルＦｉ（ファイル番号はｉ）が、「七夕祭り」という文字列を含むファイルであるとする。その場合、ファイルＦｉは、「七」、「夕」、「祭」、「り」という文字情報を含むファイルであり、「七夕」、「夕祭」、「祭り」という文字情報を含むファイルでもある。本実施形態においては、文字情報群Ｃ１〜Ｃｍのそれぞれが２文字の文字情報である場合を例示する。
【００２４】
文字情報Ｃｊがファイル群Ｆ１〜Ｆｎのいずれに含まれるかは、１〜ｎのそれぞれの数ｉについて、文字情報ＣｊとファイルＦｉとに対応する記憶領域に、文字情報ＣｊがファイルＦｉに含まれるか否かに関する情報が記憶されることで示される。例えば、インデックス情報Ｉ１において、ファイルＦｉに文字情報Ｃｊが含まれるか否かに関する存否情報の格納先のアドレスは、文字情報Ｃｊに対応するバイナリコードをハッシュ関数に代入して得られるアドレスＰｊと、ファイル番号ｉにより示される。例えば、文字情報「七夕」に対応するバイナリコード（ＪＩＳに基づく文字コード）であれば、０ｘ３Ｃ３７４Ｄ２Ｃ（０ｘは１６進数表記を意味する）である。また、「七夕」のバイナリコードは、ＵＴＦ−１６では、０ｘ４Ｅ０３５９１５である。
【００２５】
１つの文字情報Ｃｊに対して１つのアドレスＰｊが割り当てられる場合には、文字情報Ｃｊの存否情報は、ファイルＦｉに文字情報Ｃｊが存在すれば「１」の値のビットで示され、ファイルＦｉに文字情報Ｃｊが存在しなければ、「０」の値のビットで示される。複数の文字情報（例えば、文字情報Ｃｊと文字情報Ｃｋ）が１つのアドレスＰｊに割り当てられている場合もある。その場合には、存否情報は、ファイルＦｉに文字情報Ｃｊ及び文字情報Ｃｋのうちの少なくとも１つが存在すれば「１」の値のビットで示され、ファイルＦｉに文字情報Ｃｊ及び文字情報Ｃｋのいずれも存在しなければ、「０」の値のビットで示される。ちなみに、存否情報がどのように示されるかは適宜変更されてよく、値が「１」で不存在が示され、値が「０」で存在が示されてもよい。さらには、複数ビットにより存否が示されてもよい。図１Ａに示すインデックス情報においては、文字情報を含む旨は「１」の値のビットで示されている。
【００２６】
例えば、アドレスＰｊに対応する文字情報が「七夕」のみである場合には、インデックス情報Ｉ１のアドレスＰｊに示されるビット列により、「七夕」がファイル番号２，３，ｉのファイルそれぞれに含まれることが明らかになる。また、例えば、１つのアドレスＰｋに「夕祭」のみが対応する場合には、インデックス情報Ｉ１のアドレスＰｋに示されるビット列は、ファイル群Ｆ１〜Ｆｎのそれぞれについて、「夕祭」を含むか否かを示す。例えば、ファイル番号ｉ，ｎ−１のファイルは「夕祭」を含むことが示され、ファイル番号１，２，３、ｊ、ｋなどのファイルは、「夕祭」を含まないことが示される。
【００２７】
図１Ａに示すように、ファイルＦｉは、「七夕」以外の文字情報も含むため、「七夕」だけでなく、「夕祭」、「祭り」、・・・など、他の文字情報に対応する位置のビットも「１」の値を示す。また、図１Ａでは省略されているが、ファイル群Ｆ１〜Ｆｎのそれぞれについても、それぞれのファイルに含まれる文字情報に対応する位置のビットが「１」の値を示す。
【００２８】
ファイル群Ｆ１〜Ｆｎに対して検索を行なう場合に、図１Ａに示すインデックス情報Ｉ１を用いて文字列検索の対象となるファイルの絞り込みが行なわれる。例えば「七夕祭」という検索文字列を含む検索要求を受け付けたとする。検索文字列の「七夕祭」には、「七夕」という文字情報と「夕祭」という文字情報とが含まれている。この場合、文字列検索の対象となるファイルは、例えば、「七夕」に基づき算出されるアドレス（図１ＡではＰｊ）に示されるビット列と、「夕祭」に基づき算出されるアドレス（図１ＡではＰｋ）に示されるビット列とにより絞り込まれる。例えば、アドレスＰｊに対応するビット列と、アドレスＰｋに対応するビット列との論理積演算結果であるビット列Ａ１は、図１Ｂに示す通りとなる。
【００２９】
図１Ｂに示すビット列Ａ１において、「１」となるビットに対応するファイル（図１Ｂにおいては、ファイル番号ｉのファイル）が、文字列検索対象のファイルとなる。インデックス情報Ｉ１に基づき算出されるビット列Ａ１で「０」であるビットに対応するファイル、すなわち、文字情報「七夕」および「夕祭」のうちの少なくとも一方を含まないことが明らかなファイルは、検索対象から除かれる。
【００３０】
半角文字を用いた場合も同様である。例えば、ファイルＦｉが「ＢＩＯＳ（ＢＡＳＩＣ  ＩＮＰＵＴ／ＯＵＴＰＵＴ  ＳＹＳＴＥＭ）」という文字列を含むとする。すると、例えば、インデックス情報Ｉ１において、文字情報「ＩＮＰＵ」に基づき算出されたアドレスＰｊと、ファイル番号ｉに示される位置のビットが「１」を示す。また、例えば、文字情報「ＯＵＴＰ」に基づき算出されたアドレスＰｋと、ファイル番号ｉに示される位置のビットが「１」を示す。検索文字列が「ＩＮＰＵＴ／ＯＵＴＰＵＴ」であると、インデックス情報Ｉ１から、例えば、「ＩＮＰＵ」および「ＯＵＴＰ」のそれぞれに対応するビット列を取得し、それぞれのビット列の論理積により、ビット列Ａ１（図１Ｂ参照）が算出される。ビット列Ａ１に基づいて、「ＩＮＰＵ」および「ＯＵＴＰ」のうち少なくとも一方を含まないことが明らかなファイル（ビット列において値が「０」を示すファイル）は、検索対象から除かれる。
【００３１】
上述の通り、ｈｔｍｌ（ｈｙｐｅｒｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）などのマークアップ言語には、１つの意味を有する単語又は文字を複数の異なる表記による文字情報で併記させる修飾（例えば、ルビ付きの文字列の表示、ピン音付きの中国語の表示など）がある。このような修飾が用いられると、文書データ内で、同じ単語の異なる表記である複数の文字情報が連続してしまう。例えば、本来「七夕」に後続する文字情報は「祭り」又は「まつり」であるが、マークアップ言語を用いた記述Ｄ１では「七夕…たなばた…祭…まつ…り」となるため、「七夕」に後続する文字情報は「たなばた」となる。その結果、インデックス情報Ｉ１において、「七夕…たなばた…祭…まつ…り」の記述を含むファイルＦｉについての「夕祭」に対応するビットや、「夕ま」に対応するビットの値は「０」となる。そのため、例えば、「七夕祭り」や「七夕まつり」という検索文字列に基づいてファイル絞り込みを行なうと、「夕祭」も「夕ま」も含まないと判定されるため、いずれの検索文字列に基づいてもファイルＦｉは文字列検索の対象から除かれてしまう。ファイルＦｉに従って表示すれば、「七夕」と「祭り」、「たなばた」と「祭り」、「七夕」と「まつり」のいずれも、連続する文字情報であるにも関わらず、いずれの組み合わせもファイルＦｉ内に含まれないと判定される。逆に、「夕た」、「祭ま」などの文字情報は、タグ情報による指定に応じて表示すると連続しない文字情報同士が、ファイルＦｉ内で連続して存在すると判定されてしまう。
【００３２】
複数の異なる表記を併せて表示させることは、日本語の文書のみでなく、中国語の文書にも、英語の文書においても行なわれる。英語において、例えば略語に対してルビを付与することがある。
【００３３】
「ＢＩＯＳ」という略語に対して、「ＢＡＳＩＣ  ＩＮＰＵＴ／  ＯＵＴＰＵＴ  ＳＹＳＴＥＭ」などのルビが付与されることがある。その場合、ファイルＦｉは、例えば「＜ｒｕｂｙ＞＜ｒｂ＞Ｂ＜／ｒｂ＞＜ｒｐ＞（＜／ｒｐ＞＜ｒｔ＞ＢＡＳＩＣ＜／ｒｔ＞＜ｒｐ＞）＜／ｒｐ＞＜ｒｂ＞Ｉ＜／ｒｂ＞＜ｒｐ＞（＜／ｒｐ＞＜ｒｔ＞ＩＮＰＵＴ／＜／ｒｔ＞＜ｒｐ＞）＜／ｒｐ＞＜ｒｂ＞Ｏ＜／ｒｂ＞＜ｒｐ＞（＜／ｒｐ＞＜ｒｔ＞ＯＵＴＰＵＴ＜／ｒｔ＞＜ｒｐ＞）＜／ｒｐ＞＜ｒｂ＞Ｓ＜／ｒｂ＞＜ｒｐ＞（＜／ｒｐ＞＜ｒｔ＞ＳＹＳＴＥＭ＜／ｒｔ＞＜ｒｐ＞）＜／ｒｐ＞＜／ｒｕｂｙ＞」などの記述Ｄ２を含む。この場合においても、日本語と同様に、単純にタグを除くのみでは、「ＢＢＡＳＩＣＩＩＮＰＵＴ／ＯＯＵＴＰＵＴＳＳＹＳＴＥＭ」となる。タグ情報による指定に応じて表示すれば連続しない文字情報同士がファイルＦｉ内で連続して存在し、タグ情報による指定に応じて表示すれば連続する文字情報同士がファイルＦｉ内で連続せずに存在すると判断されてしまう。
【００３４】
英字４文字分の文字情報ごとに各ファイルに存在するか否かを示すインデックス情報を、「ＢＢＡＳＩＣＩＩＮＰＵＴ／ＯＯＵＴＰＵＴＳＳＹＳＴＥＭ」に基づいて生成すると、「ＩＮＰＵ」、「ＰＵＴ／」、「ＴＰＵＴ」などの文字情報が含まれる旨が示される。しかしながら、「ＣＩＯＳ」や「ＩＯＳＹ」などの文字情報は記述Ｄ２に含まれないと判断され、「ＳＳＹＳ」という文字情報は記述Ｄ２に含まれると判断される。例えば、検索文字列が「ＢＡＳＩＣ  ＩＯ  ＳＹＳＴＥＭ」である場合には、「ＣＩＯＳ」も「ＩＯＳＹ」も記述Ｄ２に含まれないと判断されているので、ファイルＦｉが文字列検索の対象から除かれる可能性がある。また、「ＢＢＡＳＩＣＩＩＮＰＵＴ／ＯＯＵＴＰＵＴＳＳＹＳＴＥＭ」（「ＳＳＹＳ」を含む）のみでなく、例えば、「ＳＴＯＬＥ（「ＳＴＯＬ」や「ＴＯＬＥ」を含む）」や「ＯＤＹＳＳＥＹ（「ＤＹＳＳ」を含む）」などがともにファイルＦｉに含まれることもある。例えば、検索文字列が「ＤＹＳＳＹＳＴＯＬＥ」だとすると、ファイルＦｉは、たとえ「ＤＹＳＳＹＳＴＯＬＥ」を含まなくても、「ＤＹＳＳ」、「ＳＳＹＳ」、「ＳＴＯＬ」、「ＴＯＬＥ」を含むために、文字列検索の対象に絞り込まれる可能性がある。
【００３５】
以下に実施形態について説明する。
【００３６】
ファイル群Ｆ１〜Ｆｎに含まれるファイルＦｉに、単語Ｖ１の複数表記（表記Ｗ１及び表記Ｗ２）の指示と、単語Ｖ１に後続する単語Ｖ１の表記Ｗ１及び表記Ｗ２の併記の指示が含まれるとする。先述の例を用いれば、表記Ｗ１がルビを振られる親文字であり、表記Ｗ２がルビ文字である。また、単語Ｖ１は、例えば、「七夕」であり、表記Ｗ１の文字情報ＣＲ１では「七夕」と表記され、表記Ｗ２の文字情報ＣＲ２では「たなばた」と表記される。さらに、単語Ｖ２は、例えば、「祭」であり、表記Ｗ１の文字情報ＣＲ３では「祭」と表記され、表記Ｗ２の文字情報ＣＲ４では「まつ」と表記される。
【００３７】
本実施形態においては、［１］文字情報ＣＲ１の末尾部分に文字情報ＣＲ３の冒頭部分が連続する文字情報、［２］文字情報ＣＲ１の末尾部分に文字情報ＣＲ４の冒頭部分が連続する文字情報、の双方をファイルＦｉから抽出する手順が実行される。また、本実施形態においては、［３］文字情報ＣＲ１の末尾部分に文字情報ＣＲ２の冒頭部分が後続する文字情報、及び［４］文字情報ＣＲ３の末尾部分に文字情報ＣＲ４の冒頭部分が後続する文字情報のいずれも抽出されない。さらに、インデックス情報において、抽出された文字情報に対応するビット列のファイルＦｉに対応するビットを「１」にセットする手順が実行される。さらに、上述の手順により生成されるインデックス情報を用いて、検索対象のファイルを絞り込む処理が行なわれる。 
【００３８】
図２は、上述の本実施形態の処理を実行するコンピュータ１の機能構成を示す。コンピュータ１は、処理部１１及び記憶部１２を含む。処理部１１は、インデックス情報を生成し、生成したインデックス情報を用いた検索を行なう。記憶部１２は、処理部１１の処理に用いられる情報（例えば、検索対象となるファイル群Ｆ１〜Ｆｎやインデックス情報など）を記憶する。
【００３９】
処理部１１は、生成部１３を含む。生成部１３は、インデックス情報を生成し、記憶部１２に記憶する。図３は、生成部１３の機能ブロックの例を示す。生成部１３は、制御部１３１、読出し部１３２および判定部１３３を含む。制御部１３１は、記憶部１２に記憶領域を確保し、ファイルＦ１からファイルＦｎを順に指定し、指定したファイルについて、読出し部１３２と判定部１３３とにそれぞれの処理を実行させる。読出し部１３２は、ファイル群Ｆ１〜Ｆｎのうち、制御部１３１により指定されたファイルＦｉを記憶部１２から読み出す。判定部１３３は、設定された文字情報群Ｃ１〜Ｃｍの各文字情報Ｃｊについて、ファイルＦｉが文字情報Ｃｊを含むか否かを判定する。この判定処理については、図６Ａ−Ｃ及び図７Ａ−Ｃを用いて後述する。ファイルＦｉが文字情報Ｃｊを含むと判定された場合に、制御部１３１は、確保した記憶領域のうち、文字情報Ｃｊ及びファイルＦｉのファイル番号ｉに基づいて算出されるアドレスに示される記憶場所に、文字情報Ｃｊを含む旨を示す情報を格納する。図４は、ファイル番号とファイルパスと対応関係を格納するテーブルＴ１の例を示す。読出し部１３２は、制御部１３１にファイル番号を指定された場合に、指定されたファイル番号とテーブルＴ１において対応するファイルパスで読み出し対象のファイルを特定する。
【００４０】
図２に示す通り、処理部１１は、さらに、検索制御部１４、絞込部１５および文字列検索部１６を含む。検索制御部１４は、絞込部１５と文字列検索部１６とを制御して、検索要求に応じた検索処理を行なう。絞込部１５は、生成部１３により生成されるインデックス情報を用いて、検索対象ファイルの絞り込みを行なう。例えば、検索制御部１４が、受け付けた検索要求に含まれる検索文字列から文字情報Ｃａを抽出して、抽出された文字情報Ｃａを絞込部１５に通知する。絞込部１５は、ファイル群Ｆ１〜Ｆｎのうち、検索制御部１４に通知された文字情報Ｃａを含まないファイルを除いたファイルのファイル番号を検索制御部１４に通知する。絞込部１５は、例えば、インデックス情報から、文字情報Ｃａに対応するビット列を読み出して、値が「１」であるビットに対応するファイル番号を通知する。検索制御部１４は、絞込部１５が絞り込んだファイル番号を文字列検索部１６に通知する。文字列検索部１６は、検索制御部１４から通知されたファイルについて、検索制御部１４が受け付けた検索要求に基づく文字列検索を行なう。
【００４１】
図５は、絞込部１５の機能ブロックの例を示す。絞込部１５は、参照部１５１および判定部１５２を含む。参照部１５１は、記憶部１２に記憶されたインデックス情報のうち、検索制御部１４から通知された文字情報Ｃａに対応する部分を読み出す。文字情報Ｃａに対応する部分を示すアドレスは、例えば、文字情報Ｃａのバイナリコードをハッシュ関数に代入して得られる。判定部１５２は、参照部１５１が読み出したビット列に基づいて、文字情報Ｃａを含まないファイルを判定し、ファイル群Ｆ１〜Ｆｎのなかで文字情報Ｃａを含まないファイルを除いてファイル番号を文字列検索部１６に通知する。例えば、ビット列に含まれるビットのうち、値が「１」であるビットに対応するファイル番号を通知する。
【００４２】
検索制御部１４は、検索文字列から複数の文字情報（例えば文字情報Ｃａ、文字情報Ｃｂ）を抽出してもよい。すると、参照部１５１は、複数の文字情報Ｃａ，Ｃｂのそれぞれについて、インデックス情報から対応するビット列を読み出す。また、判定部１５２は、文字情報Ｃａに対応するビット列に含まれる存否情報と、文字情報Ｃｂに対応するビット列に含まれる存否情報との論理積（ＡＮＤ）を算出し、その算出結果に基づいて各ファイルにおける文字情報Ｃａ，Ｃｂの存否を判定する。文字情報Ｃａ，Ｃｂのいずれかが含まれないと判断されたファイルのファイル番号は、文字列検索部１６に通知されない。
【００４３】
次に、文字情報群Ｃ１〜Ｃｍに含まれる文字情報ＣｊをファイルＦｉが含むか否かを判定する判定部１３３の処理を説明する。
【００４４】
図６は、文字情報Ｃｊに基づいて生成されるオートマトンを示す。オートマトンは、各状態における状態遷移の条件を示す。ある状態にあった場合に、読みだした文字情報が合致した遷移条件に対応する状態へと、ある状態からの遷移が行なわれる。
【００４５】
図６Ａは、文字情報「夕祭」に基づいて生成されるオートマトンである。図６Ａに示すオートマトンは、初期状態（０）にある場合に、文字情報「夕」がファイルＦｉから読み出されると、初期状態（０）から状態（１）に遷移が行なわれることを示している。また、図６Ａに示すオートマトンは、初期状態（０）において、文字情報「夕」以外を読み出した場合には、再度初期状態（０）への遷移が行なわれることを示している。同様に、図６Ａに示すオートマトンは、状態（１）において、文字情報「祭」を読み出した場合には、状態（Ｆ）への遷移が行なわれ、文字情報「夕」を読み出した場合には、状態（１）への遷移が行なわれることを示している。また、図６Ａに示すオートマトンは、状態（１）において、文字情報「夕」または「祭」以外を読み出した場合には、再度初期状態（０）への遷移が行なわれることを示している。状態（Ｆ）は、オートマトンによる照合完了を示す。オートマトンの状態が、状態（Ｆ）となった場合に、判定部１３３は、「夕祭」に合致する文字列がファイルＦｉに存在すると判定する。
【００４６】
図６Ｂは、文字情報「夕ま」に基づいて生成されるオートマトンである。図６Ｂに示すオートマトンは、初期状態（０）にある場合に、文字情報「夕」がファイルＦｉから読み出されると、初期状態（０）から状態（１）に遷移が行なわれることを示している。また、図６Ｂに示すオートマトンは、初期状態（０）において、文字情報「夕」以外を読み出した場合には、再度初期状態（０）への遷移が行なわれることを示している。同様に、図６Ｂに示すオートマトンは、状態（１）において、文字情報「ま」を読み出した場合には、状態（Ｆ）への遷移が行なわれ、文字情報「夕」を読み出した場合には、状態（１）への遷移が行なわれることを示している。また、図６Ｂに示すオートマトンは、状態（１）において、文字情報「夕」または「ま」以外を読み出した場合には、再度初期状態（０）への遷移が行なわれることを示している。オートマトンの状態が、状態（Ｆ）となった場合に、判定部１３３は、「夕ま」に合致する文字列がファイルＦｉに存在すると判定する。
【００４７】
図６Ｃは、文字情報「夕た」に基づいて生成されるオートマトンである。図６Ｃに示すオートマトンは、初期状態（０）にある場合に、文字情報「夕」がファイルＦｉから読み出されると、初期状態（０）から状態（１）に遷移が行なわれることを示している。また、図６Ｃに示すオートマトンは、初期状態（０）において、文字情報「夕」以外を読み出した場合には、再度初期状態（０）への遷移が行なわれることを示している。同様に、図６Ｃに示すオートマトンは、状態（１）において、文字情報「た」を読み出した場合には、状態（Ｆ）への遷移が行なわれ、文字情報「夕」を読み出した場合には、状態（１）への遷移が行なわれることを示している。また、図６Ｃに示すオートマトンは、状態（１）において、文字情報「夕」または「た」以外を読み出した場合には、再度初期状態（０）への遷移が行なわれることを示している。オートマトンの状態が、状態（Ｆ）となった場合に、判定部１３３は、「夕た」に合致する文字列がファイルＦｉに存在すると判定する。
【００４８】
図７Ａは、判定部１３３の判定処理における図６Ａに示すオートマトンの状態の変化を示す。状態を示す情報（状態情報）は、記憶領域（０００〜０１１）に格納される。０００〜１１１のそれぞれは、2進数であり、状態情報の格納先である記憶領域を示すアドレスである。図７Ａでは、ファイルＦｉ内に含まれる「＜ｒｕｂｙ＞＜ｒｂ＞七夕＜／ｒｂ＞＜ｒｐ＞（＜／ｒｐ＞＜ｒｔ＞たなばた＜／ｒｔ＞＜ｒｐ＞）＜／ｒｐ＞＜ｒｂ＞祭＜／ｒｂ＞＜ｒｐ＞（＜／ｒｐ＞＜ｒｔ＞まつ＜／ｒｔ＞＜ｒｐ＞）＜／ｒｐ＞＜／ｒｕｂｙ＞り」という記述Ｄ１との照合における状態情報変化が示される。ちなみに、図７Ａ−Ｃは、＜ｒｐ＞タグに関する記載を省略して示している。
【００４９】
まず、記述Ｄ１との照合前の状態情報は、記憶領域０００に状態（０）が記憶されているのみであるとする（Ｓ１）。次に、ファイルＦｉから＜ｒｂ＞タグを読み出した場合に、判定部１３３は、記憶領域０００に記憶された状態情報を記憶領域００１にコピーする（Ｓ２）。
【００５０】
次に、判定部１３３は、ファイルＦｉから「七」を読出し、記憶領域０００に記憶された状態情報を更新する。記憶領域に記憶された状態は状態（０）であり、遷移条件「夕」に合致しないため、判定部１３３は、記憶領域０００の状態情報を状態（０）とする。次に、判定部１３３は、ファイルＦｉから「夕」を読出し、記憶領域０００に記憶された状態情報を更新する。この場合、ファイルＦｉから読みだした「夕」は、状態（０）における遷移条件に一致するので、判定部１３３は、記憶領域０００の状態情報を状態（１）に更新する（Ｓ３）。
【００５１】
ファイルＦｉから＜ｒｔ＞タグを読み出すと、判定部１３３は、更新対象の記憶領域を記憶領域０００から記憶領域００１に切り替える。判定部１３３は、ファイルＦｉから順次「た」、「な」、「ば」、「た」の文字情報を読み出して、記憶領域００１の状態情報を更新する。しかしながら、「た」、「な」、「ば」、「た」のいずれも、初期状態（０）における遷移条件「夕」に合致しないので、記憶領域００１の状態情報は、状態（０）のままである（Ｓ４）。
【００５２】
判定部１３３は、ファイルＦｉから＜ｒｂ＞タグを読みだすと、さらに記憶領域のコピーを行なう。判定部１３３は、記憶領域０００の状態情報を記憶領域０１０にコピーし、記憶領域００１の状態情報を記憶領域０１１にコピーする（Ｓ５）。
【００５３】
次に、判定部１３３は、ファイルＦｉから「祭」を読出し、記憶領域０００に記憶された状態情報を更新する。この場合、ファイルＦｉから読みだした「祭」は、状態（１）における遷移条件に一致するので、判定部１３３は、記憶領域０００の状態情報を状態（Ｆ）に更新する。また、判定部１３３は、記憶領域００１に記憶された状態情報についても更新する。記憶領域に記憶された状態は状態（０）であり、遷移条件「夕」に合致しないため、判定部１３３は、記憶領域００１の状態情報を状態（０）とする（Ｓ６）。Ｓ６の時点で記憶領域に状態（Ｆ）の状態情報が記憶されたので、判定部１３３は、ファイルＦｉに文字情報「夕祭」が含まれると判定する。
【００５４】
ファイルＦｉから＜ｒｔ＞タグを読み出すと、判定部１３３は、更新対象の記憶領域を記憶領域０００及び記憶領域００１から、記憶領域０１０及び記憶領域０１１に切り替える。判定部１３３は、ファイルＦｉから順次「ま」、「つ」の文字情報を読み出して、記憶領域０１０及び記憶領域０１１の状態情報を更新する。しかしながら、「ま」、「つ」のいずれも、初期状態（０）における遷移条件「夕」に合致しないので、記憶領域０１０及び記憶領域０１１の状態情報は、状態（０）のままである（Ｓ７）。
【００５５】
さらに、ファイルＦｉから＜／ｒｕｂｙ＞タグを読み出すと、判定部１３３は、更新対象の記憶領域を、状態情報を格納する記憶領域０００−０１１とする。判定部１３３はファイルＦｉから文字情報「り」を読出し、記憶領域０００−０１１のそれぞれに記憶された状態情報を更新する（Ｓ８）。
【００５６】
Ｓ６に示すように状態（Ｆ）に遷移した時点で、判定部１３３は、それ以降の図６Ａのオートマトンに基づく判定処理をやめてもよい。状態（Ｆ）に遷移することにより、ファイルＦｉ内に「夕祭」が含まれることが明らかになるためである。
【００５７】
＜ｒｂ＞タグの読出しに応じた状態情報の複製と、＜ｒｔ＞タグの読出しに応じた更新対象の記憶領域の切り換えと、例えば以下のアドレッシングに基づいて行なう。状態情報の複製先の記憶領域は、例えば、複製元の記憶領域と複製の多重度に応じて決定される。例えば、１回目の複製においては、アドレスの一番下位の桁の値が「０」である記憶領域が複製元であり、アドレスの一番下位の桁の値が「１」である記憶領域が複製先とする。１回目の複製において記憶領域０００に記憶された状態情報が、記憶領域００１にコピーされる。1回目の複製後には、判定部１３３は、更新対象をアドレスの一番下位の桁の値に応じて切り替える。＜ｒｂ＞タグに挟まれた文字情報を読み出した場合には、アドレスの一番下位の桁の値が「０」である記憶領域０００に記憶された状態情報を更新する。また、＜ｒｔ＞タグに挟まれた文字情報を読み出した場合には、アドレスの一番下位の桁の値が「１」である記憶領域００１に記憶された状態情報を更新する。
【００５８】
さらに複製（２回目の複製）を行なう場合には、アドレスの下位から２番目の値が「０」である記憶領域（０００、００１などのアドレスで示される）の状態情報を、アドレスの下位から２番目の値が「１」である記憶領域（０１０、０１１などのアドレスで示される）に、コピーする。２回目の複製の後には、判定部１３３は、アドレスの下位から2番目の桁の値に応じて、更新対象を切り替える。＜ｒｂ＞タグに挟まれた文字情報を読み出した場合には、アドレスの下位から２番目の桁の値が「０」である記憶領域０００及び記憶領域００１に記憶された状態情報を更新する。また、＜ｒｔ＞タグに挟まれた文字情報を読み出した場合には、アドレスの下位から２番目の桁の値が「１」である記憶領域０１０及び記憶領域０１１に記憶された状態情報を更新する。
【００５９】
上述のアドレッシングにより、＜ｒｂ＞タグを複数回出現しても、＜ｒｂ＞タグに挟まれた文字情報に基づく更新と、＜ｒｔ＞タグで挟まれた文字情報に基づく更新とで、更新対象の記憶領域を切り替えることができる。
【００６０】
図７Ｂは、判定部１３３の判定処理における図６Ｂに示すオートマトンの状態の変化を示す。図６Ｂに示すオートマトンは、先述の通り、文字情報「夕ま」との合致判定に用いられる。図７Ｂでは、図７Ａと同様、ファイルＦｉ内に含まれる記述Ｄ１との照合における状態情報変化が示される。Ｓ１からＳ５までは、図７Ａに示す状態情報の変化と同様に、記憶領域０００〜０１１に記憶された状態情報が変化する。  
【００６１】
次に、判定部１３３は、ファイルＦｉから「祭」を読出し、記憶領域０００に記憶された状態情報を更新する。この場合、ファイルＦｉから読みだした「祭」は、状態（１）における遷移条件「ま」に一致しないので、判定部１３３は、記憶領域０００の状態情報を初期状態（０）に更新する。また、判定部１３３は、記憶領域００１に記憶された状態情報についても更新する。記憶領域に記憶された状態は状態（０）であり、遷移条件「夕」に合致しないため、判定部１３３は、記憶領域００１の状態情報を状態（０）とする（Ｓ６）。
【００６２】
ファイルＦｉから＜ｒｔ＞タグを読み出すと、判定部１３３は、更新対象の記憶領域を記憶領域０００及び記憶領域００１から、アドレスの下記から２番目の値が「１」である記憶領域０１０及び記憶領域０１１に切り替える。判定部１３３は、ファイルＦｉから順次「ま」の文字情報を読み出して、記憶領域０１０及び記憶領域０１１の状態情報を更新する。文字情報「ま」は、状態（１）における遷移条件「ま」に一致するので、判定部１３３は、記憶領域０１０の状態情報を状態（Ｆ）に更新する。また、文字情報「ま」は、初期状態（０）における遷移条件「夕」に合致しないので、記憶領域０１１の状態情報は、状態（０）のままである（Ｓ７）。Ｓ７の時点で記憶領域に状態（Ｆ）の状態情報が記憶されたので、判定部１３３は、ファイルＦｉに文字情報「夕ま」が含まれると判定する。
【００６３】
次に、判定部１３３は、ファイルＦｉから文字情報「つ」を読み出し、記憶領域０１０及び記憶領域０１１に記憶された状態情報を更新する。「つ」は遷移条件に合致しないので、判定部１３３は、記憶領域０１０及び記憶領域０１１のそれぞれに格納される状態情報を、初期状態（０）に更新する（Ｓ８）。
【００６４】
さらに、ファイルＦｉから＜／ｒｕｂｙ＞タグを読み出すと、判定部１３３は、更新対象の記憶領域を、状態情報を格納する記憶領域０００−０１１とする。判定部１３３はファイルＦｉから文字情報「り」を読出し、記憶領域０００−０１１のそれぞれに記憶された状態情報を更新する（Ｓ９）。
【００６５】
先述の通り、Ｓ７に示すように状態（Ｆ）に遷移した時点で、判定部１３３は、それ以降の図６Ｂのオートマトンに基づく判定処理をやめてもよい。状態（Ｆ）に遷移することにより、ファイルＦｉ内に「夕ま」が含まれることが明らかになるためである。
【００６６】
図７Ｃは、判定部１３３の判定処理における図６Ｃに示すオートマトンの状態の変化を示す。図６Ｃに示すオートマトンは、先述の通り、文字情報「夕た」との合致判定に用いられる。図７Ｃでは、図７Ｃと同様、ファイルＦｉ内に含まれる記述Ｄ１との照合における状態情報変化が示される。Ｓ１からＳ６までは、図７Ｂに示す状態情報の変化と同様に、記憶領域０００〜０１１に記憶された状態情報が変化する。  
【００６７】
ファイルＦｉから＜ｒｔ＞タグを読み出すと、判定部１３３は、更新対象の記憶領域を記憶領域０００及び記憶領域００１から、アドレスの下記から２番目の値が「１」である記憶領域０１０及び記憶領域０１１に切り替える。判定部１３３は、ファイルＦｉから順次「ま」、「つ」の文字情報を読み出して、記憶領域０１０及び記憶領域０１１の状態情報を更新する。しかしながら、「ま」、「つ」のいずれも、遷移条件に合致しないので、記憶領域０１０及び記憶領域０１１の状態情報は、初期状態（０）となる（Ｓ７）。
【００６８】
さらに、ファイルＦｉから＜／ｒｕｂｙ＞タグを読み出すと、判定部１３３は、更新対象の記憶領域を、状態情報を格納する記憶領域０００−０１１とする。判定部１３３はファイルＦｉから文字情報「り」を読出し、記憶領域０００−０１１のそれぞれに記憶された状態情報を、初期状態（０）に更新する（Ｓ８）。
【００６９】
図７Ａ−Ｃにおいて、例えば、判定部１３３は、＜／ｒｕｂｙ＞タグを読み出すと、記憶領域０００〜０１１のうち、状態情報が重複する記憶領域の解放を行なう。例えば、図７ＡのＳ８においては、記憶領域００１、記憶領域０１０及び記憶領域０１１のいずれも記憶領域０００と重複する状態情報を記憶しているので、解放される。例えば、記憶領域００１、記憶領域０１０及び記憶領域０１１が解放されると、ファイルＦＩ内の文字情報「り」に基づく状態情報の更新は、記憶領域０００に記憶された状態情報のみに対して行なわれる。
【００７０】
図６Ａ−Ｃ及び図７Ａ−Ｃを用いて、ファイルＦｉ内に文字情報Ｃｊが含まれるか否かを判定する判定手順を説明した。上述の例は、文書データ内で「七夕…たなばた…祭…まつ…り」のように、同じ意味の言語単位について複数種類の表記の併記が指定された部分が連続する場合である。この併記された部分は、表示上、「七夕祭り」とも、「たなばた祭り」とも、「七夕まつり」とも、「たなばたまつり」とも読めるが、文書データ内では「七夕…たなばた…祭…まつ…り」となっているため、いずれも当てはまらない。上述の判定処理では、連続する併記部分のうち、先の部分で親文字表記が指定された「七夕」という文字情報の末尾（例えば「夕」）と、先の部分でルビ文字表記が指定された「まつり」という文字情報の冒頭（例えば「ま」）とを連続させた文字情報（例えば「夕ま」）が含まれると判定される。そのため、「七夕…たなばた…祭…まつ…り」というように、間に「たなばた」「祭」などの文字情報があっても「七夕まつり」と連続する文字情報が、照合・抽出される。上述した末尾と冒頭とは、先の部分の親文字表記が指定された文字情報と、後の部分のルビ文字表記が指定された文字情報とが連続すればよく、文字数は限定されない。
【００７１】
しかしながら、判定手順は、これに限定されるものでなく、文字情報Ｃａの表記１（例えば、「七夕」の「夕」）に文字情報Ｃｂの表記２（例えば、「まつ」の「ま」）が後続する文字情報（例えば、「夕ま」）、または、文字情報Ｃａの表記２（例えば、「たなばた」の「た」）に文字情報の表記１（例えば、「祭」）が後続する文字情報（例えば、「た祭」）を、ファイルＦｉから抽出する手順であればよい。もしくは、文字情報Ｃａの表記１（例えば、「七夕」の「夕」）に文字情報Ｃａの表記２（例えば、「たなばた」の「た」）が後続する文字情報（例えば、「夕た」）、または、文字情報Ｃｂの表記１（例えば、「祭」）に文字情報Ｃｂの表記２（例えば、「まつ」の「ま」）が後続する文字情報（例えば、「祭ま」）を、ファイルＦｉから抽出しない手順が用いられてもよい。図６Ａ−Ｃ及び図７Ａ−Ｃに示す判定によるインデックス生成手順と異なる他のインデックス生成手順については、図１５Ａ−Ｃに基づいて後述する。
【００７２】
図８は、コンピュータ１のハードウェア構成及びコンピュータ１を含むシステムの構成を示す。図８に示すシステムは、コンピュータ１、コンピュータ２、記憶装置３及びネットワーク４を含む。ファイル群Ｆ１〜Ｆｎは、コンピュータ１の記憶部１２に格納されているが、例えば、ネットワーク４を介して接続された記憶装置３に記憶されていてもよい。その場合には、読出し部１５が記憶部１２からではなく、記憶装置３からファイル群Ｆ１〜Ｆｎのそれぞれを読み出す。
【００７３】
図２、図３及び図５に示す各機能ブロックは、例えば、図８に示すハードウェア構成により実現される。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、バス３１１などを含む。それぞれのハードウェアはバス３１１を介して接続されている。通信Ｉ／Ｆ３１０はネットワーク４を介した通信の制御を行なう。入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる。
【００７４】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【００７５】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であってもよい。
【００７６】
プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って処理部１１の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１２の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムやファイル群Ｆ１〜Ｆｎを記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図９を用いて説明する。
【００７７】
図９は、コンピュータ１で動作するソフトウェアの構成例を示す。コンピュータ１において、図９に示すハードウェア群２１の制御を行なうＯＳ２２（オペレーションシステム）が動作する。ＯＳ２２に従った手順でプロセッサ３０１が動作して、ハードウェア２１の制御・管理が行なわれることにより、アプリケーションプログラムやミドルウェアによる処理がハードウェア２１により実行される。さらに、コンピュータ１において、インデックス生成プログラム２３ａまたは検索処理プログラム２３ｂが、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。また、さらに、プロセッサ３０１がインデックス生成プログラム２３ａに基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア２１を制御して）生成部１３の機能が実現される。プロセッサ３０１が検索処理プログラム２３ｂに基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア２１を制御して）検索制御部１４、絞込部１５及び文字列検索部１６の機能が実現される。
【００７８】
図１０は、インデックス生成の処理手順例を示す。インデックス生成プログラム２３ａが起動される（Ｓ１００）と、制御部１３１は、前処理を行なう（Ｓ１０１）。Ｓ１０１の前処理は、例えば、図４に示すテーブルＴ１や文字情報群Ｃ１〜Ｃｍを記憶部１２に読み出す処理などである。制御部１３１は、インデックス情報の生成が要求されるか否かを判断し（Ｓ１０２）、インデックス情報の生成が要求されるまで繰り返し判断を行なう（Ｓ１０２：ＮＯ）。インデックス情報の生成が要求される（Ｓ１０２：ＹＥＳ）と、制御部１３１は、インデックス情報を記憶する記憶領域を確保する（Ｓ１０３）。例えば、Ｓ１０３において確保された記憶領域内の各ビットは「０」にセットしておく。
【００７９】
制御部１３１は、図４に示すテーブルＴ１から、ファイル番号ｉを選択し、選択したファイル番号ｉのファイルＦｉを読出し部１３２に読み出させる（Ｓ１０４）。例えば、Ｓ１０４において、制御部１３１は、テーブルＴ１内のレコードを順に選択する。次に、判定部１３３は、文字情報Ｃ１〜Ｃｍのうちの１つの文字情報Ｃｊを選択する（Ｓ１０５）。例えば、Ｓ１０５において、記憶部１２が保持する文字情報Ｃ１〜Ｃｍのリストから、判定部１３３が文字情報を順に選択してもよいし、所定の数値範囲内で文字コードをインクリメントすることにより、文字情報を順に生成してもよい。判定部１３３は、ファイルＦｉが文字情報Ｃｊを含むか否か判定する（Ｓ１０６）。Ｓ１０６において、図７Ａ−Ｃに示した手順で判定処理が行なわれる。ファイルＦｉが文字情報Ｃｊを含むと判定した場合（Ｓ１０６：ＹＥＳ）は、制御部１３１は、ファイル番号ｉと文字情報Ｃｊに基づいてアドレスを算出する。制御部１３１は、算出したアドレスに対応する位置のビットを「１」に更新する。すなわち、制御部１３１は、算出したアドレスに対応する位置のビットと、「１」との論理和（ＯＲ）演算の結果を、算出したアドレスに対応する位置に格納する。例えば、文字情報Ｃｊのバイナリコードを所定のハッシュ関数に代入して得られる値に対応するビット列のｉ番目のビットを「１」とする。制御部１３１によりビットの更新が行なわれると、判定部１３３はＳ１０８の処理を行なう。判定部１３３によりファイルＦｉが文字情報Ｃｊを含まないと判定された場合（Ｓ１０６：ＮＯ）は、判定部１３３は、Ｓ１０８の処理を行なう。次の文字情報についての処理を行なう。文字情報Ｃ１〜Ｃｍのなかで、未選択の文字情報が存在する場合には、判定部１３３は、再度Ｓ１０５の処理を行なう（Ｓ１０８）。文字情報Ｃ１〜Ｃｍのなかで未選択の文字情報が存在しない場合には、Ｓ１０９の処理が行なわれる。Ｓ１０９では、ファイル群Ｆ１〜Ｆｎのなかで未選択のファイルがあれば、読出し部１３２がＳ１０４の処理を再度行なう。また、ファイル群Ｆ１〜Ｆｎのなかで未選択のファイルがなければ、Ｓ１１０の処理が行なわれる。
【００８０】
制御部１３１は、ファイル群Ｆ１〜Ｆｎのインデックス情報の生成処理が完了した旨の通知を行なう（Ｓ１１０）。Ｓ１１０において、制御部１３１は、さらに、Ｓ１０３で確保した領域内の情報をインデックスファイルとして保存する。Ｓ１１０の処理後、終了指示を受けていたか否か判定する（Ｓ１１１）。終了指示を受けていた場合（Ｓ１１１：ＹＥＳ）は、処理部１１は、インデックス生成プログラムを終了する。終了指示を受けていない場合（Ｓ１１１：ＮＯ）には、Ｓ１０２の処理を再度行なう。
【００８１】
図１１は、全文検索の処理手順例を示す。検索処理プログラム２３が起動される（Ｓ２００）と、検索制御部１４は、前処理を行なう（Ｓ２０１）。Ｓ２０１の前処理は、図４に示すテーブルＴ１の読出しや、インデックス情報の読出しである。検索制御部１４は、検索要求を受けたか否かを判断し（Ｓ２０２）、検索要求を受けるまでＳ２０２の判断を繰り返す（Ｓ２０２：ＮＯ）。検索要求を受けた場合（Ｓ２０２：ＹＥＳ）には、インデックス参照処理が実行される（Ｓ２０３）。
【００８２】
図１２は、インデックス情報の参照処理手順の例を示す。Ｓ２０３が実行される（Ｓ３００）と、検索制御部１４は、検索要求に含まれる検索文字列を取り出し、文字情報Ｃ１〜Ｃｍのうちの検索文字列に含まれる文字情報Ｃａ，Ｃｂ，・・・を抽出する（Ｓ３０１）。
【００８３】
ファイル絞込部１５は、検索制御部１４が文字情報Ｃａ，Ｃｂ，・・・を抽出すると、ファイル群Ｆ１〜Ｆｎのそれぞれについて、抽出された文字情報Ｃａ，Ｃｂ，・・・のいずれか１つでも含まないファイルであるかどうかを判断する。具体的には、まず、抽出された文字情報のうちの１つを選択する（Ｓ３０２）。参照部１５１は、選択された文字情報に基づいてアドレスを算出し、算出されたアドレスに示される位置に格納された情報を読み出す（Ｓ３０３）。Ｓ３０３において、参照部１５１は、Ｓ１０７と同様の演算によりアドレスを算出する。その際に、例えば、参照部１５１は、選択された文字情報のバイナリコードを所定のハッシュ関数に代入して得られる値に対応するビット列を読み出す。ファイル絞込部１５は、抽出された文字情報Ｃａ，Ｃｂ，・・・のなかに未選択の文字情報がある場合には、Ｓ３０２の処理を再度行ない、抽出された文字情報Ｃａ，Ｃｂ，・・・に未選択の文字情報がない場合には、インデックス参照処理を終了する（Ｓ３０４，Ｓ３０５）。
【００８４】
インデックス参照処理が終了すると、ファイル絞込部１５は、検索対象のファイルのファイル番号を抽出する（Ｓ２０４）。Ｓ２０４において、例えば、判定部１５２は、文字情報Ｃａ，Ｃｂ，・・・のそれぞれについて参照部１５１により読み出されたビット列同士の論理積（ＡＮＤ）を算出する。判定部１５２は、算出されたビット列において「１」であるビットが何番目であるかを示す番号を生成する。例えば、判定部１５２は、算出されたビット列において、ｘ番目のビットとｙ番目のビットが「１」であれば、ｘ，ｙを生成する。
【００８５】
検索制御部１４は、判定部１５２により生成された番号ｘ，ｙ，・・・のいずれかである番号ｉを選択する（Ｓ２０５）。文字列検索部１６は、選択された番号ｉがファイル番号であるファイルＦｉを読み出す（Ｓ２０６）。文字列検索部１６は、図４に示すテーブルＴ１においてファイル番号ｉと対応づけられた格納場所からファイルを読み出す。文字列検索部１６は、読み出したファイルＦｉを検索文字列で検索する（Ｓ２０７）。例えば、文字列検索部１６は、ファイルＦｉ内に検索文字列と一致する文字列を検出した場合には、一致した文字列のファイルＦｉ内の位置を示す情報を生成し、ファイルＦｉのファイル番号ｉと関連付けて記憶部１２に記憶する（図１３参照）。例えば、検索文字列と照合を行なったデータの量をカウントするカウンタを予め設けておき、文字列の一致を検出した際のカウンタの値を、ファイル内の位置を示す情報とする。
【００８６】
Ｓ２０７の処理後、検索制御部１４は、判定部１５２により生成された番号ｘ，ｙ，・・・のなかで未選択の番号があればＳ２０５の処理を行なう。検索制御部１４は、判定部１５２により生成された番号ｘ，ｙ，・・・のなかに未選択の番号がない場合には、Ｓ２１０の処理を行なう。
【００８７】
検索制御部１４は、検索結果の出力処理を行なう（Ｓ２０９）。例えば、Ｓ２０７の処理で図１３に示すテーブルＴ２に格納された情報に示される位置の近傍の文字列を抽出して、抽出した文字列を、ファイル番号に対応するファイル名などと併せて表示デバイスに表示させるなどの処理を行なう。
【００８８】
Ｓ２１０処理後に、処理部１１は、終了の指示があったか否かを判断する（Ｓ２１０）。終了の指示がない場合（Ｓ２１０：ＮＯ）には、検索制御部１４はＳ２０２の処理を行なう。終了の指示があった場合（Ｓ２１０：ＹＥＳ）には、処理部１１は、検索処理プログラム２２ｂを終了させる（Ｓ２１１）。
【００８９】
図１３には、検索文字列に一致する文字情報の位置のリストを示す。文字列検索部１６は、Ｓ２０７の文字列検索において検索文字列と一致する文字情報が存在する場合に、一致した文字列のファイルＦｉ内の位置を示す情報を生成し、ファイルＦｉのファイル番号ｉと関連付けてテーブルＴ２に記憶する。テーブルＴ２は、検索制御部１４が検索結果を出力する際に、参照される。
【００９０】
図１０に示すＳ１０６の判定処理の手順について、さらに説明する。図１４Ａ及び図１４Ｂは、Ｓ１０６の処理手順を示す。判定処理が開始される（Ｓ４００）と、判定部１３３は、ファイルＦｉから文字情報を読み出す（Ｓ４０１）。データの読出し単位は、例えば、タグ情報単位や１文字分の文字情報単位などである。次に、判定部１３３は、Ｓ４０１で読みだしたデータがタグ情報以外であるか否かを判定する（Ｓ４０２）。
【００９１】
Ｓ４０１で読みだした文字情報がタグ情報であった場合（Ｓ４０２：ＮＯ）に、判定部１３３は、読みだしたタグ情報が＜ｒｂ＞タグであるか否かを判定する（Ｓ４１２）。判定部１３３は、読みだしたタグ情報が＜ｒｂ＞タグである場合（Ｓ４１２：ＹＥＳ）には、記憶領域に格納された状態情報をコピーする（Ｓ４１３）。複製先のアドレスは、上述の通り、複製の多重度ｄ及び複製元のアドレスにより定められる。さらに、判定部１３３は、複製の多重度ｄを更新する（Ｓ４１４）。例えば、複製の多重度ｄの初期値は０であり、複製が行なわれるたびにインクリメントされる。判定部１３３は、多重度ｄを確認し、記憶領域のアドレスのうち、下位からｄ（ｄは多重度）番目の桁が「０」である状態情報を更新対象とする（Ｓ４１５）。すなわち、直前に行われたＳ４１３のコピーにおける複製元の状態情報が更新対象となる。
【００９２】
判定部１３３は、読みだしたタグ情報が＜ｒｂ＞タグでない場合（Ｓ４１２：ＮＯ）には、読みだしたタグ情報が＜ｒｔ＞タグであるか否かを判定する（Ｓ４１６）。読み出したタグ情報が＜ｒｔ＞である場合（Ｓ４１６：ＹＥＳ）は、判定部１３３は、多重度ｄを確認し、記憶領域のアドレスのうち、下位からｄ（ｄは多重度）番目の桁が「１」である状態情報を更新対象とする（Ｓ４１７）。
【００９３】
読み出したタグ情報が＜ｒｔ＞でない場合（Ｓ４１６：ＮＯ）は、判定部１３３は、読み出したタグ情報が＜／ｒｕｂｙ＞タグであるか否かを判定する（Ｓ４１８）。読み出したタグ情報が＜／ｒｕｂｙ＞タグである場合（Ｓ４１８：ＹＥＳ）には、記憶領域に記憶されたすべての状態情報を更新対象とする（Ｓ４１９）。Ｓ４１９において、判定部１３３は、さらに、重複した状態情報の削除許可を示すフラグをセットする。このフラグは、後述するＳ４０８で参照される。読み出したタグ情報が＜／ｒｕｂｙ＞タグでない場合（Ｓ４１８：ＮＯ）には、判定部１３３は、読み出したタグに対応する終了タグまでＳ４０１における文字情報読出しの読出し位置を進める（Ｓ４２０）。Ｓ４１５、Ｓ４１７、Ｓ４１９及びＳ４２０のいずれかが行われると、再度Ｓ４０１の文字情報読み出し処理が行われる。
【００９４】
Ｓ４０１でタグ情報でなく、文字情報を読み出した場合（Ｓ４０２：ＹＥＳ）には、判定部１３３は、更新対象の状態情報から１つ選択する（Ｓ４０３）。照合処理開始時点では、更新対象の状態情報は、記憶領域０００に記憶された状態情報である。Ｓ４１３の処理で状態情報がコピーされた後にはＳ４１５、Ｓ４１７またはＳ４２０などにより更新対象の状態情報を定められる。
【００９５】
Ｓ４０３で状態情報を選択すると、判定部１３３は、読み出した文字情報についての照合処理を行い、選択した状態情報の更新を行なう（Ｓ４０４）。この更新は、判定部１３３が、選択した状態情報の遷移条件（オートマトンにより定められる）を取得し、取得した遷移条件を満たすか否かに応じて遷移先状態を決定し、選択した状態情報を遷移先状態に更新することで行なわれる。
【００９６】
Ｓ４０４で状態情報の更新が行われると、判定部１３３は、Ｓ４０４で更新が行われた状態情報が「Ｆ」を示すか否かを判定する（Ｓ４０５）。「Ｆ」は、オートマトンの終点を示す状態である。Ｓ４０５の判定で、状態情報が「Ｆ」である場合（Ｓ４０５：ＮＯ）には、Ｓ１０６の判定処理において、文字情報ＣｊがファイルＦｉに含まれる旨の判断（Ｓ１０６：ＹＥＳ）を行なう（Ｓ４１１）。
【００９７】
Ｓ４０５の判定で、状態情報が「Ｆ」でない場合（Ｓ４０５：ＹＥＳ）には、判定部１３３は、更新対象の状態情報のうち、未選択の状態情報があるか否か判定する。未選択の状態情報がある場合には、照合部１７は、再度Ｓ４０３の処理を行ない、未選択の状態情報を選択する（Ｓ４０６）。未選択の状態情報がない場合には、判定部１３３は、Ｓ４０８の処理を行なう。
【００９８】
判定部１３３は、記憶領域に格納された状態情報のうち、重複して同じ状態情報を示す状態情報が存在するか否かを判定する（Ｓ４０７）。判定部１３３は、重複する状態情報が存在する場合には、Ｓ４１９の処理により、重複した状態情報の削除許可を示すフラグがセットされているかを確認する。削除許可を示すフラグがセットされていれば、重複する状態情報を記憶する記憶領域を解放し、さらに、更新対象の状態情報から除く（Ｓ４０８）。さらに、判定部１３３は、Ｓ４０８の処理により状態情報が１つのみになった場合には、削除許可を示すフラグをクリアする。Ｓ４０７の処理で重複する状態情報が存在しない場合（Ｓ４０７：ＮＯ）、もしくはＳ４０８の処理が行われた場合には、判定部１３３は、ファイルＦｉから読み出す文字情報があるか否かが判定する（Ｓ４０９）。ファイルＦｉ内に読み出す文字情報が存在する場合（Ｓ４０９：ＹＥＳ）には、判定部１３３は、Ｓ４０１の処理を再度行なう。ファイルＦｉ内に読み出す文字情報が存在しない場合（Ｓ４０９：ＮＯ）には、判定部１３３は、Ｓ１０６の判定処理を終了し、文字情報ＣｊがファイルＦｉに含まれない旨の判断（Ｓ１０６：ＮＯ）を行なう（Ｓ４１０）。
【００９９】
オートマトンを用いた判定処理について、さらに説明する。図１９は、図６Ａに示すオートマトンのデータ構造例である。図６Ｂ、図６Ｃ、図１６Ａ及び図１６Ｂに示すオートマトンについても同様のデータ構造が用いられる。図１９に示すテーブルＴ３は、とり得る遷移元状態それぞれについて、遷移条件１及び遷移先状態１の組み合わせ、遷移条件２及び遷移先状態２の組み合わせ、並びに遷移先状態３を関連付ける。判定部１３３は、記憶領域に記憶された状態情報を一致する遷移元状態を含むレコードをテーブルＴ３から抽出する。次に、判定部１３３は、抽出したレコードに含まれる遷移条件を、ファイルＦｉから読み出した文字情報が満たすか否か判定する。判定部１３３は、遷移条件１か遷移条件２のいずれかが満たされた場合に、状態情報を、抽出したレコードに含まれ、満たされた遷移条件に対応する遷移先状態に更新する。判定部１３３は、いずれの遷移条件も満たされない場合に、状態情報を、抽出したレコードに含まれる遷移先状態３に更新する。 
【０１００】
図２０は、オートマトンの生成手順例を示す。オートマトンは生成部１３によるインデックス生成と、文字列検索部１６による文字列検索に用いられる。生成部１３は、例えば、図１０に示すＳ１０１において、文字情報群Ｃ１〜Ｃｍの各文字情報について、オートマトンを生成する。もしくは、図１０に示すＳ１０４で文字情報が選択された場合に、選択された文字情報についてオートマトンを生成する。
【０１０１】
図１１に示すフローは、「七夕まつり」のように、検索文字列内で文字情報が繰り返される部分を含まない場合に用いることができる。例えば、「でんでん虫」などの文字列は、文字情報の繰り返しを含む（「でん」が繰り返されている）。「でんでん虫」という検索文字列についてオートマトンを生成する場合には、図１１と異なるフローを用いる。図１１に例示したフローを用いると、「…でんでんでん虫…」などの文字列が照合対象にふくまれていた場合には、「でんでん」まで状態が遷移し、その次の文字「で」が「虫」と一致しないために、状態を初期状態に戻してしまうオートマトンが生成される。初期状態に戻されると、残りの文字列は「でん虫」であるので、「でんでん虫」と一致しないことになってしまう。上記のことから、「でんでん虫」などの検索文字列中に文字情報の繰り返しを含む文字列にも対応するためには、他のフローが用いられてよい。
【０１０２】
オートマトンの生成処理が開始される（Ｓ５００）と、まず、生成部１３は、文字情報群Ｃ１〜Ｃｍから文字情報Ｃｊを取得する（Ｓ５０１）。次に、生成部１３は、取得した文字情報Ｃｊの長さＮを計数する（Ｓ５０２）。生成部１３は、０〜Ｎ−１までの整数ｉを順に選択し、Ｓ５０４〜Ｓ５１０の処理を繰り返し行なう（Ｓ５０３）。
【０１０３】
生成部１３は、テーブルＴ３に１レコード追加する（Ｓ５０４）。生成部１３は、Ｓ５０４で生成したレコードの遷移元状態を、Ｓ５０３で選択した整数「ｉ」にする（Ｓ５０５）。さらに、生成部１３は、Ｓ５０４で生成したレコードの遷移条件１を、Ｓ５０１で取得した検索文字列のｉ＋１番目の文字にする（Ｓ５０６）。
【０１０４】
次に、生成部１３は、整数ｉがＮ−１であるか否か判定する（Ｓ５０７）。整数ｉがＮ−１である場合（Ｓ５０７：ＹＥＳ）には、Ｓ５０４で生成したレコードの遷移先状態１を「Ｆ（照合完了を示す情報）」とする（Ｓ５０８）。また、生成部１３は、整数ｉがＮ−１でない場合（Ｓ５０７：ＮＯ）には、Ｓ５０４で生成したレコードの遷移先状態１を「ｉ＋１」とする（Ｓ５０９）。
【０１０５】
さらに、生成部１３は、Ｓ５０４で生成したレコードの遷移条件２を検索文字列の１番目の文字とし、遷移先状態２は１とし、遷移先状態３を「０」とする（Ｓ５１０）。Ｓ５１０の処理後、生成部１３は、ｉがＮ−１であるか否か判定し、Ｎ−１でなければ、Ｓ５０３で次の整数を選択し、Ｓ５０４〜Ｓ５１０の処理を行なう（Ｓ５１１）。ｉがＮ−１であれば、生成部１３はオートマトン生成処理を終了する（Ｓ５１２）。
【０１０６】
図６Ａ−Ｃ及び図７Ａ−Ｃに示す判定によるインデックス生成手順と異なる他のインデックス生成手順を説明する。上述のインデックス生成においては、あるファイルＦｉに対し、文字情報Ｃ１〜Ｃｍを順次選択し、選択した文字情報ＣｊがファイルＦｉに存在するか否かを判定し、判定結果をインデックス情報に反映させる。すなわち、文字情報ＣｊがファイルＦｉに存在すると判定した場合に、文字情報Ｃｊ及びファイルＦｉに対応するビットを「１」に更新する。図１５Ａ―Ｃに説明するインデックス生成手順においては、ファイルＦｉから文字情報を読出し、インデックス情報のために確保された記憶領域のうち、読み出した文字情報に対応する箇所のビットを「１」に更新してインデックス情報を生成する。
【０１０７】
他のインデックス情報生成手順においては、判定部１３３は、記憶領域０００〜０１１を確保し、この記憶領域のそれぞれに読み出した文字情報を格納する。図１５の例では、生成部１３が、２文字の文字情報ごとに、各ファイルに含まれるか否かを示すビット列を生成するとする。判定部１３３が２文字分の文字情報を各記憶領域に格納するたびに、制御部１３１は、各記憶領域に格納された文字情報に対応するビットの値を「１」に更新する。判定部１３３は、文字を読み出すたびに、先に記憶領域に格納された文字情報を、読み出した文字情報でスライドさせた文字情報を格納する。読み出した文字情報の格納先は、例えば、＜ｒｂ＞タグ、＜ｒｔ＞タグ、＜／ｒｕｂｙ＞タグなどの読出しに応じて制御される。
【０１０８】
図１５Ａ−Ｃは、ファイルＦｉ中の「賑わう七夕祭り」（ルビは省略）という記述Ｄ３について行なわれるインデックス生成処理についての説明図である。記憶領域が空の状（Ｓ１）において、判定部１３３は、ファイルＦｉから「賑」を読み出すと、記憶領域０００に「賑」を格納する（Ｓ２）。さらに、「わ」を読み出すと、判定部１３３は、記憶領域０００に「賑わ」を格納する（Ｓ３）。制御部１３１は、記憶領域０００に２文字分の文字情報が格納されたので、インデックス情報内で、文字情報「賑わ」に対応するビット列のｉ番目のビットの値を「１」に更新する。同様に、判定部１３３は、「う」を読み出すと、記憶領域０００を「わう」に更新し（Ｓ４）、制御部１３１は、「わう」に対応するビット列のｉ番目のビットを「１」に更新する。
【０１０９】
次に、判定部１３３は、＜ｒｂ＞タグを読み出すと、記憶領域０００に記憶されている文字情報を記憶領域００１にコピーする（Ｓ５）。このコピーにより複製の多重度ｄは１となる。コピーの契機となるタグ情報と、コピー先のアドレスは、図７Ａ−Ｃに示す手順と同様で良い。判定部１３３は、「七」を読み出すと、記憶領域０００に「う七」を格納し、「夕」を読み出すと、記憶領域０００に「七夕」を格納する（Ｓ６、Ｓ７）。制御部１３１は、判定部１３３が「う七」、「七夕」を格納するたびに、インデックス情報中の対応するビットの値を「１」に更新する。
【０１１０】
判定部１３３は、＜ｒｔ＞タグを読み出すと、更新対象の記憶領域を、記憶領域０００から記憶領域００１に切り替える（Ｓ８）。判定部１３３は、「た」、「な」、「ば」、「た」それぞれの読み出しに応じて、記憶領域００１に、「うた」、「たな」、「なば」、「ばた」と順次格納する（Ｓ９、Ｓ１０、Ｓ１１、Ｓ１２）。制御部１３１は、判定部１３３が「うた」、「たな」、「なば」、「ばた」と順次記憶領域００１に格納するたびに、インデックス情報中の対応するビットの値を「１」に更新する。
【０１１１】
判定部１３３は、＜ｒｂ＞タグを読み出すと、さらに記憶領域のコピーを行なう（Ｓ１３）。このコピーにより複製の多重度ｄは２となる。判定部１３３は、次に「祭」を読み出すと、アドレスの下位からｄ番目の値が「０」である記憶領域を対象に更新処理を行なう。判定部１３３は、記憶領域０００には「夕祭」を、記憶領域００１には「た祭」を格納する（Ｓ１４）。制御部１３１は、判定部１３３が「夕祭」と記憶領域００１に格納すると、インデックス情報中の対応するビットの値を「１」に更新し、「た祭」と記憶領域００１に格納すると、インデックス情報中の対応するビットの値を「１」に更新する。
【０１１２】
判定部１３３は、＜ｒｔ＞を読出し、更新対象の記憶領域を、アドレスの下位からｄ番目の値が「０」である記憶領域から、アドレスの下位からｄ番目の値が「１」である記憶領域に切り替える（Ｓ１５）。判定部１３３は、「ま」、「つ」のそれぞれの読み出しに応じて、記憶領域０１０に「夕ま」、「まつ」を格納し、記憶領域０１１に「たま」、「まつ」を格納する（Ｓ１６、Ｓ１７）。制御部１３１は、判定部１３３の記憶領域への「夕ま」、「まつ」、「たま」の書き込みに応じて、インデックス情報中の対応するビットの値を「１」に更新する。
【０１１３】
判定部１３３は、＜／ｒｕｂｙ＞を読み出すと、更新対象の記憶領域を、記憶領域０００〜０１１とする。さらに、判定部１３３は、「り」を読み出すと、記憶領域０００に「祭り」、記憶領域００１に「祭り」、記憶領域０１０に「つり」、記憶領域０１１に「つり」を格納する（Ｓ１８）。制御部１３１は、判定部１３３の記憶領域への「祭り」、「つり」の書き込みに応じて、インデックス情報中の対応するビットの値を「１」に更新する。判定部１３３は、記憶領域内で重複する文字情報を削除する（Ｓ１９）。記憶領域００１に格納された「祭り」と、記憶領域０１１に記憶された「つり」が削除される。
【０１１４】
図１５Ａ−Ｃに示される上記の手順により、ファイルＦｉ中の「賑わう七夕祭り」（ルビは省略）に含まれる２文字の文字情報のそれぞれが、インデックス情報に反映される。
【０１１５】
上述の説明においては、漢字に対する振り仮名を表示させることを例にあげたが、これに限定するものでなく、カタカナに振り仮名を平仮名で付与してもよいし、中国語の漢字表記にピン音を付与してもよい。さらに、ルビは英語にも用いられ、上述の実施例は英語についても実施可能である。例えば、「ＢＩＯＳ」について、先述の通り、ファイルＦｉ内で記述Ｄ２のように表現されることがある。その一方で、検索文字列は、例えば、「ＢＩＯＳ」と入力されるかもしれないし、「ＢＡＳＩＣ  ＩＮＰＵＴ／ＯＵＴＰＵＴ  ＳＹＳＴＥＭ」と入力されるかもしれないし、「ＢＡＳＩＣ  ＩＯ  ＳＹＳＴＥＭ」と入力されるかもしれない。
【０１１６】
検索文字列が「ＢＩＯＳ」である場合には、例えば、インデックス情報内の「ＢＩＯＳ」に対応するビット列に基づいて、文字列検索の対象のファイルが絞りこまれる。例えば、検索文字列が「ＢＡＳＩＣ  ＩＯ  ＳＹＳＴＥＭ」である場合には、例えば、インデックス情報内の「ＢＡＳＩ」、「ＡＳＩＣ」、・・・、「ＩＣＩＯ」、「ＣＩＯＳ」、・・・、「ＳＴＥＭ」それぞれに対応するビット列に基づいて、文字列検索の対象のファイルが絞りこまれる。
【０１１７】
図１６Ａは、文字情報「ＢＩＯＳ」がファイルに含まれるか否かの判定に用いられるオートマトンを示す。初期状態（０）における遷移条件１（対応する遷移先状態１は「１」）は「Ｂ」である。状態（１）における遷移条件１（対応する遷移先状態は「２」）は「Ｉ」であり、遷移条件２（対応する遷移先状態２は「１」）は「Ｂ」である。状態（２）における遷移条件１（対応する遷移先状態は「３」）は「Ｏ」であり、遷移条件２（対応する遷移先状態２は「１」）は「Ｂ」である。状態（３）における遷移条件１（対応する遷移先状態は「Ｆ」）は「Ｓ」であり、遷移条件２（対応する遷移先状態２は「１」）は「Ｂ」である。
【０１１８】
図１６Ｂは、文字情報「ＣＩＯＳ」がファイルに含まれるか否かの判定に用いられるオートマトンを示す。初期状態（０）における遷移条件１（対応する遷移先状態は「１」）は「Ｃ」である。状態（１）における遷移条件１（対応する遷移先状態は「２」）は「Ｉ」であり、遷移条件２（対応する遷移先状態２は「１」）は「Ｂ」である。状態（２）における遷移条件１（対応する遷移先状態は「３」）は「Ｏ」であり、遷移条件２（対応する遷移先状態２は「１」）は「Ｂ」である。状態（３）における遷移条件１（対応する遷移先状態は「Ｆ」）は「Ｓ」であり、遷移条件２（対応する遷移先状態２は「１」）は「Ｂ」である。
【０１１９】
図１７Ａ及びＢは、「ＢＩＯＳ」がファイルＦｉ内の記述Ｄ２に含まれるか否かの判定手順の説明図である。判定部１３３は、図１６Ａに示すオートマトンに基づいて、記憶領域に記憶される状態情報を更新する。
【０１２０】
記述Ｄ２の読出し前は、記憶領域００００に初期状態（０）を示す状態情報が格納されているのみであるとする（Ｓ１）。判定部１３３は、ファイルＦｉから＜ｒｂ＞タグを読み出すと、記憶領域００００に格納された状態情報を記憶領域０００１にコピーする（Ｓ２）。ここで、判定部１３３は、多重度ｄを「１」とする。次に、判定部１３３は、「Ｂ」を読み出すと、図１６Ａに示すオートマトンに従って記憶領域００００に記憶された状態情報を更新する。初期状態（０）から状態（１）への遷移条件は「Ｂ」であるので、記憶領域００００に記憶される状態情報は、状態（１）となる（Ｓ３）。判定部１３３は、＜ｒｔ＞を読み出すと、更新対象の記憶領域を０００１に切り替える。判定部１３３は、「Ｂ」、「Ａ」、「Ｓ」、「Ｉ」、「Ｃ」のそれぞれの読出しに応じて、記憶領域０００１に記憶された状態情報を更新する。結果的に、記憶領域０００１の状態情報は、初期状態（０）に更新される（Ｓ４）。
【０１２１】
判定部１３３は、ファイルＦｉから＜ｒｂ＞タグを読み出すと、記憶領域００００及び記憶領域０００１に格納された状態情報を記憶領域００１０及び記憶領域００１１にコピーする（Ｓ５）。ここで、判定部１３３は、多重度ｄを「２」とする。次に、判定部１３３は、「Ｉ」を読み出すと、図１６Ａに示すオートマトンに従って記憶領域００００に記憶された状態情報を更新する。状態（１）から状態（２）への遷移条件は「Ｉ」であるので、記憶領域００００に記憶される状態情報は、状態（２）となる。また、初期状態（０）から状態（１）への遷移条件は「Ｂ」であるので、記憶領域０００１に記憶される状態情報は、初期状態（０）となる（Ｓ６）。判定部１３３は、＜ｒｔ＞を読み出すと、更新対象の記憶領域を００１０及び記憶領域００１１に切り替える。判定部１３３は、「Ｉ」、「Ｎ」、「Ｐ」、「Ｕ」、「Ｔ」、「／」のそれぞれの読出しに応じて、記憶領域００１０及び記憶領域００１１に記憶された状態情報を更新する。結果的に、記憶領域００１０及び記憶領域００１１の状態情報は、初期状態（０）に更新される（Ｓ７）。
【０１２２】
判定部１３３は、ファイルＦｉから＜ｒｂ＞タグを読み出すと、記憶領域００００〜００１１に格納された状態情報を記憶領域０１００〜０１１１にコピーする（Ｓ８）。ここで、判定部１３３は、多重度ｄを「３」とする。次に、判定部１３３は、「Ｏ」を読み出すと、図１６Ａに示すオートマトンに従って記憶領域００００に記憶された状態情報を更新する。状態（２）から状態（３）への遷移条件は「Ｏ」であるので、記憶領域００００に記憶される状態情報は、状態（３）となる。また、初期状態（０）から状態（１）への遷移条件は「Ｂ」であるので、記憶領域０００１〜００１１に記憶される状態情報は、初期状態（０）となる（Ｓ９）。判定部１３３は、＜ｒｔ＞を読み出すと、更新対象の記憶領域を０１００〜０１１１に切り替える（Ｓ１０）。判定部１３３は、「Ｏ」、「Ｕ」、「Ｔ」、「Ｐ」、「Ｕ」、「Ｔ」のそれぞれの読出しに応じて、記憶領域０１００〜０１１１に記憶された状態情報を更新する。結果的に、記憶領域０１００〜０１１１の状態情報は、初期状態（０）に更新される（Ｓ１１）。
【０１２３】
判定部１３３は、ファイルＦｉから＜ｒｂ＞タグを読み出すと、記憶領域００００〜０１１１に格納された状態情報を記憶領域１０００〜１１１１にコピーする（Ｓ１２）。ここで、判定部１３３は、多重度ｄを「４」とする。次に、判定部１３３は、「Ｓ」を読み出すと、図１６Ａに示すオートマトンに従って記憶領域００００に記憶された状態情報を更新する。状態（３）から状態（Ｆ）への遷移条件は「Ｓ」であるので、記憶領域００００に記憶される状態情報は、状態（Ｆ）となる。また、初期状態（０）から状態（１）への遷移条件は「Ｂ」であるので、記憶領域０００１〜０１１１に記憶される状態情報は、初期状態（０）となる（Ｓ１３）。記憶領域００００に記憶された状態情報が、状態（Ｆ）を示すので、判定部１３３は、ファイルＦｉが「ＢＩＯＳ」を含むと判断する。
【０１２４】
図１８は、「ＣＩＯＳ」がファイルＦｉ内の記述Ｄ２に含まれるか否かの判定手順の説明図である。判定部１３３は、図１６Ｂに示すオートマトンに基づいて、記憶領域に記憶される状態情報を更新する。
【０１２５】
判定部１３３は、ファイルＦｉからの＜ｒｂ＞タグの読み出しにより、記憶領域００００に格納された状態情報を記憶領域０００１にコピーする（Ｓ１）。ここで、判定部１３３は、多重度ｄを「１」とする。次に、判定部１３３は、「Ｂ」、「Ａ」、「Ｓ」、「Ｉ」、「Ｃ」を順に読み出すと、図１６Ｂに示すオートマトンに従って記憶領域０００１に記憶された状態情報を更新する。初期状態（０）から状態（１）への遷移条件は「ｃ」であるので、記憶領域０００１に記憶される状態情報は、状態（１）となる（Ｓ２）。
【０１２６】
判定部１３３は、ファイルＦｉから＜ｒｂ＞タグを読み出すと、記憶領域００００及び記憶領域０００１に格納された状態情報を記憶領域００１０及び記憶領域００１１にコピーする（Ｓ３）。ここで、判定部１３３は、多重度ｄを「２」とする。次に、判定部１３３は、「Ｉ」を読み出すと、図１６Ｂに示すオートマトンに従って記憶領域００００及び記憶領域０００１に記憶された状態情報を更新する。状態（１）から状態（２）への遷移条件は「Ｉ」であるので、記憶領域０００１に記憶される状態情報は、状態（２）となる。また、初期状態（０）から状態（１）への遷移条件は「Ｂ」であるので、記憶領域００００に記憶される状態情報は、初期状態（０）となる（Ｓ４）。判定部１３３は、＜ｒｔ＞を読み出すと、更新対象の記憶領域を００１０及び記憶領域００１１に切り替える。判定部１３３は、「Ｉ」、「Ｎ」、「Ｐ」、「Ｕ」、「Ｔ」、「／」のそれぞれの読出しに応じて、記憶領域００１０及び記憶領域００１１に記憶された状態情報を更新する。結果的に、記憶領域００１０及び記憶領域００１１の状態情報は、初期状態（０）に更新される（Ｓ５）。
【０１２７】
判定部１３３は、ファイルＦｉから＜ｒｂ＞タグを読み出すと、記憶領域００００〜００１１に格納された状態情報を記憶領域０１００〜０１１１にコピーする（Ｓ６）。ここで、判定部１３３は、多重度ｄを「３」とする。次に、判定部１３３は、「Ｏ」を読み出すと、図１６Ｂに示すオートマトンに従って記憶領域００００〜００１１に記憶された状態情報を更新する。状態（２）から状態（３）への遷移条件は「Ｏ」であるので、記憶領域０００１に記憶される状態情報は、状態（３）となる。また、初期状態（０）から状態（１）への遷移条件は「Ｂ」であるので、記憶領域００００、００１０及び００１１に記憶される状態情報は、初期状態（０）となる（Ｓ７）。判定部１３３は、＜ｒｔ＞を読み出すと、更新対象の記憶領域を０１００〜０１１１に切り替える。判定部１３３は、「Ｏ」、「Ｕ」、「Ｔ」、「Ｐ」、「Ｕ」、「Ｔ」のそれぞれの読出しに応じて、記憶領域０１００〜０１１１に記憶された状態情報を更新する。結果的に、記憶領域０１００〜０１１１の状態情報は、初期状態（０）に更新される（Ｓ８）。
【０１２８】
判定部１３３は、ファイルＦｉから＜ｒｂ＞タグを読み出すと、記憶領域００００〜０１１１に格納された状態情報を記憶領域１０００〜１１１１にコピーする（Ｓ９）。ここで、判定部１３３は、多重度ｄを「４」とする。次に、判定部１３３は、「Ｓ」を読み出すと、図１６Ｂに示すオートマトンに従って記憶領域００００〜０１１１に記憶された状態情報を更新する。状態（３）から状態（Ｆ）への遷移条件は「Ｓ」であるので、記憶領域０００１に記憶される状態情報は、状態（Ｆ）となる。また、初期状態（０）から状態（１）への遷移条件は「Ｂ」であるので、記憶領域００００及び００１０〜０１１１に記憶される状態情報は、初期状態（０）となる（Ｓ１０）。記憶領域０００１に記憶された状態情報が、状態（Ｆ）を示すので、判定部１３３は、ファイルＦｉが「ＣＩＯＳ」を含むと判断する。
【０１２９】
判定部１３３が判定処理を続けたとすると、判定部１３３は、＜ｒｔ＞を読み出すと、更新対象の記憶領域を１０００〜１１１１に切り替える。判定部１３３は、「Ｓ」の読出しに応じて、記憶領域１０００〜１１１１に記憶された状態情報を更新する。状態（３）から状態（Ｆ）への遷移条件は「Ｓ」であるので、記憶領域１００１に記憶される状態情報は、状態（Ｆ）となる。また、初期状態（０）から状態（１）への遷移条件は「Ｂ」であるので、記憶領域１０００及び１０１０〜１１１１に記憶される状態情報は、初期状態（０）となる（Ｓ１１）。
【０１３０】
上述の実施形態を適用することにより、検索文字列が「ＢＩＯＳ」、「ＢＡＳＩＣ  ＩＮＰＵＴ／ＯＵＴＰＵＴ  ＳＹＳＴＥＭ」及び「ＢＡＳＩＣ  ＩＯ  ＳＹＳＴＥＭ」のいずれであっても、ファイルＦｉを検索文字列と合致する文字情報として抽出可能となる。
【０１３１】
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
コンピュータに、
ファイル内に存在する複数の連続する文字を含む文字情報が前記ファイルに含まれる旨を示す情報を生成し、
前記ファイルに、ある言語単位の第１の表記である第１の文字情報及び前記ある言語単位の第２の表記である第２の文字情報の併記に続いて、他の言語単位の前記第１の表記である第３の文字情報及び前記他の言語単位の前記第２の表記である第４の文字情報の併記が指定されている場合に、前記第１の文字情報の末尾部分に前記第４の文字情報の冒頭部分が後続する文字情報が前記ファイルに含まれる旨を示す情報を生成する、
処理を実行させることを特徴とする生成プログラム。
（付記２）
前記コンピュータに、さらに、
前記第１の文字情報の末尾部分に前記第２の文字情報の冒頭部分が後続する文字情報が前記ファイルに含まれる旨を示す情報の生成を抑止する、
処理を実行させることを特徴とする付記１に記載の生成プログラム。
（付記３）
前記併記が指定されている場合に、前記第２の文字情報に前記第３の文字情報が後続し、さらに、前記第４の文字情報に後続する他の文字情報が後続する文字情報が前記ファイルに含まれる旨を示す情報を生成する、
処理を実行させることを特徴とする付記１または付記２に記載の生成プログラム。
（付記４）
前記ファイル内に、前記第１の文字情報、前記第２の文字情報、前記第３の文字情報、前記第４の文字情報、前記他の文字情報の順で文字情報が含まれている、
ことを特徴とする付記１〜付記３のいずれか１つに記載の生成プログラム。
（付記５）
前記第１の表記はルビの親文字での表記であり、前記第２の表記はルビ文字での表記である、
ことを特徴とする付記１〜４のいずれか１つに記載の生成プログラム。
（付記６）
コンピュータに、
ファイル内に存在する複数の連続する文字を含む文字情報が前記ファイルに含まれる旨を示す情報を生成し、
前記ファイルに、ある言語単位の第１の表記である第１の文字情報及び前記ある言語単位の第２の表記である第２の文字情報の併記に続いて、他の言語単位の前記第１の表記である第３の文字情報及び前記他の言語単位の前記第２の表記である第４の文字情報の併記が指定されている場合に、前記第１の文字情報の末尾部分に前記第４の文字情報の冒頭部分が後続する文字情報が前記ファイルに含まれる旨を示す情報を生成する、
処理を実行させることを特徴とする生成方法。
（付記７）
ファイル内に存在する複数の連続する文字を含む文字情報が前記ファイルに含まれる旨を示す情報を生成する生成部と、
前記生成部が生成した情報を、前記文字情報と前記ファイルとに関連付けて記憶する記憶部とを含み、
前記生成部は、
前記ファイルに、ある言語単位の第１の表記である第１の文字情報及び前記ある言語単位の第２の表記である第２の文字情報の併記に続いて、他の言語単位の前記第１の表記である第３の文字情報及び前記他の言語単位の前記第２の表記である第４の文字情報の併記が指定されている場合に、前記第１の文字情報の末尾部分に前記第４の文字情報の冒頭部分が後続する文字情報が前記ファイルに含まれる旨を示す情報を生成する、
ことを特徴とする生成装置。
（付記８）
コンピュータに、
検索文字列に含まれる文字情報を抽出し、
ファイル内に存在する複数の連続する文字を含む文字情報が前記ファイルに含まれる旨を示す情報と、前記ファイルに、ある言語単位の第１の表記である第１の文字情報及び前記ある言語単位の第２の表記である第２の文字情報の併記に続いて、他の言語単位の前記第１の表記である第３の文字情報及び前記他の言語単位の前記第２の表記である第４の文字情報の併記が指定されている場合に、前記第１の文字情報の末尾部分に前記第４の文字情報の冒頭部分が後続する文字情報が前記ファイルに含まれる旨を示す情報と、を含むインデックス情報が記憶された記憶部を参照して、抽出した前記文字情報に対応する情報を取得し、
取得した情報に、抽出した前記文字情報が前記ファイルに含まれている旨が示される場合に、前記ファイルに対して前記検索文字列に基づく文字列検索を行なう、
処理を実行させることを特徴とする検索プログラム。
（付記９）
コンピュータに、
検索文字列に含まれる文字情報を抽出し、
ファイル内に存在する複数の連続する文字を含む文字情報が前記ファイルに含まれる旨を示す情報と、前記ファイルに、ある言語単位の第１の表記である第１の文字情報及び前記ある言語単位の第２の表記である第２の文字情報の併記に続いて、他の言語単位の前記第１の表記である第３の文字情報及び前記他の言語単位の前記第２の表記である第４の文字情報の併記が指定されている場合に、前記第１の文字情報の末尾部分に前記第４の文字情報の冒頭部分が後続する文字情報が前記ファイルに含まれる旨を示す情報と、を含むインデックス情報が記憶された記憶部を参照して、抽出した前記文字情報に対応する情報を取得し、
取得した情報に、抽出した前記文字情報が前記ファイルに含まれている旨が示される場合に、前記ファイルに対して前記検索文字列に基づく文字列検索を行なう、
処理を実行させることを特徴とする検索方法。
（付記１０）
検索文字列に含まれる文字情報を抽出する抽出部と、
ファイル内に存在する複数の連続する文字を含む文字情報が前記ファイルに含まれる旨を示す情報と、前記ファイルに、ある言語単位の第１の表記である第１の文字情報及び前記ある言語単位の第２の表記である第２の文字情報の併記に続いて、他の言語単位の前記第１の表記である第３の文字情報及び前記他の言語単位の前記第２の表記である第４の文字情報の併記が指定されている場合に、前記第１の文字情報の末尾部分に前記第４の文字情報の冒頭部分が後続する文字情報が前記ファイルに含まれる旨を示す情報と、を含むインデックス情報を記憶する記憶部と、
前記記憶部に記憶されたインデックス情報のうち、抽出した前記文字情報に対応する情報を取得し、取得した情報に、抽出した前記文字情報が前記ファイルに含まれている旨が示される場合に、前記ファイルに対して前記検索文字列に基づく文字列検索の対象とする絞込部と、
を含むことを特徴とする検索装置。
（付記１１）
プロセッサとメモリとを含む生成装置であって、
前記プロセッサは、
ファイル内に存在する複数の連続する文字を含む文字情報が前記ファイルに含まれる旨を示す情報を前記メモリに格納し、
前記ファイルに、ある言語単位の第１の表記である第１の文字情報及び前記ある言語単位の第２の表記である第２の文字情報の併記に続いて、他の言語単位の前記第１の表記である第３の文字情報及び前記他の言語単位の前記第２の表記である第４の文字情報の併記が指定されている場合に、前記第１の文字情報の末尾部分に前記第４の文字情報の冒頭部分が後続する文字情報が前記ファイルに含まれる旨を示す情報を前記メモリに格納する。
【符号の説明】
【０１３２】
１      コンピュータ
２      コンピュータ
３      記憶装置
４      ネットワーク
１１    処理部
１２    記憶部
１３    生成部
１４    検索制御部
１５    絞込部
１６    文字列検索部
１３１  制御部
１３２  読出し部
１３３  判定部
１５１  参照部
１５２  判定部
【図１Ａ−Ｂ】
0006028392.tif 000002
【図２】
0006028392.tif 000003
【図３】
0006028392.tif 000004
【図４】
0006028392.tif 000005
【図５】
0006028392.tif 000006
【図６Ａ−Ｃ】
0006028392.tif 000007
【図７Ａ】
0006028392.tif 000008
【図７Ｂ】
0006028392.tif 000009
【図７Ｃ】
0006028392.tif 000010
【図８】
0006028392.tif 000011
【図９】
0006028392.tif 000012
【図１０】
0006028392.tif 000013
【図１１】
0006028392.tif 000014
【図１２】
0006028392.tif 000015
【図１３】
0006028392.tif 000016
【図１４Ａ】
0006028392.tif 000017
【図１４Ｂ】
0006028392.tif 000018
【図１５Ａ】
0006028392.tif 000019
【図１５Ｂ】
0006028392.tif 000020
【図１５Ｃ】
0006028392.tif 000021
【図１６Ａ−Ｂ】
0006028392.tif 000022
【図１７Ａ】
0006028392.tif 000023
【図１７Ｂ】
0006028392.tif 000024
【図１８】
0006028392.tif 000025
【図１９】
0006028392.tif 000026
【図２０】
0006028392.tif 000027