(57)【要約】【課題】一側面によれば、互いに包含関係にあるデータ単位それぞれが有する属性の双方を、検索制御の条件として利用可能にすることを目的とする。【解決手段】一態様によれば、検索制御装置は、第１の属性を有する第１のデータの文字構成を示す第１の構成情報と、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報と、を記憶する記憶部と、検索要求に検索文字列および前記第１の属性が指定された場合に、前記第１の構成情報に基づいて前記第１のデータに対する前記検索文字列の検索を制御し、前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、前記第２の構成情報に基づいて前記第２のデータに対する前記検索文字列の検索を制御する制御部と、を含む。【選択図】  図１
2014215982.tif 000002
【特許請求の範囲】
【請求項１】
第１の属性を有する第１のデータの文字構成を示す第１の構成情報と、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報と、を記憶する記憶部と、
検索要求に検索文字列および前記第１の属性が指定された場合に、前記第１の構成情報に基づいて前記第１のデータに対する前記検索文字列の検索を制御し、前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、前記第２の構成情報に基づいて前記第２のデータに対する前記検索文字列の検索を制御する制御部と、
を含むことを特徴とする検索制御装置。
【請求項２】
前記制御部が、
前記第１の構成情報に示される文字構成が、前記検索文字列に含まれる各文字情報を含む文字構成である場合に、前記第１のデータに対する前記検索文字列の検索を実行させ、
前記第２の構成情報に示される文字構成が、前記各文字情報を含む文字構成である場合に、前記第２のデータに対する前記検索文字列の検索を実行させる、
ことを特徴とする請求項１に記載の検索制御装置。
【請求項３】
前記第１の属性および前記第２の属性は、それぞれ意味の追加または表示形式の指定を示す属性である、
ことを特徴とする請求項１または２に記載の検索制御装置。
【請求項４】
前記第１のデータが存在する範囲は、前記第１の属性に対応するタグにより示され、
前記第２のデータが存在する範囲は、前記第２の属性に対応するタグにより示される、
ことを特徴とする請求項１〜３のいずれか１項に記載の検索制御装置。
【請求項５】
前記検索文字列に含まれる各文字情報は、１または複数の文字で構成される、
ことを特徴とする請求項１〜４のいずれか１項に記載の検索制御装置。
【請求項６】
コンピュータに、
検索要求に検索文字列および前記第１の属性が指定された場合に、第１の属性を有する第１のデータの文字構成を示す第１の構成情報に基づいて、前記第１のデータに対する前記検索文字列の検索を制御し、
前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報に基づいて、前記第２のデータに対する前記検索文字列の検索を制御する、
ことを実行させることを特徴とする検索制御方法。
【請求項７】
コンピュータに、
検索要求に検索文字列および前記第１の属性が指定された場合に、第１の属性を有する第１のデータの文字構成を示す第１の構成情報に基づいて、前記第１のデータに対する前記検索文字列の検索を制御し、
前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報に基づいて、前記第２のデータに対する前記検索文字列の検索を制御する、
処理を実行させることを特徴とする検索制御プログラム。
【請求項８】
検索対象データの読み出し位置を含む範囲を指定し、指定した前記範囲内のデータに関する追加情報を示すタグを複数種類検知する検知部と、
前記読み出し位置から第１の文字情報が読み出されると、タグにより指定される範囲内に前記第１の文字情報が含まれる旨を示す存在情報を、前記検知部により検知された前記複数種類のタグの各々について生成する生成部と、
を含むことを特徴とする生成装置。
【請求項９】
前記検知部は、
前記読み出し位置を含む範囲を指定するタグを示す状態情報を、前記開始タグおよび前記終了タグのいずれかの読み出しに応じて更新し、
前記状態情報に示されるタグを検知する、
ことを特徴とする請求項８に記載の生成装置。
【請求項１０】
前記開始タグの読み出しに応じた更新が行なわれると、前記状態情報は、読み出した前記開始タグに対応するタグが読み出し位置を含む範囲を指定するタグである旨を示し、
前記終了タグを読み出しに応じた更新が行なわれると、前記状態情報は、読み出した前記終了タグに対応するタグが読み出し位置含む範囲を指定するタグでない旨を示す、
ことを特徴とする請求項９に記載の生成装置。
【請求項１１】
前記複数種類のタグの各々に対して文字情報群が設定され、
前記存在情報は、前記存在情報に対応するタグに対して設定された前記文字情報群に前記第１の文字情報が含まれる場合に生成される、
ことを特徴とする請求項８〜１０のいずれか１項に記載の生成装置。
【請求項１２】
前記存在情報が、前記第１の文字情報または前記第１の文字情報と異なる第２の文字情報が含まれる旨を示す、
ことを特徴とする請求項８〜１０のいずれか１項に記載の生成装置。
【請求項１３】
コンピュータに、
検索対象データの読み出し位置を含む範囲を指定し、指定した前記範囲内のデータに関する追加情報を示すタグを、複数種類検知し、
前記読み出し位置から第１の文字情報が読み出されると、タグにより指定される範囲内に前記第１の文字情報が含まれる旨を示す存在情報を、前記検知部により検知された前記複数種類のタグの各々について生成する、
ことを実行させることを特徴とする生成方法。
【請求項１４】
コンピュータに、
検索対象データの読み出し位置を含む範囲を指定し、指定した前記範囲内のデータに関する追加情報を示すタグを、複数種類検知し、
前記読み出し位置から第１の文字情報が読み出されると、タグにより指定される範囲内に前記第１の文字情報が含まれる旨を示す存在情報を、前記検知部により検知された前記複数種類のタグの各々について生成する、
処理を実行させることを特徴とする生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを検索する技術に関する。
【背景技術】
【０００２】
ファイル群を対象とする全文検索において、ファイル群に含まれる各ファイルについてファイルを構成する文字情報を示す全文検索インデックスを用いて、ファイル群から検索対象のファイルを絞り込む技術がある。全文検索インデックスの参照により検索文字列内の文字情報を含まないファイルが検索対象から除かれることで、検索対象のファイルが絞り込まれる。
【０００３】
ある技術においては、マークアップ言語で記述されたファイル群に対して全文検索が行なわれる。マークアップ言語で記述されたファイル群に含まれる各ファイルを、タグを境目として論理的（または物理的）に分割し、分割により得られたデータ単位ごとにデータ単位を構成する文字情報を示す全文検索インデックスが作成される。また、検索文字列およびタグが入力されると、入力されたタグに対応しないデータ単位や検索文字列内の文字情報を含まないデータ単位が検索対象から除かれることで、検索対象のデータ単位が絞り込まれる（例えば、特許文献１または特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−３２９１１６号公報
【特許文献２】特開平８−１４７３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
マークアップ言語においては、階層的なデータ構造を構成することが可能であり、複数のタグが入れ子になることにより、互いに包含関係を有するデータ単位が形成される。例えば、タグＡの開始タグ、タグＢの開始タグ、タグＢの終了タグ、タグＡの終了タグの順でタグが配置されると、タグＢにより範囲が指定されるデータ単位は、タグＡにより範囲が指定されるデータ単位に含まれる。タグＡは、タグＢに対応するデータ単位を包含するデータ単位に対して属性を付与するものなので、タグＡはタグＢよりも上位階層のタグとして機能している。
【０００６】
しかしながら、上述の技術のように、ファイルに対してタグを境目として論理的（または物理的）に分割を行なうと、互いに包含関係を有するデータ単位は形成されない。そのため、ファイルの分割により形成されるデータ単位について全文検索インデックスを作成してしまうと、タグの入れ子構造に対応できず、互いに包含関係にあるデータ単位に対応するタグの双方について、検索対象の絞り込みの条件として利用可能にすることができない。
【０００７】
本発明の一側面によれば、互いに包含関係にあるデータ単位それぞれが有する属性の双方を、検索制御の条件として利用可能にすることを目的とする。
【課題を解決するための手段】
【０００８】
一態様によれば、検索制御装置は、第１の属性を有する第１のデータの文字構成を示す第１の構成情報と、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報と、を記憶する記憶部と、検索要求に検索文字列および前記第１の属性が指定された場合に、前記第１の構成情報に基づいて前記第１のデータに対する前記検索文字列の検索を制御し、前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、前記第２の構成情報に基づいて前記第２のデータに対する前記検索文字列の検索を制御する制御部と、を含む。
【０００９】
一態様によれば、生成装置は、検索対象データの読み出し位置を含む範囲を指定し、指定した前記範囲内のデータに関する追加情報を示すタグを複数種類検知する検知部と、前記読み出し位置から第１の文字情報が読み出されると、タグにより指定される範囲内に前記第１の文字情報が含まれる旨を示す存在情報を、前記検知部により検知された前記複数種類のタグの各々について生成する生成部と、を含む。
【発明の効果】
【００１０】
一側面によれば、互いに包含関係にあるデータ単位それぞれが有する属性の双方を、検索制御の条件として利用可能にすることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、全文検索インデックスによる検索対象の絞り込みの例を示す。
【図２】図２は、全文検索インデックス生成手順の概要を示す。
【図３】図３は、状態情報の更新の例を示す。
【図４】図４は、全文検索インデックスの例を示す。
【図５】図５は、全文検索インデックスの例を示す。
【図６】図６は、変換テーブルＴ１の例を示す。
【図７】図７は、変換テーブルＴ２の例を示す。
【図８】図８は、変換テーブルＴ３の例を示す。
【図９】図９は、機能ブロック構成例を示す。
【図１０】図１０は、インデックス生成処理の手順例を示す。
【図１１】図１１は、対象ファイル抽出処理の手順例を示す。
【図１２】図１２は、圧縮された全文検索インデックスの生成例を示す。
【図１３】図１３は、コンピュータ１のハードウェア構成例を示す。
【図１４】図１４は、コンピュータ１で動作するプログラム構成例を示す。
【図１５】図１５は、コンピュータ１を用いたシステム構成例を示す。
【図１６】図１６は、入力画面の例を示す。
【発明を実施するための形態】
【００１２】
図１は、全文検索インデックスを用いた検索対象の絞り込みの例を示す。図１に例示されるファイル群（ファイルＦ１〜Ｆｎ）のそれぞれは治験の記録を示すＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）ファイルである。ＸＭＬなどのマークアップ言語においては、タグと呼ばれる文字列によりテキストに対して属性などの情報が追加される。タグは、開始タグおよび終了タグのセットで機能し、開始タグと終了タグとの間に存在するデータに対する情報の追加を示す。ファイルＦ１〜Ｆｎの各々はタグを含み、例えば、ファイルＦ１には、症状タグ（＜症状＞および＜／症状＞）や薬効タグ（＜薬効＞および＜／薬効＞）などが含まれる。例えば、薬効タグにより、開始タグ＜薬効＞と終了タグ＜／薬効＞との間に存在するデータに対して、「薬効」に関するデータであるという属性が追加される。すなわち、開始タグ＜薬効＞と終了タグ＜／薬効＞との間に存在するデータは、薬効タグに挟まれることで「薬効」という属性を有する。
【００１３】
図１に例示するファイルＦ１〜Ｆｎの検索において、検索範囲を絞り込むために図１に例示される全文検索インデックスＩ１が用いられる。全文検索インデックスＩ１は、検索対象のファイルＦ１〜Ｆｎの各々について、ファイル内に含まれる文字情報の構成を示す構成情報を含む。構成情報は、ファイルに含まれる文字情報の種類を、各文字情報の種類に対応する複数のビットにより構成されるビット列である。
【００１４】
全文検索インデックスＩ１において、ファイルＦ１〜Ｆｎは、各々に割り当てられた番号で管理される。ファイルＦ１の番号が「０」、ファイルＦ２の番号が「１」、ファイルＦ３の番号が「２」と番号が割り当てられ、番号「３」以降も同様に割り当てられている。例えば、ファイルＦ１の構成情報は、全文検索インデックスＩ１の番号「０」の位置のビット列である。
【００１５】
全文検索インデックスＩ１において、ビット列内の各ビット位置に対して文字情報が対応付けられており、ビット列を構成する各ビットは、ビット位置に対応する文字情報がファイル内に含まれるか否かを示す。例えば、値が「１」のビットにより、そのビットのビット位置に対応する文字情報がファイル内に含まれることが示される。例えば、番号「０」のビット列の文字情報「ｆ」に対応するビットの値が「１」であると、ファイルＦ１に文字情報「ｆ」が含まれることが示される。
【００１６】
全文検索インデックスＩ１では、ビット列内の各ビット位置に対応付けられる文字情報は、文字、文字の一部分（例えば、複数バイトで表現される文字コードのうちの１バイトのデータなど）、文字の組み合わせである文字列（単語やタグ）などである。すなわち、全文検索インデックスＩ１は、ファイルＦ１〜Ｆｎの各々について、ビット列内の各ビット位置に対応する文字、文字の一部分、文字列のそれぞれが含まれるか否かを示している。全文検索インデックスのビット列の各ビット位置には、例えば、「発」、「熱」、「ｆ」、「ｅ」、「ｖ」、「ｒ」などの文字や、「＜薬効＞」などのタグを示す文字列が対応付けられている。
【００１７】
ユーザがファイルＦ１〜Ｆｎから薬の効能として発熱の症状が得られた記録を取得したい場合には、例えば、「発熱」という文字情報や薬効タグなどを検索条件とした検索がユーザから要求される。その場合には、検索文字列に含まれる「発」および「熱」ならびに「＜薬効＞」という文字情報に対応するビット位置のビットによるビット行（図１に例示する全文検索インデックスＩ１の横方向のビットの並び）に基づいて「発熱」および「＜薬効＞」という文字情報を含む可能性があるファイルが絞り込まれる。具体的には、「発」、「熱」および「＜薬効＞」のそれぞれに対応するビット行同士の論理積（ＡＮＤ）演算により１つのビット行を生成し、生成されたビット行において値が「１」のビットに対応する番号のファイルが検索の対象となる。全文検索インデックスＩ１では、ファイルＦ１（番号「０」）およびファイルＦ２（番号「１」）の双方が検索の対象となる。これは、「発」、「熱」および「＜薬効＞」のいずれのビット列においても、番号「０」でも番号「１」でもビットの値が「１」であるためである。
【００１８】
しかしながら、ファイルＦ１では「発熱」という文字情報が開始タグ＜薬効＞および終了タグ＜／薬効＞に挟まれているものの、ファイルＦ２においては「発熱」という文字情報が開始タグ＜薬効＞および終了タグ＜／薬効＞に挟まれていない。そのため、薬の効能として発熱の症状が得られた記録を取得するための検索において、ファイルＦ２は所望の記録を含まないにも関わらず検索の対象となってしまう。このように、全文検索インデックスＩ１は、タグにより指定される範囲と、文字情報との位置関係が反映されていない。そのため、タグと検索文字列を検索条件として指定しても、全文検索インデックスＩ１による絞り込みでは、タグに対応する属性を有する検索文字列を含まないファイルまでも検索対象のファイルとなる可能性がある。
【００１９】
また、例えば、ファイルＦ１においては、開始タグ＜症状＞と終了タグ＜／症状＞との間に、薬効タグの開始タグ＜薬効＞および終了タグ＜／薬効＞が含まれる。このようなタグの位置関係であると、例えば、治験においてどのような症状が現れたかが開始タグ＜症状＞と終了タグ＜／症状＞との間に示され、さらに、症状のうち薬の効能として現れた症状について開始タグ＜薬効＞と終了タグ＜／薬効＞との間に示される。すなわち、開始タグ＜薬効＞と終了タグ＜／薬効＞との間に存在するデータは、開始タグ＜症状＞および終了タグ＜／症状＞にも挟まれているので、「薬効」および「症状」の双方の属性を有する。
【００２０】
ユーザが薬の効能として発熱の症状が得られた記録を取得したい場合には、「発熱」および薬効タグを検索条件とする検索が要求される。その一方で、例えば、薬の効能としての発熱や薬の副作用としての発熱など、とにかく症状として発熱が生じた記録をユーザが取得したい場合には、「発熱」および症状タグを検索条件とする検索が要求される。すなわち、検索を要求するユーザの意図に応じて、ある特定の属性が検索条件として付加されることもあれば、特定の属性を含む広い概念の属性が検索条件として付加されることもある。
【００２１】
互いに包含関係にあるいずれの属性を検索条件とした場合にも検索対象の絞り込みを可能とするためには、それぞれの属性に対応するデータ単位における構成情報が全文検索インデックスに含まれる必要がある。互いに包含関係にあるデータ単位のそれぞれについての構成情報を含む全文検索インデックスについて以下に説明する。
【００２２】
図２は、全文検索インデックス生成手順の概要を示す。全文検索インデックスＩ２内の全ビットの値が「０」の状態から、ファイルＦ１〜Ｆｎが順次読み出され、読み出された文字情報に応じて全文検索インデックスＩ２内の値が更新される。例えば、ファイルＦ１の読み出し処理において、ファイルＦ１内の文字情報が、読み出し順序に従って順次読み出される。ファイルＦ１内の各文字情報に基づく全文検索インデックスＩ１の更新が行なわれると、全文検索インデックスＩ２のファイルＦ１に関する部分の生成が終了する。全文検索インデックスＩ２は、ファイルＦ２〜Ｆｎに対しても同様の処理を行なうことで生成される。
【００２３】
図２の例では、読み出し位置Ｐ１で文字情報ｃ１が読み出された場合の全文検索インデックスＩ２への更新処理が例示される。文字情報ｃ１が読み出されると、文字情報ｃ１、読み出し処理の対象であるファイルＦ１の番号および読出し位置Ｐ１のデータの属性に基づいて、全文検索インデックスＩ２内の位置Ｑ（図２の例では２次元座標（Ｑｉ，Ｑｊ）で示される）が求められる。位置Ｑが求められると、位置Ｑのビットの値に対して更新が行なわれる。具体的には、位置Ｑに存在するビットの値と、「１」との論理和が位置Ｑに格納される。
【００２４】
図２の生成手順においては、文字情報に応じて更新される全文検索インデックス内の位置Ｑが読み出し位置Ｐ１における属性に基づいて決定される。上述の通り、属性は、データを挟むタグにより与えられる。すなわち、読み出し位置Ｐ１においては、読み出し位置Ｐ１に至るまでに開始タグが読み出され、且つ終了タグが読み出されていないタグにより、属性が与えられる。本実施形態においては、読み出し位置における属性が判別されるように、開始タグが読み出され且つ終了タグは読み出されていないタグを示す状態情報Ｓの更新が、タグの読み出しに応じて行なわれる。状態情報Ｓについては図３に基づいて後述するが、読み出し位置に複数の属性が付与されていること状態情報Ｓに示される場合には、複数の属性それぞれに基づいて、全文検索インデックスの更新が行なわれる。
【００２５】
図３は、状態情報の更新の例を示す。図３では、状態情報ＳがファイルＦ１に含まれるタグの読み出しに応じて更新されることが、ファイルＦ１の読み出しの各工程における状態情報Ｓ０〜Ｓ６により示される。図３の例においては、検索条件として指定可能なタグが予めｍ種類設定してある。図３に例示される状態情報Ｓ（状態情報Ｓ０〜Ｓ６）は、ｍ種類の各タグに対応する番号（０〜ｍ−１）の位置に配置されたビットにより構成されるｍ−１ビットのビット列である。
【００２６】
図３の例では、症状タグの番号は「０」であり、薬効タグの番号は「１」であり、副作用タグの番号は「２」であり、持病タグの番号は「３」であり、性別タグの番号は「ｍ−１」である。
【００２７】
副作用タグは、開始タグ＜副作用＞および終了タグ＜／副作用＞のセットで機能し、開始タグ＜副作用＞と終了タグ＜／副作用＞との間のデータが「副作用」という属性を有することを示す。持病タグは、開始タグ＜持病＞および終了タグ＜／持病＞のセットで機能し、開始タグ＜持病＞と終了タグ＜／持病＞との間のデータが「持病」という属性を有することを示す。性別タグは、開始タグ＜性別＞および終了タグ＜／性別＞のセットで機能し、開始タグ＜性別＞と終了タグ＜／性別＞との間のデータが「性別」という属性を有することを示す。
【００２８】
ファイルの読み出しを行なう前の状態情報Ｓ０は、いずれの開始タグも読み出されていないので、番号「０」〜「ｍ−１」までビットの値は「０」である。ファイルＦ１から順次読み出しが行なわれ、開始タグ＜症状＞が読み出されると、読み出し位置から先のデータは「症状」という属性を有するデータであるので、症状タグに対応する番号「０」のビットが「０」から「１」に変更される。これにより、状態情報Ｓ０が状態情報Ｓ１に更新される。
【００２９】
さらにファイルＦ１の読み出しが進められ、開始タグ＜薬効＞が読み出されると、それ以降のデータは「薬効」という属性を有するので、薬効タグに対応する番号「１」のビットが「０」から「１」に変更される。これにより、状態情報Ｓ１が状態情報Ｓ２に更新される。続いて読み出される文字情報「発熱」は、状態情報Ｓ２において症状タグに対応する番号「０」および薬効タグに対応する番号「１」の双方のビットの値が「１」であるので、「症状」および「薬効」の属性を有していることが示される。文字情報「発」および「熱」の各々について、「症状」および「薬効」の属性に基づいた全文検索インデックスの更新が行なわれる。
【００３０】
さらにファイルＦ１の読み出しが進められ、終了タグ＜／薬効＞が読み出されると、それ以降のデータは「薬効」という属性を有しないので、薬効タグに対応する番号「１」のビットが「１」から「０」に変更される。これにより、状態情報Ｓ２が状態情報Ｓ３に更新される。
【００３１】
さらにファイルＦ１の読み出しが進められ、開始タグ＜副作用＞が読み出されると、それ以降のデータは「副作用」という属性を有するので、副作用タグに対応する番号「２」のビットが「０」から「１」に変更される。これにより、状態情報Ｓ３が状態情報Ｓ４に更新される。また、終了タグ＜／副作用＞が読み出されると、それ以降のデータは「副作用」という属性を有しないので、副作用タグに対応する番号「２」のビットが「１」から「０」に変更される。これにより、状態情報Ｓ４が状態情報Ｓ５に更新される。
【００３２】
さらに、終了タグ＜／症状＞が読み出されると、それ以降のデータは「症状」という属性を有しないので、症状タグに対応する番号「０」のビットが「１」から「０」に変更される。これにより、状態情報Ｓ５が状態情報Ｓ６に更新される。
【００３３】
状態情報Ｓ１〜Ｓ５のいずれについても、読み出した文字情報が「症状」という属性を有することを示す。また、状態情報Ｓ２の状態で読み出された文字情報は、「症状」および「薬効」の双方の属性を有する。状態情報Ｓ２の状態で文字情報が読み出されると、「症状」の属性に基づく全文検索インデックスの更新と、「薬効」に基づく全文検索インデックスの更新との双方が行なわれる。
【００３４】
図４は、全文検索インデックスの例を示す。図４に例示する全文検索インデックスＩ２は、ファイルＦ１〜Ｆｎおよび状態情報Ｓに示されるｍ種類のタグの組み合わせの各々に対応するｍ×ｎの列を含む。また、全文検索インデックスＩ２は、全文検索インデックスＩ２で絞り込みに用いられる文字情報として設定された文字情報の数ｋ１の行を含む。
【００３５】
各ファイルに対してｍ個のビット列が割り当てられており、例えば、０〜ｍ−１のビット列がファイルＦ１に対応する。また、例えば、０番目のビット列はファイルＦ１のタグ番号「０」（症状タグ）に対して割り当てられたビット列である。また、１番目のビット列はファイルＦ１のタグ番号「１」（薬効タグ）に対して割り当てられたビット列である。また、ｍ番目のビット列はファイルＦ２のタグ番号「０」（症状タグ）に対して割り当てられたビット列である。すなわち、ファイルＦ１の文字構成は０〜ｍ−１のビット列に示されており、ファイルＦ１と症状タグとの組み合わせに対応するデータ単位の文字構成が０番目のビット列に示されている。
【００３６】
全文検索インデックスＩ２において列を指定する座標Ｑｉは、Ｑｉ＝（ファイルの番号）×ｍ＋（タグの番号）の計算式で算出される。全文検索インデックスＩ２においては、同じファイルに含まれる文字情報であっても、状態情報Ｓに示されるタグによって異なるビット列に対して更新が行なわれる。
【００３７】
一方、座標Ｑｊは、全文検索インデックスＩ２の生成の第１の例においては、ハッシュ関数（Ｈａｓｈ１）を用いて算出される。読み出した文字情報を示す文字コードをハッシュ関数（Ｈａｓｈ１）の引数に用いて、例えば、Ｑｊ＝Ｈａｓｈ１（文字情報）で座標Ｑｊが算出される。
【００３８】
また、全文検索インデックスＩ２の生成の第２の例においては、座標Ｑｊとして、変換テーブルＴ１において文字情報と対応付けられたオフセット値が用いられる。変換テーブルＴ１の詳細については図６に基づいて後述する。読み出した文字情報に基づいて変換テーブルＴ１の参照が行なわれ、オフセット値が読み出される。
【００３９】
上述の第１の例または第２の例に示される方法により、読み出した文字情報に対応する座標Ｑｊが算出され、座標Ｑｉと合わせて、文字情報に対応するビット位置Ｑが特定される。さらに、特定された位置Ｑのビットに対して更新が行なわれる。
【００４０】
検索対象の絞込みを行なう際には、検索文字列に含まれる各文字情報に対応する各ビット行が全文検索インデックスＩ２から取得される。例えば取得された各ビット行で論理積演算が行なわれ、その論理積演算結果のビット列から、検索対象に指定されたタグに対応するビットが参照される。すなわち、論理積演算結果のビット行のうち、座標Ｑｉ＝（ファイル番号）×ｍ＋（指定されたタグの番号）に対応するビットであって、値が「１」であるビットについて、対応するファイル番号が出力される。出力されたファイル番号に対応するファイルが検索対象のファイルとなる。
【００４１】
図５は、全文検索インデックスの例を示す。図５に例示する全文検索インデックスＩ３は、各ファイルに対応するｎ列と、各文字情報および検索対象として指定可能な各タグの組み合わせに対応する行とで構成される。０〜ｎ−１の各ビット列について、ファイルＦ１〜Ｆｎの各々が対応する。全文検索インデックスＩ３における座標Ｑｉは、Ｑｉ＝（ファイル番号）で示される。
【００４２】
全文検索インデックスＩ３で設定される文字情報の数をｋ２とすると、全文検索インデックスＩ３にはｍ×ｋ２行のビット行が含まれる。文字情報およびタグの組み合わせに対応する座標Ｑｊの算出は、例えば下記の３例のように行なわれる。
【００４３】
全文検索インデックスＩ３の生成の第１の例においては、座標Ｑｊは、０〜ｋ２−１までの値を返すハッシュ関数（Ｈａｓｈ２）を用いて算出される。座標値Ｑｊは、例えば、Ｑｊ＝Ｈａｓｈ２（文字情報）＋（タグの番号）×ｋ２で算出される。
【００４４】
また、全文検索インデックスＩ３の生成の第２の例においては、座標Ｑｊの算出に、文字情報と全文検索インデックスＩ３におけるオフセット値とを対応づけた変換テーブルＴ２が用いられる。変換テーブルＴ２の詳細については図７を用いて後述する。文字情報およびタグに対応する座標値Ｑｊは、例えば、Ｑｊ＝（文字情報と変換テーブルＴ２で対応付けられたオフセット値）＋（タグの番号）×ｋ２で算出される。この場合には、各タグについて、共通のｋ２種類の文字情報が組み合わされたビット行が全文検索インデックスＩ３に含まれる。
【００４５】
また、全文検索インデックスＩ３の生成の第３の例においては、座標Ｑｊの算出に、文字情報およびタグの組み合わせと全文検索インデックスＩ３におけるオフセット値とを対応づけた変換テーブルＴ３が用いられる。変換テーブルＴ３の詳細については図８を用いて後述する。文字情報およびタグの組み合わせに対して変換テーブルＴ３において対応付けられたオフセット値が、座標値Ｑｊに用いられる。
【００４６】
全文検索インデックスＩ３の生成において文字情報が読み出されると、その文字情報と文字情報の属性とに基づいて座標Ｑｊが算出され、さらに読み出し元のファイルのファイ番号に応じて座標Ｑｉが決定される。ファイルＦ１〜Ｆｎの各々について順次行なわれる文字情報の読み出しに応じて、座標Ｑｉおよび座標Ｑｊによる位置Ｑのビットの更新が順次行なわれることで、全文検索インデックスＩ３が生成される。
【００４７】
検索対象の絞込みを行なう際には、検索文字列に含まれる各文字情報とタグとの組み合わせに対応する各ビット行が全文検索インデックスＩ３から取得される。例えば取得されたビット行同士で論理積演算が行なわれ、その論理積演算結果のビット列のうち、値が「１」であるビットに対応するファイル番号が出力される。出力されたファイル番号に対応するファイルが検索対象のファイルとなる。
【００４８】
図６は、変換テーブルＴ１の例を示す。図６に例示される変換テーブルＴ１には、全文検索インデックスＩ２で検索対象の絞り込みの条件に利用される文字情報（例えば、「発」、「熱」、「ｆ」、「ｅ」、「ｖ」、「ｒ」など）が含まれる。変換テーブルＴ１に含まれる各文字情報には、全文検索インデックスＩ２におけるオフセット値が対応付けられる。
【００４９】
図７は、変換テーブルＴ２の例を示す。図７に例示される変換テーブルＴ２には、全文検索インデックスＩ３で検索対象の絞り込みの条件に利用される文字情報が含まれる。変換テーブルＴ２を用いた検索対象の絞り込みでは、各タグについて、共通の文字情報群（２種類）との組み合わせが用意される。そのため、変換テーブルＴ２においては、文字情報と全文検索インデックスＩ３におけるオフセット値の対応関係が示される。変換テーブルＴ２に含まれるオフセット値により、タグに関連する複数のビット行において何行目であるかが示される。
【００５０】
全文検索インデックスＩ３の生成に図６に示す変換テーブルＴ１が用いられてもよい。全文検索インデックスＩ２のサイズはｎ×ｍ×ｋ１であるのに対して、全文検索インデックスＩ３のサイズはｎ×ｍ×ｋ２である。全文検索インデックスＩ３の生成に図６に示す変換テーブルＴ１が用いられると、全文検索インデックスＩ２と同サイズの全文検索インデックスが生成される。
【００５１】
しかしながら、全文検索インデックスＩ２も全文検索インデックスＩ３も属性に応じた全文検索インデックスとしているため、タグの数ｍに応じて、通常の全文検索インデックスよりもサイズが大きくなってしまう。
【００５２】
図８は、変換テーブルＴ３の例を示す。図８に例示される変換テーブルＴ３には、全文検索インデックスＩ３で検索対象の絞り込みの条件に利用される文字情報とタグとの組み合わせが含まれる。変換テーブルＴ３においては、各タグについて個別に文字情報群との組み合わせが可能となる。例えば、症状タグと「発」や「熱」などの文字情報との組み合わせが変換テーブルＴ３に含まれる。性別タグと「男」や「女」などの文字情報との組み合わせが変換テーブルＴ３に含まれる一方で、性別タグと「発」や「熱」などの文字情報との組み合わせは含まれない。
【００５３】
変換テーブルＴ３を用いて生成される全文検索インデックスＩ３のサイズは、ｎ×ｍ×ｋｘとなる。ｋｘは、各属性における文字情報の平均値である。属性によって、文字情報の数が抑えられれば、変換テーブルＴ３を用いることにより全文検索インデックスＩ３のサイズが抑制される。
【００５４】
上述の全文検索インデックスＩ２または全文検索インデックスＩ３は、読み出し位置の状態情報Ｓに応じて全文検索インデックス内のビットの更新が行なわれる。タグが入れ子構造になっていたとしても、状態情報Ｓは上位階層のタグおよび下位階層のタグ双方の範囲内であることを示すことができるので、上位階層のタグと下位階層のタグの双方に関するビットの更新が行なわれる。このようなビットの更新が行なわれることで、上位階層のタグおよび下位階層のタグのいずれに対しても検索対象絞り込みの条件に用いることが可能な全文検索インデックスが生成される。
【００５５】
［構成と処理手順］
図９は、機能ブロック構成例を示す。図９に例示されるコンピュータ１は、生成部１１、記憶部１２および抽出部１３を含む。生成部１１は、全文検索インデックスを生成する機能ブロックであり、読出部１１１、状態管理部１１２および算出部１１３を含む。記憶部１２は、ファイルＦ１〜Ｆｎおよび生成部１１が生成した全文検索インデックスを記憶する機能ブロックであり、生成部１１および抽出部１３のワークエリアとして用いられる記憶領域を備える。抽出部１３は、記憶部１２に記憶された全文検索インデックス（全文検索インデックスＩ２または全文検索インデックスＩ３）を用いて検索対象のファイルの絞り込みを行なう機能ブロックである。
【００５６】
読出部１１１は、ファイルＦ１〜Ｆｎについて順次読み出しを行なう。各ファイルに対する読み出しにおいては、読出部１１１は、各ファイル内のヘッダ部分やフッダ部分を除いたデータ部分を順次読み出す。状態管理部１１２は、読出部１１１の読み出しに応じて状態情報Ｓを管理する。状態管理部１１２は、図３に例示されるように、読出部１１１による開始タグや終了タグの読み出しに応じて状態情報Ｓの更新を行なう。算出部１１３は、読出部１１１による文字情報の読み出しに応じて、全文検索インデックス内の更新位置Ｑを算出する。算出部１１３は、読出し部１１１が読み出しを行なっているファイルのファイル番号、状態情報Ｓが示すタグの番号、読出部１１１が読み出した文字情報に基づいて、上述の方法により位置Ｑを算出する。この際、算出部１１３は、状態情報Ｓが複数の属性を示す場合には、それぞれの属性に基づいて複数の位置Ｑを算出する。さらに、生成部１１は、算出部１１３により複数の位置Ｑが算出されると、全文検索インデックス内のそれぞれの位置Ｑに対して更新を行なう。
【００５７】
算出部１３１は、検索文字列に含まれる文字情報と、検索条件として指定されたタグとに基づいて、全文検索インデックス内のビット群を特定する情報を算出する。全文検索インデックスＩ２においては、算出部１３１は、ビット行と、ビット行内で指定されたタグと関連するビットの位置を特定する。全文検索インデックスＩ３においては、算出部１３１は、ビット行を特定する。状態情報Ｓが複数の属性を示す場合には、算出部１３１は、それぞれの属性について、対応するビット群を特定する。生成部１３２は、算出部１３１により特定されたビット群に基づき、検索対象のファイルを絞り込み、絞り込まれたファイルのファイル番号のリストを生成する。
【００５８】
コンピュータ１は、さらに、生成部１３２により生成されたリストに含まれる各ファイルに対して、検索条件に指定された検索文字列およびタグに基づいて検索を行なう検索部を含んでもよい。
【００５９】
図１０は、インデックス生成処理の手順例を示す。記憶部１２に含まれるファイルＦ１〜Ｆｎに対する全文検索インデックスの生成指示を生成部１１が受けると、読出部１１１は、ファイルＦ１〜Ｆｎから１つのファイルを選択する（Ｓ１０１）。例えば、上述の通りファイルＦ１〜Ｆｎにファイル番号が割り当てられていれば、ファイル番号の小さいファイルから順に選択される。続いて、読出部１１１は、Ｓ１０１で選択されたファイルから文字情報を読み出す（Ｓ１０２）。読出部１１１は、読み出し対象のファイルのファイル番号と、ファイル内の読み出し位置を示す情報を保持する。Ｓ１０２の処理においては、読出部１１１は、保持しているファイル番号と読み出し位置とに基づいて読み出しを行ない、読み出した文字情報のデータ長に応じて読み出し位置を更新する。
【００６０】
生成部１１は、Ｓ１０２で読み出した文字情報がタグであるか否かを判定する（Ｓ１０３）。Ｓ１０２で読み出した文字情報がタグである場合（Ｓ１０３：ＹＥＳ）には、状態管理部１１２は状態情報Ｓの更新を行なう（Ｓ１０４）。Ｓ１０２で読み出したタグが開始タグであればタグに対応するビットの値を「１」とし、終了タグであればタグに対応するビットの値を「０」とする。状態管理部１１２が状態情報Ｓを更新すると、Ｓ１０２の手順に移り、読出部１１１による文字情報の読み出しが行なわれる。
【００６１】
Ｓ１０２で読み出した文字情報がタグでない場合（Ｓ１０３：ＮＯ）には、算出部１１３が位置Ｑの算出を行なう（Ｓ１０５）。続いて、生成部１１は、Ｓ１０５で算出部１１３が算出した位置Ｑのビットの値を「１」に更新する（Ｓ１０６）。Ｓ１０６を終えると、読出部１１１は、読み出し位置がファイルのデータ部分の終端であるか否かを判定する（Ｓ１０７）。読み出し位置がファイルのデータ部分の終端でない場合（Ｓ１０７：ＮＯ）には、Ｓ１０２の手順に移り、読出部１１１による文字情報の読み出しが行なわれる。
【００６２】
また、読み出し位置がファイルの終端である場合（Ｓ１０７：ＹＥＳ）には、読出部１１１は、ファイルＦ１〜Ｆｎの全てのファイルがＳ１０１の処理により選択されたか否かを判定する（Ｓ１０８）。ファイルＦ１〜Ｆｎに選択されていないファイルが含まれている場合（Ｓ１０８：ＮＯ）には、手順がＳ１０１に移り、読出部１１１によるファイルの選択が行なわれる。ファイルＦ１〜Ｆｎの全ファイルが選択された場合（Ｓ１０８：ＹＥＳ）には、生成部１１が全文検索インデックスを記憶部１２に格納し、インデックス生成処理が終了する。
【００６３】
図１１は、対象ファイル抽出処理の手順例を示す。ファイルＦ１〜Ｆｎに対して行なわれる検索の検索条件として検索文字列およびタグが指定されると、対象ファイル抽出処理が開始される。まず、抽出部１３は、指定された検索文字列およびタグを取得する（Ｓ２０１）。続いて、抽出部１３は、検索文字列を複数の文字情報に分解する（Ｓ２０２）。例えば、「発熱」などの検索文字列が指定された場合には、「発」および「熱」などの文字情報に分解される。
【００６４】
算出部１３１は、分解された文字情報から文字情報を１つ選択する（Ｓ２０３）。さらに、算出部１３１は、Ｓ２０３で選択した文字情報に基づいて、座標Ｑｊを算出する（Ｓ２０４）。座標Ｑｊの算出方法については、上述の通りである。全文検索インデックスＩ２のように、座標Ｏｊのビット行に複数の属性に関する情報が含まれる場合には、Ｓ２０４において算出部１３１はさらに、検索条件に含まれる属性に関するビット群の位置を算出する。具体的には、上述の通り、各ビットの位置が座標Ｑｉ＝（ファイル番号）×ｍ＋（指定されたタグの番号）で示される。
【００６５】
生成部１３２は、算出部１３１で座標Ｑｊが生成されると、座標Ｑｊに基づいてビット行の読み出しを行なう（Ｓ２０５）。Ｓ２０５のビット行の読み出しが初回の読み出しであれば、生成部１３２はＳ２０５で読み出したビット行をそのまま保持し、初回でなければ、過去に保持したビット行と直前のＳ２０５で読み出したビット行とで論理積演算を行ない、その結果得られたビット行を保持する（Ｓ２０６）。全文検索インデックスＩ２を用いる場合には、生成部１３２は、Ｓ２０４で特定されたビットの位置のビットのみを抽出して構成されるビット列で、Ｓ２０６の演算を行なう。
【００６６】
続いて、生成部１３２は、Ｓ２０２で分解された複数の文字情報のうち未選択の文字情報があるか否かを判定する（Ｓ２０７）。未選択の文字情報があれば（Ｓ２０７：ＮＯ）、手順がＳ２０３に移り、算出部１３１により文字情報が選択される。
【００６７】
生成部１３２が、Ｓ２０２で分解された複数の文字情報が全て選択されたと判断した場合（Ｓ２０７：ＹＥＳ）には、生成部１３２は、生成部１３２に保持されたビット列に示されるファイル番号のリストを生成する（Ｓ２０８）。Ｓ２０８で生成されたリストに番号を示されるファイルが検索対象のファイルとなる。Ｓ２０８の処理が終わると、対象ファイル抽出処理が終了する。
【００６８】
［全文検索インデックスの圧縮］
図４および図５に示す全文検索インデックスは、文字情報の種類の数、ファイル数およびタグの種類の数によりデータサイズが増減する。また、上述の実施形態によれば、全文検索インデックスのビット行を示す位置Ｑｊは、例えばハッシュ関数を用いて算出された。例えば、図４に示す全文検索インデックスＩ２では、ｋ１種類の文字情報を引数とするハッシュ値のそれぞれが別々の位置Ｑｊを示すことにより、それぞれの文字情報について個別に存否を示すビット行が生成される。また、図５に示す全文検索インデックスＩ３では、ｋ２種類の文字情報を引数とするハッシュ値のそれぞれが別々の位置Ｑｊを示すことにより、それぞれの文字情報について個別に存否を示すビット行が生成される。
【００６９】
そこで、例えば、全文検索インデックスＩ２に用いられる文字情報の数ｋ１よりも小さい数ｋ３通りの値を返すハッシュ関数（Ｈａｓｈ３）がハッシュ関数（Ｈａｓｈ１）の代わりに用いられる。ハッシュ関数（Ｈａｓｈ３）は、例えば、文字情報を引数として０〜ｋ３−１までの値を返すハッシュ関数である。すると、全文検索インデックスに含まれる行数が全文検索インデックスＩ２よりも少なくなるため、全文検索インデックスのデータサイズが全文検索インデックスＩ２より小さくなる。この場合、文字情報の種類よりもハッシュ関数Ｈａｓｈ３が返す値の種類が少ないため、一部の文字情報についてはハッシュ値が同じになる。この場合には、位置Ｑｊのビット行に含まれる各ビットにより、同じハッシュ値Ｑｊの引数である複数の文字情報のいずれかが含まれるか否かが示されている。
【００７０】
また、全文検索インデックスＩ３についても同様に圧縮される。例えば、ｋ２×ｍよりも小さい数ｋ４通りの値を返すハッシュ関数（Ｈａｓｈ４）がハッシュ関数（Ｈａｓｈ２）の代わりに用いられる。ハッシュ関数（Ｈａｓｈ４）は、例えば、タグと文字情報とを引数として、０〜ｋ４−１の値を返すハッシュ関数である。すると、全文検索インデックスに含まれる行数が全文検索インデックスＩ３よりも少なくなるため、全文検索インデックスのデータサイズが全文検索インデックスＩ３よりも小さくなる。
【００７１】
以下に、図５に示す全文検索インデックスＩ３の圧縮について説明する。図４に示す全文検索インデックスＩ２の圧縮を行なう場合にも、ハッシュ関数の引数が、タグおよび文字情報の２変数から文字情報のみの１変数に変更すればよい。
【００７２】
図１２は、圧縮された全文検索インデックスの生成例を示す。図１２の生成例においては、ファイルから読み出した文字情報およびその文字情報に属性を付与するタグとの組み合わせが、変換テーブルＴ３ａに登録されているか否かに応じて、異なる全文検索インデックスに対して更新が行なわれる。すなわち、変換テーブルＴ３ａに登録されたタグおよび文字情報の組み合わせが読み出されると全文検索インデックスＩ４ａに反映され、変換テーブルＴ３ａに登録されていないタグおよび文字情報の組み合わせが読み出されると全文検索インデックスＩ４ｂに反映される。
【００７３】
例えば、変換テーブルＴ３ａには、出現頻度の高い（対応するビット行において「１」の値が多い）文字情報およびタグの組み合わせが登録される。また、変換テーブルＴ３ａにおいては、登録される文字情報およびタグの組み合わせに対してそれぞれ異なるオフセット値が対応付けられる。すなわち、変換テーブルＴ３ａに登録された文字情報およびタグの組み合わせに対応付けられたオフセット値が、全文検索インデックスＩ４ａの１つのビット行の位置Ｑｊを示す。全文検索インデックスＩ４ａの行数をｋ５ａとする。
【００７４】
一方、変換テーブルＴ３ａに登録されていない文字情報およびタグについては、文字情報とタグとを引数とするハッシュ関数（Ｈａｓｈ５）により、全文検索インデックスＩ３の位置Ｑｊが算出される。ハッシュ関数（Ｈａｓｈ５）は、ｋ２×ｍ−ｋ５ａよりも小さい数ｋ５ｂ通りの値を返すハッシュ関数である。変換テーブルＴ３ａに登録されない文字情報およびタグの組み合わせの数がｋ２×ｍ−ｋ５ａであるのに対し、ハッシュ関数（Ｈａｓｈ５）のハッシュ値の種類はそれよりも少ない。そのため、変換テーブルＴ３ａに登録されない組み合わせの一部は、同一の位置Ｑｊのビット行に対応付けられる。これにより全文検索インデックスＩ４ｂは圧縮された状態となる。
【００７５】
図１２の生成例では、文字情報とタグとの組み合わせの頻度に応じて、非圧縮の全文検索インデックスに反映させるか圧縮された全文検索インデックスに反映させるかが切り替えられる。高頻度で出現する組み合わせに対応するビット行には、値が「１」のビットが多く含まれる。検索文字列に含まれる各文字情報に対応するビット行の論理積を演算した際に、頻度の高い文字情報は論理積の値も「１」になりやすい傾向にある。そのため、頻度の高い文字情報Ｃ１が他の文字情報Ｃ２と同一のビット行に対応付けられてしまうと、文字情報Ｃ２で検索対象のファイルを絞り込む際に、文字情報Ｃ２を含まずに文字情報Ｃ１を含むファイルが検索対象となってしまう可能性が高くなる。そのため、出現頻度の高い文字情報を除いて全文検索インデックスの圧縮を行なうことにより、検索対象の絞り込みのノイズが抑制され、且つ絞込みノイズが発生しにくい文字情報を利用して全文検索インデックスのデータサイズ抑制を図ることができる。
［本実施形態の実現手段］
以下に、上述の検索処理および全文検索インデックス生成処理の実現手段について説明する。
【００７６】
図１３は、コンピュータ１のハードウェア構成例を示す。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【００７７】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの半導体メモリ、またはＲＡＭ以外にもフラッシュメモリなどが用いられてもよい。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などでもよい。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【００７８】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク３を介した通信を、有線または無線で実行させる回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワーク４によりコンピュータ１と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【００７９】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１と一体になっていてもよいし、コンピュータ１に含まれず、例えば、コンピュータ１に外部から有線または無線で接続する装置であってもよい。
【００８０】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って生成部１１および抽出部１３の少なくとも一方の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１２の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（ファイルＦ１〜ｎなど）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図１４を用いて説明する。
【００８１】
図１４は、コンピュータ１で動作するプログラム構成例を示す。アプリケーションプログラム２４またはミドルウェア２３は、本実施形態の全文検索インデックスの生成機能または全文検索インデックスを用いた検索対象ファイルの絞り込み機能の処理手順が定められたプログラムである。全文検索インデックスの生成機能の処理手順が定められた生成プログラムと、全文検索インデックスを用いた検索対象ファイルの絞り込み機能の処理手順が定められた検索制御プログラムとが一体のプログラムでもよいし、別体のプログラムでもよい。もしくはＯＳ（オペレーティング・システム）２２の一機能として、本実施形態の生成機能および絞り込み機能の少なくとも一方が提供されてもよい。
【００８２】
例えば、上述の生成機能および絞り込み機能の少なくとも一方の処理手順を示す、生成プログラムおよび検索制御プログラムの少なくとも１つは、記憶媒体に記憶される。例えば、その記憶媒体がドライブ装置３０４により読み取られ、インストールされることにより記憶媒体に記憶されたプログラムが実行可能な状態になる。インストールされたプログラムは順次ＲＡＭ３０２に読み出され、ＲＡＭ３０２に読み出されたプログラムに定められた処理手順が順次プロセッサ３０１により実行される。
【００８３】
図９に示すコンピュータ１に含まれる各機能ブロックの機能は、プロセッサ３０１が、生成プログラムまたは検索制御プログラムを実行することにより提供される。図１０に示される処理手順がプロセッサ３０１に実行されることにより、生成部１１および生成部１１内に含まれる各機能ブロックの機能が提供される。また、図１１に示される処理手順がプロセッサ３０１に実行されることにより抽出部１３および抽出部１３内に含まれる各機能ブロックの機能が提供される。
【００８４】
例えば、生成部１１内の機能ブロックは、以下のようにハードウェア群２１を用いて実行される。読出部１１１の機能は、プロセッサ３０１が、レジスタ内で処理ステータス（ＲＡＭ３０２内の読出し位置など）を管理し、管理された処理ステータスに応じてＲＡＭ３０２内にアクセスすることにより提供される。状態管理部１１２の機能は、プロセッサ３０１が、ＲＡＭ３０２から読み出されたデータに対して照合処理を行ない、照合結果に応じて、レジスタで管理する状態情報の更新を行なうことにより実現される。算出部１１３の機能は、ＲＡＭ３０２から読み出されたデータに基づく演算処理を行なうことにより実現される。
【００８５】
例えば、抽出部１３内の機能ブロックは、以下のようにハードウェア群２１を用いて実行される。算出部１３１の機能は、プロセッサ３０１が、ＲＡＭ３０２内へのアクセス位置を算出し、算出されたアクセス位置にアクセスして読み出したデータに対する演算処理を行なうことにより実現される。また、生成部１３２の機能は、プロセッサ３０１が、演算結果に基づき、ＲＡＭ３０２に内にデータを書き込むことにより実現される。
【００８６】
本実施形態によれば、ファイルＦ１〜Ｆｎからのタグの読み出しに応じて、データの属性を示す状態情報を適宜更新するため、読み出し位置のデータに対して属性を付与するタグが状態情報により示される。そのため、入れ子構造となったタグの双方について、タグの範囲内に存在する文字情報の構成を示す構成情報が生成される。このように、タグに対応する構成情報が生成されるため、タグを検索条件に指定して検索を行なう場合には、タグに対応した構成情報を参照することにより、タグの範囲内に検索文字列の文字情報が含まれるか否かが判定可能となる。そのため、タグの範囲外に検索文字列の文字情報が含まれるなど、タグに関する検索条件に合致しないファイルなどが検索対象となる事態（絞り込みのノイズ）が抑制される。そのため、検索処理において、ロードするファイルが減ることになるので、ファイルを格納する記憶装置（例えば記憶媒体３０５）でのＩ／Ｏ回数や、プロセッサ３０１での演算回数が抑制される。
【００８７】
図１５は、コンピュータ１を用いたシステム構成例を示す。図１５に例示する情報処理システムは、コンピュータ１、ネットワーク３、クライアント装置６、ストレージエリアネットワーク（ＳＡＮ）４およびストレージ装置５を含む。例えば、コンピュータ１は、クライアント装置６からの要求に応じた検索処理を行なう。ファイルＦ１〜Ｆｎは、例えばストレージ装置５に圧縮されて記憶されている。コンピュータ１は、クライアント装置６から要求を受けた場合に、圧縮されてストレージ装置５に記憶されたファイルＦ１〜Ｆｎから検索対象のファイルを絞り込む。さらに、コンピュータ１は、絞り込まれた検索対象のファイルを伸張し、伸張したファイルに対してクライアント装置６から要求された条件に基づく検索処理を行なう。
【００８８】
図１５に例示するシステムでは、検索要求を受けるたびにデータの伸張が行なわれる。伸張処理に時間がかかると要求に対する応答までの時間も増大してしまう。本実施形態の検索対象の絞り込み機能によれば、ファイルに対して無駄に伸張処理が実施されることが抑制される。また、圧縮されたファイルのロードに確保される記憶領域も少なく抑えられる。
【００８９】
［ユーザに提供される画面］
図１６は、入力画面の例を示す。図１６に例示される画面Ｇ１は、属性入力欄と、キーワード入力欄と、論理子指定欄と、検索実行ボタンおよびキャンセルボタンとを表示する画面である。
【００９０】
検索条件を入力するユーザは、例えば、属性入力欄に設けられたプルダウンメニューから検索条件として指定したい属性を選択する。プルダウンメニューには、例えば、全文検索インデックスに設定されるｍ種類のタグそれぞれに対応する属性が設定される。属性が設定されると、属性に対応するタグが検索条件として設定される。また、ユーザは、キーワード入力欄に、キーワードを入力する。入力されたキーワードが検索条件として設定される。キーワードが複数入力された場合には、論理子指定欄に指定された論理子で各キーワードを連結させた論理式が検索条件として設定される。論理子指定欄は、例えば、論理積演算子「ＡＮＤ」や論理和演算子「ＯＲ」などが選択可能なプルダウンメニューである。
【００９１】
検索実行ボタンに対して入力操作が行なわれると、属性入力欄、キーワード入力欄および論理子指定欄への入力内容に基づく検索条件を指定する検索要求のコンピュータ１への送信が行なわれる。キャンセルボタンへの入力が行なわれると、画面Ｇ１を閉じる動作が行なわれる。
【００９２】
［変形例の説明］
本発明の本旨を逸脱しない範囲で、上述の実施形態の設計変更は適宜行われうる。例えば、全文検索インデックスＩ１〜Ｉ３、Ｉ４ａおよびＩ４ｂ内の各値は「０」と「１」とが逆であっても構わない。また、「０」および「１」で表現されなくても、「０」および「１」の代わりに互いに識別可能な値が用いられればよい。また、全文検索インデックスＩ１〜Ｉ３、Ｉ４ａおよびＩ４ｂにおける行と列が逆であってもよい。
【００９３】
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
第１の属性を有する第１のデータの文字構成を示す第１の構成情報と、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報と、を記憶する記憶部と、
検索要求に検索文字列および前記第１の属性が指定された場合に、前記第１の構成情報に基づいて前記第１のデータに対する前記検索文字列の検索を制御し、前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、前記第２の構成情報に基づいて前記第２のデータに対する前記検索文字列の検索を制御する制御部と、
を含むことを特徴とする検索制御装置。
（付記２）
前記制御部が、
前記第１の構成情報に示される文字構成が、前記検索文字列に含まれる各文字情報を含む文字構成である場合に、前記第１のデータに対する前記検索文字列の検索を実行させ、
前記第２の構成情報に示される文字構成が、前記各文字情報を含む文字構成である場合に、前記第２のデータに対する前記検索文字列の検索を実行させる、
ことを特徴とする付記１に記載の検索制御装置。
（付記３）
前記第１の属性および前記第２の属性は、それぞれ意味の追加または表示形式の指定を示す属性である、
ことを特徴とする付記１または２に記載の検索制御装置。
（付記４）
前記第１のデータが存在する範囲は、前記第１の属性に対応するタグにより示され、
前記第２のデータが存在する範囲は、前記第２の属性に対応するタグにより示される、
ことを特徴とする付記１〜３のいずれか１つに記載の検索制御装置。
（付記５）
前記検索文字列に含まれる各文字情報は、１または複数の文字で構成される、
ことを特徴とする付記１〜４のいずれか１つに記載の検索制御装置。
（付記６）
コンピュータに、
検索要求に検索文字列および前記第１の属性が指定された場合に、第１の属性を有する第１のデータの文字構成を示す第１の構成情報に基づいて、前記第１のデータに対する前記検索文字列の検索を制御し、
前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報に基づいて、前記第２のデータに対する前記検索文字列の検索を制御する、
ことを実行させることを特徴とする検索制御方法。
（付記７）
コンピュータに、
検索要求に検索文字列および前記第１の属性が指定された場合に、第１の属性を有する第１のデータの文字構成を示す第１の構成情報に基づいて、前記第１のデータに対する前記検索文字列の検索を制御し、
前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報に基づいて、前記第２のデータに対する前記検索文字列の検索を制御する、
処理を実行させることを特徴とする検索制御プログラム。
（付記８）
検索対象データの読み出し位置を含む範囲を指定し、指定した前記範囲内のデータに関する追加情報を示すタグを複数種類検知する検知部と、
前記読み出し位置から第１の文字情報が読み出されると、タグにより指定される範囲内に前記第１の文字情報が含まれる旨を示す存在情報を、前記検知部により検知された前記複数種類のタグの各々について生成する生成部と、
を含むことを特徴とする生成装置。
（付記９）
前記検知部は、
前記読み出し位置を含む範囲を指定するタグを示す状態情報を、前記開始タグおよび前記終了タグのいずれかの読み出しに応じて更新し、
前記状態情報に示されるタグを検知する、
ことを特徴とする付記８に記載の生成装置。
（付記１０）
前記開始タグの読み出しに応じた更新が行なわれると、前記状態情報は、読み出した前記開始タグに対応するタグが読み出し位置を含む範囲を指定するタグである旨を示し、
前記終了タグを読み出しに応じた更新が行なわれると、前記状態情報は、読み出した前記終了タグに対応するタグが読み出し位置含む範囲を指定するタグでない旨を示す、
ことを特徴とする付記９に記載の生成装置。
（付記１１）
前記複数種類のタグの各々に対して文字情報群が設定され、
前記存在情報は、前記存在情報に対応するタグに対して設定された前記文字情報群に前記第１の文字情報が含まれる場合に生成される、
ことを特徴とする付記８〜１０のいずれか１つに記載の生成装置。
（付記１２）
前記存在情報が、前記第１の文字情報または前記第１の文字情報と異なる第２の文字情報が含まれる旨を示す、
ことを特徴とする付記８〜１０のいずれか１つに記載の生成装置。
（付記１３）
コンピュータに、
検索対象データの読み出し位置を含む範囲を指定し、指定した前記範囲内のデータに関する追加情報を示すタグを、複数種類検知し、
前記読み出し位置から第１の文字情報が読み出されると、タグにより指定される範囲内に前記第１の文字情報が含まれる旨を示す存在情報を、前記検知部により検知された前記複数種類のタグの各々について生成する、
ことを実行させることを特徴とする生成方法。
（付記１４）
コンピュータに、
検索対象データの読み出し位置を含む範囲を指定し、指定した前記範囲内のデータに関する追加情報を示すタグを、複数種類検知し、
前記読み出し位置から第１の文字情報が読み出されると、タグにより指定される範囲内に前記第１の文字情報が含まれる旨を示す存在情報を、前記検知部により検知された前記複数種類のタグの各々について生成する、
処理を実行させることを特徴とする生成プログラム。
（付記１５）
プロセッサを含む検索制御装置であって、
前記プロセッサが、
検索要求に検索文字列および前記第１の属性が指定された場合に、第１の属性を有する第１のデータの文字構成を示す第１の構成情報に基づいて、前記第１のデータに対する前記検索文字列の検索を制御し、
前記検索要求に前記検索文字列および前記第２の属性が指定された場合に、第２の属性を有し且つ前記第１のデータを含む第２のデータの文字構成を示す第２の構成情報に基づいて、前記第２のデータに対する前記検索文字列の検索を制御する、
ことを特徴とする検索制御装置。
（付記１６）
プロセッサを含む生成装置であって、
前記プロセッサが、
検索対象データの読み出し位置を含む範囲を指定し、指定した前記範囲内のデータに関する追加情報を示すタグを、複数種類検知し、
前記読み出し位置から第１の文字情報が読み出されると、タグにより指定される範囲内に前記第１の文字情報が含まれる旨を示す存在情報を、前記検知部により検知された前記複数種類のタグの各々について生成する、
ことを特徴とする生成装置。
【符号の説明】
【００９４】
１        コンピュータ
２        基地局
３        ネットワーク
４        ストレージエリアネットワーク
５        ストレージ装置
６        クライアント装置
【図１】
2014215982.tif 000003
【図２】
2014215982.tif 000004
【図３】
2014215982.tif 000005
【図４】
2014215982.tif 000006
【図５】
2014215982.tif 000007
【図６】
2014215982.tif 000008
【図７】
2014215982.tif 000009
【図８】
2014215982.tif 000010
【図９】
2014215982.tif 000011
【図１０】
2014215982.tif 000012
【図１１】
2014215982.tif 000013
【図１２】
2014215982.tif 000014
【図１３】
2014215982.tif 000015
【図１４】
2014215982.tif 000016
【図１５】
2014215982.tif 000017
【図１６】
2014215982.tif 000018