(57)【要約】  圧縮符号表（１６００）では、ハフマン木（１４０１）において、文字コード／記号に対し、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグが設定されていることがわかる。ここで、伸長フラグとは、サーチ中に出現するタグのうち、伸長対象となるタグを特定するためのフラグである。開始タグに対しては「ＯＮ」が設定される。「ＯＮ」は、伸長開始を意味する伸長フラグである。したがって、伸長フラグ「ＯＮ」を検出した場合、その開始タグから伸長を開始する。また、「ＯＮ」に設定された開始タグに対応する終了タグに対しては「ＯＦＦ」が設定される。
2008142800.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成手段、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力手段、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長手段、
として機能させることを特徴とする情報検索プログラム。
【請求項２】
前記設定手段は、
前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、
前記伸長手段は、
前記検出手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を、前記ハフマン木を用いて伸長することを特徴とする請求項１に記載の情報検索プログラム。
【請求項３】
前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することを特徴とする請求項１または２に記載の情報検索プログラム。
【請求項４】
前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された検索キーワードの先頭文字データの圧縮符号に対し、前記検索キーワードと一致する文字列へのアクセスを許可するアクセス権フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記アクセス権フラグが設定された圧縮符号のみを検出することを特徴とする請求項１または２に記載の情報検索プログラム。
【請求項５】
前記コンピュータを、
前記入力手段によって入力された検索キーワードを、前記ハフマン木を用いて圧縮することにより、圧縮キーワードを生成する検索キーワード圧縮手段、
前記圧縮化ＸＭＬファイル内の圧縮符号列と前記検索キーワード圧縮手段によって圧縮された圧縮キーワードとを照合する照合手段、として機能させ、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段によって前記圧縮キーワードと一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする請求項１または２に記載の情報検索プログラム。
【請求項６】
前記検索キーワード圧縮手段は、
前記検索キーワードの先頭文字データ以外の残余の検索キーワードを、前記ハフマン木を用いて圧縮することにより、前記残余の検索キーワードに関する圧縮キーワードを生成し、
前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記検索キーワードの先頭文字データに関する圧縮符号と同一の圧縮符号に対し、前記残余の検索キーワードに関する圧縮キーワードとの照合を指示する照合フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記照合フラグが設定された圧縮符号を検出し、
前記照合手段は、
前記検出手段によって前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記残余の検索キーワードに関する圧縮キーワードとを照合し、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする請求項５に記載の情報検索プログラム。
【請求項７】
前記入力手段は、
前記検索条件として、さらに、前記検索キーワードによる前方一致検索の入力を受け付け、
前記設定手段は、
前記入力手段により前記前方一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記種別情報に関するＸＭＬ開始タグの圧縮符号に対し、前記圧縮キーワードとの照合を指示する照合フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記照合フラグが設定された圧縮符号を検出し、
前記照合手段は、
前記検出手段によって前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記圧縮キーワードとを照合し、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする請求項５に記載の情報検索プログラム。
【請求項８】
前記入力手段は、
前記検索条件として、さらに、前記検索キーワードによる後方一致検索の入力を受け付け、
前記検索キーワード圧縮手段は、
前記入力手段により前記後方一致検索が前記検索条件として受け付けられた場合、前記検索キーワードの先頭文字データ以外の残余の検索キーワードおよび前記ＸＭＬ終了タグを、前記ハフマン木を用いて圧縮することにより、前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードを生成し、
前記設定手段は、
前記入力手段により前記後方一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記検索キーワードの先頭文字データに関する圧縮符号と同一の圧縮符号に対し、前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとの照合を指示する照合フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記照合フラグが設定された圧縮符号を検出し、
前記照合手段は、
前記検出手段によって前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとを照合し、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする請求項５に記載の情報検索プログラム。
【請求項９】
前記入力手段は、
前記検索条件として、さらに、前記検索キーワードによる完全一致検索の入力を受け付け、
前記検索キーワード圧縮手段は、
前記入力手段により前記完全一致検索が前記検索条件として受け付けられた場合、前記検索キーワードおよび前記ＸＭＬ終了タグを、前記ハフマン木を用いて圧縮することにより、前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードを生成し、
前記設定手段は、
前記入力手段により前記完全一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記ＸＭＬ開始タグに関する圧縮符号に対し、前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとの照合を指示する照合フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記照合フラグが設定された圧縮符号を検出し、
前記照合手段は、
前記検出手段によって前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとを照合し、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする請求項５に記載の情報検索プログラム。
【請求項１０】
コンピュータを、
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の数値データの出現頻度に基づいて、ハフマン木を生成する生成手段、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段、
数値データおよび当該数値データの種別情報からなる検索条件の入力を受け付ける入力手段、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を抽出する抽出手段、
として機能させることを特徴とする情報検索プログラム。
【請求項１１】
前記設定手段は、
前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、
前記抽出手段は、
前記検出手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を抽出することを特徴とする請求項１０に記載の情報検索プログラム。
【請求項１２】
前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することを特徴とする請求項１０または１１に記載の情報検索プログラム。
【請求項１３】
請求項１または１０に記載の情報検索プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【請求項１４】
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成手段と、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段と、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力手段と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段と、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段と、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長手段と、
を備えることを特徴とする情報検索装置。
【請求項１５】
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の数値データの出現頻度に基づいて、ハフマン木を生成する生成手段と、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段と、
数値データおよび当該数値データの種別情報からなる検索条件の入力を受け付ける入力手段と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段と、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段と、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を抽出する抽出手段と、
を備えることを特徴とする情報検索装置。
【請求項１６】
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成工程と、
前記生成工程によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮工程と、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力工程と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力工程によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定工程と、
前記ファイル圧縮工程によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出工程と、
前記検出工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長工程と、
を含んだことを特徴とする情報検索方法。
【請求項１７】
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の数値データの出現頻度に基づいて、ハフマン木を生成する生成工程と、
前記生成工程によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮工程と、
数値データおよび当該数値データの種別情報からなる検索条件の入力を受け付ける入力工程と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力工程によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定工程と、
前記ファイル圧縮工程によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出工程と、
前記検出工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を抽出する抽出工程と、
を含んだことを特徴とする情報検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、治験データなどの文字データや数値データが記述されたＸＭＬファイルに対する高速化検索技術に関する情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法である。
【背景技術】
【０００２】
現在、治験データなどはＯＲＡＣＬＥやＳＱＬデータベースを利用して作られており、日々更新されている。しかし、オープン性に乏しいため、システム移行や拡張が課題となっており、最近ではオープン性にすぐれたＸＭＬデータに移行しつつある。【０００３】
また、下記特許文献１には、ＨＴＭＬ形式におけるコンテンツの圧縮・暗号化・全文検索をおこなう情報検索プログラムが開示されている。【０００４】
【特許文献１】国際公開番号ＷＯ２００６／１２３４４８
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、治験データのように複雑な構造を持つデータをＸＭＬ変換すると、タグ情報量が多く、そのファイルサイズが数倍から２０倍に増加する。このようなＸＭＬファイルを検索対象とすると、検索対象の数値や文字列に比べ、ＸＭＬタグの文字列が長く、検索の性能劣化の障害となっている。【０００６】
図５６は、治験データに関するＸＭＬデータを示す説明図である。たとえば、治験データのＸＭＬデータにおいて、患者名のイニシャル「Ｔ．Ｃ」を検索対象とする場合、そのＸＭＬ開始タグ<patient_initialxml_title="患者イニシャル">およびＸＭＬ終了タグ</patient_initial>をサーチする必要があり、検索の性能劣化の障害となっている。【０００７】
また、治験データでは、同一の文字列であっても、その文字列を意味する項目が薬効、副作用など様々である。この項目は上述したＸＭＬタグをサーチすることで特定されるため、ＸＭＬタグのサーチが必要不可欠であり、検索の性能劣化の障害となっている。【０００８】
同様に、治験データでは、同一の数値であっても、その数値を意味する項目が体重、年齢、血糖値など様々である。この項目は上述したＸＭＬタグをサーチすることで特定されるため、ＸＭＬタグのサーチが必要不可欠であり、検索の性能劣化の障害となっている。【０００９】
このように、ＸＭＬタグの種類が多く複雑であり、１件あたりのデータサイズが大きくなる。特に、複数の形式を統一し治験データを１ファイル化するとＸＭＬタグが増加し、ファイルが巨大化する。したがって、検索の性能が劣化するという問題がある。【００１０】
また、治験データは追加や削除が頻繁におこなわれるため、統合されたファイルのメンテナンスの処理時間が膨大になるという問題がある。さらに、治験データのような情報は分析に用いられる反面、個人情報に該当するため、分析者以外の者への情報漏洩を防止する必要がある。【００１１】
本発明は、上記に鑑みてなされたものであって、治験データのようにタグの種類が複雑化し、かつデータ量が膨大なＸＭＬファイルの検索の効率化を図ることができる情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、第１の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法は、コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成し、生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮し、検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付け、前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定し、圧縮化ＸＭＬファイルの中から、前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出し、前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長することを特徴とする。【００１３】
この発明によれば、ＸＭＬ開始タグ以前に出現したＸＭＬファイル内のＸＭＬタグおよび文字データの伸長を禁止することができる。【００１４】
また、上記発明において、前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を、前記ハフマン木を用いて伸長することとしてもよい。【００１５】
この発明によれば、ＸＭＬ終了タグ以後に出現するＸＭＬファイル内のＸＭＬタグおよび文字・数値データの伸長を禁止することができる。【００１６】
また、上記発明において、前記ハフマン木によって特定される圧縮符号のうち、入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することとしてもよい。【００１７】
この発明によれば、種別情報についてアクセス権がないユーザによる検索を禁止することができる。【００１８】
また、上記発明において、前記ハフマン木によって特定される圧縮符号のうち、入力された検索キーワードの先頭文字データの圧縮符号に対し、前記検索キーワードと一致する文字列へのアクセスを許可するアクセス権フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記アクセス権フラグが設定された圧縮符号のみを検出することとしてもよい。【００１９】
この発明によれば、タグ内文字列についてアクセス権がないユーザによる検索を禁止することができる。【００２０】
また、上記発明において、入力された検索キーワードを、前記ハフマン木を用いて圧縮することにより、圧縮キーワードを生成し、前記圧縮化ＸＭＬファイル内の圧縮符号列と前記検索キーワード圧縮手段によって圧縮された圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、前記圧縮キーワードと一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。【００２１】
この発明によれば、部分伸長と照合とを独立かつ同時並行でおこなうことができる。【００２２】
また、上記発明において、前記検索キーワードの先頭文字データ以外の残余の検索キーワードを、前記ハフマン木を用いて圧縮することにより、前記残余の検索キーワードに関する圧縮キーワードを生成し、前記ハフマン木によって特定される圧縮符号のうち、前記検索キーワードの先頭文字データに関する圧縮符号と同一の圧縮符号に対し、前記残余の検索キーワードに関する圧縮キーワードとの照合を指示する照合フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記照合フラグが設定された圧縮符号を検出し、前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記残余の検索キーワードに関する圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。【００２３】
この発明によれば、部分一致検索において、部分伸長と照合とを独立かつ同時並行でおこなうことができる。【００２４】
また、上記発明において、前記検索条件として、さらに、前記検索キーワードによる前方一致検索の入力を受け付け、前記前方一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記種別情報に関するＸＭＬ開始タグの圧縮符号に対し、前記圧縮キーワードとの照合を指示する照合フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記照合フラグが設定された圧縮符号を検出し、前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。【００２５】
この発明によれば、前方一致検索において、部分伸長と照合とを独立かつ同時並行でおこなうことができる。【００２６】
また、上記発明において、前記検索条件として、さらに、前記検索キーワードによる後方一致検索の入力を受け付け、前記後方一致検索が前記検索条件として受け付けられた場合、前記検索キーワードの先頭文字データ以外の残余の検索キーワードおよび前記ＸＭＬ終了タグを、前記ハフマン木を用いて圧縮することにより、前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードを生成し、前記後方一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記検索キーワードの先頭文字データに関する圧縮符号と同一の圧縮符号に対し、前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとの照合を指示する照合フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記照合フラグが設定された圧縮符号を検出し、前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。【００２７】
この発明によれば、後方一致検索において、部分伸長と照合とを独立かつ同時並行でおこなうことができる。【００２８】
また、上記発明において、前記検索条件として、さらに、前記検索キーワードによる完全一致検索の入力を受け付け、前記完全一致検索が前記検索条件として受け付けられた場合、前記検索キーワードおよび前記ＸＭＬ終了タグを、前記ハフマン木を用いて圧縮することにより、前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードを生成し、前記完全一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記ＸＭＬ開始タグに関する圧縮符号に対し、前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとの照合を指示する照合フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記照合フラグが設定された圧縮符号を検出し、前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。【００２９】
この発明によれば、完全一致検索において、部分伸長と照合とを独立かつ同時並行でおこなうことができる。【００３０】
また、第２の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法は、コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の数値データの出現頻度に基づいて、ハフマン木を生成し、生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮し、数値データおよび当該数値データの種別情報からなる検索条件の入力を受け付け、前記ハフマン木によって特定される圧縮符号のうち、入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定し、圧縮化ＸＭＬファイルの中から、前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出し、前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を抽出することを特徴とする。【００３１】
この発明によれば、ＸＭＬ開始タグ以前に出現したＸＭＬファイルに記述されているＸＭＬタグおよび数値データの圧縮符号列の抽出を禁止することができる。【００３２】
また、上記発明において、前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を抽出することとしてもよい。【００３３】
この発明によれば、ＸＭＬ終了タグ以後に出現するＸＭＬファイルに記述されているＸＭＬタグおよび数値データの圧縮符号列の抽出を禁止することができる。【００３４】
また、上記発明において、前記ハフマン木によって特定される圧縮符号のうち、入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することとしてもよい。【００３５】
この発明によれば、種別情報についてアクセス権がないユーザによる検索を禁止することができる。
【発明の効果】
【００３６】
本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法は、治験データのようにタグの種類が複雑化し、かつデータ量が膨大なＸＭＬファイルの検索の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００３７】
【図１】図１は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。
【図２】図２は、コンテンツのデータ構成を示す説明図である。
【図３】図３は、図２に示したファイル構成データ３００を示す説明図である。
【図４】図４は、図２に示したページリストデータ３００を示す説明図である。
【図５】図５は、数値・文字出現頻度管理データ５００を示す説明図である。
【図６】図６は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。
【図７】図７は、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成を示すブロック図である。
【図８】図８は、数値・文字出現頻度管理データ５００の生成処理を示すデータ構成図である。
【図９】図９は、連字／外字置換処理を示すデータ構成図である。
【図１０】図１０は、最終的に生成された連字／外字置換テーブル６４０を示す説明図である。
【図１１】図１１は、図６に示した圧縮／暗号化部６１３の詳細な機能的構成を示すブロック図である。
【図１２】図１２は、数字等の出現頻度の補正の一例を示す説明図である。
【図１３】図１３は、数字等の出現頻度の補正の他の例を示す説明図である。
【図１４】図１４は、圧縮／暗号化部６１３による具体的なハフマン木生成処理を示す説明図である。
【図１５】図１５は、ハフマン木１４０１の概要を示す説明図である。
【図１６】図１６は、図１５に示した圧縮符号表１５００の拡張例を示す説明図である。
【図１７】図１７は、図１５に示した葉の構造体１５０２の拡張例を示す説明図である。
【図１８】図１８は、図１１に示したファイルファイル圧縮部１１０６の詳細な機能的構成を示すブロック図である。
【図１９−１】図１９−１は、数値圧縮処理の第１の例を示す説明図である。
【図１９−２】図１９−２は、数値圧縮処理の第２の例を示す説明図である。
【図１９−３】図１９−３は、数値圧縮処理の第３の例を示す説明図である。
【図１９−４】図１９−４は、数値抽象化データの圧縮処理例を示す説明図である。
【図２０−１】図２０−１は、数値マップを示す説明図である。
【図２０−２】図２０−２は、数値圧縮処理の第４の例を示す説明図である。
【図２０−３】図２０−３は、数値圧縮処理の第５の例を示す説明図である。
【図２１】図２１は、ファイル圧縮部１１０６によって圧縮された圧縮化帳票ファイルのデータ構造を示す説明図である。
【図２２】図２２は、圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。
【図２３】図２３は、図６に示した検索初期化部６２１の詳細な機能的構成を示すブロック図である。
【図２４】図２４は、第１の区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図２５】図２５は、第２の区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図２６】図２６は、検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成を示すブロック図である。
【図２７】図２７は、検索条件入力画面を示す説明図（その１）である。
【図２８】図２８は、検索条件入力画面を示す説明図（その２）である。
【図２９】図２９は、検索条件入力画面を示す説明図（その３）である。
【図３０】図３０は、圧縮化帳票ファイルＦｉの絞込みの一例を示す説明図である。
【図３１】図３１は、部分伸長部２６２２による部分伸長処理を示す説明図である。
【図３２−１】図３２−１は、バイナリ照合部２６２３によるバイナリ照合処理を示す説明図である。
【図３２−２】図３２−２は、文字列置換部２６２４による文字列置換処理を示す説明図である。
【図３３】図３３は、検索実行部６２２内の数値検索実行部６２５の詳細な機能的構成を示すブロック図である。
【図３４−１】図３４−１は、数値検索を実行する場合の検索条件入力画面を示す説明図（その１）である。
【図３４−２】図３４−２は、数値検索を実行する場合の検索条件入力画面を示す説明図（その２）である。
【図３４−３】図３４−３は、数値検索を実行する場合の検索条件入力画面を示す説明図（その３）である。
【図３５−１】図３５−１は、数値範囲の大小比較例を示す説明図（その１）である。
【図３５−２】図３５−２は、数値範囲の大小比較例を示す説明図（その２）である。
【図３５−３】図３５−３は、数値範囲の大小比較例を示す説明図（その３）である。
【図３５−４】図３５−４は、数値範囲の大小比較例を示す説明図（その４）である。
【図３６】図３６は、図６に示した検索結果表示部６２３の詳細な機能的構成を示すブロック図である。
【図３７】図３７は、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順を示すフローチャートである。
【図３８】図３８は、図３７に示した数値・文字出現頻度管理データ生成処理（ステップＳ３７０１）の詳細な処理手順を示すフローチャートである。
【図３９】図３９は、上述した数値・文字出現頻度集計処理（ステップＳ３８０２）の詳細な処理手順を示すフローチャート（前半）である。
【図４０】図４０は、数値・文字出現頻度集計処理（ステップＳ３８０２）の詳細な処理手順を示すフローチャート（後半）である。
【図４１】図４１は、図３７に示した圧縮／暗号化処理（ステップＳ３７０２）の詳細な処理手順を示すフローチャートである。
【図４２】図４２は、図４１のステップＳ４１０８に示した圧縮処理の詳細な処理手順を示すフローチャートである。
【図４３】図４３は、図３７に示した検索初期化処理（ステップＳ３７０３）の詳細な処理手順を示すフローチャートである。
【図４４】図４４は、図３７に示した検索処理（ステップＳ３７０４）の詳細な処理手順を示すフローチャート（前半）である。
【図４５】図４５は、図３７に示した検索処理（ステップＳ３７０４）の詳細な処理手順を示すフローチャート（後半）である。
【図４６】図４６は、フラグ設定処理（ステップＳ４４０８）の詳細な処理手順を示すフローチャートである。
【図４７】図４７は、図４４に示した部分伸長・照合処理の詳細な処理手順を示すフローチャート（その１）である。
【図４８】図４８は、図４４に示した部分伸長・照合処理の詳細な処理手順を示すフローチャート（その２）である。
【図４９】図４９は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。
【図５０】図５０は、図４９に示した下限特定／比較処理手順を示すフローチャートである。
【図５１】図５１は、図５０に示した下限数値検出処理手順を示すフローチャートである。
【図５２】図５２は、下限数値照合処理手順を示すフローチャートである。
【図５３】図５３は、図４９に示した上限特定／比較処理手順を示すフローチャートである。
【図５４】図５４は、図５３に示した上限数値検出処理手順を示すフローチャートである。
【図５５】図５５は、上限数値照合処理手順を示すフローチャートである。
【図５６】図５６は、治験データに関するＸＭＬデータを示す説明図である。
【符号の説明】
【００３８】
１１０５  ハフマン木生成部
１１０６  ファイル圧縮部
２６００  検索条件入力処理部
２６０１  設定部
２６０２  検索キーワード圧縮部
２６２０  部分伸長・照合処理部
２６２１  フラグ／テーブル設定部
２６２２  部分伸長部
２６２３  バイナリ照合部
２６２４  文字列置換部
【発明を実施するための最良の形態】
【００３９】
（情報検索装置のハードウェア構成）
まず、この発明の実施の形態にかかる情報検索装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。【００４０】
図１において、情報検索装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３と、を備えている。また、各構成部はバス１００によってそれぞれ接続されている。【００４１】
ここで、ＣＰＵ１０１は、情報検索装置の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。【００４２】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを情報検索装置に読み取らせたりする。【００４３】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。【００４４】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。【００４５】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。【００４６】
スキャナ１１２は、画像を光学的に読み取り、情報検索装置内に画像データを取り込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。【００４７】
（コンテンツのデータ構成）
つぎに、コンテンツのデータ構成について説明する。図２は、コンテンツのデータ構成を示す説明図である。図２において、コンテンツとは、治験データや電子帳票（帳簿や伝票といった帳票を電子化したデータ）に関するＸＭＬファイルのデータベースである。本実施の形態では、一例として治験データに関するＸＭＬファイルとする。コンテンツ２００は、上位フォルダ２０１に保存されている。さらに、上位フォルダ２０１には、管理フォルダ２０２とファイルフォルダ２０３という下位のフォルダが含まれている。【００４８】
管理フォルダ２０２には、ファイル構成データ３００（図３参照）、ページリストデータ４００（図４参照）、および数値・文字出現頻度管理データ５００（図５参照）が保存されている。また、ファイルフォルダ２０３には、複数のＸＭＬファイルｆｉ（ｉ＝０〜ｎ）からなる帳票ファイル群ｆが保存されている。【００４９】
各ＸＭＬファイルｆｉはそれぞれ治験データｇｊ（ｊ＝１〜Ｐ）を有しており、全ＸＭＬファイルｆ０〜ｆｎでＰページ分有している。各治験データｇｊは、たとえば、アンカーや見出し語などを含むヘッダ部のほか、患者情報や副作用、薬効などの治験に関する各種項目データやトレーラ部を有しており、たとえば、図Ａのようなデータを有している。【００５０】
図３は、図２に示したファイル構成データ３００を示す説明図である。ファイル構成データ３００は、各ＸＭＬファイルｆ０〜ｆｎのファイル番号ｉ（ｉ＝０〜ｎ）ごとにファイルパスを関連付けたデータである。図３では、ファイル番号ｉのＸＭＬファイルｆｉを「ｆｉｌｅ（ｉ）．ｘｍｌ」と表記している。【００５１】
図４は、図２に示したページリストデータ４００を示す説明図である。ページリストデータ４００とは、図２に示したＸＭＬファイルｆｉと治験データｇｊとファイル構成データ３００とを関連付けるデータである。ページリストデータ４００は、ＸＭＬファイルｆｉの全ファイル数（ｎ＋１個）、ブロックサイズ（ｍ  ｂｙｔｅ）、治験データｇｊの全データ数（Ｐ個）、ＸＭＬファイルｆｉのファイルパスデータＦＰ（０）〜ＦＰ（ｎ）、ページリストを有する。【００５２】
また、ページリストデータ４００は、ファイルパスデータＦＰ（ｉ）ごとに、ファイル番号ｉとブロック数と図３に示したファイルパスとを有する。また、ページリスト４０１は、ファイル番号ｉごとにオフセット、レングス、ページ番号ｊ、見出し語が記述されているリストである。【００５３】
図５は、数値・文字出現頻度管理データ５００を示す説明図である。図５において、数値・文字出現頻度管理データ５００は、数値・文字データの出現頻度を管理するデータである。ここで、数値・文字データは、数値データと文字データとに分けられる。数値データとは、０〜９の数字、００〜９９などの２以上の連続する数字からなる数字連字、桁数および先頭数字が共通する数値群、軽度高血圧など数値を抽象的な表現であらわした抽象化数値データを含むデータである。【００５４】
ここで、数値群とは、桁数および先頭数字により規定される数値範囲内の数値の集合である。たとえば、３桁でかつ先頭数字が２である数値群とは、数値範囲２００〜２９９内の数値の集合である。【００５５】
また、文字データとは、英字、かな、漢字、文字連字などを含むデータである。具体的には、８ビット系（ＡＳＣＩＩ）である英字、カタカナ、記号、１６ビット系（ＪＩＳ）の英字、カタカナ、記号、１６ビット系（ＪＩＳ）の仮名や漢字などが文字データに含まれる。これら英字や、仮名、カタカナなどの８ビットコードが中心である表音文字および漢字の文字データを、本明細書において「標準文字データ」と称す。【００５６】
また、文字データには、標準文字データのほか、外字および文字連字が含まれる。文字連字とは、２以上の文字列からなる文字データである。たとえば、１６ビットの２つの仮名の文字連字である場合、当該文字連字は、３２ビットコードの文字データからなる。また、非文字データではあるがアドレスポインタなどのバイナリデータも便宜的に上記「文字データ」に含めることとする。以下、特に断りがない限り、「文字データ」という用語には、バイナリデータも含まれる。【００５７】
また、本発明の特徴として、連字には、ＸＭＬタグも含まれることとする。これにより、<patient_initialxml_title="患者イニシャル”tbl_label="イニシャル”>といった長い文字列のＸＭＬタグをタグ単位で集計することができる。【００５８】
また、数値・文字出現頻度管理データ５００は、数値・文字データの出現頻度、出現ファイル数（ブロック数でもよい）、出現順位、出現マップ５１０（５０１〜５０９）を有する。出現頻度とは、全ＸＭＬファイルｆ０〜ｆｎにおいて当該数値・文字データが出現した頻度（回数）である。出現ファイル数とは、全ＸＭＬファイルｆ０〜ｆｎにおいて当該数値・文字データが出現したＸＭＬファイルの数である。出現順位とは、出現頻度順のランクである。【００５９】
出現マップ５１０とは、ＸＭＬファイルｆｉ順に配列されたｎ＋１ビットのビット列であり、数値・文字データの存否をあらわしている。図５では、左端のビットがＸＭＬファイルｆ０に対応するビットであり、右端のビットがＸＭＬファイルｆｎに対応するビットである。【００６０】
各ビットにおいて「１」がＯＮをあらわしており、「０」がＯＦＦをあらわしている。すなわち、ある数値・文字データにおいて、その出現マップ５１０中、ＸＭＬファイルｆｉに対応するビットが「１」である場合、当該数値・文字データがＸＭＬファイルｆｉに存在することをあらわしている。また、ＸＭＬファイルｆｉに対応するビットが「０」である場合、当該数値・文字データがＸＭＬファイルｆｉに存在しないことをあらわしている。【００６１】
また、本発明の特徴として、ＸＭＬファイルｆ０〜ｆｎに対し、削除フラグが設定されている。削除フラグは、デフォルトでは「１」に設定されており、ＸＭＬファイルｆｉが削除されると、その削除フラグが「０」となる。これにより、削除フラグが「０」に設定されているＸＭＬファイルｆｉをサーチ対象から除外することができ、検索速度の高速化を図ることができる。【００６２】
（情報検索装置の機能的構成）
つぎに、この発明の実施の形態にかかる情報検索装置の機能的構成について説明する。図６は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。図６において、情報検索装置６００は、編集部６０１と検索部６０２とから構成されている。【００６３】
まず、編集部６０１は、ファイル構成データ抽出部６１１と、数値・文字出現頻度管理データ生成部６１２と、圧縮／暗号化部６１３と、から構成されている。【００６４】
ファイル構成データ抽出部６１１は、図３に示したファイル構成データ３００を参照して、ＸＭＬファイルｆ０〜ｆｎから図４に示したページリストデータ４００を抽出する。また、数値・文字出現頻度管理データ生成部６１２は、ＸＭＬファイルｆ０〜ｆｎから数値・文字出現頻度管理データ５００を生成する。【００６５】
さらに、数値・文字出現頻度管理データ生成部６１２は、複数のＸＭＬファイルｆ０〜ｆｎに記述されている数字連字や文字連字を外字に置換する連字／外字置換テーブル６４０を生成する。以降、数字連字および文字連字をまとめて、「連字データ」と称す。【００６６】
また、圧縮／暗号化部６１３は、ＸＭＬファイルｆ０〜ｆｎを圧縮して圧縮化ＸＭＬファイル群Ｆを生成するとともに、数値・文字出現頻度管理データ５００および連字／外字置換テーブル６４０を暗号化して、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０を生成する。【００６７】
また、検索部６０２は、検索初期化部６２１と、検索実行部６２２と、検索結果表示部６２３とから構成されている。検索初期化部６２１は、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０を復号して、検索部６０２による検索の初期化を実行する。【００６８】
また、検索実行部６２２は、数値・文字出現頻度管理データ５００や連字／外字置換テーブル６４０を用いて、検索処理を実行することにより、検索候補一覧を生成する。具体的には、検索実行部６２２は、全文検索を実行する全文検索実行部６２４と、数値検索を実行する数値検索実行部６２５とを備える。【００６９】
全文検索実行部６２４は、検索キーワードの入力を受け付け、圧縮化ＸＭＬファイルの全文検索を実行することにより、検索キーワードに該当するＸＭＬファイルｆｉを示す検索候補一覧を生成する。【００７０】
また、数値検索実行部６２５は、数値や数値範囲の入力を受け付け、圧縮化ＸＭＬファイル群Ｆに対して数値検索を実行することにより、入力された数値や数値範囲に該当するＸＭＬファイルｆｉを示す検索候補一覧を生成する。【００７１】
また、検索結果表示部６２３は、検索実行部６２２による検索候補の中から、ユーザに選択された検索候補を伸長して、検索結果として表示する。なお、上述したＸＭＬファイル、数値・文字出現頻度管理データ５００、ファイル構成データ３００、ページリストデータ４００、連字／外字置換テーブル６４０、圧縮化ＸＭＬファイル群Ｆ、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体によって、その機能を実現する。【００７２】
また、編集部６０１（内部の機能的構成含む）および検索部６０２（内部の機能的構成含む）は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、その機能を実現する。【００７３】
（数値・文字出現頻度管理データ生成部６１２の機能的構成）
つぎに、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成について説明する。図７は、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成を示すブロック図である。図７において、数値・文字出現頻度管理データ生成部６１２は、数値・文字データ抽出部７０１と、数値・文字出現頻度集計部７０２と、ソート部７０３と、生成処理部７０４とから構成されている。【００７４】
数値・文字データ抽出部７０１は、ＸＭＬファイルから数値・文字データを順次抽出する。数値・文字出現頻度集計部７０２は、数値・文字データ抽出部７０１によって抽出された数値・文字データのＸＭＬファイルｆｉにおける出現頻度を集計する。また、数値・文字出現頻度集計部７０２は、数値・文字データのＸＭＬファイルｆ０〜ｆｎごとの存否も検出する。【００７５】
また、ソート部７０３は、出現頻度順に数値・文字データをソートする。生成処理部７０４は、ソートされた各数値・文字データの出現頻度と、存否検出結果である各数値・文字データの出現マップ５０１〜５０９とを用いて、数値・文字出現頻度管理データ５００を生成する。また、連字／外字置換テーブル６４０も生成する。ここで、数値・文字出現頻度管理データ生成部６１２による数値・文字出現頻度管理データ５００および連字／外字置換テーブル６４０の生成処理を具体的に説明する。【００７６】
図８は、数値・文字出現頻度管理データ５００の生成処理を示すデータ構成図である。図８において、（Ａ）は、数値・文字出現頻度集計部７０２によって数値・文字データが集計されたときの数値・文字出現頻度管理データ５００のデータ構成、（Ｂ）は、連字／外字置換処理後の数値・文字出現頻度管理データ５００のデータ構成、（Ｃ）は、標準文字データおよび外字データからなる混合データのソート後における数値・文字出現頻度管理データ５００のデータ構成、（Ｄ）は、低出現頻度の混合データのカット後における数値・文字出現頻度管理データ５００のデータ構成、（Ｅ）は、最終的に生成された数値・文字出現頻度管理データ５００のデータ構成を示している。【００７７】
（Ａ）において、符号８００は、文字出現頻度管理データ５００の管理領域である。また、符号８０１は、数値データ（数字連字を除く）の出現頻度、出現ファイル数、出現順位、出現マップを記憶する数値領域である。また符号８０２は、８ビット系（ＡＳＣＩＩ）である英字、カタカナ、記号、１６ビット系（ＪＩＳ）の英字、カタカナ、記号、１６ビット系（ＪＩＳ）のかなや漢字などの標準文字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する標準文字領域である。【００７８】
また、符号８０３は、外字の出現頻度、出現ファイル数、出現順位、出現マップを記憶する外字領域である。また、符号８０４は、連字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する連字領域である。また、符号８０５は、８ビットのバイナリデータの出現頻度、出現ファイル数、出現順位を記憶するバイナリ領域である。【００７９】
（Ａ）のデータ構造において、連字領域８０４の連字データは、その出現頻度順にソートされる。そして、所定の出現頻度以上の連字データを、外字データと重複しないように、他の外字データ（以下、「連字外字データ」）に置換する。このように、出現頻度の高い複数の文字列からなる連字データを、単一文字データである外字データに置換することにより、データ量の削減を図ることができ、圧縮効率の向上を図ることができる。なお、所定の出現頻度未満の連字データは、低出現頻度の連字データであるため、単一の文字データに分解されて、該当する領域に割り当てられる。この結果、（Ｂ）連字／外字置換処理後の数値・文字出現頻度管理データ５００のデータ構成となる。【００８０】
また、（Ｂ）のデータ構造において、数値領域８０１のデータ、標準文字領域８０２の標準文字データおよび外字領域８０３の外字データを混合して高出現頻度順にソートした結果が、（Ｃ）のデータ構造である。（Ｃ）のデータ構造において、（Ｂ）に示した連字外字領域８１４の連字外字データおよびバイナリ領域８０５のバイナリデータは、ソートの対象外である。【００８１】
（Ｃ）のデータ構造において、数値データと標準文字データと外字データとが混在する混合領域８１２において、低出現頻度、たとえば、出現回数０回のデータはカットされる。このカットされたときのデータ構造が、（Ｄ）のデータ構造である。（Ｄ）において、管理領域８００および混合領域８１２と、連字外字領域８１４と、バイナリ領域８０５とを結合することで、（Ｅ）のデータ構造で示したような、最終的な数値・文字出現頻度管理データ５００を生成することができる。【００８２】
この数値・文字出現頻度管理データ５００において、管理領域８００には、ファイル・ブロック数と、出現文字データの種類の数（出現文字数（種類））と、連字外字データの数（連字数（２５６種））と、バイナリデータ数（バイナリ（２５６種））とが記録される。【００８３】
そして、図５に示した数値・文字出現頻度管理データ５００は、バイナリデータを除く数値・文字データごとに、出現頻度と出現マップ５１０とが対応付けられている。数値・文字データは高出現頻度順にソートされている。なお、後述するが、図５に示した数値・文字出現頻度管理データ５００において、数値・文字データとその出現頻度は、所定のマスタキーを用い、暗号化アルゴリズムである排他的論理和（ＸＯＲ）などによって暗号化される。【００８４】
つぎに、連字／外字置換処理について具体的に説明する。図９は、連字／外字置換処理を示すデータ構成図である。図９において、（Ｆ）は、数値・文字出現頻度集計部７０２によって連字データが集計されたときの数値・文字出現頻度管理データ５００の連字領域８０４のデータ構成、（Ｇ）は、連字データのソート後における連字領域８０４のデータ構成、（Ｈ）は、置換後におけるデータ構成を示している。【００８５】
（Ｆ）のデータ構造において、連字領域８０４は、領域９０１〜９０７を有している。領域９０１には、８ビット系（ＡＳＣＩＩ）の数字列データ（「００」〜「９９」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００８６】
領域９０２には、８ビット系（ＡＳＣＩＩ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該英字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０３には、８ビット系（ＡＳＣＩＩ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナデータ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００８７】
領域９０４には、１６ビット系（ＪＩＳ）の数字列データ（「００」〜「９９」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０５には、１６ビット系（ＪＩＳ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００８８】
領域９０６には、１６ビット系（ＪＩＳ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナ列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０７には、１６ビット系（ＪＩＳ）の仮名列データ（「ああ」〜「んん」、濁音・半濁音）の情報（当該仮名列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００８９】
また、（Ｇ）のデータ構造は、（Ｆ）のデータ構造を、各連字データの高出現順にソートすることにより得られるデータ構造である。（Ｇ）のデータ構造において、領域９１１は、高出現頻度の連字データの情報であり、外字データへの置換対象となる。一方、領域９１２は、所定の出現頻度以下の連字データ（低出現頻度連字データ）の情報である。この低出現頻度連字データは、単一の文字データに分解される。これにより文字データの出現頻度と出現マップ５０５〜５０９とが補正される。【００９０】
また、（Ｈ）のデータ構造は、（Ｇ）のデータ構造のうち高出現頻度の連字データを外字に置換することによって得られるデータ構造である。連字外字領域８１４には、置換された連字外字データの情報（当該連字外字データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００９１】
また、図１０は、最終的に生成された連字／外字置換テーブル６４０を示す説明図である。連字／外字置換テーブル６４０は、（Ｇ）のデータ構造の領域９１１の連字データと、（Ｈ）のデータ構造の領域８１４の連字外字データとを対応させることによって生成される。【００９２】
（圧縮／暗号化部６１３の詳細な機能的構成）
つぎに、図６に示した圧縮／暗号化部６１３の詳細な機能的構成について説明する。図１１は、図６に示した圧縮／暗号化部６１３の詳細な機能的構成を示すブロック図である。図１１において、圧縮／暗号化部６１３は、出現頻度補正部１１０１と、低出現頻度数値・文字データ分解部１１０２と、暗号化部１１０３と、生起確率演算部１１０４と、ハフマン木生成部１１０５と、ファイル圧縮部１１０６と、から構成されている。【００９３】
まず、出現頻度補正部１１０１は、数値・文字出現頻度管理データ５００内の数字に関する出現頻度を補正する。具体的には、たとえば、０〜９の数字や小数点、フィーダ（以下、「数字等」という）に対する圧縮符号のビット幅を設定し、そのビット幅に応じた出現頻度を、０〜９の数字等に対して設定する。より具体的には、文字データの出現頻度よりも高くなるように強制的に数字等の出現頻度を補正する。【００９４】
図１２は、数字等の出現頻度の補正の一例を示す説明図である。図１２では、数値・文字データの出現頻度を補正する符号化テーブルを示している。図１２では、圧縮符号のビット幅が４ビットであるため、数値等の各出現頻度を１／１６とする。そして、さらに出現順位に応じて出現頻度を加算している。図１２に示した補正例は、数値が多いＸＭＬファイルに有効である。なお、補正により出現頻度の総和が１を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。【００９５】
図１３は、数字等の出現頻度の補正の他の例を示す説明図である。図１３でも、数値・文字データの出現頻度を補正する符号化テーブルを示している。図１３では、圧縮符号のビット幅が５ビットであるため、数値等の各出現頻度を１／３２とする。そして、さらに出現順位に応じて出現頻度を加算している。図１３に示した補正例は、文字データが多いホームページなどに有効である。なお、補正により出現頻度の総和が１を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。【００９６】
また、図１１において、低出現頻度数値・文字データ分解部１１０２は、数値・文字出現頻度管理データ５００内における文字領域の数値・文字データを高出現頻度順にソートする。そして、所定の出現頻度以下の残余の低出現頻度の数値・文字データを８ビットコードに分解して、同じ８ビットコードであるバイナリデータが記憶されているバイナリ領域に記憶する。【００９７】
暗号化部１１０３は、低出現頻度数値・文字データ分解部１１０２による分解によって得られた数値・文字出現頻度管理データ５００を、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化数値・文字出現頻度管理データ６５０を生成する。連字／外字置換テーブル６４０も同様に、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化連字／外字置換テーブル６６０を生成することとしてもよい。【００９８】
また、生起確率演算部１１０４は、低出現頻度数値・文字データ分解部１１０２による分解によって得られた文字出現頻度管理データ５００における数値データ、標準文字データ、連字外字データおよびバイナリデータを高出現順にソートして、これらの生起確率を演算する。また、ハフマン木生成部１１０５は、生起確率演算部１１０４によって演算された生起確率からハフマン木を生成する。【００９９】
また、ファイル圧縮部１１０６は、ハフマン木生成部１１０５によって生成されたハフマン木を用いてＸＭＬファイル群ｆを圧縮し、圧縮化ＸＭＬファイル群Ｆを生成する。具体的には、各ＸＭＬファイルｆ０〜ｆｎに記述されている数値・文字データに対して、補正後の出現頻度が高い順、すなわち生起確率が高い順に短いビットを割り当てて、ＸＭＬファイル群ｆを圧縮する。ファイル圧縮部１１０６によるＸＭＬファイル群ｆの圧縮は、数値と文字データとで圧縮法が異なる。この点については後述する。【０１００】
つぎに、圧縮／暗号化部６１３による具体的なハフマン木生成処理について説明する。図１４は、圧縮／暗号化部６１３による具体的なハフマン木生成処理を示す説明図である。図１４の（Ｉ）に示した数値・文字出現頻度管理データ５００を、低出現頻度数値・文字データ分解部１１０２により、低出現頻度の文字データを分解して、バイナリデータが記憶されているバイナリ領域に記憶する（図１４中（Ｊ））。【０１０１】
つぎに、（Ｊ）のデータ構造において、混合領域、連字外字領域、およびバイナリ領域内のすべての数値・文字データを高出現頻度順にソートする（図１４中（Ｋ））。そして、（Ｋ）の領域１４００において、出現頻度をハフマンの圧縮パラメータとして各数値・
文字データの生起確率を演算する（図１４中（Ｌ））。最後に（Ｌ）において、各数値・文字データの生起確率からハフマン木１４０１を生成する（図１４中（Ｍ））。本発明は、生成されるハフマン木１４０１に特徴がある。以下、ハフマン木１４０１について説明する。【０１０２】
＜ハフマン木の概要＞
図１５は、ハフマン木１４０１の概要を示す説明図である。ここでは、説明を簡略化するため、記号ａ〜ｆ（実際のアルファベット小文字の文字データを意味しているのではなく、任意の文字データまたは数字データを意味する）を用いて説明する。【０１０３】
図１５において、ハフマン木１４０１は、記号ａ〜ｆの出現頻度にしたがって構築されている。ハフマン木１４０１は、ノード群とノード間を連結するリンクとから構成される。ノード群のうち黒丸は根（ルート）、白丸は中間節点、四角形は葉（リーフ）をあらわしている。ハフマン木１４０１は、ノードから下位のノードに分岐する。「０」をとる場合は左の下位ノード、「１」をとる場合は右の下位ノードに分岐する。【０１０４】
また、各内部節点は、構造体を有する。内部節点の構造体１５０１は、領域１５１１にその内部節点の上位ノードの構造体へのポインタ、領域１５１２にその内部節点の下位の左ノードへのポインタ、領域１５１３にその内部節点の下位の右ノードへのポインタという３種類のポインタを記憶している。各ポインタは何バイト離れているかをあらわす正の値である。【０１０５】
また、各葉は、内部節点の構造体１５０１に準じた構造体を有する。葉の構造体１５０２は、領域１５２１にその葉の上位ノードの構造体へのポインタを記憶している。ポインタは何バイト離れているかをあらわす正の値である。葉は、下位ノードが存在しないため、下位の左ノードの構造体へのポインタのかわりに、領域１５２２に葉の識別情報／文字コード区分を記憶している。葉の識別情報は、負の値をあらわす情報であり、この負の値により、当該ノードが葉であることがわかる。同様に、下位の右ノードの構造体へのポインタのかわりに、領域１５２３に葉により特定される文字コードを記憶する。【０１０６】
また、符号１５００は、記号ａ〜ｆと圧縮符号との対応関係を示す圧縮符号表である。圧縮符号表１５００は、ハフマン木１４０１にしたがって記号ａ〜ｆを圧縮符号に対応付けた図表である。【０１０７】
＜圧縮符号表の拡張＞
図１６は、図１５に示した圧縮符号表１５００の拡張例を示す説明図である。図１６に示す圧縮符号表１６００では、図１５に示した圧縮符号表１５００に、外字などのパスリスト（ヘッダ、トレーラ）、ＨＴＭＬタグ（開始、終了、独立）、ＸＭＬタグ（開始、終了）に対して、これらをあらわす記号（＜Ｐ＞、＜／Ｐ＞、＜患者＞、＜／患者＞などの文字列）とその圧縮符号を割り当てている。【０１０８】
また、圧縮符号表１６００を参照すると、ハフマン木１４０１において、記号に対し、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグが設定されていることがわかる。ここで、伸長フラグとは、サーチ中に出現するタグのうち、伸長対象となるタグを特定するためのフラグである。開始タグに対しては「ＯＮ」が設定される。「ＯＮ」は、伸長開始を意味する伸長フラグである。したがって、伸長フラグ「ＯＮ」を検出した場合、その開始タグから伸長を開始する。【０１０９】
また、「ＯＮ」に設定された開始タグに対応する終了タグに対しては「ＯＦＦ」が設定される。「ＯＦＦ」は、伸長終了を意味する伸長フラグである。したがって、伸長フラグ「ＯＦＦ」を検出した場合、その終了フラグ以降のデータの伸長を禁止する。伸長フラグの「ＯＮ」，「ＯＦＦ」いずれも設定されていないタグは、伸長されない。したがって、照合に必要なタグのみ伸長することができ、検索速度の高速化を図ることができる。【０１１０】
また、照合フラグとは、検索キーワードの先頭文字と一致する文字データに対して設定されるフラグである。図１６では、文字データ「高」に照合フラグ（「ＯＮ」）が設定されている。たとえば、検索キーワードが「高血圧」である場合、文字データ「高」に照合フラグ（「ＯＮ」）が設定される。【０１１１】
検索キーワードと照合の際には、ＸＭＬファイルｆ０〜ｆｎ内の文字列の先頭文字が「高」以外の文字列は照合対象から除外することができる。一方、ＸＭＬファイルｆ０〜ｆｎ内の文字列の先頭文字である場合、当該文字列は照合対象となる。したがって、検索キーワードと照合対象とを、先頭文字「高」以降の文字列どうしで照合する。これにより、検索速度の向上を図ることができる。【０１１２】
また、照合フラグの設定を工夫することで、ＸＭＬタグで括られた文字列の前方一致、後方一致、完全一致を実現することができる。具体的には、ＸＭＬ開始タグにのみ照合フラグを設定しておき、検索キーワードをハフマン木１４０１で圧縮することにより、前方一致検索をおこなうことができる。【０１１３】
また、照合フラグを検索キーワードの先頭文字の圧縮符号に設定しておき、残余の検索キーワードとＸＭＬ終了タグからなる文字列をハフマン木１４０１で圧縮することにより、後方一致検索をおこなうことができる。さらに、照合フラグをＸＭＬ開始タグに設定しておき、検索キーワードと終了タグからなる文字列をハフマン木１４０１で圧縮することにより、完全一致検索をおこなうことができる。【０１１４】
図１６では、ＸＭＬ開始タグ＜副作用＞にのみ照合フラグが設定されているため、ＸＭＬ開始タグ＜副作用＞とＸＭＬ終了タグ＜／副作用＞で括られた文字列の前方一致検索をおこなうこととなる。【０１１５】
また、数値検索を実行する場合、数値の先頭に付与されているフィーダに照合フラグを設定することにより、数値のみを照合対象として絞り込むこともできる。【０１１６】
また、置換フラグとは、タグで括られた文字列がヒットした場合、タグで括られた文字列を強調表示形式の文字列に置換するためのフラグである。置換フラグが検出されると、ヒットした文字列を置換し、置換後の文字列を出力バッファに出力する。【０１１７】
また、アクセス権フラグとは、タグへのアクセス権の許可／不許可を設定するフラグである。アクセス権フラグは、ユーザごとまたは端末ごとに設定される。たとえば、アクセス権フラグが「ＯＮ」に設定されているタグは、医師が操作する端末でしか検索・表示することができない。【０１１８】
＜葉の構造体の拡張＞
図１７は、図１５に示した葉の構造体１５０２の拡張例を示す説明図である。葉の構造体１７００は、葉の構造体１５０２と同様、領域１７０１にその葉の上位ノードの構造体へのポインタを記憶している。また、葉の構造体１５０２と同様、領域１７０２に葉の識別情報／文字コード区分を記憶している。葉の構造体１７００ではさらに、領域１７０２にパスやタグであることを特定するフラグも記憶している。【０１１９】
また、葉の構造体１５０２と同様、領域１７０３に葉により特定される文字コードを記憶する。葉の構造体１７００ではさらに、領域１７０３に各テーブルへのポインタも記憶している。【０１２０】
パステーブル１７１１は、パスを記述したテーブルである。ポインタを指定することで、指定されたポインタに関連付けられているパスを読み出すことができる。タグテーブル１７１２は、タグを記述したテーブルである。ポインタを指定することで、指定されたポインタに関連付けられているタグを読み出すことができる。【０１２１】
照合テーブル１７１３は、文字列の先頭文字以降の残余の文字列とその圧縮長が記述されたテーブルである。ポインタを指定することで、指定されたポインタに関連付けられているタグを読み出すことができる。たとえば、検索キーワードが「高血圧」である場合、図１６に示したように、文字データ「高」に照合フラグが設定（「ＯＮ」）されるため、２文字目以降の圧縮された文字列「血圧」に対応するポインタを領域１７０３に記憶しておく。【０１２２】
置換テーブル１７１４は、ヒットした文字列と置換される文字列が記述されたテーブルである。ポインタを指定することで、指定されたポインタに関連付けられている文字列を読み出して、ヒットした文字列と置換する。たとえば、図１７の例では、置換後の文字列として、「＜Ｂ＞高血圧＜／Ｂ＞，圧縮長，血圧」が記述されている。【０１２３】
すなわち、先頭文字「高」が検出され、かつ、２文字目以降の圧縮された文字列「血圧」も照合一致した場合、ポインタを手掛かりとして、「＜Ｂ＞高血圧＜／Ｂ＞」を読み出して、ヒットしたタグ内の文字列「高血圧」をボールド表示するため、文字列「＜Ｂ＞高血圧＜／Ｂ＞」に置換する。【０１２４】
また、領域１７０２は、たとえば、１６ビットのデータ領域である。上位４ビットで特定される第１の領域１７２１により、葉の識別情報であるか否かをあらわしている。すなわち、上位４ビットが「１１１１」が負の値を示しており、当該ノードが葉であることが特定される。【０１２５】
また、下位４ビットで特定される第２の領域１７２２では、葉により特定される情報が文字コードである場合、当該文字コードが８ビットコードまたは１６ビットコードをあらわしたり、葉により特定される情報が記号である場合、当該記号がパスまたはタグをあらわしたりする。【０１２６】
また、中間領域１７２３は、空き領域であるため、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグを設定する領域となる。この空き領域に各フラグを設定した結果が、図１６に示した圧縮符号表１６００の内容となる。なお、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグは、ハフマン木１４０１の生成時に設定されるのではなく、検索実行時に設定されるフラグである。【０１２７】
（ファイル圧縮部１１０６の詳細な機能的構成）
つぎに、図１１に示したファイル圧縮部１１０６の詳細な機能的構成について説明する。図１８は、図１１に示したファイル圧縮部１１０６の詳細な機能的構成を示すブロック図である。【０１２８】
図１８において、ファイル圧縮部１１０６は、フィーダ検出部１８０１と、文字データ抽出部１８０２と、数値抽出部１８０３と、数値詳細情報検出部１８０４と、圧縮処理部１８０５と、から構成されている。【０１２９】
まず、フィーダ検出部１８０１は、ＸＭＬファイルｆｉの中からフィーダを検出する。フィーダは数値の先頭に位置するため、フィーダが検出されると、その後には数値が存在することとなり、フィーダが検出されないと、当該文字データと認識される。【０１３０】
また、文字データ抽出部１８０２は、フィーダ検出部１８０１によりフィーダにフィーダが検出されなかった場合、その位置のデータを文字データとして抽出する。抽出された文字データは圧縮処理部１８０５において圧縮処理される。【０１３１】
数値抽出部１８０３は、フィーダ検出部１８０１によりフィーダが検出された場合、当該フィーダに関連付けられている数値、たとえば、フィーダに続く数字列を数値として抽出する。この場合、数字列の中に、カンマや小数点が含まれている場合、そのカンマや小数点も抽出する。【０１３２】
また、数値詳細情報検出部１８０４は、数値抽出部１８０３によって抽出された数値の詳細な情報を抽出する。ここで、詳細な情報とは、たとえば、桁数はいくつか、数値が全角であるか半角であるか、カンマが含まれているか、小数点が含まれているか、含まれている場合の小数点の位置などを検出する。【０１３３】
また、圧縮処理部１８０５は、ハフマン木生成部１１０５によって生成されたハフマン木１４０１を用いて、文字データ抽出部１８０２によって抽出された文字データや、数値抽出部１８０３によって抽出された数値データを圧縮する。【０１３４】
数値を圧縮する場合、ハフマン木１４０１を用いて、桁数を示す数字や桁ごとの数字を、当該数字に応じた圧縮符号に変換する。このとき、桁ごとの数字の圧縮符号は、桁順に配列するものとする。また、数値に小数点が含まれている場合、小数点に応じた圧縮符号に変換する。カンマの有無や全角・半角については、１ビットであらわす。【０１３５】
（数値圧縮処理）
つぎに、上述した圧縮処理部１８０５における数値圧縮処理について説明する。数値圧縮処理では、まず、血圧や年齢、患者の識別コードなどの数値情報から数値のみを抽出する。そして、この抽出された数値を圧縮する。具体的には、図１２や図１３に示した符号化テーブルを参照して、フィーダの圧縮符号を読み出す。【０１３６】
つぎに、数値が半角か全角かを示すビット（全角・半角ビット）を設定する。この全角・半角ビットは全角の場合が「１」で半角の場合が「０」である。また、数値がカンマ「，」を用いた表記であるか否かを示すカンマ有無ビットを設定する。このカンマ有無ビットはカンマ有りの場合が「１」でカンマ無しの場合が「０」である。【０１３７】
つぎに、数値の桁数を検出する。検出された桁数は小数点以下の桁数は含まれないこととする。そして、検出された桁数が示す数字の圧縮符号を図１２に示した符号化テーブルから読み出す。また、数値を構成する先頭桁から末尾桁までの数字の圧縮符号を、図１２や図１３に示した符号化テーブルから読み出す。【０１３８】
つぎに、数値に小数点があれば小数点の圧縮符号を図１２や図１３に示した符号化テーブルから読み出す。このようにして、数値は、圧縮符号およびビットからなる数字列に圧縮される。以下、図１２の符号化テーブルを用いた圧縮処理例について説明する。なお、圧縮処理された数値を、圧縮数値と称す。【０１３９】
図１９−１は、数値圧縮処理の第１の例を示す説明図である。図１９−１においては、数値情報「￥６，８００．−」から先頭の「￥」および末尾の「−」を分離して、数値「６，８００．」を抽出する。そして、この数値「６，８００．」を圧縮する。【０１４０】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６，８００．」が半角であることを示す全角・半角ビット「０」を設定する。また、数値データ「６，８００．」がカンマ「，」を用いた表記であることを示すカンマ有無ビット「１」を設定する。つぎに、数値「６，８００．」の桁数「４」を検出し、検出された桁数「４」の圧縮符号「０１００」を図１２に示した符号化テーブルから読み出す。【０１４１】
つぎに、数値「６，８００．」の先頭数字「６」、第２数字「８」、第３数字「０」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。最後に、数値「６，８００．」の小数点「ｘ’Ａ’」の圧縮符号「１０１０」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６，８００．」は圧縮されることとなる。【０１４２】
図１９−２は、数値圧縮処理の第２の例を示す説明図である。図１９−２においては、数値情報「＄６８０．５０−」から先頭の「＄」および末尾の「−」を分離して、数値「６８０．５０」を抽出する。そして、この数値「６８０．５０」を圧縮する。【０１４３】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８０．５０」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「６８０．５０」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「６８０．５０」の桁数「３」を検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。【０１４４】
つぎに、数値「６８０．５０」の先頭数字「６」、第２数字「８」、第３数字「０」、小数点「ｘ’Ａ’」、第４数字「５」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「１０１０」，「０１０１」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６８０．５０」は圧縮されることとなる。【０１４５】
図１９−３は、数値圧縮処理の第３の例を示す説明図である。図１９−３においては、数値情報「６８００円」から末尾の「円」を分離して、数値「６８００」を抽出する。そして、この数値「６８００」を圧縮する。【０１４６】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８００」が全角であることを示す全角・半角ビット「１」を設定する。また、数値「６８００」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「６８００」の桁数「４」を検出し、検出された桁数「４」の圧縮符号「０１００」を図１２に示した符号化テーブルから読み出す。【０１４７】
つぎに、数値「６８００」の先頭数字「６」、第２数字「８」、第３数字「０」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６８００」は圧縮されることとなる。【０１４８】
図１９−４は、数値抽象化データの圧縮処理例を示す説明図である。図１９−４においては、最小血圧の値を示す数値抽象化データ「＜最小血圧＞１０７＜／最小血圧＞」から開始タグおよび終了タグを分離して、数値「１０７」を抽出する。そして、この数値「１０７」を圧縮する。【０１４９】
具体的には、数値の開始位置を示すフィーダ「ｘ’０Ｂ’」の圧縮符号「００００１０１１」を図１２に示した符号化テーブルから読み出す。このフィーダ「ｘ’０Ｂ’」は、数値が最終血圧であることを識別するフィーダである。つぎに、数値「１０７」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「１０７」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「１０７」の桁数「３」を検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。【０１５０】
つぎに、数値「１０７」の先頭数字「１」、第２数字「０」、および第３数字「７」までの数字の圧縮符号「０００１」，「００００」，「０１１１」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「１０７」は圧縮されることとなる。【０１５１】
また、数値の検出および大小比較を高速化するため、以下の数値マップを用いた数値圧縮をおこなうこととしてもよい。図２０−１は、数値マップを示す説明図である。数値マップは、数字の先頭２桁数字ごとに、１０の乗数を示すフラグが設定されている。１０の乗数は先頭桁数字までの桁数である。たとえば、「５６７０円」という数値情報については、先頭桁数字「５」の１０の乗数は３であるため、先頭２桁数字「５６」についての１０の乗数「３」のフラグを「１」（ＯＮ）に設定する。【０１５２】
また、小数については、右端の数字を先頭桁数字とし、１０の乗数は負の値をとる。この場合、たとえば、「０．１４ｍｇ」という数値情報については、先頭桁数字「４」の１０の乗数は「−２」であるため、先頭２桁数字「４０」の１０の乗数「−２」のフラグを「１」（ＯＮ）に設定する。なお、ＸＭＬファイルｆ０〜ｆｎ内に記述されている数値情報について、上述した「５６７０円」のような小数を含まない数値情報の場合には、正の乗数に関するフィーダ（以下、フィーダ（＋）と表記）を付与し、「０．１４ｍｇ」のような小数の数値情報の場合には、負の乗数に関するフィーダ（以下、フィーダ（−）と表記）を付与することとする。【０１５３】
図２０−２は、数値圧縮処理の第４の例を示す説明図である。図２０−２においては、数値情報「５６７０円」から末尾の「円」を分離して、数値「５６７０」を抽出する。そして、この数値「５６７０」を、数値マップを用いて圧縮する。【０１５４】
具体的には、数値の開始位置を示すフィーダ（＋）「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８００」が全角であることを示す全角・半角ビット「１」を設定する。また、数値「５６７０」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「５６７０」の１０の乗数「３」を数値マップから検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。【０１５５】
つぎに、数値「５６７０」の先頭数字「５」、第２数字「６」、第３数字「７」、および末尾数字「０」までの数字の圧縮符号「０１０１」，「０１１０」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「５６７０」は圧縮されることとなる。【０１５６】
図２０−３は、数値圧縮処理の第５の例を示す説明図である。図２０−３においては、数値情報「０．１４ｍｇ」から末尾の「ｍｇ」を分離して、数値「０．０４」を抽出する。そして、この数値「０．０４」を、数値マップを用いて圧縮する。【０１５７】
具体的には、数値の開始位置を示すフィーダ（−）「ｘ’Ｃ’」の圧縮符号「１１００」を図１２に示した符号化テーブルから読み出す。つぎに、数値「０．０４」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「０．０４」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「０．０４」の１０の乗数「−２」を数値マップから検出し、検出された桁数「−２」の圧縮符号「１００１」を図１２に示した符号化テーブルから読み出す。【０１５８】
つぎに、数値「０．０４」の先頭数字「４」の圧縮符号「０１００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「０．０４」は圧縮されることとなる。このようにして、数値情報内の数値は、すべて半角に統一され、ＸＭＬファイルｆ０〜ｆｎ内の文字列からの数値の検出および大小比較の高速化を実現することができる。【０１５９】
（圧縮化ＸＭＬファイルのデータ構造）
つぎに、ファイル圧縮部１１０６によって圧縮された圧縮化ＸＭＬファイルのデータ構造について説明する。図２１は、ファイル圧縮部１１０６によって圧縮された圧縮化ＸＭＬファイルのデータ構造を示す説明図である。図２１では、任意の圧縮化ＸＭＬファイルＦｉに着目して説明する。この圧縮化ＸＭＬファイルＦｉは、ブロック数情報（ｍ個）を格納する領域２１０１と、ｍ個の各ブロックのアドレス情報（＃１〜＃ｍ）を格納する領域２１０２と、各ブロックの圧縮ブロックデータＣ１〜Ｃｍを格納する領域２１０３から構成される。【０１６０】
また、図２２は、圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。図２２を参照すると、圧縮ブロックデータＣ１〜Ｃｍのレングスが、対応する元のブロックデータのレングスの約半分に圧縮されていることがわかる。【０１６１】
（検索初期化部６２１の詳細な機能的構成）
つぎに、図６に示した検索初期化部６２１の詳細な機能的構成について説明する。図２３は、図６に示した検索初期化部６２１の詳細な機能的構成を示すブロック図である。図２３において、検索初期化部６２１は、復号部２３０１と、低出現頻度数値・文字データ分解部２３０２と、生起確率演算部２３０３と、ハフマン木生成部２３０４と、出現マップ設定部２３０５と、から構成されている。【０１６２】
まず、復号部２３０１は、暗号化数値・文字出現頻度管理データ６５０を復号する。具体的には、図１１で用いた暗号化のマスタキーを用いて排他的論理和（ＸＯＲ）による復号処理を実行する。同様に、暗号化連字／外字置換テーブル６６０も、元の連字／外字置換テーブル６４０に戻す。【０１６３】
また、低出現頻度数値・文字データ分解部２３０２、生起確率演算部２３０３およびハフマン木生成部２３０４は、図１１に示した低出現頻度数値・文字データ分解部１１０２、生起確率演算部１１０４およびハフマン木生成部１１０５と同一の処理を実行し、ハフマン木１４０１を生成する。このハフマン木１４０１は、出現頻度補正部１１０１により補正されたハフマン木となる。【０１６４】
また、出現マップ設定部２３０５は、復号された数値・文字出現頻度管理データ５００の出現マップ５１０を読み込んでメモリ展開し、区点対応テーブルとリンクする。区点は、ＪＩＳによって制定された全角文字向けの文字コードであり、区点対応テーブルは、各区点のアドレスを記憶したテーブルである。【０１６５】
図２４は、文字の区点対応テーブルと出現マップとの対応関係を示す説明図である。文字の区点対応テーブル２４００は、数値・文字出現頻度管理データ５００の文字データと出現マップ５０５〜５０９とを対応づけるテーブルである。この文字の区点対応テーブル２４００により、区点に対応する文字データの存否をあらわすビット列の出現マップ５０５〜５０９を呼び出すことができる。【０１６６】
図２５は、数値の区点対応テーブルと出現マップとの対応関係を示す説明図である。数値の区点対応テーブル２５００は、数値・文字出現頻度管理データ５００の数値群と出現マップ５１０とを対応づけるテーブルである。この数値の区点対応テーブル２５００により、区点に対応する数値群内の数値の存否をあらわすビット列の出現マップ５１０を呼び出すことができる。【０１６７】
（全文検索実行部６２４の詳細な機能的構成）
つぎに、図６に示した検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成について説明する。図２６は、検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成を示すブロック図である。【０１６８】
図２６において、全文検索実行部６２４は、検索条件入力処理部２６００と、設定部２６０１と、検索キーワード圧縮部２６０２と、出現マップ読取部２６０３と、圧縮化ＸＭＬファイル特定部２６０４と、圧縮化ＸＭＬファイル抽出部２６０５と、検索候補一覧表示部２６１０と、検索候補選択部２６１１と、部分伸長・照合処理部２６２０と、から構成されている。【０１６９】
まず、検索条件入力処理部２６００は、ユーザからの検索条件の入力を受け付ける。ここで、検索条件とは、具体的には、たとえば、ＸＭＬタグのタグ名と検索キーワードである。ＸＭＬ化された治験データベースにおける文字列は、それらを括るタグの種類によって意味が異なる。たとえば、「糖尿病」といっても症状を意味している場合もあれば、単に病名を意味している場合もある。したがって、ＸＭＬタグの種類を特定することは検索効率のうえで重要である。【０１７０】
また、検索キーワードが複数ある場合、各検索キーワードの文字列を連結する。さらに、検索キーワードの連字が所定の連字に該当する場合、連字／外字置換テーブル６４０を用いて、連字を外字に置換する。このあと、検索条件入力処理部２６００は、検索キーワードを単一文字に分解する。【０１７１】
図２７〜図２９は、検索条件入力画面を示す説明図である。図２７〜図２９は、検索キーワードとして文字列を入力する場合の画面である。まず、図２７において、検索条件入力画面２７００は入力フィールド２７０１を有する。入力フィールド２７０１には、ＸＭＬタグのタグ名の指定タブ２７０２と、検索キーワードの入力欄２７０３と、完全一致、前方一致、後方一致、部分一致を選択するラジオボタン２７０４〜２７０７と、検索ボタン２７０９が表示されている。検索結果一覧フィールド２７１０には、検索結果一覧（たとえば、患者の識別コード）が表示される。【０１７２】
図２８に示す検索条件入力画面２７００は、図２７に示した状態からユーザ操作により指定タブ２７０２をクリックした状態を示している。ここでは、タグ名として、「副作用」、「薬効」、「血液型」、・・・などを指定することができる。【０１７３】
図２９に示す検索条件入力画面２７００は、図２８に示した状態からユーザ操作によりタグ名として「副作用」を指定し、検索キーワードとして「高血圧」を入力した状態を示している。また、ラジオボタン２７０７が選択されているため、この状態で検索ボタン２７０９をクリックすることで部分一致検索が実行される。【０１７４】
また、設定部２６０１は、ハフマン木１４０１に検索条件に応じた情報を設定する。具体的には、検索ボタン２７０９がクリックされると、検索条件にしたがってハフマン木１４０１に文字コードや各テーブル１７１１〜１７１４へのポインタ、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグが設定される。【０１７５】
たとえば、図２９の例では、タグ名が「副作用」に指定されたため、葉となる文字コード「高」，「血」，「圧」ごとに、タグテーブル１７１２のＸＭＬタグ＜副作用＞，＜／副作用＞へのポインタを領域１７０３に設定する。また、ラジオボタン２７０４が選択されているため、ＸＭＬタグ＜副作用＞，＜／副作用＞に対し伸長フラグＯＮ（伸長開始）および伸長フラグＯＦＦ（伸長終了）を設定する。【０１７６】
ＸＭＬタグ＜副作用＞に伸長フラグＯＮが設定されているため、後述するブロック伸長部２６０７では、ＸＭＬタグ＜副作用＞の圧縮符号が検出されるまで伸長せず、ＸＭＬタグ＜副作用＞の圧縮符号が検出されるとＸＭＬタグ＜副作用＞およびそれ以降の文字列を伸長し、伸長フラグＯＦＦのＸＭＬタグ＜／副作用＞の圧縮符号が検出されると、それ以降は伸長しないこととなる。【０１７７】
また、高速検索を実行する場合、検索キーワードの先頭文字である「高」について照合フラグを設定する。検索結果を強調表示する場合には、置換フラグを設定する。また、ログインしたユーザの端末に応じて、アクセス権フラグを設定する。たとえば、指定されたタグ名が「患者名」など個人情報に関わる場合は、医師の端末からタグ名が指定された場合には、そのタグにアクセス権ＯＮ（許可）を設定し、事務員の端末からタグ名が指定された場合には、そのタグにアクセス権を設定しない。【０１７８】
また、検索キーワード圧縮部２６０２は、検索条件入力処理部２６００によって入力された検索キーワードを、検索初期化部６２１のハフマン木生成部２３０４によって生成されたハフマン木１４０１を用いて圧縮する。図２９の例では、検索キーワードが「高血圧」であるため、たとえば、「血」の文字データが設定されているハフマン木１４０１の葉（リーフ）を検出することで、対応する圧縮符号を特定することができる。【０１７９】
また、検索キーワード圧縮部２６０２は、検索キーワードのうち、先頭文字以外の残余の検索キーワードをハフマン木１４０１を用いて圧縮する。図２９の例では、検索キーワードが「高血圧」であるため、文字「高」については圧縮せず、文字列「血圧」について圧縮する。【０１８０】
また、検索キーワード圧縮部２６０２は、ユーザにより指定された検索方法により、圧縮対象が変化する。たとえば、前方一致検索の場合、ＸＭＬ開始タグにのみ照合フラグが設定されるため、検索キーワードをハフマン木１４０１で圧縮する。【０１８１】
また、後方一致の場合、照合フラグが検索キーワードの先頭文字の圧縮符号に設定されるため、残余の検索キーワードとＸＭＬ終了タグからなる文字列をハフマン木１４０１で圧縮する。さらに、完全一致の場合、照合フラグがＸＭＬ開始タグに設定されるため、検索キーワードとＸＭＬ終了タグからなる文字列をハフマン木１４０１で圧縮する。【０１８２】
また、出現マップ読取部２６０３は、出現マップ設定部２３０５によって設定された出現マップ５１０を用いて、検索キーワードの各文字の各ＸＭＬファイルｆ０〜ｆｎにおけるビット列を読み取る。具体的には、この出現マップ５１０における各文字データは、区点対応テーブルにより区点とリンクしているため、区点と一致する検索キーワードの各文字データのビット列を読み取ることができる。【０１８３】
圧縮化ＸＭＬファイル特定部２６０４は、出現マップ５１０から読み取られた各文字の各ＸＭＬファイルｆ０〜ｆｎにおけるビット列の論理積を算出することにより、検索キーワードの各文字データがすべて存在する圧縮化ＸＭＬファイルを特定することで、圧縮化ＸＭＬファイルの絞込みをおこなう。ここで、絞込みの一例について説明する。【０１８４】
図３０は、圧縮化ＸＭＬファイルＦｉの絞込みの一例を示す説明図である。図３０においては、検索キーワードを『増殖細胞』とし、ＸＭＬファイルの数を４個、すなわち、ファイル番号ｉ＝０〜３までとする。図３０において、たとえば、文字『増』のビット列は［１１０１］である。このビット列は、ファイル番号０、１、３のＸＭＬファイルｆ０、ｆ１、ｆ３には文字『増』が含まれており、ファイル番号２のＸＭＬファイルｆ２には文字『増』が含まれていないことを示している。【０１８５】
また、削除フラグは、デフォルトが「１」、すなわちそのＸＭＬファイルが残存していることを示しており、「０」に設定されている場合、そのＸＭＬファイルが削除されたことを示している。したがって、ＸＭＬファイルｆ０〜ｆ３のうち、ＸＭＬファイルｆ３を絞り込み処理から除外する。【０１８６】
そして、図３０において、絞込み結果は、ファイル番号ｉごとのビットの論理積（ＡＮＤ）結果を示している。この絞込み結果によれば、ファイル番号１のＸＭＬファイルｆ１のみが、存在を示すビット「１」となっているため、検索キーワードを構成するすべての文字『増』、『殖』、『細』および『胞』は、ＸＭＬファイルｆ１にのみ存在し、他のＸＭＬファイルｆ０、ｆ２には存在しないことがわかる。【０１８７】
これにより、検索対象としてオープンするファイルを、ＸＭＬファイルｆ１を圧縮した圧縮化ＸＭＬファイルＦ１のみに特定することができ、無駄なファイルのオープン／クローズ処理を防止して検索速度の向上を図ることができる。【０１８８】
また、検索キーワード『増』，『殖』，『細』，『胞』が存在するか否かにかかわらず、あらかじめ削除フラグが「０」に設定されているＸＭＬファイルｆ３を絞り込み対象から除外することで、無駄なファイルのオープン／クローズ処理を防止して検索速度の向上を図ることができる。【０１８９】
また、図２６において、圧縮化ＸＭＬファイル抽出部２６０５は、圧縮化ＸＭＬファイル群Ｆの中から、圧縮化ＸＭＬファイル特定部２６０４によって特定されたＸＭＬファイルＦｉを抽出する。図２７の例では、ファイル番号１の圧縮化ＸＭＬファイルＦ１を抽出する。以下、抽出された圧縮化ＸＭＬファイルを「特定圧縮化ＸＭＬファイル」と称す。【０１９０】
また、部分伸長・照合処理部２６２０は、ハフマン木１４０１に対応した文字境界判定型バイナリ照合処理を実行する機能を有する。具体的には、特定圧縮化ＸＭＬファイルの圧縮符号列を部分伸長しながら、圧縮キーワードとのバイナリ照合をおこない、一致照合された文字列（伸長済み）のみを出力バッファに出力する。この部分伸長・照合処理部２６２０は、フラグ／テーブル設定部２６２１と、部分伸長部２６２２と、バイナリ照合部２６２３と、文字列地幹部とを備えている。【０１９１】
フラグ／テーブル設定部２６２１は、圧縮符号表１６００における各種フラグを設定する。たとえば、検索条件として、「副作用」というＸＭＬのタグ名が入力された場合、そのＸＭＬ開始タグ「＜副作用＞」に、伸長開始をあらわす伸長フラグ「ＯＮ」を設定し、ＸＭＬ終了タグ「＜／副作用＞」に伸長終了をあらわす伸長フラグ「ＯＦＦ」を設定する（図１６、図１７を参照。）。これにより、ＸＭＬタグ＜副作用＞…＜／副作用＞で括られた文字列のみが伸長および照合対象として絞り込むことができるため、検索処理の高速化を実現することができる。【０１９２】
また、検索キーワードの先頭文字の圧縮符号について照合フラグをＯＮに設定する（図１６を参照。）。これにより、伸長フラグが設定されたＸＭＬタグ内文字列のうち、照合フラグがＯＮに設定されている圧縮符号列のみをバイナリ照合対象に絞り込むことができるため、検索処理の高速化を実現することができる。【０１９３】
さらに、強調表示などの文字列置換をおこなう場合、置換フラグもＯＮに設定する（図１６を参照。）。これにより、強調表示などの文字列置換の対象文字列を、一致照合された伸長文字列にのみ絞り込むことができる。また、アクセス権フラグについては、ユーザＩＤやタグの種類などにより設定される。【０１９４】
また、フラグ／テーブル設定部２６２１は、図１７に示した各種テーブル１７１１〜１７１４を設定する。たとえば、検索キーワードの先頭文字列以外の残余の検索キーワードとその圧縮キーワードの圧縮長とを関連付けて、照合テーブル１７１３に設定する。バイナリ照合において一致照合した場合、この照合テーブル１７１３を参照することで、ヒットした文字列を出力バッファに出力することができる。【０１９５】
また、文字列置換をおこなう場合、残余の検索キーワードおよびその圧縮キーワードの圧縮長とともに、置換後の文字列を、置換テーブル１７１４に設定する。バイナリ照合において一致照合した場合、この置換テーブル１７１３を参照することで、ヒットした文字列のかわりに、置換後の文字列を出力バッファに出力することができる。【０１９６】
また、部分伸長部２６２２は、特定圧縮化ＸＭＬファイルを読み込んで、文字単位で部分伸長処理をおこなう。具体的には、文字単位で圧縮符号を検出して、その圧縮符号に、図１６に示した伸長フラグがＯＮに設定されているか否かを判断する。ＯＮに設定されていない圧縮符号については伸長しない。ＯＮに設定されていれば、検索条件に合致するＸＭＬ開始タグがヒットしたこととなり、タグ内文字列の部分伸長処理をおこなう。【０１９７】
そして、伸長フラグがＯＦＦに設定されている圧縮符号を検出すると、部分伸長処理を停止する。伸長された文字列は一時バッファに出力される。これにより、検索条件に合致するタグない文字列のみ部分伸長をおこなうことができる。この部分伸長処理の詳細については、図３１において具体的に説明する。【０１９８】
また、バイナリ照合部２６２３は、順次シフトされてくる特定圧縮化ＸＭＬファイルの一連の圧縮符号列と圧縮キーワードとを比較して、バイナリ照合をおこなう。具体的には、一連の圧縮符号列と圧縮キーワードとのＥＸＯＲ演算をおこない、一致するか否かを判断する。【０１９９】
一致照合された場合、照合テーブル１７１３を参照して、一時バッファに伸長された文字列を出力バッファに転送する。出力バッファに転送された伸長文字列のみが検索候補として出力される。また、バイナリ照合部２６２３では、特定圧縮化ＸＭＬファイルの一連の圧縮符号列をすべて照合するのではなく、文字単位で検出された圧縮符号について照合フラグがＯＮに設定されている場合にのみ、後続の圧縮符号列についてＥＸＯＲ演算をおこなう。したがって、無駄な演算を抑制して検索速度の高速化を実現することができる。このバイナリ照合処理の詳細については、図３２−１において具体的に説明する。【０２００】
また、文字列置換部２６２４は、文字列置換をおこなう場合にのみ機能し、バイナリ照合部２６２３により一致照合された場合、置換テーブル１７１４に設定されている置換後の文字列をヒットした伸長文字列のかわりに出力バッファに出力する。この文字列置換処理の詳細については、図３２−２において具体的に説明する。【０２０１】
ファイル構成データ特定部２６０９は、検索キーワードに一致する文字列の治験データｇｊがあった場合、当該治験データｇｊのページ番号ｊおよび当該治験データｇｊが属するＸＭＬファイルｆｉのファイル番号ｉを特定する。【０２０２】
検索候補一覧表示部２６１０は、ページリストデータ４００を編集して、ファイル構成データ３００内のファイルリストのうち、治験データｇｊのページ番号ｊおよび当該治験データｇｊが属するＸＭＬファイルｆｉのファイル番号ｉが特定されたファイルリストを、検索候補一覧（たとえば、見出し語の一覧）として図１に示したディスプレイ１０８に表示する。具体的には、図２９に示した検索結果一覧フィールド２７１０に一覧表示される。【０２０３】
図２９を参照すると、検索結果一覧フィールド１７１０には、４件の検索結果が表示されている。この検索結果は、＜副作用＞の症例が「高血圧」であるＸＭＬファイル内の管理番号である。【０２０４】
また、検索候補選択部２６１１は、検索候補一覧表示部２６１０によって表示された検索候補一覧の中から、ユーザの操作によって選択された検索候補を受け付ける。受け付けられた場合、後述する検索結果表示部６２３により、その全文内容が表示される。図２９においては、検索候補として「ＦＪ０２００４０」が受け付けられた場合、表示フィールド２７２０に、その詳細な内容が表示される。【０２０５】
（ハフマン木に対応した文字境界判定型バイナリ照合処理）
つぎに、本実施の形態の特徴部分であるハフマン木に対応した文字境界判定型バイナリ照合処理について説明する。このハフマン木に対応した文字境界判定型バイナリ照合処理は、全文検索実行部６２４において実行される。【０２０６】
ここでは、通常の文字列検索である部分一致検索を例に挙げて説明する。なお、その他の前方一致検索、後方一致検索、完全に一致検索については、照合フラグの設定など若干異なるが、原理は同じである。また、ここでは文字について説明するが、数値についても同様に適用することができる。【０２０７】
図３１は、部分伸長部２６２２による部分伸長処理を示す説明図である。ここでは、説明を簡単にするため、例として、図１５に示したハフマン木１４０１を用いて説明する。また、検索キーワードを「高血圧」とし、ハフマン木１４０１における記号ａを文字「高」、記号ｂを文字「血」、記号ｃを文字「圧」とする。また、図３１中、符号３１０１は、文字「高」の圧縮符号であり、符号３１０２は、文字「血」の圧縮符号であり、符号３１０３は、文字「圧」の圧縮符号である。【０２０８】
まず、検索キーワード「高血圧」が入力されると、圧縮化ＸＭＬファイル特定部２６０４により特定された特定圧縮化ＸＭＬファイルを読み込む。この特定圧縮化ＸＭＬファイルは、検索キーワードを構成する文字「高」、「血」、「圧」をすべて含む検索対象ファイルである。この特定圧縮化ＸＭＬファイルの先頭の圧縮符号列からバイト単位でレジスタＲａにセットする。レジスタＲａにセットされた圧縮符号列は、１ビットずつシフトされ、１バイト空きが発生する都度特定圧縮化ＸＭＬファイルの圧縮文字列が順次レジスタＲａにセットされる。【０２０９】
このレジスタＲａにおいて、最上位ビットＭＳＢに順次シフトされているビット値の０／１判定をおこなう。この０／１判定は、レジスタＲａの最上位ビットＭＳＢに順次セットされるビット値が、ハフマン木１４０１における左右のいずれの枝が選択されるかを判定する処理である。【０２１０】
たとえば、「高血圧」の圧縮符号列中、「血」の圧縮符号を「１１１０」とする。レジスタＲａの最上位ビットＭＳＢには、圧縮符号「１１１０」のビット値が順次セットされる。この順次セットされるビット値の０／１判定を、ハフマン木１４０１のルートを初期位置としておこなう。圧縮符号「１１１０」は、「１」が３回連続で最上位ビットにセットされるので、ルートとなるノードＮ０を初期位置として、右側の下位ノードＮ１，Ｎ２，Ｎ３に遷移する。圧縮符号「１１１０」の末尾のビット値は「０」であるので、ノードＮ３から左側の下位ノードＮ４に遷移する。【０２１１】
ここで、ノードＮ４の構造体には、下位の左ノードの構造体へのポインタではなく、葉の識別情報が記憶されている。したがって、ノードＮ４は内部節点ではなく、葉（リーフ）であることがわかる。このように、最上位ビットＭＳＢにセットされるビット値によって遷移したノードの構造体を参照することで、そのノードが内部節点であるか葉であるかを判別することができる。【０２１２】
そして、葉であると判別された場合、葉の構造体に記憶されている文字コードを順次一時バッファ３１００に出力する。これにより、特定圧縮化ＸＭＬファイルの圧縮文字列を一時バッファ３１００に伸長することができる。【０２１３】
なお、一時バッファ３１００に伸長された文字列「高血圧」は、後述するバイナリ照合処理において一致照合されると、出力バッファ３１０１に転送され、一時バッファ３１００から消去される。なお、不一致照合されると、出力バッファ３１０１には転送されず、一時バッファ３１００から消去される。【０２１４】
つぎに、上述したバイナリ照合処理について説明する。図３２−１は、バイナリ照合部２６２３によるバイナリ照合処理を示す説明図である。まず、検索キーワード「高血圧」が入力されると、図１６に示す圧縮符号表１６００における先頭文字「高」の照合フラグがＯＮに設定される。また、文字列置換をおこなう場合には、図１６に示す圧縮符号表１６００における先頭文字「高」の置換フラグもＯＮに設定される。【０２１５】
そして、検索キーワード「高血圧」中、先頭文字「高」を除く残余の文字列「血圧」が圧縮され、レジスタＲｂにセットされる。そして、「血圧」の圧縮符号列がその圧縮長とともに照合テーブル１７１３にセットされる。また、文字列置換をおこなう場合には、「血圧」の圧縮符号列およびその圧縮長とともに、置換後の文字列「＜Ｂ＞高血圧＜／Ｂ＞」が置換テーブル１７１４にセットされる。【０２１６】
バイナリ照合処理では、検索キーワードの先頭文字を除く残余の検索キーワードを、ハフマン木１４０１を用いて圧縮してレジスタＲｂにセットする。先頭文字が欠落した残余の検索キーワードは圧縮長とともに照合テーブル１７１３に保持される。【０２１７】
ここでは、検索キーワードとして「高血圧」を例にあげているため、先頭文字「高」を除く残余の検索キーワード「血圧」とその圧縮長を照合テーブル１７１３に保持するとともに、残余の検索キーワード「血圧」の圧縮符号列「１１１０１０１」をレジスタＲｂにセットする。【０２１８】
そして、レジスタＲａにおいてリーフが検出された圧縮符号について照合フラグがＯＮに設定されている場合、レジスタＲａにセットされる後続の圧縮符号列と、レジスタＲｂにセットされた残余の検索キーワード「血圧」の圧縮符号列「１１１０１０１」とを比較して、ＥＸＯＲ演算による照合処理を実行する。図３２−１の照合結果３１１０において、記号列３１１２は、文字「血」の圧縮符号３１０２の一致照合結果であり、記号列３１１３は、文字「圧」の圧縮符号３１０３の一致照合結果である。なお、不一致照合結果の場合にはビット値が「１」となる。【０２１９】
また、文字列置換をおこなわない場合、照合結果３１１０により、「血圧」の圧縮符号列「１１１０１０１」が一致照合されたため、一時バッファ３１００に保持された文字列「高血圧」を、出力バッファ３１０１に転送する。【０２２０】
図３２−２は、文字列置換部２６２４による文字列置換処理を示す説明図である。図３２−２において、照合結果により一致照合した場合、一時バッファ３１００に伸長された文字列を、置換テーブル１７１４を参照することにより置換して、出力バッファ３１０１に書き込む。ここでは、一時バッファ３１００には文字列「高血圧」が伸長されている。【０２２１】
一方、置換テーブル１７１４には文字列「血圧」が記憶されているため、伸長された文字列「血圧」と一致する。したがって、一時バッファ３１００に保持されている文字列「高血圧」を、置換テーブル１７１４に保持されている文字列「＜Ｂ＞高血圧＜／Ｂ＞」に置換して、出力バッファ３１０１に転送する。なお、一時バッファ３１００に保持されている文字列「高血圧」は消去される。【０２２２】
（数値検索実行部の詳細な機能的構成）
図３３は、検索実行部６２２内の数値検索実行部６２５の詳細な機能的構成を示すブロック図である。なお、図２６に示した構成と同一構成については同一符号を付し、その説明を省略する。【０２２３】
図３３において、数値検索実行部６２５は、検索条件入力部３３００と、設定部３３００と、数値圧縮部３３０２と、検出部３３０３と、出現マップ抽出部３３０４と、中間数値群判断部３３０５と、省略マップ設定部３３０６と、下限／上限マップ生成部３３０７と、特定部３３０８と、圧縮情報検索部３３０９と、境界条件判断部３３１０と、決定部３３１１と、を有している。【０２２４】
まず、検索条件入力部３３００は、数値検索をおこなう場合のユーザからの検索条件の入力を受け付ける。ここで、検索条件とは、具体的には、たとえば、ＸＭＬタグのタグ名と任意の数値範囲の境界を規定する数値（検索キーワードに相当）である。ＸＭＬ化された治験データベースにおける数値は、それらを括るタグの種類によって意味が異なる。たとえば、「４６」という数値も患者の年齢である場合や、脈拍数あらわす場合もある。したがって、ＸＭＬタグの種類を特定することは検索効率のうえで重要である。【０２２５】
また、数値範囲とは、境界を規定する数値と境界を規定する演算子とにより特定される区間である。境界を規定する数値とは、数値範囲の下限を規定する数値（下限数値）Ｎｘや上限を規定する数値（上限数値）Ｎｙである。また、境界を規定する算術記号とは、「≦」、「＜」、「≧」、「＞」といった不等号を示す算術記号であり、下限数値や上限数値の境界条件となる。【０２２６】
これにより、任意の数値をＺとすると、検索条件入力部３３００では、ユーザ入力や算術記号の初期設定などにより、数値Ｎが取りうる以下の数値範囲を設定することができる。
・Ｎｘ＜Ｚ
・Ｎｘ≦Ｚ
・Ｎｙ＞Ｚ
・Ｎｙ≧Ｚ
・Ｎｘ＜Ｚ＜Ｎｙ
・Ｎｘ≦Ｚ＜Ｎｙ
・Ｎｘ＜Ｚ≦Ｎｙ
・Ｎｘ≦Ｚ≦Ｎｙ【０２２７】
図３４−１〜図３４−３は、数値検索を実行する場合の検索条件入力画面を示す説明図である。図３４−１〜図３４−３は、検索キーワードとして数値を入力する場合の画面である。まず、図３４−１において、検索条件入力画面３４００は入力フィールド３４０１を有する。入力フィールド３４０１には、ＸＭＬタグのタグ名の指定タブ３４０２と、下限数値の入力欄３４０３と、上限数値の入力欄３４０４と、下限数値の境界条件を指定するタブ３４０５と、上限数値の境界条件を指定するタブ３４０６と、検索ボタン３４０７が表示されている。検索結果一覧フィールド３４１０には、検索結果一覧（たとえば、患者の識別コード）が表示される。【０２２８】
図３４−２に示す検索条件入力画面３４００は、指定タブ３４０２、タブ３４０３，３４０３により指定可能な項目を示している。指定タブ３４０２では、タグ名として、「血圧値」、「血糖値」、「年齢」、「体重」、・・・などを指定することができる。また、タブ３４０５では下限数値の境界条件（「以上」または「より大きい」）を指定することができる。同様に、タブ３４０６では上限数値の境界条件（「以下」または「未満」）を指定することができる。【０２２９】
図３４−３に示す検索条件入力画面３４００は、ユーザ操作によりタグ名として「血圧値」を指定し、下限数値として「１５０」を入力し、下限数値の境界条件として「以上」を指定した状態を示している。これにより、『血圧値１５０以上』の患者のデータを検索することができる。【０２３０】
また、設定部３３０１は、数値情報の先頭文字となるフィーダに相当する葉の構造体１７００に、照合フラグをＯＮに設定する。具体的には、図１７に示したように、領域１７０２において、照合フラグをＯＮに設定する。また、ログインしたユーザの端末に応じて、アクセス権フラグを設定する。たとえば、指定されたタグ名が個人情報に関わる場合は、医師の端末からタグ名が指定された場合には、そのタグにアクセス権ＯＮ（許可）を設定し、事務員の端末からタグ名が指定された場合には、そのタグにアクセス権を設定しない。【０２３１】
また、数値圧縮部３３０２は、検索条件入力部３３００によって取得された数値を圧縮する。具体的には、図１９−１〜図１９−４に示したように、数値であることを識別するフィーダの圧縮符号、全角・半角ビットの圧縮符号、カンマ有無ビットの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号、小数点を含む場合は小数点の圧縮符号などからなる圧縮情報に圧縮する。なお、各圧縮化ＸＭＬファイルＦｉ内の数値も同様な規則で圧縮されている。また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「０」（ＯＦＦ）としておく。また、図２０−１〜図２０−３に示したように、数値マップを用いた圧縮方法であってもよい。【０２３２】
また、検出部３３０３は、検索条件入力部３３００によって入力された境界を規定する数値の桁数および先頭数字を検出する。たとえば、数値ＮがＮ＝１２，３４５である場合、桁数は「５」であり、先頭数字は「１」である。また、数値に小数が含まれている場合、小数点以下の桁数も計数する。たとえば、数値ＮがＮ＝１２，３４５．６７である場合、桁数は「７」であり、先頭数字は「１」である。また、先頭桁は最上位の１桁としたが、先頭からの連続する複数の上位桁としてもよい。たとえば、数値Ｎ（Ｎ＝１２，３４５）では、先頭数字は、「１２」としてもよい。【０２３３】
また、中間数値群判断部３３０５は、検索条件入力部３３００によって取得された数値範囲に中間数値群が含まれているか否かを判断する。ここで、中間数値群とは、数値範囲の下限数値を含む数値群（以下、「下限数値群」と称す）と、数値範囲の上限数値を含む数値群（以下、「上限数値群」と称す）との間に存在する数値群である。下限数値群と上限数値群との桁数が相違していれば、中間数値群が存在すると判断する。また、桁数が同一であっても、先頭数字が相違していれば、中間数値群が存在すると判断する。【０２３４】
たとえば、数値範囲が『３，７００以上６，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字６の数値群とが検出される。この場合、中間数値群として、４桁・先頭数字４の数値群と４桁・先頭数字５の数値群とが数値範囲内に存在することとなる。【０２３５】
また、数値範囲が『３，７００以上１６，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として５桁・先頭数字１の数値群とが検出される。この場合、中間数値群として、４桁・先頭数字４の数値群〜４桁・先頭数字９の数値群が数値範囲内に存在することとなる。【０２３６】
また、数値範囲が『３，７００以上４，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字４の数値群とが検出される。この場合、中間数値群は存在しない。【０２３７】
同様に、数値範囲が『３，７００以上３，９００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字３の数値群とが検出される。すなわち、下限数値群および上限数値群が同一の数値群となる。この場合も、中間数値群は存在しない。【０２３８】
また、出現マップ抽出部３３０４は、数値群の出現マップの中から、検出部３３０３によって検出された桁数および先頭数字に応じた出現マップを抽出する。たとえば、検出部３３０３により、桁数「５」で先頭数字「１」が検出された場合、５桁・先頭数字１の数値群に関する出現マップを抽出する。また、中間数値群が存在する場合、中間数値群に関する出現マップも抽出する。【０２３９】
省略マップ設定部３３０６は、中間数値群に関する出現マップに基づいて、省略マップを設定する。省略マップとは、下限数値群に関する出現マップや上限数値群に関する出現マップとの論理積を演算するためのマップである。省略マップ自体は、数値群に関する出現マップ５０３と同様、ＸＭＬファイルｆｉにおける存否をビットのＯＮ／ＯＦＦであらわしている。したがって、ＯＮになっているビットに対応するＸＭＬファイルｆｉには、中間数値群内の数値が存在していることをあらわしており、ＯＦＦになっているビットに対応するＸＭＬファイルｆｉには、中間数値群内の数値が存在しないことをあらわしている。【０２４０】
省略マップは、具体的には、中間数値群に関する出現マップの論理和を演算することにより中間結果マップを算出し、この中間結果マップ内のビットを反転することにより、省略マップを設定する。なお、中間数値群に関する出現マップが１つしか存在しない場合、当該出現マップ内のビットを反転することにより省略マップを設定することができる。また、中間数値群に関する出現マップがない場合、全ビットＯＦＦの省略マップを設定する。【０２４１】
また、下限／上限マップ生成部３３０７は、下限マップおよび上限マップを生成する。ここで、下限マップとは、下限数値群に関する出現マップ（下限数値群マップ）と省略マップとの論理積により得られるマップであり、上限マップとは、上限数値群に関する出現マップ（上限数値群マップ）と省略マップとの論理積により得られるマップである。この論理積演算により、下限マップは下限数値群内数値のみの存否をあらわすマップとなり、上限マップは上限数値群内数値のみの存否をあらわすマップとなる。【０２４２】
また、特定部３３０８は、複数の圧縮化検索対象ファイルの中から、検出部３３０３によって検出された桁数および先頭数字を満たす数値群内の数値が存在する圧縮化検索対象ファイルを特定する。具体的には、下限マップ内のビットのうち、ＯＮになっているビットに対応するＸＭＬファイルｆｉを特定し、圧縮化ＸＭＬファイル群Ｆの中から圧縮化ＸＭＬファイルＦｉを抽出する。同様に、上限マップ内のビットのうち、ＯＮになっているビットに対応するＸＭＬファイルｆｉを特定し、圧縮化ＸＭＬファイル群Ｆの中から圧縮化ＸＭＬファイルＦｉを抽出する。【０２４３】
また、圧縮情報検索部３３０９は、特定部３３０８によって特定された圧縮化ＸＭＬファイルＦｉの中から、ファイル内数値に関する圧縮情報を検索する。圧縮化ＸＭＬファイルｆｉ内においては、ファイル内数値は、フィーダの圧縮符号、全角・半角フラグの圧縮符号、カンマフラグの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号などからなる圧縮情報により圧縮されている。【０２４４】
圧縮情報検索部３３０９は、ファイル内数値に関する圧縮情報（たとえば、フィーダの圧縮符号のみ）を検出することで、ファイル内数値に関する圧縮情報を抽出する。このとき、ハフマン木１４０１を参照することにより、照合フラグがＯＮに設定されたフィーダの圧縮符号のみを抽出することで、検索速度の高速化を図ることができる。【０２４５】
また、境界条件判断部３３１０は、数値圧縮部３３０２によって圧縮された境界を規定する数値の圧縮情報と、圧縮情報検索部３３０９によって検索されたファイル内数値の圧縮情報とを比較することにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断する。境界条件とは、（境界を規定する数値）以上、以下、より大きい、より小さいといった境界を規定する数値との大小関係をあらわす条件である。【０２４６】
たとえば、まず、桁数の数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、同一桁数である場合、先頭数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、先頭数字が同一である場合、順次、つぎの桁の数字どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。これにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断することができる。【０２４７】
また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「０」（ＯＦＦ）としてあるため、ファイル内数値の圧縮情報との比較の際、ファイル内数値の圧縮情報において、全角・半角ビットおよび圧縮符号、カンマ有無ビットを「０」（ＯＦＦ）に設定する。これにより、全角・半角の相違やカンマの有無を考慮することなく、数値検索をおこなうことができる。【０２４８】
また、決定部３３１１は、境界条件判断部３３１０によって判断された判断結果に基づいて、特定部３３０８によって特定された圧縮化検索対象ファイルＦｉを、数値範囲内の数値を含むファイルに決定する。具体的には、ファイル内数値が境界を規定する数値との境界条件を充足した場合、特定部３３０８によって特定された圧縮化検索対象ファイルＦｉを、数値範囲内の数値を含むファイルに決定する。この決定処理では、出現マップと同様、ＸＭＬファイルに対応するビット列であらわされる下限比較結果マップおよび上限比較結果マップを用いる。初期設定として全ビットをＯＦＦにしておく。【０２４９】
そして、圧縮化ＸＭＬファイルＦｉにおいて、ファイル内数値が下限数値との境界条件を充足した場合、下限比較結果マップ内の当該圧縮化ＸＭＬファイルＦｉに対応するビットをＯＮにする。同様に、ファイル内数値が上限数値との境界条件を充足した場合、上限比較結果マップ内の当該圧縮化ＸＭＬファイルＦｉに対応するビットをＯＮにする。【０２５０】
そして、決定部３３１１は、最終的に得られた下限比較結果マップと上限比較結果マップと中間結果マップが存在する場合には中間結果マップとの論理和を演算することにより、数値範囲内の数値が存在する圧縮化ＸＭＬファイルＦｉを決定することができる。【０２５１】
なお、ファイル構成データ特定部２６０９は、決定部３３１１により数値範囲内の数値が存在する圧縮化ＸＭＬファイルＦｉが決定された場合、境界を規定する数値との境界条件を満足したファイル内数値が存在する治験データｇｊのページ番号ｊおよび当該治験データｇｊが属するＸＭＬファイルｆｉのファイル番号ｉを特定する。【０２５２】
（数値範囲の大小比較例）
つぎに、数値範囲の第１の大小比較例について説明する。ここでは、数値範囲を特定する下限の数値と上限の数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明する。図３５−１〜図３５−４は、数値範囲の大小比較例を示す説明図である。ここでは、例として、数値範囲『３，７００円以上６，３００円以下』が与えられたとして、当該数値範囲で指定された範囲の金額（数値）を含む圧縮化ＸＭＬファイルＦｉを検索する例である。なお、数値範囲の下限数値の数値情報「３，７００円」および上限数値の数値情報「６，３００円」は、ともに図１６−３に示した圧縮処理により圧縮される。【０２５３】
図３５−１において、まず、数値範囲『３，７００円以上６，３００円以下』について、中間数値群の出現マップを抽出する。具体的には、下限数値群の出現マップとなる４桁・先頭数字３マップＭ４３と上限数値群の出現マップとなる４桁・先頭数字６マップＭ４６との間の４桁・先頭数字４マップＭ４４および４桁・先頭数字５マップＭ４５を、中間数値群の出現マップとして抽出する。【０２５４】
４桁・先頭数字３マップＭ４３は、４桁・先頭数字３の数値を有するＸＭＬファイルｆｉの存否をあらわしている。４桁・先頭数字４マップＭ４４は、４桁・先頭数字４の数値を有するＸＭＬファイルｆｉの存否をあらわしている。４桁・先頭数字５マップＭ４５は、４桁・先頭数字５の数値を有するＸＭＬファイルｆｉの存否をあらわしている。４桁・先頭数字６マップＭ４６は、４桁・先頭数字６の数値を有するＸＭＬファイルｆｉの存否をあらわしている。【０２５５】
ここで、４桁・先頭数字３マップＭ４３および４桁・先頭数字６マップＭ４６は、大小比較に用いる出現マップである。また、４桁・先頭数字４マップＭ４４および４桁・先頭数字５マップＭ４５は、論理和をとって中間結果マップＭ０１とする。中間結果マップＭ０１は、数値４０００〜５９９９が存在するＸＭＬファイルｆｉの存否をあらわしている。そして、この中間結果マップＭ０１内のビットを反転させることで、省略マップＭ０２を得る。【０２５６】
図３５−２では、図３５−１で得られた４桁・先頭数字３マップＭ４３と省略マップＭ０２との論理積をとることで、下限マップＭ０３を得る。省略マップＭ０２との論理積をとることで、中間数値群内の数値を有するＸＭＬファイルを除外することができる。【０２５７】
この下限マップＭ０３において、ビットがＯＮである圧縮化ＸＭＬファイルＦｉを抽出する。この圧縮化ＸＭＬファイルＦｉを先頭からサーチしてフィーダ（図３５−２では「ｘ’Ｂ’」）の圧縮符号「１０１１」を探索する。フィーダの圧縮符号「１０１１」が探索されると、そのフィーダの圧縮符号「１０１１」を先頭とする圧縮情報３５０１を読み出す。この圧縮情報３５０１のうち、全角・半角ビットおよびカンマ有無ビットが「１」である場合、「０」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報３５１０と称す。【０２５８】
そして、圧縮化ＸＭＬファイルＦｉ内の数値情報「３，３００円」を圧縮した比較対象圧縮情報３５１０と、下限の数値情報「３，７００円」を圧縮処理した下限の圧縮情報３５０２とを比較する。まず、比較対象圧縮情報３５１０および下限の圧縮情報３５０２のフィーダ，桁数，先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化ＸＭＬファイルＦｉ内のつぎのフィーダをサーチする。【０２５９】
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報３５１０は少なくとも４桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報３５１０は少なくとも先頭数字が「３」の数値の圧縮形式であることがわかる。したがって、フィーダ，桁数，および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。【０２６０】
この例では、第２数字の圧縮符号を比較することで、比較対象圧縮情報３５０２のファイル内の数値情報「３，３００円」よりも下限数値の数値情報「３，７００円」が大きいことがわかる。この場合、下限比較結果マップＭ０４において、圧縮化ＸＭＬファイルＦｉに対応するビットは「０」のままである。そして、圧縮化ＸＭＬファイルＦｉ内のつぎのフィーダをサーチして、下限数値の数値情報「３，７００円」以上の数値情報がある場合、下限比較結果マップＭ０４において、圧縮化ＸＭＬファイルＦｉに対応するビットを「１」とする。【０２６１】
この比較処理を、下限マップＭ０３内においてビットが立っているすべての圧縮化ＸＭＬファイルＦ０〜Ｆｎについておこなうことで、下限比較結果マップＭ０４を得ることができる。このように、下限マップＭ０３から４桁でかつ先頭数字が「３」である数値を含む圧縮化ＸＭＬファイルＦｉを抽出することで、ＸＭＬファイルｆｉを圧縮形式のまま検索することができる。【０２６２】
図３５−３では、図３５−１で得られた４桁・先頭数字６マップＭ４６と省略マップＭ０２との論理積をとることで、上限マップＭ０５を得る。省略マップＭ０２との論理積をとることで、中間数値群内の数値を有するＸＭＬファイルを除外することができる。【０２６３】
この上限マップＭ０５において、ビットがＯＮである圧縮化ＸＭＬファイルＦｉを抽出する。この圧縮化ＸＭＬファイルＦｉを先頭からサーチしてフィーダ（図３５−３では「ｘ’Ｂ’」）の圧縮符号「１０１１」を探索する。フィーダの圧縮符号「１０１１」が探索されると、そのフィーダの圧縮符号「１０１１」を先頭とする圧縮情報３５０３を読み出す。この圧縮情報３５０３のうち、全角・半角ビットおよびカンマ有無ビットが「１」である場合、「０」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報３５３０と称す。【０２６４】
そして、圧縮化ＸＭＬファイルＦｉ内の数値情報「６，２００円」を圧縮した比較対象圧縮情報３５３０と、上限の数値情報「６，３００円」を圧縮処理した上限の圧縮情報３５０４とを比較する。まず、比較対象圧縮情報３５３０および上限の圧縮情報３５０４のフィーダ，桁数，先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化ＸＭＬファイルＦｉ内のつぎのフィーダをサーチする。【０２６５】
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報３５３０は少なくとも４桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報３５３０は少なくとも先頭数字が「３」の数値の圧縮形式であることがわかる。したがって、フィーダ，桁数，および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。【０２６６】
この例では、第２数字の圧縮符号どうしを比較することで、比較対象圧縮情報３５３０の数値情報「６，２００円」よりも上限数値の数値情報「６，３００円」が大きいことがわかる。この場合、上限比較結果マップＭ０６において、圧縮化ＸＭＬファイルＦｉに対応するビットを「１」とする。【０２６７】
この比較処理を、上限マップＭ０５内においてビットが立っているすべての圧縮化ＸＭＬファイルＦｉについておこなうことで、上限比較結果マップＭ０６を得ることができる。このように、上限マップＭ０５から４桁でかつ先頭数字が「６」である数値を含む圧縮化ＸＭＬファイルＦｉを抽出することで、ＸＭＬファイルｆｉを圧縮形式のまま検索することができる。【０２６８】
図３５−４では、下限比較結果マップＭ０４、中間結果マップＭ０１、および上限比較結果マップＭ０６の論理和をとることで、統合結果マップＭ０７を得ている。これにより、数値範囲『３，７００円以上６，３００円以下』内の数値情報を含むＸＭＬファイルｆｉを圧縮形式のまま特定することができる。【０２６９】
なお、上述した図３５−１〜図３５−４の例では、数値範囲を特定する下限数値と上限数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明したが、上限の数値の桁数が大きい場合（または下限の数値の桁数が小さい場合）も同様に比較することができる。たとえば、数値範囲が『３，７００円以上６４，０００円以下』である場合、４桁先頭数字４マップ〜４桁先頭数字９マップと５桁先頭数字１マップ〜５桁先頭数字５マップまでを中間数値群の出現マップとして抽出すればよい。【０２７０】
また、数値範囲が『３，７００円以上３，９００円以下』や『３，７００円以上４，５００円以下』など、中間数値群が存在しない場合は、中間結果マップＭ０１が存在しないため、省略マップＭ０２の全ビットをＯＦＦにする。そして、統合結果マップＭ０７を得る場合も中間結果マップＭ０１が存在しないため、下限比較結果マップＭ０４と上限比較結果マップＭ０６との論理和により統合結果マップＭ０７を演算する。【０２７１】
（検索結果表示部６２３の詳細な機能的構成）
つぎに、図６に示した検索結果表示部６２３の詳細な機能的構成について説明する。図３６は、図６に示した検索結果表示部６２３の詳細な機能的構成を示すブロック図である。図３６において、検索結果表示部６２３は、読出し部３６０１と、ファイル伸長部３６０２と、ファイル表示部３６０３と、から構成されている。【０２７２】
まず、読出し部３６０１は、検索候補選択部２１１１によって選択された検索候補である項目データを、圧縮化ＸＭＬファイル群Ｆの圧縮化ＸＭＬファイルＦｉから読み出す。また、ファイル伸長部３６０２は、読出し部３６０１によって読み出された項目データを、ハフマン木１４０１によって伸長する。ファイル表示部３６０３は、ファイル伸長部３６０２によって伸長された項目データを検索結果として表示する。【０２７３】
（情報検索処理手順）
つぎに、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順について説明する。図３７は、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順を示すフローチャートである。図３７において、まず、数値・文字出現頻度管理データ生成部６１２により、数値・文字出現頻度管理データ生成処理を実行する（ステップＳ３７０１）。【０２７４】
そして、圧縮／暗号化部６１３により、圧縮／暗号化処理を実行する（ステップＳ３７０２）。このあと、検索初期化部６２１により、検索初期化処理を実行する（ステップＳ３７０３）。つぎに、検索実行部６２２により、検索処理を実行する（ステップＳ３７０４）。【０２７５】
最後に、検索結果表示部６２３により、検索結果表示処理を実行する（ステップＳ３７０５）。なお、検索結果表示処理では、検索候補一覧から選択された検索候補（項目データ）を圧縮ＸＭＬファイルＦｉから読み出して、ハフマン木１４０１にて伸長することにより、項目データの全文を検索結果として表示することができる。【０２７６】
（数値・文字出現頻度管理データ生成処理手順）
つぎに、図３７に示した数値・文字出現頻度管理データ生成処理（ステップＳ３７０１）の詳細な処理手順について説明する。図３８は、図３７に示した数値・文字出現頻度管理データ生成処理（ステップＳ３７０１）の詳細な処理手順を示すフローチャートである。図３８において、まず、初期化処理を実行する（ステップＳ３８０１）。具体的には、８，１６ビットの数値・文字データ、連字データ、バイナリデータの区点対応の集計領域を確保し、出現頻度と出現マップのセグメント等を初期化する。また、数値・文字データのコードをセットし、各種カウンタを初期化する。【０２７７】
つぎに、数値・文字出現頻度集計処理を実行する（ステップＳ３８０２）。この数値・文字出現頻度集計処理の詳細な処理手順については後述する。この数値・文字出現頻度集計処理のあと、数値・文字出現頻度管理データ５００の領域確保とその領域の初期化を実行し（ステップＳ３８０３）、８，１６ビットの数値・文字データ、連字データ、バイナリデータの文字コードと出現頻度をセットする（ステップＳ３８０４）。【０２７８】
そして、出現マップの各セグメントを連結し（ステップＳ３８０５）。連字領域の連字データを高出現頻度順にソートする（ステップＳ３８０６）ことで、２５６種の連字データを選択する。これにより、連字データの削減を図ることができる。【０２７９】
つぎに、連字／外字置換をおこなうとともに、連字／外字置換テーブル６４０を生成する（ステップＳ３８０７）。具体的には、高出現頻度順に連字データを外字データに置換することにより、連字外字データと連字／外字置換テーブル６４０を生成する。【０２８０】
そして、低出現頻度の連字データ、すなわち外字に置換されなかった連字データを単一文字データに分解し、該当する文字領域に割り振る補正をおこなう（ステップＳ３８０８）。すなわち、低出現頻度の連字データを表音文字データに分割し、当該文字データの頻度の加算と出現マップのＯＲ演算を実行する。【０２８１】
このあと、数値・文字データを高出現頻度順にソートし（ステップＳ３８０９）、頻度０回の数値・文字データをカットして、連字外字データとバイナリデータとを結合し（ステップＳ３８１０）、この結合によって得られた数値・文字出現頻度管理データ５００をファイルに出力する（ステップＳ３８１１）。これにより、ステップＳ３７０２に移行する。【０２８２】
（数値・文字出現頻度集計処理手順）
つぎに、上述した数値・文字出現頻度集計処理（ステップＳ３８０２）の詳細な処理手順について説明する。図３９は、上述した数値・文字出現頻度集計処理（ステップＳ３８０２）の詳細な処理手順を示すフローチャート（前半）である。図３９において、まず、先頭ＸＭＬファイルｆ０をオープンする（ステップＳ３９０１）。【０２８３】
つぎに、オープンされたＸＭＬファイルから順次データを抽出する。抽出されたデータがバイナリデータである場合（ステップＳ３９０２：Ｙｅｓ）、当該バイナリデータの出現頻度を加算し、当該バイナリデータの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３９０３）。そして、図４０に示すステップＳ３９１１に移行する。【０２８４】
一方、ステップＳ３９０２において、抽出されたデータがバイナリデータではない場合（ステップＳ３９０２：Ｎｏ）、数値であるか否かを判定する（ステップＳ３９０４）。たとえば、数字のみからなる数字列であれば、数値と判定する。また、数字のほか「，」（カンマ）や「．」（小数点）が数字列に含まれている場合も、数値と判定する。【０２８５】
そして、数値である場合（ステップＳ３９０４：Ｙｅｓ）、当該数値の出現頻度を加算し、当該数値の出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３９０５）。そして、図４０に示すステップＳ３９１１に移行する。【０２８６】
一方、ステップＳ３９０４において、抽出されたデータが数値ではない場合（ステップＳ３９０４：Ｎｏ）、連字データであるか否かを判定する（ステップＳ３９０６）。連字データである場合（ステップＳ３９０６：Ｙｅｓ）、当該連字データの出現頻度を加算し、当該連字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３９０７）。そして、図４０に示すステップＳ３９１１に移行する。【０２８７】
一方、ステップＳ３９０６において、抽出されたデータが連字データでない場合（ステップＳ３９０６：Ｎｏ）、漢字データであるか否かを判定する（ステップＳ３９０８）。漢字データでない場合（ステップＳ３９０８：Ｎｏ）、当該データは表音文字データであるため、その表音文字データの出現頻度を加算し、当該表音文字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、バイトカウンタを加算する（ステップＳ３９０９）。そして、図４０に示すステップＳ３９１１に移行する。【０２８８】
一方、ステップＳ３９０８において、抽出されたデータが漢字データである場合（ステップＳ３９０８：Ｙｅｓ）、当該漢字データの出現頻度を加算し、当該漢字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、バイトカウンタを加算する（ステップＳ３９１０）。そして、図４０に示すステップＳ３９１１に移行する。【０２８９】
図４０は、数値・文字出現頻度集計処理（ステップＳ３９０２）の詳細な処理手順を示すフローチャート（後半）である。図４０において、出現マップのセグメントのセグメントカウンタを加算し（ステップＳ３９１１）、セグメント終了か否か、すなわちセグメントの集計が終了したか否かを判断する（ステップＳ３９１２）。セグメントの集計が終了した場合（ステップＳ３９１２：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し、セグメントカウンタをクリアする（ステップＳ３９１３）。そして、ステップＳ３９１４に移行する。【０２９０】
一方、セグメントの集計が終了していない場合（ステップＳ３９１２：Ｎｏ）、またはステップＳ３９１３のあと、ブロック終了か否か、たとえば、集計した数値・文字データ数が４０００文字に到達したか否かを判断する（ステップＳ３９１４）。【０２９１】
そして、ブロック終了した場合（ステップＳ３９１４：Ｙｅｓ）、当該ブロックデータを有するＸＭＬファイルｆｉのファイル番号ｉ、当該ブロックデータのブロック番号ｍ、オフセット、文字数、およびレングスからなるブロック情報を生成してファイルに追加出力するとともに、バイトカウンタをクリアする（ステップＳ３９１５）。そして、ステップＳ３９１６に移行する。【０２９２】
一方、ブロック終了していない場合（ステップＳ３９１４：Ｎｏ）、またはステップＳ３９１５のあと、ファイル終了か否か、すなわち、現在オープンしているＸＭＬファイルｆｉの集計が終了したか否かを判断する（ステップＳ３９１６）。現在オープンしているＸＭＬファイルｆｉの集計が終了していない場合（ステップＳ３９１６：Ｎｏ）、図３９に示したステップＳ３９０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３９０２〜Ｓ３９１０）。【０２９３】
一方、ステップＳ３９１６において、現在オープンしているＸＭＬファイルの集計が終了した場合（ステップＳ３９１６：Ｙｅｓ）、集計終了か否か、すなわち、現在オープンしているＸＭＬファイルｆｉをクローズする（ステップＳ３９１７）。このあと、すべてのＸＭＬファイルｆ０〜ｆｎからの集計が終了したか否かを判断する（ステップＳ３９１８）。【０２９４】
すべてのＸＭＬファイルｆ０〜ｆｎの集計が終了していない場合（ステップＳ３９１８：Ｎｏ）、つぎのファイル番号ｉ（ｉ＝ｉ＋１）のＸＭＬファイルｆｉをオープンし（ステップＳ３９１９）、図３９に示したステップＳ３９０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３９０２〜Ｓ３９１０）。【０２９５】
一方、ステップＳ３９１８において、すべてのＸＭＬファイルｆ０〜ｆｎの集計が終了した場合（ステップＳ３９１８：Ｙｅｓ）、出現マップ５１０のセグメントをファイルに追加出力し（ステップＳ３９２０）、ステップＳ３９０３に移行することで一連の処理を終了する。【０２９６】
（圧縮／暗号化処理手順）
つぎに、図３７に示した圧縮／暗号化処理（ステップＳ３７０２）の詳細な処理手順について説明する。図４１は、図３７に示した圧縮／暗号化処理（ステップＳ３７０２）の詳細な処理手順を示すフローチャートである。図４１において、まず、数字や小数点、フィーダ（以下、「数字等」と称す）の出現頻度の補正をおこなう（ステップＳ４１００）。そして、その他の文字データの出現頻度を補正する（ステップＳ４１０２）。【０２９７】
そして、出現頻度順に混合領域８１２の数値・文字データをソートする（ステップＳ４１０３）。つぎに、低出現頻度の数値・文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ４１０４）。そして、混合領域８１２の数値・文字データ、連字外字データ、バイナリデータを連結し、出現頻度順にソートする（ステップＳ４１０５）。【０２９８】
このあと、ソートされた数値・文字データごとに、補正された出現頻度に基づいて生起確率を演算し（ステップＳ４１０６）、この生起確率に基づいて、８，１６ビットの数値・文字データに共通のハフマン木を生成する（ステップＳ４１０７）。【０２９９】
そして、各ＸＭＬファイルの圧縮処理を実行する（ステップＳ４１０８）。この圧縮処理の具体的な手順は図４０において後述する。そして、数値・文字出現頻度管理データ５００を暗号化する（ステップＳ４１０９）。具体的には、数値・文字出現頻度管理データ５００の暗号化領域（数値・文字データおよび出現頻度の領域）を、マスタキーを用いて排他的論理和（ＥＸＯＲ）により暗号化する。【０３００】
そして、連字／外字置換テーブル６４０を暗号化する（ステップＳ４１１０）。具体的には、連字／外字置換テーブル６４０の暗号化領域を、マスタキーを用いて排他的論理和（ＥＸＯＲ）により暗号化する。そして、検索初期化処理（ステップＳ３７０３）に移行し、一連の処理を終了する。【０３０１】
（圧縮処理手順）
つぎに、図４１のステップＳ４１０８に示した圧縮処理の詳細な処理手順について説明する。図４２は、図４１のステップＳ４１０８に示した圧縮処理の詳細な処理手順を示すフローチャートである。まず、ファイル番号ｉをｉ＝０とし（ステップＳ４２０１）、ＸＭＬファイルｆｉを、たとえば４０００文字ごとにブロック化する（ステップＳ４２０２）。つぎに、ＸＭＬファイルｆｉ内のデータを順次読み込み、読み込んだデータがフィーダであるか否かを判断する（ステップＳ４２０３）。【０３０２】
フィーダであると判断された場合（ステップＳ４２０３：Ｙｅｓ）、フィーダに続く連続する数字を数値として読み込んで（ステップＳ４２０４）、全角・半角、数値の桁数を検出する（ステップＳ４２０５）。そして、ハフマン木による数値圧縮を実行し（ステップＳ４２０６）、ステップＳ４２０８に移行する。【０３０３】
一方、フィーダでないと判断された場合（ステップＳ４２０３：Ｎｏ）、当該データはその他の文字データであるため、ハフマン木１４０１を用いて文字データ圧縮を実行し（ステップＳ４２０７）、ステップＳ４２０８に移行する。【０３０４】
そして、ステップＳ４２０８において、当該ブロックにおける圧縮が終了したか否かを判断する（ステップＳ４２０８）。圧縮が終了していない場合（ステップＳ４２０８：Ｎｏ）、ステップＳ４２０３に戻って、つぎのデータを読み込む。一方、圧縮終了である場合（ステップＳ４２０８：Ｙｅｓ）、未処理ブロックがあるか否かを判断する（ステップＳ４２０９）。【０３０５】
未処理ブロックがある場合（ステップＳ４２０９：Ｙｅｓ）、当該未処理ブロックを読み込んで（ステップＳ４２１０）、ステップＳ４２０３に戻って、データの読み込みをおこなう。一方、未処理ブロックがない場合（ステップＳ４２０９：Ｎｏ）、ファイル番号ｉをインクリメントし（ステップＳ４２１１）、ｉ＞ｎか否かを判断する（ステップＳ４２１２）。【０３０６】
ｉ＞ｎでない場合（ステップＳ４２１２：Ｎｏ）、ステップＳ４２０２に戻って、つぎのＸＭＬファイルｆｉをブロック化する。一方、ｉ＞ｎである場合（ステップＳ４２１２：Ｙｅｓ）、図４１に示したステップＳ４１０９に移行する。これにより、圧縮処理における一連の処理を終了する。【０３０７】
（検索初期化処理手順）
つぎに、図３７に示した検索初期化処理（ステップＳ３７０３）の詳細な処理手順について説明する。図４３は、図３７に示した検索初期化処理（ステップＳ３７０３）の詳細な処理手順を示すフローチャートである。【０３０８】
図４３において、まず、検索初期化処理の起動を待ち受け（ステップＳ４３０１：Ｎｏ）、起動した場合（ステップＳ４３０１：Ｙｅｓ）、圧縮／暗号化処理において暗号化された暗号化数値・文字出現頻度管理データ６５０を復号化する（ステップＳ４３０２）。具体的には、暗号化数値・文字出現頻度管理データ６５０の暗号化領域（数値・文字データおよび出現頻度の領域）を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。【０３０９】
つぎに、暗号化連字／外字置換テーブル６６０を復号化する（ステップＳ４３０３）。具体的には、暗号化連字／外字置換テーブル６６０の暗号化領域を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。【０３１０】
つぎに、圧縮／暗号化処理で示したステップＳ４１０１〜Ｓ４１０５までの処理と同様の処理を実行する。すなわち、高出現頻度順に数値・文字データをソートし（ステップＳ４３０４）、低出現頻度の数値・文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ４３０５）。【０３１１】
そして、数値・文字データ、連字データ、バイナリデータを連結し、高出現頻度順にソートする（ステップＳ４３０６）。このあと、数値・文字データごとに、出現頻度に基づいて生起確率を演算し（ステップＳ４３０７）、この生起確率に基づいて、８，１６ビットの数値・文字データに共通のハフマン木を生成する（ステップＳ４３０８）。【０３１２】
このあと、出現マップ５１０の設定処理を実行する（ステップＳ４３０９）。具体的には、第１の区点対応テーブルおよび第２の区点対応テーブルの領域確保、各文字データの出現順位の第１の区点対応テーブルへのセット、各数値データの出現順位の第２の区点対応テーブルへのセット、復号された数値・文字出現頻度管理データ５００の出現マップのメモリ展開、当該出現マップと第１の区点対応テーブルおよび第２の区点対応テーブルとのリンクを実行する。このあと、検索処理（ステップＳ３７０４）に移行して、一連の処理を終了する。【０３１３】
（検索処理手順）
つぎに、図３７に示した検索処理（ステップＳ３７０４）の詳細な処理手順について説明する。図４４および図４５は、図３７に示した検索処理（ステップＳ３７０４）の詳細な処理手順を示すフローチャートである。検索初期化処理（ステップＳ３７０３）のあと、図４４において、まず、検索モード画面の呼び出しをおこない（ステップＳ４４０１）、数値検索モードまたは文字検索モードの選択を待ち受ける（ステップＳ４４０２）。【０３１４】
数値検索モードが選択された場合（ステップＳ４４０２：Ｙｅｓ）、図４９に示すステップＳ４９００に移行する。一方、文字検索モードが選択された場合（ステップＳ４４０２：Ｎｏ）、検索条件入力処理を実行する（ステップＳ４４０３）。検索条件入力処理は、図２７〜図２９で示したように、検索条件入力画面２７００にユーザ操作よる検索条件の入力を待ち受け、検索ボタン２７０９のクリックにより検索条件を読み込む処理である。【０３１５】
つぎに、検索条件中の検索キーワードが複数キーワードか否かを判断する（ステップＳ４４０４）。検索キーワードが複数でない場合（ステップＳ４４０４：Ｎｏ）、ステップＳ４４０６に移行する。一方、検索キーワードが複数である場合（ステップＳ４４０４：Ｙｅｓ）、各キーワードの文字列を連結して（ステップＳ４４０５）、ステップＳ４４０６に移行する。【０３１６】
このあと、ステップＳ４４０６において、検索キーワード内に連字データがない場合（ステップＳ４４０６：Ｎｏ）、ステップＳ４４０８に移行する。一方、連字データがある場合（ステップＳ４４０６：Ｙｅｓ）、連字／外字置換テーブル６４０を用いて、その連字データを２文字の外字データに置換して（ステップＳ４４０７）、ステップＳ４４０８に移行する。【０３１７】
つぎに、フラグ設定処理を実行する（ステップＳ４４０８）。フラグ設定処理とは、検索キーワードの各文字データに対応する葉の構造体に、検索条件に基づいて伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグを設定する処理である。フラグ設定処理（ステップＳ４４０８）の実行後、ステップＳ４４０９に移行する。フラグ設定処理の詳細については後述する。【０３１８】
このあと、ステップＳ４４０９において、検索キーワードを単一文字データに分解して、出現マップから各文字データの各ＸＭＬファイルにおける存否ビット列を読み取る（ステップＳ４４０９）。そして、各文字データの存否ビット列の論理積により、圧縮化ＸＭＬファイルを特定（絞込み）する（ステップＳ４４１０）。【０３１９】
そして、図４５において、検索キーワードを検索初期化処理（ステップＳ３７０３）において生成されたハフマン木１４０１で圧縮する（ステップＳ４４１１）。つぎに、テーブル設定処理（ステップＳ４４１２）を実行する。このテーブル設定処理（ステップＳ４４１２）では、検索キーワード中、先頭文字を除く残余の検索キーワードが圧縮され（ステップＳ４４１１）、レジスタＲｂにセットされると、その残余の検索キーワード（非圧縮）をその圧縮長とともに照合テーブル１７１３にセットする。また、文字列置換をおこなう場合には、残余の検索キーワード（非圧縮）およびその圧縮長とともに、置換後の文字列を置換テーブルにセットする。【０３２０】
ここでは、検索キーワードとして「高血圧」を例にあげているため、先頭文字「高」を除く残余の検索キーワード「血圧」とその圧縮長を照合テーブル１７１３にセットする。文字列置換をおこなう場合には、置換テーブル１７１４に、さらに、「＜Ｂ＞高血圧＜／Ｂ＞」のように、置換後の文字列をセットする。【０３２１】
このテーブル設定処理（ステップＳ４４１２）後、ファイルカウンタを初期化する（ステップＳ４４１３）。このあと、ステップＳ４４１０で特定された圧縮化ＸＭＬファイルをオープンし（ステップＳ４４１４）、オープンされた特定圧縮化ＸＭＬファイルについて部分伸長・照合処理を実行する（ステップＳ４４１５）。部分伸長・照合処理の詳細については後述する。【０３２２】
このあと、オープンしている特定圧縮化ＸＭＬファイルをクローズし（ステップＳ４４１６）、ファイルカウンタを更新する（ステップＳ４４１７）。ファイルカウンタの更新により、未処理の特定圧縮化ＸＭＬファイルがあると判断された場合（ステップＳ４４１８：Ｙｅｓ）、ステップＳ４４１４に移行して、つぎの特定圧縮化ＸＭＬファイルをオープンする。【０３２３】
一方、未処理の特定圧縮化ＸＭＬファイルがないと判断された場合（ステップＳ４４１８：Ｎｏ）、検索候補一覧を表示し（ステップＳ４４１９）、ユーザからの選択入力を待ち受ける（ステップＳ４４２０）ことにより、検索結果表示処理（ステップＳ３７０５）に移行して、一連の処理を終了する。【０３２４】
このように、コンテンツが複数のＸＭＬファイルから構成されていても、単一の圧縮情報（数値・文字出現頻度管理データ５００）により共通化することができる。【０３２５】
また、サイズが大きいＸＭＬファイルでは文字データ数に応じてブロック化をおこない、８ビットコード、１６ビットコードまたは３２ビットコードの文字データが混在する検索対象ファイルについてのハフマン圧縮技術を確立することができる。【０３２６】
また、サイズ（容量）ではなく、文字データ数に応じたブロック化をおこない、ＸＭＬファイル内の各文字データの出現頻度の集計時に、文字データの種類（８ビットコード、１６ビットコードまたは３２ビットコード）を判定し、出現頻度を集計することができる。【０３２７】
また、英字データなど出現頻度の高い８ビットコードの文字データに対しては、０ｘ’ＦＦ＊＊’など１６ビットコードの文字データに置換し、ハフマン圧縮をおこなう。これにより、低出現率の８ビットコードの文字データと区別して、効率的な圧縮をおこなうことができる。【０３２８】
また、ポインタなどの非文字データはランダムな値であるため、８ビットコードに置換する。また、ハフマン木１４０１のサイズ縮小のため、出現頻度の低い１６ビットコードの文字データを分割し、８ビットコードの文字データに置換する。これにより、効率的な圧縮をおこなうことができる。【０３２９】
また、圧縮のためのハフマン木１４０１の生成元である数値・文字出現頻度管理データ５００またはその一部を暗号化する。すなわち、コンテンツや、コンテンツ圧縮のためのハフマン木１４０１を直接暗号化せず、ハフマン木１４０１の生成元を暗号化しているため、セキュリティの向上を図ることができる。【０３３０】
（フラグ設定処理手順）
つぎに、図４４に示したフラグ設定処理（ステップＳ４４０８）の詳細な処理手順について説明する。図４６は、フラグ設定処理（ステップＳ４４０８）の詳細な処理手順を示すフローチャートである。【０３３１】
図４６において、まず、検索条件のタグ名に一致する要素（ＸＭＬ開始タグおよびそのＸＭＬ終了タグの組み合わせ）をタグテーブル１７１２から検出する（ステップＳ４６０１）。具体的には、その要素の葉を持つハフマン木１４０１の葉の構造体１７００の領域１７０３にその要素へのポインタを設定する。【０３３２】
つぎに、葉の構造体１７００の領域１７０２に伸長フラグを設定する（ステップＳ４６０２）。具体的には、要素のうちＸＭＬ開始タグに対しては伸長開始フラグ（ＯＮ）を設定し、ＸＭＬ終了フラグに対しては伸長終了フラグ（ＯＦＦ）を設定する。【０３３３】
つぎに、照合フラグを設定する（ステップＳ４６０３）。具体的には、検索キーワードの先頭文字の葉を持つハフマン木１４０１の構造体１７００の領域１７０２に照合フラグ（ＯＮ）を設定する。【０３３４】
つぎに、置換フラグを設定する（ステップＳ４６０４）。具体的には、検索キーワードの各文字の葉を持つハフマン木１４０１の構造体１７００の領域１７０２に置換フラグ（ＯＮ）を設定する。【０３３５】
つぎに、ステップＳ４６０１で検出されたＸＭＬ開始タグを葉とするハフマン木１４０１の構造体１７００の領域１７０３にその要素へのポインタを設定する。そして、ステップＳ４６０１で検出されたＸＭＬ開始タグを葉とするハフマン木１４０１の構造体１７００の領域１７０２にアクセス権フラグ（ＯＮ）を設定する（ステップＳ４６０５）。このあと、ステップＳ４４０９に移行する。【０３３６】
（部分伸長・照合処理手順）
つぎに、図４４に示した部分伸長・照合処理の詳細な処理手順について説明する。図４７および図４８は、図４４に示した部分伸長・照合処理の詳細な処理手順を示すフローチャートである。図４７および図４８は、図３１、図３２−１および図３２−２の処理内容に関する手順を示したフローチャートである。【０３３７】
図４７において、ステップＳ４４１４によりオープンされた特定圧縮化ＸＭＬファイルの先頭部分の圧縮符号列をバイト単位で図３１に示したレジスタＲａにセットする（ステップＳ４７０１）。レジスタＲａには、圧縮符号列が１ビットシフトして、１バイト分の空きが発生すると、後続の圧縮符号列がセットされる。つぎに、圧縮キーワードをレジスタＲｂにセットする（ステップＳ４７０２）。【０３３８】
そして、ステップＳ４４１４によりオープンされた特定圧縮化ＸＭＬファイルのサーチが終了したか否かを判断する（ステップＳ４７０３）。具体的には、レジスタＲａにセットされる圧縮符号列がなくなった場合にその特定圧縮化ＸＭＬファイルについてサーチが終了したと判断することができる。【０３３９】
サーチが終了していない場合（ステップＳ４７０３：Ｎｏ）、レジスタＲａの最上位ビットＭＳＢの０／１判定をおこなう（ステップＳ４７０４）。すなわち、遷移先のノードがリーフであるか否かを判定する。リーフでない場合（ステップＳ４７０５：Ｎｏ）、レジスタＲａにセットされている圧縮符号列を１ビットシフトして（ステップＳ４７０６）、ステップＳ４７０５に戻る。【０３４０】
一方、リーフである場合（ステップＳ４７０５：Ｙｅｓ）、その圧縮符号に設定されているアクセス権フラグを参照することにより、アクセス権があるか否かを判断する（ステップＳ４７０７）。アクセス権がない場合（ステップＳ４７０７：Ｎｏ）、ステップＳ４７０３に戻る。一方、アクセス権がある場合（ステップＳ４７０７：Ｙｅｓ）、その圧縮符号に伸長開始フラグがあるか否かを判断する（ステップＳ４７０８）。【０３４１】
伸長開始フラグがない場合（ステップＳ４７０８：Ｎｏ）、ステップＳ４７０３に戻る。一方、伸長開始フラグがある場合（ステップＳ４７０８：Ｙｅｓ）、伸長終了フラグがあるか否かを判断する（ステップＳ４７０９）。伸長終了フラグがない場合（ステップＳ４７０９：Ｎｏ）、図４８に示すステップＳ４８０１に移行する。【０３４２】
図４８では、まず、レジスタＲａにセットされている圧縮符号列を１ビットシフトして（ステップＳ４８０１）、レジスタＲａの最上位ビットＭＳＢの０／１判定をおこなう（ステップＳ４８０２）。すなわち、ハフマン木１４０１における遷移先のノードがリーフであるか否かを判定する。リーフでない場合（ステップＳ４８０２：Ｎｏ）、ステップＳ４８０１に戻る。【０３４３】
一方、リーフである場合（ステップＳ４８０３：Ｙｅｓ）、その圧縮符号に設定されているアクセス権フラグを参照することにより、アクセス権があるか否かを判断する（ステップＳ４８０４）。アクセス権がない場合（ステップＳ４８０４：Ｎｏ）、図４７に示したステップＳ４７０９に戻る。一方、アクセス権がある場合（ステップＳ４８０４：Ｙｅｓ）、その圧縮符号を文字に伸長し（ステップＳ４８０５）、伸張された文字を一時バッファ３１００に保持する（ステップＳ４８０６）。【０３４４】
そして、この一時バッファ３１００に伸長された文字に設定されている照合フラグがＯＮであるか否かを判断する（ステップＳ４８０７）。ＯＮである場合（ステップＳ４８０７：Ｙｅｓ）、レジスタＲａにセットされている圧縮符号列を１ビットシフトして（ステップＳ４８０８）、１ビットシフト後の圧縮符号列とレジスタＲｂにセットされている圧縮キーワードとの照合演算をおこなう（ステップＳ４８０９）。そして、この照合結果３２１０とレジスタＲａの圧縮符号列とを関連付けておき（ステップＳ４８１０）、ステップＳ４８０２に戻る。【０３４５】
一方、ＯＮでない場合（ステップＳ４８０７：Ｎｏ）、図４７に示したステップＳ４７０９に戻る。図４７において、現在特定されている圧縮符号について伸長終了フラグがある場合（ステップＳ４７０９：Ｙｅｓ）、ステップＳ４８０９の照合演算から得られる照合結果３２１０により、一致照合であるか否かを判断する（ステップ４７１０Ｓ）。【０３４６】
一致照合である場合（ステップＳ４７１０：Ｙｅｓ）、照合テーブル１７１３を参照して、一時バッファ３１００に伸長された文字列を出力バッファ３１０１に転送する（ステップＳ４７１１）。なお、文字列置換をおこなう場合には、置換テーブル１７１４を参照することにより、置換文字列を出力バッファ３１０１に転送する。【０３４７】
一方、不一致照合である場合（ステップＳ４７１０：Ｎｏ）、一時バッファ３１００に伸長された文字列を消去する（ステップＳ４７１２）。ステップＳ４７１１またはステップＳ４７１２のあと、レジスタＲａにセットされている圧縮符号列を１ビットシフトして（ステップＳ４７１３）、ステップＳ４７０３に戻る。ステップＳ４７０３において、サーチが終了した場合（ステップＳ４７０３：Ｙｅｓ）、ステップＳ４３１６に移行する。これにより、一連の処理を終了する。【０３４８】
この部分伸長・照合処理により、文字境界を意識した部分伸長と、圧縮キーワードとの照合とを独立し、かつ同時並行で実行することができる。具体的には、ヒットしたＸＭＬ開始タグからＸＭＬ終了タグまで部分伸長が実行され、一時バッファ３１００に出力される。換言すれば、ヒットしないＸＭＬタグについては、伸長および照合が不要となるため、冗長性の高いＸＭＬタグやそのＸＭＬタグで括られた文字列の伸長を自動的に禁止することができる。【０３４９】
また、部分伸長と並行してバイナリ照合が実行され、条件が満たされると一時バッファ３１００から出力バッファ３１０１に転送される。これにより、検索条件で指定されたタグに括られた圧縮符号と同一圧縮符号のみを部分伸長することができる。このような部分伸長・照合処理により、検索速度の高速化を図ることができる。【０３５０】
（数値検索モードにおける数値検索実行処理手順）
つぎに、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順について説明する。図４９は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。【０３５１】
図４６におけるステップＳ４６０２：Ｙｅｓのあと、入力された検索条件にしたがってフラグ設定処理を実行する（ステップＳ４９００）。フラグ設定処理（ステップＳ４９００）の詳細は、図４６に示した処理手順と同一であるため省略する。【０３５２】
このあと、検索条件入力部３３００により数値範囲を取得する（ステップＳ４９０１）。つぎに、検出部３３０３により、数値範囲の境界を規定する数値（下限数値、上限数値）の桁数および先頭数字を検出する（ステップＳ４９０２）。そして、数値圧縮部３３０２により、下限数値および上限数値を圧縮する（ステップＳ４９０３）。【０３５３】
このあと、出現マップ抽出部３３０５により、出現マップ５０３から下限数値群〜上限数値群の出現マップを抽出する（ステップＳ４９０４）。そして、中間数値群判断部３３０４により、中間数値群があるか否かを判断する（ステップＳ４９０５）。中間数値群があると判断された場合（ステップＳ４９０５：Ｙｅｓ）、省略マップ設定部３３０６により、中間数値群の出現マップの論理和をとることにより、中間結果マップを生成し（ステップＳ４９０６）、中間結果マップ内の全ビットを反転させて省略マップに変換する（ステップＳ４９０７）。【０３５４】
一方、中間数値群がないと判断された場合（ステップＳ４９０５：Ｎｏ）、省略マップを初期化する（ステップＳ４９０８）。すなわち、ＸＭＬファイルｆ０〜ｆｎに対応するビット列をすべてＯＦＦにすることで、全ビット「０」の省略マップを得る。そして、ステップＳ４９０９に移行する。【０３５５】
このあと、下限特定／比較処理（ステップＳ４９０９）および上限特定／比較処理（ステップＳ４９１０）を実行する。下限特定／比較処理（ステップＳ４９０９）および上限特定／比較処理（ステップＳ４９１０）の詳細な処理手順については後述する。【０３５６】
そして、決定部３３１１により、数値範囲内の数値が存在する圧縮化ＸＭＬファイルＦｉを決定する（ステップＳ４９１１）。このあと、ファイル構成データ特定部２１０９により、数値範囲内の数値が存在する圧縮化ＸＭＬファイルＦｉのページリストを特定し（ステップＳ４９１２）、図４５に示したステップＳ４６１９に移行する。これにより、数値検索実行処理の一連の手順を終了する。【０３５７】
（下限特定／比較処理手順）
つぎに、図４９に示した下限特定／比較処理の詳細な処理手順について説明する。図５０は、図４９に示した下限特定／比較処理手順を示すフローチャートである。図５０においては、図３５−１〜図３５−４に示した大小比較例を参照しながら説明する。【０３５８】
まず、図３５−２で示したように、下限数値群マップ（４桁先頭数字３マップＭ４３）と省略マップＭ０２との論理積演算をおこなうことにより、下限マップＭ０３を得る（ステップＳ５００１）。つぎに、ファイル番号ｉをｉ＝０とし、下限比較結果マップＭ０４を初期化（全ビットＯＦＦ）する（ステップＳ５００２）。【０３５９】
そして、下限マップＭ０３中、ｉ番目のビットがＯＮであるか否かを判断する（ステップＳ５００３）。ビットがＯＦＦである場合（ステップＳ５００３：Ｎｏ）、ステップＳ５０１０に移行する。【０３６０】
一方、ビットがＯＮである場合（ステップＳ５００３：Ｙｅｓ）、圧縮化ＸＭＬファイルＦの中から圧縮化ＸＭＬファイルＦｉを抽出する（ステップＳ５００４）。このあと、下限数値検出処理を実行する（ステップＳ５００５）。下限数値検出処理の詳細については図５１で後述する。なお、この下限数値検出処理により、圧縮化ＸＭＬファイルＦｉの中から、ファイル内数値の圧縮情報（図３５−２では圧縮情報３５０１）を抽出することができる。【０３６１】
このあと、下限数値照合処理を実行する（ステップＳ５００６）。この下限数値照合処理については図５２で後述する。そして、下限数値照合処理による照合結果により、下限数値の境界条件を充足しているか否かを判断する（ステップＳ５００７）。【０３６２】
充足していない場合（ステップＳ５００７：Ｎｏ）、ステップＳ５００５に戻る。一方、境界条件を充足している場合（ステップＳ５００７：Ｙｅｓ）、下限比較結果マップＭ０４中、ｉ番目のビットがＯＦＦのままか否かを判断する（ステップＳ５００８）。すでにＯＮになっている場合（ステップＳ５００８：Ｎｏ）、ステップＳ５００５に移行する。【０３６３】
一方、ビットがＯＦＦである場合（ステップＳ５００８：Ｙｅｓ）、そのｉ番目のビットをＯＦＦからＯＮにして（ステップＳ５００９）、ステップＳ５００５に戻る。また、ステップＳ５０１０では、ファイル番号ｉを１つインクリメントする。そして、ｉ＞ｎであるか否かを判断する（ステップＳ５０１１）。【０３６４】
ｉ＞ｎでない場合（ステップＳ５０１１：Ｎｏ）、ステップＳ５００３に戻る。一方、ｉ＞ｎである場合（ステップＳ５０１１：Ｙｅｓ）、図４９で示したステップＳ４９１０に移行する。これにより、下限特定／比較処理の一連の手順を終了する。【０３６５】
（下限数値検出処理手順）
つぎに、図５０に示した下限数値検出処理の詳細な処理手順について説明する。図５１は、図５０に示した下限数値検出処理手順を示すフローチャートである。図５１において、まず、図５０のステップＳ５００４で抽出された圧縮化ＸＭＬファイルＦｉのサーチを先頭から開始し、サーチが終了したか否かを判断する（ステップＳ５１０１）。ここで、サーチとは、検索条件で指定されたタグの圧縮符号と一致する圧縮符号の検出処理をいう。【０３６６】
終了していない場合（ステップＳ５１０１：Ｎｏ）、サーチを継続する（ステップＳ５１０２）。そして、サーチ中に、検索条件で指定されたタグの圧縮符号と一致する圧縮符号が検出されるまでサーチを継続する（ステップＳ５１０２：Ｎｏ）。サーチ中に、検索条件で指定されたタグの圧縮符号と一致する圧縮符号が検出された場合（ステップＳ５１０２：Ｙｅｓ）、そのハフマン木１４０１を参照して、伸長開始フラグが検出されたＸＭＬ開始タグについてアクセス権があるか否か、すなわち、アクセス権フラグがＯＮか否かを判断する（ステップＳ５１０３）。【０３６７】
アクセス権がない場合（ステップＳ５１０３：Ｎｏ）、ステップＳ５１０１に戻る。一方、アクセス権がある場合（ステップＳ５１０３：Ｙｅｓ）、一致検出された圧縮符号のタグを葉に持つハフマン木１４０１において伸長開始フラグが検出されたか否かを判断する（ステップＳ５１０４）。【０３６８】
伸長開始フラグが検出されなかった場合（ステップＳ５１０４：Ｎｏ）、ステップＳ５１０１に戻る。一方、伸長開始フラグが検出された場合（ステップＳ５１０４：Ｙｅｓ）、以降の圧縮符号について伸長終了フラグが検出されたか否かを判断する（ステップＳ５１０５）。【０３６９】
伸長終了フラグが検出されていない場合（ステップＳ５１０５：Ｎｏ）、伸長開始フラグの圧縮符号以降の圧縮符号を抽出し（ステップＳ５１０６）、ステップＳ５１０５に戻る。そして、伸長終了フラグが検出された場合（ステップＳ５１０５：Ｙｅｓ）、ステップＳ５００６に移行する。【０３７０】
また、ステップＳ５１０１において、サーチが終了した場合（ステップＳ５１０１：Ｙｅｓ）、ステップＳ５０１０へ移行する。なお、この伸長開始フラグが検出されてから伸長終了フラグが検出されるまでの間に抽出された圧縮符号列を、以降、「数値の圧縮情報」と称す。【０３７１】
（下限数値照合処理手順）
つぎに、図５０に示した下限数値照合処理の詳細な処理手順について説明する。図５２は、下限数値照合処理手順を示すフローチャートである。図５２において、下限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをＯＦＦにする（ステップＳ５２０１）。【０３７２】
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する（ステップＳ５２０１）。不一致である場合（ステップＳ５２０２：Ｎｏ）、ステップＳ５００７に移行する。一方、フィーダが一致した場合（ステップＳ５２０２：Ｙｅｓ）、桁数が一致するか否かを判断する（ステップＳ５２０３）。【０３７３】
桁数が不一致である場合（ステップＳ５２０３：Ｎｏ）、ステップＳ５００７に移行する。一方、桁数も一致する場合（ステップＳ５２０３：Ｙｅｓ）、桁数カウンタＮをＮ＝Ｎmaxに設定する（ステップＳ５２０４）。Ｎmaxは下限数値およびファイル内数値の桁数である。【０３７４】
そして、ファイル内数値のＮ桁目の数字が下限数値のＮ桁目の数字以上であるか否かを判断する（ステップＳ５２０５）。ここで、判断基準として下限数値のＮ桁目の数字以上としたのは、数値範囲における下限数値の境界条件が「≦」であるからであり、当該境界条件が「＜」である場合、ファイル内数値のＮ桁目の数字が下限数値のＮ桁目の数字よりも大きいか否かを判断することとなる。【０３７５】
そして、下限数値のＮ桁目の数字以上でない場合（ステップＳ５２０５：Ｎｏ）、ステップＳ５００７に移行する。一方、下限数値のＮ桁目の数字以上である場合（ステップＳ５２０５：Ｙｅｓ）、桁数カウンタＮを１つデクリメントし（ステップＳ５２０６）、桁数カウンタＮがＮ＜０であるか否かを判断する（ステップＳ５２０７）。【０３７６】
Ｎ＜０でない場合（ステップＳ５２０７：Ｎｏ）、下限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、Ｎ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する（ステップＳ５２０８）。【０３７７】
いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合（ステップＳ５２０８：Ｎｏ）、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップＳ５２０５に戻る。【０３７８】
一方、いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合（ステップＳ５２０８：Ｙｅｓ）、ステップＳ５００７に移行する。【０３７９】
また、ステップＳ５２０７において、Ｎ＜０である場合（ステップＳ５２０７：Ｙｅｓ）、ステップＳ５００７に移行する。これにより、下限数値照合処理の一連の手順を終了する。【０３８０】
そして、図５０に示したステップＳ５００７では、ステップＳ５２０７でＮ＜０である場合（ステップＳ５２０７：Ｙｅｓ）、下限数値の境界条件を充足していると判断し、一方、ステップＳ５２０２、ステップＳ５２０３、またはステップＳ５２０５ステップＳ５２０８でＮｏ、ステップＳ５２０８でＹｅｓと判断された場合、下限数値の境界条件を充足していないと判断する。【０３８１】
上述した下限数値検出処理とこの下限数値照合処理により、数値の部分伸長を実現することができる。すなわち、ＸＭＬタグで括られた数値が存在する場合はその圧縮符号列を伸長するが、存在しない場合は伸長しない仕様となっている。具体的には、伸長の出力を２段バッファにて処理する。【０３８２】
より具体的には、ヒットしたＸＭＬ開始タグからＸＭＬ終了タグまで部分伸長が実行され、１段目のテンポラリバッファに出力される。その伸長と並行して数値照合などが実行され、条件が満たされるとテンポラリバッファから伸長バッファに出力される。これにより、検索条件で指定されたタグに括られた数値の圧縮符号と同一圧縮符号のみを部分伸長することができるため、検索速度の高速化を図ることができる。【０３８３】
（上限特定／比較処理手順）
つぎに、図４９に示した上限特定／比較処理の詳細な処理手順について説明する。図５３は、図４９に示した上限特定／比較処理手順を示すフローチャートである。図５３においては、図３５−１〜図３５−４に示した大小比較例を参照しながら説明する。【０３８４】
まず、図３５−３で示したように、上限数値群マップ（４桁先頭数字６マップＭ４６）と省略マップＭ０２との論理積演算をおこなうことにより、上限マップＭ０５を得る（ステップＳ５３０１）。つぎに、ファイル番号ｉをｉ＝０とし、上限比較結果マップＭ０６を初期化（全ビットＯＦＦ）する（ステップＳ５３０２）。【０３８５】
そして、上限マップＭ０５中、ｉ番目のビットがＯＮであるか否かを判断する（ステップＳ５３０３）。ビットがＯＦＦである場合（ステップＳ５３０３：Ｎｏ）、ステップＳ５３１０に移行する。【０３８６】
一方、ビットがＯＮである場合（ステップＳ５３０３：Ｙｅｓ）、圧縮化ＸＭＬファイルＦの中から圧縮化ＸＭＬファイルＦｉを抽出する（ステップＳ５３０４）。このあと、上限数値検出処理を実行する（ステップＳ５３０５）。上限数値検出処理の詳細については図５４で後述する。なお、この上限数値検出処理により、圧縮化ＸＭＬファイルＦｉの中から、ファイル内数値の圧縮情報（図３５−３では圧縮情報３５０３）を抽出することができる。【０３８７】
このあと、上限数値照合処理を実行する（ステップＳ５３０６）。この上限数値照合処理については図５５で後述する。そして、上限数値照合処理による照合結果により、上限数値の境界条件を充足しているか否かを判断する（ステップＳ５３０７）。【０３８８】
充足していない場合（ステップＳ５３０７：Ｎｏ）、ステップＳ５３０５に戻る。一方、境界条件を充足している場合（ステップＳ５３０７：Ｙｅｓ）、上限比較結果マップＭ０６中、ｉ番目のビットがＯＦＦのままか否かを判断する（ステップＳ５３０８）。すでにＯＮになっている場合（ステップＳ５３０８：Ｎｏ）、ステップＳ５３０５に移行する。【０３８９】
一方、ビットがＯＦＦである場合（ステップＳ５３０８：Ｙｅｓ）、そのｉ番目のビットをＯＦＦからＯＮにして（ステップＳ５３０９）、ステップＳ５３０５に戻る。ステップＳ５３１０では、ファイル番号ｉを１つインクリメントする（ステップＳ５３１０）。そして、ｉ＞ｎであるか否かを判断する（ステップＳ５３１１）。【０３９０】
ｉ＞ｎでない場合（ステップＳ５３１１：Ｎｏ）、ステップＳ５３０３に戻る。一方、ｉ＞ｎである場合（ステップＳ５３１１：Ｙｅｓ）、図４９で示したステップＳ４９１１に移行する。これにより、上限特定／比較処理の一連の手順を終了する。【０３９１】
（上限数値検出処理手順）
つぎに、図５３に示した上限数値検出処理の詳細な処理手順について説明する。図５４は、図５３に示した上限数値検出処理手順を示すフローチャートである。図５４において、まず、図５３のステップＳ５３０４で抽出された圧縮化ＸＭＬファイルのサーチを先頭から開始し、サーチが終了したか否かを判断する（ステップＳ５４０１）。ここで、サーチとは、検索条件で指定されたタグの圧縮符号と一致する圧縮符号の検出処理をいう。【０３９２】
終了していない場合（ステップＳ５４０１：Ｎｏ）、サーチを継続する（ステップＳ５４０２）。そして、サーチ中に、検索条件で指定されたタグの圧縮符号と一致する圧縮符号が検出されるまでサーチを継続する（ステップＳ５４０２：Ｎｏ）。サーチ中に、検索条件で指定されたタグの圧縮符号と一致する圧縮符号が検出された場合（ステップＳ５４０２：Ｙｅｓ）、そのハフマン木１４０１を参照して、伸長開始フラグが検出されたＸＭＬ開始タグについてアクセス権があるか否か、すなわち、アクセス権フラグがＯＮか否かを判断する（ステップＳ５４０３）。【０３９３】
アクセス権がない場合（ステップＳ５４０３：Ｎｏ）、ステップＳ５４０１に戻る。一方、アクセス権がある場合（ステップＳ５４０３：Ｙｅｓ）、一致検出された圧縮符号のタグを葉に持つハフマン木１４０１において伸長開始フラグが検出されたか否かを判断する（ステップＳ５４０４）。【０３９４】
伸長開始フラグが検出されなかった場合（ステップＳ５４０４：Ｎｏ）、ステップＳ５４０１に戻る。一方、伸長開始フラグが検出された場合（ステップＳ５４０４：Ｙｅｓ）、以降の圧縮符号について伸長終了フラグが検出されたか否かを判断する（ステップＳ５４０５）。【０３９５】
伸長終了フラグが検出されていない場合（ステップＳ５４０５：Ｎｏ）、伸長開始フラグの圧縮符号以降の圧縮符号を抽出し（ステップＳ５４０６）、ステップＳ５４０５に戻る。そして、伸長終了フラグが検出された場合（ステップＳ５４０５：Ｙｅｓ）、ステップＳ５３０６に移行する。【０３９６】
また、ステップＳ５４０１において、サーチが終了した場合（ステップＳ５４０１：Ｙｅｓ）、ステップＳ５０１０に移行する。なお、この伸長開始フラグが検出されてから伸長終了フラグが検出されるまでの間に抽出された圧縮符号列を、以降、「数値の圧縮情報」と称す。【０３９７】
（上限数値照合処理手順）
つぎに、図５３に示した上限数値照合処理の詳細な処理手順について説明する。図５５は、上限数値照合処理手順を示すフローチャートである。図５５において、上限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをＯＦＦにする（ステップＳ５５０１）。【０３９８】
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する（ステップＳ５５０２）。不一致である場合（ステップＳ５５０２：Ｎｏ）、ステップＳ５３０７に移行する。一方、フィーダが一致した場合（ステップＳ５５０２：Ｙｅｓ）、桁数が一致するか否かを判断する（ステップＳ５５０３）。【０３９９】
桁数が不一致である場合（ステップＳ５５０３：Ｎｏ）、ステップＳ５３０７に移行する。一方、桁数も一致する場合（ステップＳ５５０３：Ｙｅｓ）、桁数カウンタＮをＮ＝Ｎmaxに設定する（ステップＳ５５０４）。Ｎmaxは上限数値およびファイル内数値の桁数である。【０４００】
そして、ファイル内数値のＮ桁目の数字が上限数値のＮ桁目の数字以下であるか否かを判断する（ステップＳ５５０５）。ここで、判断基準として「上限数値のＮ桁目の数字以下」としたのは、数値範囲における上限数値の境界条件が「≧」であるからであり、当該境界条件が「＞」である場合、ファイル内数値のＮ桁目の数字が上限数値のＮ桁目の数字よりも小さいか否かを判断することとなる。【０４０１】
そして、上限数値のＮ桁目の数字以下でない場合（ステップＳ５５０５：Ｎｏ）、ステップＳ５３０７に移行する。一方、上限数値のＮ桁目の数字以下である場合（ステップＳ５５０５：Ｙｅｓ）、桁数カウンタＮを１つデクリメントし（ステップＳ５５０６）、桁数カウンタＮがＮ＜０であるか否かを判断する（ステップＳ５５０７）。Ｎ＜０でない場合（ステップＳ５５０７：Ｎｏ）、上限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、Ｎ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する（ステップＳ５５０８）。【０４０２】
いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合（ステップＳ５５０８：Ｎｏ）、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップＳ５５０５に戻る。【０４０３】
一方、いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合（ステップＳ５５０８：Ｙｅｓ）、ステップＳ５３０７に移行する。【０４０４】
また、ステップＳ５５０７において、Ｎ＜０である場合（ステップＳ５５０７：Ｙｅｓ）、ステップＳ５３０７に移行する。これにより、上限数値照合処理の一連の手順を終了する。【０４０５】
そして、図５３に示したステップＳ５３０７では、ステップＳ５５０７でＮ＜０である場合（ステップＳ５５０７：Ｙｅｓ）、上限数値の境界条件を充足していると判断し、一方、ステップＳ５５０２、ステップＳ５５０３、またはステップＳ５５０５でＮｏ、またはステップＳ５５０８でＹｅｓと判断された場合、上限数値の境界条件を充足していないと判断する。【０４０６】
上述した上限数値検出処理とこの上限数値照合処理により、数値の部分伸長を実現することができる。すなわち、ＸＭＬタグで括られた数値が存在する場合はその圧縮符号列を伸長するが、存在しない場合は伸長しない仕様となっている。具体的には、伸長の出力を２段バッファにて処理する。【０４０７】
より具体的には、ヒットしたＸＭＬ開始タグからＸＭＬ終了タグまで部分伸長が実行され、１段目のテンポラリバッファに出力される。その伸長と並行して数値照合などが実行され、条件が満たされるとテンポラリバッファから伸長バッファに出力される。これにより、検索条件で指定されたタグに括られた数値の圧縮符号と同一圧縮符号のみを部分伸長することができるため、検索速度の高速化を図ることができる。【０４０８】
また、この数値範囲検索によれば、中間数値群を検出して省略マップＭ０２に反映させているため、中間数値群の出現マップにより特定される圧縮化ＸＭＬファイルに対して数値範囲内の数値の一致照合をするまでもなく、数値範囲内の数値の有無を検出することができる。【０４０９】
また、下限数値群や上限数値群についてのみ数値の一致照合をおこなうが、ファイル内数値はフィーダに関連付けられているため、圧縮化ＸＭＬファイルＦｉの中から数値情報のみを高速に検索することができる。また、数値の圧縮情報どうしで一致照合しているため、フィーダや桁数の圧縮符号どうしの一致照合のみで大小比較をおこなうことができ、高精度な検索を高速でおこなうことができる。【０４１０】
また、数値・文字出現頻度管理データ５００において、数字等の出現頻度を補正することにより、数値の一致照合や伸長の高速化を図ることができる。特に、検索対象ファイルに数値データと文字データが混在する場合に、数値の一致照合や伸長の高速化を図ることができる。【０４１１】
以上説明したように、この発明の実施の形態によれば、治験データのようにタグの種類が複雑化し、かつデータ量が膨大なＸＭＬファイルの検索の効率化を図ることができるという効果を奏する。
【産業上の利用可能性】
【０４１２】
以上のように、本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法は、治験データのようなタグが多数含まれているＸＭＬ形式のコンテンツに適している。
【図１】
2008142800.tif 000003
【図２】
2008142800.tif 000004
【図３】
2008142800.tif 000005
【図４】
2008142800.tif 000006
【図５】
2008142800.tif 000007
【図６】
2008142800.tif 000008
【図７】
2008142800.tif 000009
【図８】
2008142800.tif 000010
【図９】
2008142800.tif 000011
【図１０】
2008142800.tif 000012
【図１１】
2008142800.tif 000013
【図１２】
2008142800.tif 000014
【図１３】
2008142800.tif 000015
【図１４】
2008142800.tif 000016
【図１５】
2008142800.tif 000017
【図１６】
2008142800.tif 000018
【図１７】
2008142800.tif 000019
【図１８】
2008142800.tif 000020
【図１９−１】
2008142800.tif 000021
【図１９−２】
2008142800.tif 000022
【図１９−３】
2008142800.tif 000023
【図１９−４】
2008142800.tif 000024
【図２０−１】
2008142800.tif 000025
【図２０−２】
2008142800.tif 000026
【図２０−３】
2008142800.tif 000027
【図２１】
2008142800.tif 000028
【図２２】
2008142800.tif 000029
【図２３】
2008142800.tif 000030
【図２４】
2008142800.tif 000031
【図２５】
2008142800.tif 000032
【図２６】
2008142800.tif 000033
【図２７】
2008142800.tif 000034
【図２８】
2008142800.tif 000035
【図２９】
2008142800.tif 000036
【図３０】
2008142800.tif 000037
【図３１】
2008142800.tif 000038
【図３２−１】
2008142800.tif 000039
【図３２−２】
2008142800.tif 000040
【図３３】
2008142800.tif 000041
【図３４−１】
2008142800.tif 000042
【図３４−２】
2008142800.tif 000043
【図３４−３】
2008142800.tif 000044
【図３５−１】
2008142800.tif 000045
【図３５−２】
2008142800.tif 000046
【図３５−３】
2008142800.tif 000047
【図３５−４】
2008142800.tif 000048
【図３６】
2008142800.tif 000049
【図３７】
2008142800.tif 000050
【図３８】
2008142800.tif 000051
【図３９】
2008142800.tif 000052
【図４０】
2008142800.tif 000053
【図４１】
2008142800.tif 000054
【図４２】
2008142800.tif 000055
【図４３】
2008142800.tif 000056
【図４４】
2008142800.tif 000057
【図４５】
2008142800.tif 000058
【図４６】
2008142800.tif 000059
【図４７】
2008142800.tif 000060
【図４８】
2008142800.tif 000061
【図４９】
2008142800.tif 000062
【図５０】
2008142800.tif 000063
【図５１】
2008142800.tif 000064
【図５２】
2008142800.tif 000065
【図５３】
2008142800.tif 000066
【図５４】
2008142800.tif 000067
【図５５】
2008142800.tif 000068
【図５６】
2008142800.tif 000069
【手続補正書】
【提出日】平成21年10月26日(2009.10.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータを、
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成手段、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力手段、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長手段、
として機能させることを特徴とする情報検索プログラム。
【請求項２】
前記設定手段は、
前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、
前記伸長手段は、
前記検出手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を、前記ハフマン木を用いて伸長することを特徴とする請求項１に記載の情報検索プログラム。
【請求項３】
前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することを特徴とする請求項１または２に記載の情報検索プログラム。
【請求項４】
前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された検索キーワードの先頭文字データの圧縮符号に対し、前記検索キーワードと一致する文字列へのアクセスを許可するアクセス権フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記アクセス権フラグが設定された圧縮符号のみを検出することを特徴とする請求項１または２に記載の情報検索プログラム。
【請求項５】
請求項１に記載の情報検索プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【請求項６】
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成手段と、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段と、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力手段と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段と、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段と、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長手段と、
を備えることを特徴とする情報検索装置。
【請求項７】
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成工程と、
前記生成工程によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮工程と、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力工程と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力工程によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定工程と、
前記ファイル圧縮工程によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出工程と、
前記検出工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長工程と、
を含んだことを特徴とする情報検索方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、治験データなどの文字データや数値データが記述されたＸＭＬファイルに対する高速化検索技術に関する情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法である。
【背景技術】
【０００２】
現在、治験データなどはＯＲＡＣＬＥやＳＱＬデータベースを利用して作られており、日々更新されている。しかし、オープン性に乏しいため、システム移行や拡張が課題となっており、最近ではオープン性にすぐれたＸＭＬデータに移行しつつある。
【０００３】
また、下記特許文献１には、ＨＴＭＬ形式におけるコンテンツの圧縮・暗号化・全文検索をおこなう情報検索プログラムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開番号ＷＯ２００６／１２３４４８
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、治験データのように複雑な構造を持つデータをＸＭＬ変換すると、タグ情報量が多く、そのファイルサイズが数倍から２０倍に増加する。このようなＸＭＬファイルを検索対象とすると、検索対象の数値や文字列に比べ、ＸＭＬタグの文字列が長く、検索の性能劣化の障害となっている。
【０００６】
図５６は、治験データに関するＸＭＬデータを示す説明図である。たとえば、治験データのＸＭＬデータにおいて、患者名のイニシャル「Ｔ．Ｃ」を検索対象とする場合、そのＸＭＬ開始タグ<patient_initialxml_title="患者イニシャル">およびＸＭＬ終了タグ</patient_initial>をサーチする必要があり、検索の性能劣化の障害となっている。
【０００７】
また、治験データでは、同一の文字列であっても、その文字列を意味する項目が薬効、副作用など様々である。この項目は上述したＸＭＬタグをサーチすることで特定されるため、ＸＭＬタグのサーチが必要不可欠であり、検索の性能劣化の障害となっている。
【０００８】
同様に、治験データでは、同一の数値であっても、その数値を意味する項目が体重、年齢、血糖値など様々である。この項目は上述したＸＭＬタグをサーチすることで特定されるため、ＸＭＬタグのサーチが必要不可欠であり、検索の性能劣化の障害となっている。
【０００９】
このように、ＸＭＬタグの種類が多く複雑であり、１件あたりのデータサイズが大きくなる。特に、複数の形式を統一し治験データを１ファイル化するとＸＭＬタグが増加し、ファイルが巨大化する。したがって、検索の性能が劣化するという問題がある。
【００１０】
また、治験データは追加や削除が頻繁におこなわれるため、統合されたファイルのメンテナンスの処理時間が膨大になるという問題がある。さらに、治験データのような情報は分析に用いられる反面、個人情報に該当するため、分析者以外の者への情報漏洩を防止する必要がある。
【００１１】
本発明は、上記に鑑みてなされたものであって、治験データのようにタグの種類が複雑化し、かつデータ量が膨大なＸＭＬファイルの検索の効率化を図ることができる情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、第１の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法は、コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成し、生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮し、検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付け、前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定し、圧縮化ＸＭＬファイルの中から、前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出し、前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長することを特徴とする。
【００１３】
この発明によれば、ＸＭＬ開始タグ以前に出現したＸＭＬファイル内のＸＭＬタグおよび文字データの伸長を禁止することができる。
【００１４】
また、上記発明において、前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を、前記ハフマン木を用いて伸長することとしてもよい。
【００１５】
この発明によれば、ＸＭＬ終了タグ以後に出現するＸＭＬファイル内のＸＭＬタグおよび文字・数値データの伸長を禁止することができる。
【００１６】
また、上記発明において、前記ハフマン木によって特定される圧縮符号のうち、入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することとしてもよい。
【００１７】
この発明によれば、種別情報についてアクセス権がないユーザによる検索を禁止することができる。
【００１８】
また、上記発明において、前記ハフマン木によって特定される圧縮符号のうち、入力された検索キーワードの先頭文字データの圧縮符号に対し、前記検索キーワードと一致する文字列へのアクセスを許可するアクセス権フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記アクセス権フラグが設定された圧縮符号のみを検出することとしてもよい。
【００１９】
この発明によれば、タグ内文字列についてアクセス権がないユーザによる検索を禁止することができる。
【００２０】
また、上記発明において、入力された検索キーワードを、前記ハフマン木を用いて圧縮することにより、圧縮キーワードを生成し、前記圧縮化ＸＭＬファイル内の圧縮符号列と前記検索キーワード圧縮手段によって圧縮された圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、前記圧縮キーワードと一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。
【００２１】
この発明によれば、部分伸長と照合とを独立かつ同時並行でおこなうことができる。
【００２２】
また、上記発明において、前記検索キーワードの先頭文字データ以外の残余の検索キーワードを、前記ハフマン木を用いて圧縮することにより、前記残余の検索キーワードに関する圧縮キーワードを生成し、前記ハフマン木によって特定される圧縮符号のうち、前記検索キーワードの先頭文字データに関する圧縮符号と同一の圧縮符号に対し、前記残余の検索キーワードに関する圧縮キーワードとの照合を指示する照合フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記照合フラグが設定された圧縮符号を検出し、前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記残余の検索キーワードに関する圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。
【００２３】
この発明によれば、部分一致検索において、部分伸長と照合とを独立かつ同時並行でおこなうことができる。
【００２４】
また、上記発明において、前記検索条件として、さらに、前記検索キーワードによる前方一致検索の入力を受け付け、前記前方一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記種別情報に関するＸＭＬ開始タグの圧縮符号に対し、前記圧縮キーワードとの照合を指示する照合フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記照合フラグが設定された圧縮符号を検出し、前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。
【００２５】
この発明によれば、前方一致検索において、部分伸長と照合とを独立かつ同時並行でおこなうことができる。
【００２６】
また、上記発明において、前記検索条件として、さらに、前記検索キーワードによる後方一致検索の入力を受け付け、前記後方一致検索が前記検索条件として受け付けられた場合、前記検索キーワードの先頭文字データ以外の残余の検索キーワードおよび前記ＸＭＬ終了タグを、前記ハフマン木を用いて圧縮することにより、前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードを生成し、前記後方一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記検索キーワードの先頭文字データに関する圧縮符号と同一の圧縮符号に対し、前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとの照合を指示する照合フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記照合フラグが設定された圧縮符号を検出し、前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。
【００２７】
この発明によれば、後方一致検索において、部分伸長と照合とを独立かつ同時並行でおこなうことができる。
【００２８】
また、上記発明において、前記検索条件として、さらに、前記検索キーワードによる完全一致検索の入力を受け付け、前記完全一致検索が前記検索条件として受け付けられた場合、前記検索キーワードおよび前記ＸＭＬ終了タグを、前記ハフマン木を用いて圧縮することにより、前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードを生成し、前記完全一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記ＸＭＬ開始タグに関する圧縮符号に対し、前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとの照合を指示する照合フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記照合フラグが設定された圧縮符号を検出し、前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとを照合し、前記ハフマン木による伸長済み文字列のうち、一致照合された圧縮符号列からの伸長済み文字列のみ出力することとしてもよい。
【００２９】
この発明によれば、完全一致検索において、部分伸長と照合とを独立かつ同時並行でおこなうことができる。
【００３０】
また、第２の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法は、コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の数値データの出現頻度に基づいて、ハフマン木を生成し、生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮し、数値データおよび当該数値データの種別情報からなる検索条件の入力を受け付け、前記ハフマン木によって特定される圧縮符号のうち、入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定し、圧縮化ＸＭＬファイルの中から、前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出し、前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を抽出することを特徴とする。
【００３１】
この発明によれば、ＸＭＬ開始タグ以前に出現したＸＭＬファイルに記述されているＸＭＬタグおよび数値データの圧縮符号列の抽出を禁止することができる。
【００３２】
また、上記発明において、前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を抽出することとしてもよい。
【００３３】
この発明によれば、ＸＭＬ終了タグ以後に出現するＸＭＬファイルに記述されているＸＭＬタグおよび数値データの圧縮符号列の抽出を禁止することができる。
【００３４】
また、上記発明において、前記ハフマン木によって特定される圧縮符号のうち、入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、前記圧縮化ＸＭＬファイルの中から、前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することとしてもよい。
【００３５】
この発明によれば、種別情報についてアクセス権がないユーザによる検索を禁止することができる。
【発明の効果】
【００３６】
本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法は、治験データのようにタグの種類が複雑化し、かつデータ量が膨大なＸＭＬファイルの検索の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００３７】
【図１】この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。
【図２】コンテンツのデータ構成を示す説明図である。
【図３】図２に示したファイル構成データ３００を示す説明図である。
【図４】図２に示したページリストデータ３００を示す説明図である。
【図５】数値・文字出現頻度管理データ５００を示す説明図である。
【図６】この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。
【図７】図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成を示すブロック図である。
【図８】数値・文字出現頻度管理データ５００の生成処理を示すデータ構成図である。
【図９】連字／外字置換処理を示すデータ構成図である。
【図１０】最終的に生成された連字／外字置換テーブル６４０を示す説明図である。
【図１１】図６に示した圧縮／暗号化部６１３の詳細な機能的構成を示すブロック図である。
【図１２】数字等の出現頻度の補正の一例を示す説明図である。
【図１３】数字等の出現頻度の補正の他の例を示す説明図である。
【図１４】圧縮／暗号化部６１３による具体的なハフマン木生成処理を示す説明図である。
【図１５】ハフマン木１４０１の概要を示す説明図である。
【図１６】図１５に示した圧縮符号表１５００の拡張例を示す説明図である。
【図１７】図１５に示した葉の構造体１５０２の拡張例を示す説明図である。
【図１８】図１１に示したファイルファイル圧縮部１１０６の詳細な機能的構成を示すブロック図である。
【図１９−１】数値圧縮処理の第１の例を示す説明図である。
【図１９−２】数値圧縮処理の第２の例を示す説明図である。
【図１９−３】数値圧縮処理の第３の例を示す説明図である。
【図１９−４】数値抽象化データの圧縮処理例を示す説明図である。
【図２０−１】数値マップを示す説明図である。
【図２０−２】数値圧縮処理の第４の例を示す説明図である。
【図２０−３】数値圧縮処理の第５の例を示す説明図である。
【図２１】ファイル圧縮部１１０６によって圧縮された圧縮化帳票ファイルのデータ構造を示す説明図である。
【図２２】圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。
【図２３】図６に示した検索初期化部６２１の詳細な機能的構成を示すブロック図である。
【図２４】第１の区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図２５】第２の区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図２６】検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成を示すブロック図である。
【図２７】検索条件入力画面を示す説明図（その１）である。
【図２８】検索条件入力画面を示す説明図（その２）である。
【図２９】検索条件入力画面を示す説明図（その３）である。
【図３０】圧縮化帳票ファイルＦｉの絞込みの一例を示す説明図である。
【図３１】部分伸長部２６２２による部分伸長処理を示す説明図である。
【図３２−１】バイナリ照合部２６２３によるバイナリ照合処理を示す説明図である。
【図３２−２】文字列置換部２６２４による文字列置換処理を示す説明図である。
【図３３】検索実行部６２２内の数値検索実行部６２５の詳細な機能的構成を示すブロック図である。
【図３４−１】数値検索を実行する場合の検索条件入力画面を示す説明図（その１）である。
【図３４−２】数値検索を実行する場合の検索条件入力画面を示す説明図（その２）である。
【図３４−３】数値検索を実行する場合の検索条件入力画面を示す説明図（その３）である。
【図３５−１】数値範囲の大小比較例を示す説明図（その１）である。
【図３５−２】数値範囲の大小比較例を示す説明図（その２）である。
【図３５−３】数値範囲の大小比較例を示す説明図（その３）である。
【図３５−４】数値範囲の大小比較例を示す説明図（その４）である。
【図３６】図６に示した検索結果表示部６２３の詳細な機能的構成を示すブロック図である。
【図３７】この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順を示すフローチャートである。
【図３８】図３７に示した数値・文字出現頻度管理データ生成処理（ステップＳ３７０１）の詳細な処理手順を示すフローチャートである。
【図３９】上述した数値・文字出現頻度集計処理（ステップＳ３８０２）の詳細な処理手順を示すフローチャート（前半）である。
【図４０】数値・文字出現頻度集計処理（ステップＳ３８０２）の詳細な処理手順を示すフローチャート（後半）である。
【図４１】図３７に示した圧縮／暗号化処理（ステップＳ３７０２）の詳細な処理手順を示すフローチャートである。
【図４２】図４１のステップＳ４１０８に示した圧縮処理の詳細な処理手順を示すフローチャートである。
【図４３】図３７に示した検索初期化処理（ステップＳ３７０３）の詳細な処理手順を示すフローチャートである。
【図４４】図３７に示した検索処理（ステップＳ３７０４）の詳細な処理手順を示すフローチャート（前半）である。
【図４５】図３７に示した検索処理（ステップＳ３７０４）の詳細な処理手順を示すフローチャート（後半）である。
【図４６】フラグ設定処理（ステップＳ４４０８）の詳細な処理手順を示すフローチャートである。
【図４７】図４４に示した部分伸長・照合処理の詳細な処理手順を示すフローチャート（その１）である。
【図４８】図４４に示した部分伸長・照合処理の詳細な処理手順を示すフローチャート（その２）である。
【図４９】この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。
【図５０】図４９に示した下限特定／比較処理手順を示すフローチャートである。
【図５１】図５０に示した下限数値検出処理手順を示すフローチャートである。
【図５２】下限数値照合処理手順を示すフローチャートである。
【図５３】図４９に示した上限特定／比較処理手順を示すフローチャートである。
【図５４】図５３に示した上限数値検出処理手順を示すフローチャートである。
【図５５】上限数値照合処理手順を示すフローチャートである。
【図５６】治験データに関するＸＭＬデータを示す説明図である。
【発明を実施するための形態】
【００３８】
（情報検索装置のハードウェア構成）
まず、この発明の実施の形態にかかる情報検索装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。
【００３９】
図１において、情報検索装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３と、を備えている。また、各構成部はバス１００によってそれぞれ接続されている。
【００４０】
ここで、ＣＰＵ１０１は、情報検索装置の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。
【００４１】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを情報検索装置に読み取らせたりする。
【００４２】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４３】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４４】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４５】
スキャナ１１２は、画像を光学的に読み取り、情報検索装置内に画像データを取り込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４６】
（コンテンツのデータ構成）
つぎに、コンテンツのデータ構成について説明する。図２は、コンテンツのデータ構成を示す説明図である。図２において、コンテンツとは、治験データや電子帳票（帳簿や伝票といった帳票を電子化したデータ）に関するＸＭＬファイルのデータベースである。本実施の形態では、一例として治験データに関するＸＭＬファイルとする。コンテンツ２００は、上位フォルダ２０１に保存されている。さらに、上位フォルダ２０１には、管理フォルダ２０２とファイルフォルダ２０３という下位のフォルダが含まれている。
【００４７】
管理フォルダ２０２には、ファイル構成データ３００（図３参照）、ページリストデータ４００（図４参照）、および数値・文字出現頻度管理データ５００（図５参照）が保存されている。また、ファイルフォルダ２０３には、複数のＸＭＬファイルｆｉ（ｉ＝０〜ｎ）からなる帳票ファイル群ｆが保存されている。
【００４８】
各ＸＭＬファイルｆｉはそれぞれ治験データｇｊ（ｊ＝１〜Ｐ）を有しており、全ＸＭＬファイルｆ０〜ｆｎでＰページ分有している。各治験データｇｊは、たとえば、アンカーや見出し語などを含むヘッダ部のほか、患者情報や副作用、薬効などの治験に関する各種項目データやトレーラ部を有しており、たとえば、図Ａのようなデータを有している。
【００４９】
図３は、図２に示したファイル構成データ３００を示す説明図である。ファイル構成データ３００は、各ＸＭＬファイルｆ０〜ｆｎのファイル番号ｉ（ｉ＝０〜ｎ）ごとにファイルパスを関連付けたデータである。図３では、ファイル番号ｉのＸＭＬファイルｆｉを「ｆｉｌｅ（ｉ）．ｘｍｌ」と表記している。
【００５０】
図４は、図２に示したページリストデータ４００を示す説明図である。ページリストデータ４００とは、図２に示したＸＭＬファイルｆｉと治験データｇｊとファイル構成データ３００とを関連付けるデータである。ページリストデータ４００は、ＸＭＬファイルｆｉの全ファイル数（ｎ＋１個）、ブロックサイズ（ｍ  ｂｙｔｅ）、治験データｇｊの全データ数（Ｐ個）、ＸＭＬファイルｆｉのファイルパスデータＦＰ（０）〜ＦＰ（ｎ）、ページリストを有する。
【００５１】
また、ページリストデータ４００は、ファイルパスデータＦＰ（ｉ）ごとに、ファイル番号ｉとブロック数と図３に示したファイルパスとを有する。また、ページリスト４０１は、ファイル番号ｉごとにオフセット、レングス、ページ番号ｊ、見出し語が記述されているリストである。
【００５２】
図５は、数値・文字出現頻度管理データ５００を示す説明図である。図５において、数値・文字出現頻度管理データ５００は、数値・文字データの出現頻度を管理するデータである。ここで、数値・文字データは、数値データと文字データとに分けられる。数値データとは、０〜９の数字、００〜９９などの２以上の連続する数字からなる数字連字、桁数および先頭数字が共通する数値群、軽度高血圧など数値を抽象的な表現であらわした抽象化数値データを含むデータである。
【００５３】
ここで、数値群とは、桁数および先頭数字により規定される数値範囲内の数値の集合である。たとえば、３桁でかつ先頭数字が２である数値群とは、数値範囲２００〜２９９内の数値の集合である。
【００５４】
また、文字データとは、英字、かな、漢字、文字連字などを含むデータである。具体的には、８ビット系（ＡＳＣＩＩ）である英字、カタカナ、記号、１６ビット系（ＪＩＳ）の英字、カタカナ、記号、１６ビット系（ＪＩＳ）の仮名や漢字などが文字データに含まれる。これら英字や、仮名、カタカナなどの８ビットコードが中心である表音文字および漢字の文字データを、本明細書において「標準文字データ」と称す。
【００５５】
また、文字データには、標準文字データのほか、外字および文字連字が含まれる。文字連字とは、２以上の文字列からなる文字データである。たとえば、１６ビットの２つの仮名の文字連字である場合、当該文字連字は、３２ビットコードの文字データからなる。また、非文字データではあるがアドレスポインタなどのバイナリデータも便宜的に上記「文字データ」に含めることとする。以下、特に断りがない限り、「文字データ」という用語には、バイナリデータも含まれる。
【００５６】
また、本発明の特徴として、連字には、ＸＭＬタグも含まれることとする。これにより、<patient_initialxml_title="患者イニシャル”tbl_label="イニシャル”>といった長い文字列のＸＭＬタグをタグ単位で集計することができる。
【００５７】
また、数値・文字出現頻度管理データ５００は、数値・文字データの出現頻度、出現ファイル数（ブロック数でもよい）、出現順位、出現マップ５１０（５０１〜５０９）を有する。出現頻度とは、全ＸＭＬファイルｆ０〜ｆｎにおいて当該数値・文字データが出現した頻度（回数）である。出現ファイル数とは、全ＸＭＬファイルｆ０〜ｆｎにおいて当該数値・文字データが出現したＸＭＬファイルの数である。出現順位とは、出現頻度順のランクである。
【００５８】
出現マップ５１０とは、ＸＭＬファイルｆｉ順に配列されたｎ＋１ビットのビット列であり、数値・文字データの存否をあらわしている。図５では、左端のビットがＸＭＬファイルｆ０に対応するビットであり、右端のビットがＸＭＬファイルｆｎに対応するビットである。
【００５９】
各ビットにおいて「１」がＯＮをあらわしており、「０」がＯＦＦをあらわしている。すなわち、ある数値・文字データにおいて、その出現マップ５１０中、ＸＭＬファイルｆｉに対応するビットが「１」である場合、当該数値・文字データがＸＭＬファイルｆｉに存在することをあらわしている。また、ＸＭＬファイルｆｉに対応するビットが「０」である場合、当該数値・文字データがＸＭＬファイルｆｉに存在しないことをあらわしている。
【００６０】
また、本発明の特徴として、ＸＭＬファイルｆ０〜ｆｎに対し、削除フラグが設定されている。削除フラグは、デフォルトでは「１」に設定されており、ＸＭＬファイルｆｉが削除されると、その削除フラグが「０」となる。これにより、削除フラグが「０」に設定されているＸＭＬファイルｆｉをサーチ対象から除外することができ、検索速度の高速化を図ることができる。
【００６１】
（情報検索装置の機能的構成）
つぎに、この発明の実施の形態にかかる情報検索装置の機能的構成について説明する。図６は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。図６において、情報検索装置６００は、編集部６０１と検索部６０２とから構成されている。
【００６２】
まず、編集部６０１は、ファイル構成データ抽出部６１１と、数値・文字出現頻度管理データ生成部６１２と、圧縮／暗号化部６１３と、から構成されている。
【００６３】
ファイル構成データ抽出部６１１は、図３に示したファイル構成データ３００を参照して、ＸＭＬファイルｆ０〜ｆｎから図４に示したページリストデータ４００を抽出する。また、数値・文字出現頻度管理データ生成部６１２は、ＸＭＬファイルｆ０〜ｆｎから数値・文字出現頻度管理データ５００を生成する。
【００６４】
さらに、数値・文字出現頻度管理データ生成部６１２は、複数のＸＭＬファイルｆ０〜ｆｎに記述されている数字連字や文字連字を外字に置換する連字／外字置換テーブル６４０を生成する。以降、数字連字および文字連字をまとめて、「連字データ」と称す。
【００６５】
また、圧縮／暗号化部６１３は、ＸＭＬファイルｆ０〜ｆｎを圧縮して圧縮化ＸＭＬファイル群Ｆを生成するとともに、数値・文字出現頻度管理データ５００および連字／外字置換テーブル６４０を暗号化して、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０を生成する。
【００６６】
また、検索部６０２は、検索初期化部６２１と、検索実行部６２２と、検索結果表示部６２３とから構成されている。検索初期化部６２１は、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０を復号して、検索部６０２による検索の初期化を実行する。
【００６７】
また、検索実行部６２２は、数値・文字出現頻度管理データ５００や連字／外字置換テーブル６４０を用いて、検索処理を実行することにより、検索候補一覧を生成する。具体的には、検索実行部６２２は、全文検索を実行する全文検索実行部６２４と、数値検索を実行する数値検索実行部６２５とを備える。
【００６８】
全文検索実行部６２４は、検索キーワードの入力を受け付け、圧縮化ＸＭＬファイルの全文検索を実行することにより、検索キーワードに該当するＸＭＬファイルｆｉを示す検索候補一覧を生成する。
【００６９】
また、数値検索実行部６２５は、数値や数値範囲の入力を受け付け、圧縮化ＸＭＬファイル群Ｆに対して数値検索を実行することにより、入力された数値や数値範囲に該当するＸＭＬファイルｆｉを示す検索候補一覧を生成する。
【００７０】
また、検索結果表示部６２３は、検索実行部６２２による検索候補の中から、ユーザに選択された検索候補を伸長して、検索結果として表示する。なお、上述したＸＭＬファイル、数値・文字出現頻度管理データ５００、ファイル構成データ３００、ページリストデータ４００、連字／外字置換テーブル６４０、圧縮化ＸＭＬファイル群Ｆ、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体によって、その機能を実現する。
【００７１】
また、編集部６０１（内部の機能的構成含む）および検索部６０２（内部の機能的構成含む）は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、その機能を実現する。
【００７２】
（数値・文字出現頻度管理データ生成部６１２の機能的構成）
つぎに、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成について説明する。図７は、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成を示すブロック図である。図７において、数値・文字出現頻度管理データ生成部６１２は、数値・文字データ抽出部７０１と、数値・文字出現頻度集計部７０２と、ソート部７０３と、生成処理部７０４とから構成されている。
【００７３】
数値・文字データ抽出部７０１は、ＸＭＬファイルから数値・文字データを順次抽出する。数値・文字出現頻度集計部７０２は、数値・文字データ抽出部７０１によって抽出された数値・文字データのＸＭＬファイルｆｉにおける出現頻度を集計する。また、数値・文字出現頻度集計部７０２は、数値・文字データのＸＭＬファイルｆ０〜ｆｎごとの存否も検出する。
【００７４】
また、ソート部７０３は、出現頻度順に数値・文字データをソートする。生成処理部７０４は、ソートされた各数値・文字データの出現頻度と、存否検出結果である各数値・文字データの出現マップ５０１〜５０９とを用いて、数値・文字出現頻度管理データ５００を生成する。また、連字／外字置換テーブル６４０も生成する。ここで、数値・文字出現頻度管理データ生成部６１２による数値・文字出現頻度管理データ５００および連字／外字置換テーブル６４０の生成処理を具体的に説明する。
【００７５】
図８は、数値・文字出現頻度管理データ５００の生成処理を示すデータ構成図である。図８において、（Ａ）は、数値・文字出現頻度集計部７０２によって数値・文字データが集計されたときの数値・文字出現頻度管理データ５００のデータ構成、（Ｂ）は、連字／外字置換処理後の数値・文字出現頻度管理データ５００のデータ構成、（Ｃ）は、標準文字データおよび外字データからなる混合データのソート後における数値・文字出現頻度管理データ５００のデータ構成、（Ｄ）は、低出現頻度の混合データのカット後における数値・文字出現頻度管理データ５００のデータ構成、（Ｅ）は、最終的に生成された数値・文字出現頻度管理データ５００のデータ構成を示している。
【００７６】
（Ａ）において、符号８００は、文字出現頻度管理データ５００の管理領域である。また、符号８０１は、数値データ（数字連字を除く）の出現頻度、出現ファイル数、出現順位、出現マップを記憶する数値領域である。また符号８０２は、８ビット系（ＡＳＣＩＩ）である英字、カタカナ、記号、１６ビット系（ＪＩＳ）の英字、カタカナ、記号、１６ビット系（ＪＩＳ）のかなや漢字などの標準文字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する標準文字領域である。
【００７７】
また、符号８０３は、外字の出現頻度、出現ファイル数、出現順位、出現マップを記憶する外字領域である。また、符号８０４は、連字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する連字領域である。また、符号８０５は、８ビットのバイナリデータの出現頻度、出現ファイル数、出現順位を記憶するバイナリ領域である。
【００７８】
（Ａ）のデータ構造において、連字領域８０４の連字データは、その出現頻度順にソートされる。そして、所定の出現頻度以上の連字データを、外字データと重複しないように、他の外字データ（以下、「連字外字データ」）に置換する。このように、出現頻度の高い複数の文字列からなる連字データを、単一文字データである外字データに置換することにより、データ量の削減を図ることができ、圧縮効率の向上を図ることができる。なお、所定の出現頻度未満の連字データは、低出現頻度の連字データであるため、単一の文字データに分解されて、該当する領域に割り当てられる。この結果、（Ｂ）連字／外字置換処理後の数値・文字出現頻度管理データ５００のデータ構成となる。
【００７９】
また、（Ｂ）のデータ構造において、数値領域８０１のデータ、標準文字領域８０２の標準文字データおよび外字領域８０３の外字データを混合して高出現頻度順にソートした結果が、（Ｃ）のデータ構造である。（Ｃ）のデータ構造において、（Ｂ）に示した連字外字領域８１４の連字外字データおよびバイナリ領域８０５のバイナリデータは、ソートの対象外である。
【００８０】
（Ｃ）のデータ構造において、数値データと標準文字データと外字データとが混在する混合領域８１２において、低出現頻度、たとえば、出現回数０回のデータはカットされる。このカットされたときのデータ構造が、（Ｄ）のデータ構造である。（Ｄ）において、管理領域８００および混合領域８１２と、連字外字領域８１４と、バイナリ領域８０５とを結合することで、（Ｅ）のデータ構造で示したような、最終的な数値・文字出現頻度管理データ５００を生成することができる。
【００８１】
この数値・文字出現頻度管理データ５００において、管理領域８００には、ファイル・ブロック数と、出現文字データの種類の数（出現文字数（種類））と、連字外字データの数（連字数（２５６種））と、バイナリデータ数（バイナリ（２５６種））とが記録される。
【００８２】
そして、図５に示した数値・文字出現頻度管理データ５００は、バイナリデータを除く数値・文字データごとに、出現頻度と出現マップ５１０とが対応付けられている。数値・文字データは高出現頻度順にソートされている。なお、後述するが、図５に示した数値・文字出現頻度管理データ５００において、数値・文字データとその出現頻度は、所定のマスタキーを用い、暗号化アルゴリズムである排他的論理和（ＸＯＲ）などによって暗号化される。
【００８３】
つぎに、連字／外字置換処理について具体的に説明する。図９は、連字／外字置換処理を示すデータ構成図である。図９において、（Ｆ）は、数値・文字出現頻度集計部７０２によって連字データが集計されたときの数値・文字出現頻度管理データ５００の連字領域８０４のデータ構成、（Ｇ）は、連字データのソート後における連字領域８０４のデータ構成、（Ｈ）は、置換後におけるデータ構成を示している。
【００８４】
（Ｆ）のデータ構造において、連字領域８０４は、領域９０１〜９０７を有している。領域９０１には、８ビット系（ＡＳＣＩＩ）の数字列データ（「００」〜「９９」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００８５】
領域９０２には、８ビット系（ＡＳＣＩＩ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該英字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０３には、８ビット系（ＡＳＣＩＩ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナデータ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００８６】
領域９０４には、１６ビット系（ＪＩＳ）の数字列データ（「００」〜「９９」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０５には、１６ビット系（ＪＩＳ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００８７】
領域９０６には、１６ビット系（ＪＩＳ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナ列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０７には、１６ビット系（ＪＩＳ）の仮名列データ（「ああ」〜「んん」、濁音・半濁音）の情報（当該仮名列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００８８】
また、（Ｇ）のデータ構造は、（Ｆ）のデータ構造を、各連字データの高出現順にソートすることにより得られるデータ構造である。（Ｇ）のデータ構造において、領域９１１は、高出現頻度の連字データの情報であり、外字データへの置換対象となる。一方、領域９１２は、所定の出現頻度以下の連字データ（低出現頻度連字データ）の情報である。この低出現頻度連字データは、単一の文字データに分解される。これにより文字データの出現頻度と出現マップ５０５〜５０９とが補正される。
【００８９】
また、（Ｈ）のデータ構造は、（Ｇ）のデータ構造のうち高出現頻度の連字データを外字に置換することによって得られるデータ構造である。連字外字領域８１４には、置換された連字外字データの情報（当該連字外字データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００９０】
また、図１０は、最終的に生成された連字／外字置換テーブル６４０を示す説明図である。連字／外字置換テーブル６４０は、（Ｇ）のデータ構造の領域９１１の連字データと、（Ｈ）のデータ構造の領域８１４の連字外字データとを対応させることによって生成される。
【００９１】
（圧縮／暗号化部６１３の詳細な機能的構成）
つぎに、図６に示した圧縮／暗号化部６１３の詳細な機能的構成について説明する。図１１は、図６に示した圧縮／暗号化部６１３の詳細な機能的構成を示すブロック図である。図１１において、圧縮／暗号化部６１３は、出現頻度補正部１１０１と、低出現頻度数値・文字データ分解部１１０２と、暗号化部１１０３と、生起確率演算部１１０４と、ハフマン木生成部１１０５と、ファイル圧縮部１１０６と、から構成されている。
【００９２】
まず、出現頻度補正部１１０１は、数値・文字出現頻度管理データ５００内の数字に関する出現頻度を補正する。具体的には、たとえば、０〜９の数字や小数点、フィーダ（以下、「数字等」という）に対する圧縮符号のビット幅を設定し、そのビット幅に応じた出現頻度を、０〜９の数字等に対して設定する。より具体的には、文字データの出現頻度よりも高くなるように強制的に数字等の出現頻度を補正する。
【００９３】
図１２は、数字等の出現頻度の補正の一例を示す説明図である。図１２では、数値・文字データの出現頻度を補正する符号化テーブルを示している。図１２では、圧縮符号のビット幅が４ビットであるため、数値等の各出現頻度を１／１６とする。そして、さらに出現順位に応じて出現頻度を加算している。図１２に示した補正例は、数値が多いＸＭＬファイルに有効である。なお、補正により出現頻度の総和が１を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。
【００９４】
図１３は、数字等の出現頻度の補正の他の例を示す説明図である。図１３でも、数値・文字データの出現頻度を補正する符号化テーブルを示している。図１３では、圧縮符号のビット幅が５ビットであるため、数値等の各出現頻度を１／３２とする。そして、さらに出現順位に応じて出現頻度を加算している。図１３に示した補正例は、文字データが多いホームページなどに有効である。なお、補正により出現頻度の総和が１を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。
【００９５】
また、図１１において、低出現頻度数値・文字データ分解部１１０２は、数値・文字出現頻度管理データ５００内における文字領域の数値・文字データを高出現頻度順にソートする。そして、所定の出現頻度以下の残余の低出現頻度の数値・文字データを８ビットコードに分解して、同じ８ビットコードであるバイナリデータが記憶されているバイナリ領域に記憶する。
【００９６】
暗号化部１１０３は、低出現頻度数値・文字データ分解部１１０２による分解によって得られた数値・文字出現頻度管理データ５００を、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化数値・文字出現頻度管理データ６５０を生成する。連字／外字置換テーブル６４０も同様に、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化連字／外字置換テーブル６６０を生成することとしてもよい。
【００９７】
また、生起確率演算部１１０４は、低出現頻度数値・文字データ分解部１１０２による分解によって得られた文字出現頻度管理データ５００における数値データ、標準文字データ、連字外字データおよびバイナリデータを高出現順にソートして、これらの生起確率を演算する。また、ハフマン木生成部１１０５は、生起確率演算部１１０４によって演算された生起確率からハフマン木を生成する。
【００９８】
また、ファイル圧縮部１１０６は、ハフマン木生成部１１０５によって生成されたハフマン木を用いてＸＭＬファイル群ｆを圧縮し、圧縮化ＸＭＬファイル群Ｆを生成する。具体的には、各ＸＭＬファイルｆ０〜ｆｎに記述されている数値・文字データに対して、補正後の出現頻度が高い順、すなわち生起確率が高い順に短いビットを割り当てて、ＸＭＬファイル群ｆを圧縮する。ファイル圧縮部１１０６によるＸＭＬファイル群ｆの圧縮は、数値と文字データとで圧縮法が異なる。この点については後述する。
【００９９】
つぎに、圧縮／暗号化部６１３による具体的なハフマン木生成処理について説明する。図１４は、圧縮／暗号化部６１３による具体的なハフマン木生成処理を示す説明図である。図１４の（Ｉ）に示した数値・文字出現頻度管理データ５００を、低出現頻度数値・文字データ分解部１１０２により、低出現頻度の文字データを分解して、バイナリデータが記憶されているバイナリ領域に記憶する（図１４中（Ｊ））。
【０１００】
つぎに、（Ｊ）のデータ構造において、混合領域、連字外字領域、およびバイナリ領域内のすべての数値・文字データを高出現頻度順にソートする（図１４中（Ｋ））。そして、（Ｋ）の領域１４００において、出現頻度をハフマンの圧縮パラメータとして各数値・文字データの生起確率を演算する（図１４中（Ｌ））。最後に（Ｌ）において、各数値・文字データの生起確率からハフマン木１４０１を生成する（図１４中（Ｍ））。本発明は、生成されるハフマン木１４０１に特徴がある。以下、ハフマン木１４０１について説明する。
【０１０１】
＜ハフマン木の概要＞
図１５は、ハフマン木１４０１の概要を示す説明図である。ここでは、説明を簡略化するため、記号ａ〜ｆ（実際のアルファベット小文字の文字データを意味しているのではなく、任意の文字データまたは数字データを意味する）を用いて説明する。
【０１０２】
図１５において、ハフマン木１４０１は、記号ａ〜ｆの出現頻度にしたがって構築されている。ハフマン木１４０１は、ノード群とノード間を連結するリンクとから構成される。ノード群のうち黒丸は根（ルート）、白丸は中間節点、四角形は葉（リーフ）をあらわしている。ハフマン木１４０１は、ノードから下位のノードに分岐する。「０」をとる場合は左の下位ノード、「１」をとる場合は右の下位ノードに分岐する。
【０１０３】
また、各内部節点は、構造体を有する。内部節点の構造体１５０１は、領域１５１１にその内部節点の上位ノードの構造体へのポインタ、領域１５１２にその内部節点の下位の左ノードへのポインタ、領域１５１３にその内部節点の下位の右ノードへのポインタという３種類のポインタを記憶している。各ポインタは何バイト離れているかをあらわす正の値である。
【０１０４】
また、各葉は、内部節点の構造体１５０１に準じた構造体を有する。葉の構造体１５０２は、領域１５２１にその葉の上位ノードの構造体へのポインタを記憶している。ポインタは何バイト離れているかをあらわす正の値である。葉は、下位ノードが存在しないため、下位の左ノードの構造体へのポインタのかわりに、領域１５２２に葉の識別情報／文字コード区分を記憶している。葉の識別情報は、負の値をあらわす情報であり、この負の値により、当該ノードが葉であることがわかる。同様に、下位の右ノードの構造体へのポインタのかわりに、領域１５２３に葉により特定される文字コードを記憶する。
【０１０５】
また、符号１５００は、記号ａ〜ｆと圧縮符号との対応関係を示す圧縮符号表である。圧縮符号表１５００は、ハフマン木１４０１にしたがって記号ａ〜ｆを圧縮符号に対応付けた図表である。
【０１０６】
＜圧縮符号表の拡張＞
図１６は、図１５に示した圧縮符号表１５００の拡張例を示す説明図である。図１６に示す圧縮符号表１６００では、図１５に示した圧縮符号表１５００に、外字などのパスリスト（ヘッダ、トレーラ）、ＨＴＭＬタグ（開始、終了、独立）、ＸＭＬタグ（開始、終了）に対して、これらをあらわす記号（＜Ｐ＞、＜／Ｐ＞、＜患者＞、＜／患者＞などの文字列）とその圧縮符号を割り当てている。
【０１０７】
また、圧縮符号表１６００を参照すると、ハフマン木１４０１において、記号に対し、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグが設定されていることがわかる。ここで、伸長フラグとは、サーチ中に出現するタグのうち、伸長対象となるタグを特定するためのフラグである。開始タグに対しては「ＯＮ」が設定される。「ＯＮ」は、伸長開始を意味する伸長フラグである。したがって、伸長フラグ「ＯＮ」を検出した場合、その開始タグから伸長を開始する。
【０１０８】
また、「ＯＮ」に設定された開始タグに対応する終了タグに対しては「ＯＦＦ」が設定される。「ＯＦＦ」は、伸長終了を意味する伸長フラグである。したがって、伸長フラグ「ＯＦＦ」を検出した場合、その終了フラグ以降のデータの伸長を禁止する。伸長フラグの「ＯＮ」，「ＯＦＦ」いずれも設定されていないタグは、伸長されない。したがって、照合に必要なタグのみ伸長することができ、検索速度の高速化を図ることができる。
【０１０９】
また、照合フラグとは、検索キーワードの先頭文字と一致する文字データに対して設定されるフラグである。図１６では、文字データ「高」に照合フラグ（「ＯＮ」）が設定されている。たとえば、検索キーワードが「高血圧」である場合、文字データ「高」に照合フラグ（「ＯＮ」）が設定される。
【０１１０】
検索キーワードと照合の際には、ＸＭＬファイルｆ０〜ｆｎ内の文字列の先頭文字が「高」以外の文字列は照合対象から除外することができる。一方、ＸＭＬファイルｆ０〜ｆｎ内の文字列の先頭文字である場合、当該文字列は照合対象となる。したがって、検索キーワードと照合対象とを、先頭文字「高」以降の文字列どうしで照合する。これにより、検索速度の向上を図ることができる。
【０１１１】
また、照合フラグの設定を工夫することで、ＸＭＬタグで括られた文字列の前方一致、後方一致、完全一致を実現することができる。具体的には、ＸＭＬ開始タグにのみ照合フラグを設定しておき、検索キーワードをハフマン木１４０１で圧縮することにより、前方一致検索をおこなうことができる。
【０１１２】
また、照合フラグを検索キーワードの先頭文字の圧縮符号に設定しておき、残余の検索キーワードとＸＭＬ終了タグからなる文字列をハフマン木１４０１で圧縮することにより、後方一致検索をおこなうことができる。さらに、照合フラグをＸＭＬ開始タグに設定しておき、検索キーワードと終了タグからなる文字列をハフマン木１４０１で圧縮することにより、完全一致検索をおこなうことができる。
【０１１３】
図１６では、ＸＭＬ開始タグ＜副作用＞にのみ照合フラグが設定されているため、ＸＭＬ開始タグ＜副作用＞とＸＭＬ終了タグ＜／副作用＞で括られた文字列の前方一致検索をおこなうこととなる。
【０１１４】
また、数値検索を実行する場合、数値の先頭に付与されているフィーダに照合フラグを設定することにより、数値のみを照合対象として絞り込むこともできる。
【０１１５】
また、置換フラグとは、タグで括られた文字列がヒットした場合、タグで括られた文字列を強調表示形式の文字列に置換するためのフラグである。置換フラグが検出されると、ヒットした文字列を置換し、置換後の文字列を出力バッファに出力する。
【０１１６】
また、アクセス権フラグとは、タグへのアクセス権の許可／不許可を設定するフラグである。アクセス権フラグは、ユーザごとまたは端末ごとに設定される。たとえば、アクセス権フラグが「ＯＮ」に設定されているタグは、医師が操作する端末でしか検索・表示することができない。
【０１１７】
＜葉の構造体の拡張＞
図１７は、図１５に示した葉の構造体１５０２の拡張例を示す説明図である。葉の構造体１７００は、葉の構造体１５０２と同様、領域１７０１にその葉の上位ノードの構造体へのポインタを記憶している。また、葉の構造体１５０２と同様、領域１７０２に葉の識別情報／文字コード区分を記憶している。葉の構造体１７００ではさらに、領域１７０２にパスやタグであることを特定するフラグも記憶している。
【０１１８】
また、葉の構造体１５０２と同様、領域１７０３に葉により特定される文字コードを記憶する。葉の構造体１７００ではさらに、領域１７０３に各テーブルへのポインタも記憶している。
【０１１９】
パステーブル１７１１は、パスを記述したテーブルである。ポインタを指定することで、指定されたポインタに関連付けられているパスを読み出すことができる。タグテーブル１７１２は、タグを記述したテーブルである。ポインタを指定することで、指定されたポインタに関連付けられているタグを読み出すことができる。
【０１２０】
照合テーブル１７１３は、文字列の先頭文字以降の残余の文字列とその圧縮長が記述されたテーブルである。ポインタを指定することで、指定されたポインタに関連付けられているタグを読み出すことができる。たとえば、検索キーワードが「高血圧」である場合、図１６に示したように、文字データ「高」に照合フラグが設定（「ＯＮ」）されるため、２文字目以降の圧縮された文字列「血圧」に対応するポインタを領域１７０３に記憶しておく。
【０１２１】
置換テーブル１７１４は、ヒットした文字列と置換される文字列が記述されたテーブルである。ポインタを指定することで、指定されたポインタに関連付けられている文字列を読み出して、ヒットした文字列と置換する。たとえば、図１７の例では、置換後の文字列として、「＜Ｂ＞高血圧＜／Ｂ＞，圧縮長，血圧」が記述されている。
【０１２２】
すなわち、先頭文字「高」が検出され、かつ、２文字目以降の圧縮された文字列「血圧」も照合一致した場合、ポインタを手掛かりとして、「＜Ｂ＞高血圧＜／Ｂ＞」を読み出して、ヒットしたタグ内の文字列「高血圧」をボールド表示するため、文字列「＜Ｂ＞高血圧＜／Ｂ＞」に置換する。
【０１２３】
また、領域１７０２は、たとえば、１６ビットのデータ領域である。上位４ビットで特定される第１の領域１７２１により、葉の識別情報であるか否かをあらわしている。すなわち、上位４ビットが「１１１１」が負の値を示しており、当該ノードが葉であることが特定される。
【０１２４】
また、下位４ビットで特定される第２の領域１７２２では、葉により特定される情報が文字コードである場合、当該文字コードが８ビットコードまたは１６ビットコードをあらわしたり、葉により特定される情報が記号である場合、当該記号がパスまたはタグをあらわしたりする。
【０１２５】
また、中間領域１７２３は、空き領域であるため、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグを設定する領域となる。この空き領域に各フラグを設定した結果が、図１６に示した圧縮符号表１６００の内容となる。なお、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグは、ハフマン木１４０１の生成時に設定されるのではなく、検索実行時に設定されるフラグである。
【０１２６】
（ファイル圧縮部１１０６の詳細な機能的構成）
つぎに、図１１に示したファイル圧縮部１１０６の詳細な機能的構成について説明する。図１８は、図１１に示したファイル圧縮部１１０６の詳細な機能的構成を示すブロック図である。
【０１２７】
図１８において、ファイル圧縮部１１０６は、フィーダ検出部１８０１と、文字データ抽出部１８０２と、数値抽出部１８０３と、数値詳細情報検出部１８０４と、圧縮処理部１８０５と、から構成されている。
【０１２８】
まず、フィーダ検出部１８０１は、ＸＭＬファイルｆｉの中からフィーダを検出する。フィーダは数値の先頭に位置するため、フィーダが検出されると、その後には数値が存在することとなり、フィーダが検出されないと、当該文字データと認識される。
【０１２９】
また、文字データ抽出部１８０２は、フィーダ検出部１８０１によりフィーダにフィーダが検出されなかった場合、その位置のデータを文字データとして抽出する。抽出された文字データは圧縮処理部１８０５において圧縮処理される。
【０１３０】
数値抽出部１８０３は、フィーダ検出部１８０１によりフィーダが検出された場合、当該フィーダに関連付けられている数値、たとえば、フィーダに続く数字列を数値として抽出する。この場合、数字列の中に、カンマや小数点が含まれている場合、そのカンマや小数点も抽出する。
【０１３１】
また、数値詳細情報検出部１８０４は、数値抽出部１８０３によって抽出された数値の詳細な情報を抽出する。ここで、詳細な情報とは、たとえば、桁数はいくつか、数値が全角であるか半角であるか、カンマが含まれているか、小数点が含まれているか、含まれている場合の小数点の位置などを検出する。
【０１３２】
また、圧縮処理部１８０５は、ハフマン木生成部１１０５によって生成されたハフマン木１４０１を用いて、文字データ抽出部１８０２によって抽出された文字データや、数値抽出部１８０３によって抽出された数値データを圧縮する。
【０１３３】
数値を圧縮する場合、ハフマン木１４０１を用いて、桁数を示す数字や桁ごとの数字を、当該数字に応じた圧縮符号に変換する。このとき、桁ごとの数字の圧縮符号は、桁順に配列するものとする。また、数値に小数点が含まれている場合、小数点に応じた圧縮符号に変換する。カンマの有無や全角・半角については、１ビットであらわす。
【０１３４】
（数値圧縮処理）
つぎに、上述した圧縮処理部１８０５における数値圧縮処理について説明する。数値圧縮処理では、まず、血圧や年齢、患者の識別コードなどの数値情報から数値のみを抽出する。そして、この抽出された数値を圧縮する。具体的には、図１２や図１３に示した符号化テーブルを参照して、フィーダの圧縮符号を読み出す。
【０１３５】
つぎに、数値が半角か全角かを示すビット（全角・半角ビット）を設定する。この全角・半角ビットは全角の場合が「１」で半角の場合が「０」である。また、数値がカンマ「，」を用いた表記であるか否かを示すカンマ有無ビットを設定する。このカンマ有無ビットはカンマ有りの場合が「１」でカンマ無しの場合が「０」である。
【０１３６】
つぎに、数値の桁数を検出する。検出された桁数は小数点以下の桁数は含まれないこととする。そして、検出された桁数が示す数字の圧縮符号を図１２に示した符号化テーブルから読み出す。また、数値を構成する先頭桁から末尾桁までの数字の圧縮符号を、図１２や図１３に示した符号化テーブルから読み出す。
【０１３７】
つぎに、数値に小数点があれば小数点の圧縮符号を図１２や図１３に示した符号化テーブルから読み出す。このようにして、数値は、圧縮符号およびビットからなる数字列に圧縮される。以下、図１２の符号化テーブルを用いた圧縮処理例について説明する。なお、圧縮処理された数値を、圧縮数値と称す。
【０１３８】
図１９−１は、数値圧縮処理の第１の例を示す説明図である。図１９−１においては、数値情報「￥６，８００．−」から先頭の「￥」および末尾の「−」を分離して、数値「６，８００．」を抽出する。そして、この数値「６，８００．」を圧縮する。
【０１３９】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６，８００．」が半角であることを示す全角・半角ビット「０」を設定する。また、数値データ「６，８００．」がカンマ「，」を用いた表記であることを示すカンマ有無ビット「１」を設定する。つぎに、数値「６，８００．」の桁数「４」を検出し、検出された桁数「４」の圧縮符号「０１００」を図１２に示した符号化テーブルから読み出す。
【０１４０】
つぎに、数値「６，８００．」の先頭数字「６」、第２数字「８」、第３数字「０」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。最後に、数値「６，８００．」の小数点「ｘ’Ａ’」の圧縮符号「１０１０」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６，８００．」は圧縮されることとなる。
【０１４１】
図１９−２は、数値圧縮処理の第２の例を示す説明図である。図１９−２においては、数値情報「＄６８０．５０−」から先頭の「＄」および末尾の「−」を分離して、数値「６８０．５０」を抽出する。そして、この数値「６８０．５０」を圧縮する。
【０１４２】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８０．５０」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「６８０．５０」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「６８０．５０」の桁数「３」を検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。
【０１４３】
つぎに、数値「６８０．５０」の先頭数字「６」、第２数字「８」、第３数字「０」、小数点「ｘ’Ａ’」、第４数字「５」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「１０１０」，「０１０１」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６８０．５０」は圧縮されることとなる。
【０１４４】
図１９−３は、数値圧縮処理の第３の例を示す説明図である。図１９−３においては、数値情報「６８００円」から末尾の「円」を分離して、数値「６８００」を抽出する。そして、この数値「６８００」を圧縮する。
【０１４５】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８００」が全角であることを示す全角・半角ビット「１」を設定する。また、数値「６８００」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「６８００」の桁数「４」を検出し、検出された桁数「４」の圧縮符号「０１００」を図１２に示した符号化テーブルから読み出す。
【０１４６】
つぎに、数値「６８００」の先頭数字「６」、第２数字「８」、第３数字「０」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６８００」は圧縮されることとなる。
【０１４７】
図１９−４は、数値抽象化データの圧縮処理例を示す説明図である。図１９−４においては、最小血圧の値を示す数値抽象化データ「＜最小血圧＞１０７＜／最小血圧＞」から開始タグおよび終了タグを分離して、数値「１０７」を抽出する。そして、この数値「１０７」を圧縮する。
【０１４８】
具体的には、数値の開始位置を示すフィーダ「ｘ’０Ｂ’」の圧縮符号「００００１０１１」を図１２に示した符号化テーブルから読み出す。このフィーダ「ｘ’０Ｂ’」は、数値が最終血圧であることを識別するフィーダである。つぎに、数値「１０７」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「１０７」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「１０７」の桁数「３」を検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。
【０１４９】
つぎに、数値「１０７」の先頭数字「１」、第２数字「０」、および第３数字「７」までの数字の圧縮符号「０００１」，「００００」，「０１１１」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「１０７」は圧縮されることとなる。
【０１５０】
また、数値の検出および大小比較を高速化するため、以下の数値マップを用いた数値圧縮をおこなうこととしてもよい。図２０−１は、数値マップを示す説明図である。数値マップは、数字の先頭２桁数字ごとに、１０の乗数を示すフラグが設定されている。１０の乗数は先頭桁数字までの桁数である。たとえば、「５６７０円」という数値情報については、先頭桁数字「５」の１０の乗数は３であるため、先頭２桁数字「５６」についての１０の乗数「３」のフラグを「１」（ＯＮ）に設定する。
【０１５１】
また、小数については、右端の数字を先頭桁数字とし、１０の乗数は負の値をとる。この場合、たとえば、「０．１４ｍｇ」という数値情報については、先頭桁数字「４」の１０の乗数は「−２」であるため、先頭２桁数字「４０」の１０の乗数「−２」のフラグを「１」（ＯＮ）に設定する。なお、ＸＭＬファイルｆ０〜ｆｎ内に記述されている数値情報について、上述した「５６７０円」のような小数を含まない数値情報の場合には、正の乗数に関するフィーダ（以下、フィーダ（＋）と表記）を付与し、「０．１４ｍｇ」のような小数の数値情報の場合には、負の乗数に関するフィーダ（以下、フィーダ（−）と表記）を付与することとする。
【０１５２】
図２０−２は、数値圧縮処理の第４の例を示す説明図である。図２０−２においては、数値情報「５６７０円」から末尾の「円」を分離して、数値「５６７０」を抽出する。そして、この数値「５６７０」を、数値マップを用いて圧縮する。
【０１５３】
具体的には、数値の開始位置を示すフィーダ（＋）「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８００」が全角であることを示す全角・半角ビット「１」を設定する。また、数値「５６７０」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「５６７０」の１０の乗数「３」を数値マップから検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。
【０１５４】
つぎに、数値「５６７０」の先頭数字「５」、第２数字「６」、第３数字「７」、および末尾数字「０」までの数字の圧縮符号「０１０１」，「０１１０」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「５６７０」は圧縮されることとなる。
【０１５５】
図２０−３は、数値圧縮処理の第５の例を示す説明図である。図２０−３においては、数値情報「０．１４ｍｇ」から末尾の「ｍｇ」を分離して、数値「０．０４」を抽出する。そして、この数値「０．０４」を、数値マップを用いて圧縮する。
【０１５６】
具体的には、数値の開始位置を示すフィーダ（−）「ｘ’Ｃ’」の圧縮符号「１１００」を図１２に示した符号化テーブルから読み出す。つぎに、数値「０．０４」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「０．０４」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「０．０４」の１０の乗数「−２」を数値マップから検出し、検出された桁数「−２」の圧縮符号「１００１」を図１２に示した符号化テーブルから読み出す。
【０１５７】
つぎに、数値「０．０４」の先頭数字「４」の圧縮符号「０１００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「０．０４」は圧縮されることとなる。このようにして、数値情報内の数値は、すべて半角に統一され、ＸＭＬファイルｆ０〜ｆｎ内の文字列からの数値の検出および大小比較の高速化を実現することができる。
【０１５８】
（圧縮化ＸＭＬファイルのデータ構造）
つぎに、ファイル圧縮部１１０６によって圧縮された圧縮化ＸＭＬファイルのデータ構造について説明する。図２１は、ファイル圧縮部１１０６によって圧縮された圧縮化ＸＭＬファイルのデータ構造を示す説明図である。図２１では、任意の圧縮化ＸＭＬファイルＦｉに着目して説明する。この圧縮化ＸＭＬファイルＦｉは、ブロック数情報（ｍ個）を格納する領域２１０１と、ｍ個の各ブロックのアドレス情報（＃１〜＃ｍ）を格納する領域２１０２と、各ブロックの圧縮ブロックデータＣ１〜Ｃｍを格納する領域２１０３から構成される。
【０１５９】
また、図２２は、圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。図２２を参照すると、圧縮ブロックデータＣ１〜Ｃｍのレングスが、対応する元のブロックデータのレングスの約半分に圧縮されていることがわかる。
【０１６０】
（検索初期化部６２１の詳細な機能的構成）
つぎに、図６に示した検索初期化部６２１の詳細な機能的構成について説明する。図２３は、図６に示した検索初期化部６２１の詳細な機能的構成を示すブロック図である。図２３において、検索初期化部６２１は、復号部２３０１と、低出現頻度数値・文字データ分解部２３０２と、生起確率演算部２３０３と、ハフマン木生成部２３０４と、出現マップ設定部２３０５と、から構成されている。
【０１６１】
まず、復号部２３０１は、暗号化数値・文字出現頻度管理データ６５０を復号する。具体的には、図１１で用いた暗号化のマスタキーを用いて排他的論理和（ＸＯＲ）による復号処理を実行する。同様に、暗号化連字／外字置換テーブル６６０も、元の連字／外字置換テーブル６４０に戻す。
【０１６２】
また、低出現頻度数値・文字データ分解部２３０２、生起確率演算部２３０３およびハフマン木生成部２３０４は、図１１に示した低出現頻度数値・文字データ分解部１１０２、生起確率演算部１１０４およびハフマン木生成部１１０５と同一の処理を実行し、ハフマン木１４０１を生成する。このハフマン木１４０１は、出現頻度補正部１１０１により補正されたハフマン木となる。
【０１６３】
また、出現マップ設定部２３０５は、復号された数値・文字出現頻度管理データ５００の出現マップ５１０を読み込んでメモリ展開し、区点対応テーブルとリンクする。区点は、ＪＩＳによって制定された全角文字向けの文字コードであり、区点対応テーブルは、各区点のアドレスを記憶したテーブルである。
【０１６４】
図２４は、文字の区点対応テーブルと出現マップとの対応関係を示す説明図である。文字の区点対応テーブル２４００は、数値・文字出現頻度管理データ５００の文字データと出現マップ５０５〜５０９とを対応づけるテーブルである。この文字の区点対応テーブル２４００により、区点に対応する文字データの存否をあらわすビット列の出現マップ５０５〜５０９を呼び出すことができる。
【０１６５】
図２５は、数値の区点対応テーブルと出現マップとの対応関係を示す説明図である。数値の区点対応テーブル２５００は、数値・文字出現頻度管理データ５００の数値群と出現マップ５１０とを対応づけるテーブルである。この数値の区点対応テーブル２５００により、区点に対応する数値群内の数値の存否をあらわすビット列の出現マップ５１０を呼び出すことができる。
【０１６６】
（全文検索実行部６２４の詳細な機能的構成）
つぎに、図６に示した検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成について説明する。図２６は、検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成を示すブロック図である。
【０１６７】
図２６において、全文検索実行部６２４は、検索条件入力処理部２６００と、設定部２６０１と、検索キーワード圧縮部２６０２と、出現マップ読取部２６０３と、圧縮化ＸＭＬファイル特定部２６０４と、圧縮化ＸＭＬファイル抽出部２６０５と、検索候補一覧表示部２６１０と、検索候補選択部２６１１と、部分伸長・照合処理部２６２０と、から構成されている。
【０１６８】
まず、検索条件入力処理部２６００は、ユーザからの検索条件の入力を受け付ける。ここで、検索条件とは、具体的には、たとえば、ＸＭＬタグのタグ名と検索キーワードである。ＸＭＬ化された治験データベースにおける文字列は、それらを括るタグの種類によって意味が異なる。たとえば、「糖尿病」といっても症状を意味している場合もあれば、単に病名を意味している場合もある。したがって、ＸＭＬタグの種類を特定することは検索効率のうえで重要である。
【０１６９】
また、検索キーワードが複数ある場合、各検索キーワードの文字列を連結する。さらに、検索キーワードの連字が所定の連字に該当する場合、連字／外字置換テーブル６４０を用いて、連字を外字に置換する。このあと、検索条件入力処理部２６００は、検索キーワードを単一文字に分解する。
【０１７０】
図２７〜図２９は、検索条件入力画面を示す説明図である。図２７〜図２９は、検索キーワードとして文字列を入力する場合の画面である。まず、図２７において、検索条件入力画面２７００は入力フィールド２７０１を有する。入力フィールド２７０１には、ＸＭＬタグのタグ名の指定タブ２７０２と、検索キーワードの入力欄２７０３と、完全一致、前方一致、後方一致、部分一致を選択するラジオボタン２７０４〜２７０７と、検索ボタン２７０９が表示されている。検索結果一覧フィールド２７１０には、検索結果一覧（たとえば、患者の識別コード）が表示される。
【０１７１】
図２８に示す検索条件入力画面２７００は、図２７に示した状態からユーザ操作により指定タブ２７０２をクリックした状態を示している。ここでは、タグ名として、「副作用」、「薬効」、「血液型」、・・・などを指定することができる。
【０１７２】
図２９に示す検索条件入力画面２７００は、図２８に示した状態からユーザ操作によりタグ名として「副作用」を指定し、検索キーワードとして「高血圧」を入力した状態を示している。また、ラジオボタン２７０７が選択されているため、この状態で検索ボタン２７０９をクリックすることで部分一致検索が実行される。
【０１７３】
また、設定部２６０１は、ハフマン木１４０１に検索条件に応じた情報を設定する。具体的には、検索ボタン２７０９がクリックされると、検索条件にしたがってハフマン木１４０１に文字コードや各テーブル１７１１〜１７１４へのポインタ、伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグが設定される。
【０１７４】
たとえば、図２９の例では、タグ名が「副作用」に指定されたため、葉となる文字コード「高」，「血」，「圧」ごとに、タグテーブル１７１２のＸＭＬタグ＜副作用＞，＜／副作用＞へのポインタを領域１７０３に設定する。また、ラジオボタン２７０４が選択されているため、ＸＭＬタグ＜副作用＞，＜／副作用＞に対し伸長フラグＯＮ（伸長開始）および伸長フラグＯＦＦ（伸長終了）を設定する。
【０１７５】
ＸＭＬタグ＜副作用＞に伸長フラグＯＮが設定されているため、後述するブロック伸長部２６０７では、ＸＭＬタグ＜副作用＞の圧縮符号が検出されるまで伸長せず、ＸＭＬタグ＜副作用＞の圧縮符号が検出されるとＸＭＬタグ＜副作用＞およびそれ以降の文字列を伸長し、伸長フラグＯＦＦのＸＭＬタグ＜／副作用＞の圧縮符号が検出されると、それ以降は伸長しないこととなる。
【０１７６】
また、高速検索を実行する場合、検索キーワードの先頭文字である「高」について照合フラグを設定する。検索結果を強調表示する場合には、置換フラグを設定する。また、ログインしたユーザの端末に応じて、アクセス権フラグを設定する。たとえば、指定されたタグ名が「患者名」など個人情報に関わる場合は、医師の端末からタグ名が指定された場合には、そのタグにアクセス権ＯＮ（許可）を設定し、事務員の端末からタグ名が指定された場合には、そのタグにアクセス権を設定しない。
【０１７７】
また、検索キーワード圧縮部２６０２は、検索条件入力処理部２６００によって入力された検索キーワードを、検索初期化部６２１のハフマン木生成部２３０４によって生成されたハフマン木１４０１を用いて圧縮する。図２９の例では、検索キーワードが「高血圧」であるため、たとえば、「血」の文字データが設定されているハフマン木１４０１の葉（リーフ）を検出することで、対応する圧縮符号を特定することができる。
【０１７８】
また、検索キーワード圧縮部２６０２は、検索キーワードのうち、先頭文字以外の残余の検索キーワードをハフマン木１４０１を用いて圧縮する。図２９の例では、検索キーワードが「高血圧」であるため、文字「高」については圧縮せず、文字列「血圧」について圧縮する。
【０１７９】
また、検索キーワード圧縮部２６０２は、ユーザにより指定された検索方法により、圧縮対象が変化する。たとえば、前方一致検索の場合、ＸＭＬ開始タグにのみ照合フラグが設定されるため、検索キーワードをハフマン木１４０１で圧縮する。
【０１８０】
また、後方一致の場合、照合フラグが検索キーワードの先頭文字の圧縮符号に設定されるため、残余の検索キーワードとＸＭＬ終了タグからなる文字列をハフマン木１４０１で圧縮する。さらに、完全一致の場合、照合フラグがＸＭＬ開始タグに設定されるため、検索キーワードとＸＭＬ終了タグからなる文字列をハフマン木１４０１で圧縮する。
【０１８１】
また、出現マップ読取部２６０３は、出現マップ設定部２３０５によって設定された出現マップ５１０を用いて、検索キーワードの各文字の各ＸＭＬファイルｆ０〜ｆｎにおけるビット列を読み取る。具体的には、この出現マップ５１０における各文字データは、区点対応テーブルにより区点とリンクしているため、区点と一致する検索キーワードの各文字データのビット列を読み取ることができる。
【０１８２】
圧縮化ＸＭＬファイル特定部２６０４は、出現マップ５１０から読み取られた各文字の各ＸＭＬファイルｆ０〜ｆｎにおけるビット列の論理積を算出することにより、検索キーワードの各文字データがすべて存在する圧縮化ＸＭＬファイルを特定することで、圧縮化ＸＭＬファイルの絞込みをおこなう。ここで、絞込みの一例について説明する。
【０１８３】
図３０は、圧縮化ＸＭＬファイルＦｉの絞込みの一例を示す説明図である。図３０においては、検索キーワードを『増殖細胞』とし、ＸＭＬファイルの数を４個、すなわち、ファイル番号ｉ＝０〜３までとする。図３０において、たとえば、文字『増』のビット列は［１１０１］である。このビット列は、ファイル番号０、１、３のＸＭＬファイルｆ０、ｆ１、ｆ３には文字『増』が含まれており、ファイル番号２のＸＭＬファイルｆ２には文字『増』が含まれていないことを示している。
【０１８４】
また、削除フラグは、デフォルトが「１」、すなわちそのＸＭＬファイルが残存していることを示しており、「０」に設定されている場合、そのＸＭＬファイルが削除されたことを示している。したがって、ＸＭＬファイルｆ０〜ｆ３のうち、ＸＭＬファイルｆ３を絞り込み処理から除外する。
【０１８５】
そして、図３０において、絞込み結果は、ファイル番号ｉごとのビットの論理積（ＡＮＤ）結果を示している。この絞込み結果によれば、ファイル番号１のＸＭＬファイルｆ１のみが、存在を示すビット「１」となっているため、検索キーワードを構成するすべての文字『増』、『殖』、『細』および『胞』は、ＸＭＬファイルｆ１にのみ存在し、他のＸＭＬファイルｆ０、ｆ２には存在しないことがわかる。
【０１８６】
これにより、検索対象としてオープンするファイルを、ＸＭＬファイルｆ１を圧縮した圧縮化ＸＭＬファイルＦ１のみに特定することができ、無駄なファイルのオープン／クローズ処理を防止して検索速度の向上を図ることができる。
【０１８７】
また、検索キーワード『増』，『殖』，『細』，『胞』が存在するか否かにかかわらず、あらかじめ削除フラグが「０」に設定されているＸＭＬファイルｆ３を絞り込み対象から除外することで、無駄なファイルのオープン／クローズ処理を防止して検索速度の向上を図ることができる。
【０１８８】
また、図２６において、圧縮化ＸＭＬファイル抽出部２６０５は、圧縮化ＸＭＬファイル群Ｆの中から、圧縮化ＸＭＬファイル特定部２６０４によって特定されたＸＭＬファイルＦｉを抽出する。図２７の例では、ファイル番号１の圧縮化ＸＭＬファイルＦ１を抽出する。以下、抽出された圧縮化ＸＭＬファイルを「特定圧縮化ＸＭＬファイル」と称す。
【０１８９】
また、部分伸長・照合処理部２６２０は、ハフマン木１４０１に対応した文字境界判定型バイナリ照合処理を実行する機能を有する。具体的には、特定圧縮化ＸＭＬファイルの圧縮符号列を部分伸長しながら、圧縮キーワードとのバイナリ照合をおこない、一致照合された文字列（伸長済み）のみを出力バッファに出力する。この部分伸長・照合処理部２６２０は、フラグ／テーブル設定部２６２１と、部分伸長部２６２２と、バイナリ照合部２６２３と、文字列地幹部とを備えている。
【０１９０】
フラグ／テーブル設定部２６２１は、圧縮符号表１６００における各種フラグを設定する。たとえば、検索条件として、「副作用」というＸＭＬのタグ名が入力された場合、そのＸＭＬ開始タグ「＜副作用＞」に、伸長開始をあらわす伸長フラグ「ＯＮ」を設定し、ＸＭＬ終了タグ「＜／副作用＞」に伸長終了をあらわす伸長フラグ「ＯＦＦ」を設定する（図１６、図１７を参照。）。これにより、ＸＭＬタグ＜副作用＞…＜／副作用＞で括られた文字列のみが伸長および照合対象として絞り込むことができるため、検索処理の高速化を実現することができる。
【０１９１】
また、検索キーワードの先頭文字の圧縮符号について照合フラグをＯＮに設定する（図１６を参照。）。これにより、伸長フラグが設定されたＸＭＬタグ内文字列のうち、照合フラグがＯＮに設定されている圧縮符号列のみをバイナリ照合対象に絞り込むことができるため、検索処理の高速化を実現することができる。
【０１９２】
さらに、強調表示などの文字列置換をおこなう場合、置換フラグもＯＮに設定する（図１６を参照。）。これにより、強調表示などの文字列置換の対象文字列を、一致照合された伸長文字列にのみ絞り込むことができる。また、アクセス権フラグについては、ユーザＩＤやタグの種類などにより設定される。
【０１９３】
また、フラグ／テーブル設定部２６２１は、図１７に示した各種テーブル１７１１〜１７１４を設定する。たとえば、検索キーワードの先頭文字列以外の残余の検索キーワードとその圧縮キーワードの圧縮長とを関連付けて、照合テーブル１７１３に設定する。バイナリ照合において一致照合した場合、この照合テーブル１７１３を参照することで、ヒットした文字列を出力バッファに出力することができる。
【０１９４】
また、文字列置換をおこなう場合、残余の検索キーワードおよびその圧縮キーワードの圧縮長とともに、置換後の文字列を、置換テーブル１７１４に設定する。バイナリ照合において一致照合した場合、この置換テーブル１７１３を参照することで、ヒットした文字列のかわりに、置換後の文字列を出力バッファに出力することができる。
【０１９５】
また、部分伸長部２６２２は、特定圧縮化ＸＭＬファイルを読み込んで、文字単位で部分伸長処理をおこなう。具体的には、文字単位で圧縮符号を検出して、その圧縮符号に、図１６に示した伸長フラグがＯＮに設定されているか否かを判断する。ＯＮに設定されていない圧縮符号については伸長しない。ＯＮに設定されていれば、検索条件に合致するＸＭＬ開始タグがヒットしたこととなり、タグ内文字列の部分伸長処理をおこなう。
【０１９６】
そして、伸長フラグがＯＦＦに設定されている圧縮符号を検出すると、部分伸長処理を停止する。伸長された文字列は一時バッファに出力される。これにより、検索条件に合致するタグない文字列のみ部分伸長をおこなうことができる。この部分伸長処理の詳細については、図３１において具体的に説明する。
【０１９７】
また、バイナリ照合部２６２３は、順次シフトされてくる特定圧縮化ＸＭＬファイルの一連の圧縮符号列と圧縮キーワードとを比較して、バイナリ照合をおこなう。具体的には、一連の圧縮符号列と圧縮キーワードとのＥＸＯＲ演算をおこない、一致するか否かを判断する。
【０１９８】
一致照合された場合、照合テーブル１７１３を参照して、一時バッファに伸長された文字列を出力バッファに転送する。出力バッファに転送された伸長文字列のみが検索候補として出力される。また、バイナリ照合部２６２３では、特定圧縮化ＸＭＬファイルの一連の圧縮符号列をすべて照合するのではなく、文字単位で検出された圧縮符号について照合フラグがＯＮに設定されている場合にのみ、後続の圧縮符号列についてＥＸＯＲ演算をおこなう。したがって、無駄な演算を抑制して検索速度の高速化を実現することができる。このバイナリ照合処理の詳細については、図３２−１において具体的に説明する。
【０１９９】
また、文字列置換部２６２４は、文字列置換をおこなう場合にのみ機能し、バイナリ照合部２６２３により一致照合された場合、置換テーブル１７１４に設定されている置換後の文字列をヒットした伸長文字列のかわりに出力バッファに出力する。この文字列置換処理の詳細については、図３２−２において具体的に説明する。
【０２００】
ファイル構成データ特定部２６０９は、検索キーワードに一致する文字列の治験データｇｊがあった場合、当該治験データｇｊのページ番号ｊおよび当該治験データｇｊが属するＸＭＬファイルｆｉのファイル番号ｉを特定する。
【０２０１】
検索候補一覧表示部２６１０は、ページリストデータ４００を編集して、ファイル構成データ３００内のファイルリストのうち、治験データｇｊのページ番号ｊおよび当該治験データｇｊが属するＸＭＬファイルｆｉのファイル番号ｉが特定されたファイルリストを、検索候補一覧（たとえば、見出し語の一覧）として図１に示したディスプレイ１０８に表示する。具体的には、図２９に示した検索結果一覧フィールド２７１０に一覧表示される。
【０２０２】
図２９を参照すると、検索結果一覧フィールド１７１０には、４件の検索結果が表示されている。この検索結果は、＜副作用＞の症例が「高血圧」であるＸＭＬファイル内の管理番号である。
【０２０３】
また、検索候補選択部２６１１は、検索候補一覧表示部２６１０によって表示された検索候補一覧の中から、ユーザの操作によって選択された検索候補を受け付ける。受け付けられた場合、後述する検索結果表示部６２３により、その全文内容が表示される。図２９においては、検索候補として「ＦＪ０２００４０」が受け付けられた場合、表示フィールド２７２０に、その詳細な内容が表示される。
【０２０４】
（ハフマン木に対応した文字境界判定型バイナリ照合処理）
つぎに、本実施の形態の特徴部分であるハフマン木に対応した文字境界判定型バイナリ照合処理について説明する。このハフマン木に対応した文字境界判定型バイナリ照合処理は、全文検索実行部６２４において実行される。
【０２０５】
ここでは、通常の文字列検索である部分一致検索を例に挙げて説明する。なお、その他の前方一致検索、後方一致検索、完全に一致検索については、照合フラグの設定など若干異なるが、原理は同じである。また、ここでは文字について説明するが、数値についても同様に適用することができる。
【０２０６】
図３１は、部分伸長部２６２２による部分伸長処理を示す説明図である。ここでは、説明を簡単にするため、例として、図１５に示したハフマン木１４０１を用いて説明する。また、検索キーワードを「高血圧」とし、ハフマン木１４０１における記号ａを文字「高」、記号ｂを文字「血」、記号ｃを文字「圧」とする。また、図３１中、符号３１０１は、文字「高」の圧縮符号であり、符号３１０２は、文字「血」の圧縮符号であり、符号３１０３は、文字「圧」の圧縮符号である。
【０２０７】
まず、検索キーワード「高血圧」が入力されると、圧縮化ＸＭＬファイル特定部２６０４により特定された特定圧縮化ＸＭＬファイルを読み込む。この特定圧縮化ＸＭＬファイルは、検索キーワードを構成する文字「高」、「血」、「圧」をすべて含む検索対象ファイルである。この特定圧縮化ＸＭＬファイルの先頭の圧縮符号列からバイト単位でレジスタＲａにセットする。レジスタＲａにセットされた圧縮符号列は、１ビットずつシフトされ、１バイト空きが発生する都度特定圧縮化ＸＭＬファイルの圧縮文字列が順次レジスタＲａにセットされる。
【０２０８】
このレジスタＲａにおいて、最上位ビットＭＳＢに順次シフトされているビット値の０／１判定をおこなう。この０／１判定は、レジスタＲａの最上位ビットＭＳＢに順次セットされるビット値が、ハフマン木１４０１における左右のいずれの枝が選択されるかを判定する処理である。
【０２０９】
たとえば、「高血圧」の圧縮符号列中、「血」の圧縮符号を「１１１０」とする。レジスタＲａの最上位ビットＭＳＢには、圧縮符号「１１１０」のビット値が順次セットされる。この順次セットされるビット値の０／１判定を、ハフマン木１４０１のルートを初期位置としておこなう。圧縮符号「１１１０」は、「１」が３回連続で最上位ビットにセットされるので、ルートとなるノードＮ０を初期位置として、右側の下位ノードＮ１，Ｎ２，Ｎ３に遷移する。圧縮符号「１１１０」の末尾のビット値は「０」であるので、ノードＮ３から左側の下位ノードＮ４に遷移する。
【０２１０】
ここで、ノードＮ４の構造体には、下位の左ノードの構造体へのポインタではなく、葉の識別情報が記憶されている。したがって、ノードＮ４は内部節点ではなく、葉（リーフ）であることがわかる。このように、最上位ビットＭＳＢにセットされるビット値によって遷移したノードの構造体を参照することで、そのノードが内部節点であるか葉であるかを判別することができる。
【０２１１】
そして、葉であると判別された場合、葉の構造体に記憶されている文字コードを順次一時バッファ３１００に出力する。これにより、特定圧縮化ＸＭＬファイルの圧縮文字列を一時バッファ３１００に伸長することができる。
【０２１２】
なお、一時バッファ３１００に伸長された文字列「高血圧」は、後述するバイナリ照合処理において一致照合されると、出力バッファ３１０１に転送され、一時バッファ３１００から消去される。なお、不一致照合されると、出力バッファ３１０１には転送されず、一時バッファ３１００から消去される。
【０２１３】
つぎに、上述したバイナリ照合処理について説明する。図３２−１は、バイナリ照合部２６２３によるバイナリ照合処理を示す説明図である。まず、検索キーワード「高血圧」が入力されると、図１６に示す圧縮符号表１６００における先頭文字「高」の照合フラグがＯＮに設定される。また、文字列置換をおこなう場合には、図１６に示す圧縮符号表１６００における先頭文字「高」の置換フラグもＯＮに設定される。
【０２１４】
そして、検索キーワード「高血圧」中、先頭文字「高」を除く残余の文字列「血圧」が圧縮され、レジスタＲｂにセットされる。そして、「血圧」の圧縮符号列がその圧縮長とともに照合テーブル１７１３にセットされる。また、文字列置換をおこなう場合には、「血圧」の圧縮符号列およびその圧縮長とともに、置換後の文字列「＜Ｂ＞高血圧＜／Ｂ＞」が置換テーブル１７１４にセットされる。
【０２１５】
バイナリ照合処理では、検索キーワードの先頭文字を除く残余の検索キーワードを、ハフマン木１４０１を用いて圧縮してレジスタＲｂにセットする。先頭文字が欠落した残余の検索キーワードは圧縮長とともに照合テーブル１７１３に保持される。
【０２１６】
ここでは、検索キーワードとして「高血圧」を例にあげているため、先頭文字「高」を除く残余の検索キーワード「血圧」とその圧縮長を照合テーブル１７１３に保持するとともに、残余の検索キーワード「血圧」の圧縮符号列「１１１０１０１」をレジスタＲｂにセットする。
【０２１７】
そして、レジスタＲａにおいてリーフが検出された圧縮符号について照合フラグがＯＮに設定されている場合、レジスタＲａにセットされる後続の圧縮符号列と、レジスタＲｂにセットされた残余の検索キーワード「血圧」の圧縮符号列「１１１０１０１」とを比較して、ＥＸＯＲ演算による照合処理を実行する。図３２−１の照合結果３１１０において、記号列３１１２は、文字「血」の圧縮符号３１０２の一致照合結果であり、記号列３１１３は、文字「圧」の圧縮符号３１０３の一致照合結果である。なお、不一致照合結果の場合にはビット値が「１」となる。
【０２１８】
また、文字列置換をおこなわない場合、照合結果３１１０により、「血圧」の圧縮符号列「１１１０１０１」が一致照合されたため、一時バッファ３１００に保持された文字列「高血圧」を、出力バッファ３１０１に転送する。
【０２１９】
図３２−２は、文字列置換部２６２４による文字列置換処理を示す説明図である。図３２−２において、照合結果により一致照合した場合、一時バッファ３１００に伸長された文字列を、置換テーブル１７１４を参照することにより置換して、出力バッファ３１０１に書き込む。ここでは、一時バッファ３１００には文字列「高血圧」が伸長されている。
【０２２０】
一方、置換テーブル１７１４には文字列「血圧」が記憶されているため、伸長された文字列「血圧」と一致する。したがって、一時バッファ３１００に保持されている文字列「高血圧」を、置換テーブル１７１４に保持されている文字列「＜Ｂ＞高血圧＜／Ｂ＞」に置換して、出力バッファ３１０１に転送する。なお、一時バッファ３１００に保持されている文字列「高血圧」は消去される。
【０２２１】
（数値検索実行部の詳細な機能的構成）
図３３は、検索実行部６２２内の数値検索実行部６２５の詳細な機能的構成を示すブロック図である。なお、図２６に示した構成と同一構成については同一符号を付し、その説明を省略する。
【０２２２】
図３３において、数値検索実行部６２５は、検索条件入力部３３００と、設定部３３００と、数値圧縮部３３０２と、検出部３３０３と、出現マップ抽出部３３０４と、中間数値群判断部３３０５と、省略マップ設定部３３０６と、下限／上限マップ生成部３３０７と、特定部３３０８と、圧縮情報検索部３３０９と、境界条件判断部３３１０と、決定部３３１１と、を有している。
【０２２３】
まず、検索条件入力部３３００は、数値検索をおこなう場合のユーザからの検索条件の入力を受け付ける。ここで、検索条件とは、具体的には、たとえば、ＸＭＬタグのタグ名と任意の数値範囲の境界を規定する数値（検索キーワードに相当）である。ＸＭＬ化された治験データベースにおける数値は、それらを括るタグの種類によって意味が異なる。たとえば、「４６」という数値も患者の年齢である場合や、脈拍数あらわす場合もある。したがって、ＸＭＬタグの種類を特定することは検索効率のうえで重要である。
【０２２４】
また、数値範囲とは、境界を規定する数値と境界を規定する演算子とにより特定される区間である。境界を規定する数値とは、数値範囲の下限を規定する数値（下限数値）Ｎｘや上限を規定する数値（上限数値）Ｎｙである。また、境界を規定する算術記号とは、「≦」、「＜」、「≧」、「＞」といった不等号を示す算術記号であり、下限数値や上限数値の境界条件となる。
【０２２５】
これにより、任意の数値をＺとすると、検索条件入力部３３００では、ユーザ入力や算術記号の初期設定などにより、数値Ｎが取りうる以下の数値範囲を設定することができる。
・Ｎｘ＜Ｚ
・Ｎｘ≦Ｚ
・Ｎｙ＞Ｚ
・Ｎｙ≧Ｚ
・Ｎｘ＜Ｚ＜Ｎｙ
・Ｎｘ≦Ｚ＜Ｎｙ
・Ｎｘ＜Ｚ≦Ｎｙ
・Ｎｘ≦Ｚ≦Ｎｙ
【０２２６】
図３４−１〜図３４−３は、数値検索を実行する場合の検索条件入力画面を示す説明図である。図３４−１〜図３４−３は、検索キーワードとして数値を入力する場合の画面である。まず、図３４−１において、検索条件入力画面３４００は入力フィールド３４０１を有する。入力フィールド３４０１には、ＸＭＬタグのタグ名の指定タブ３４０２と、下限数値の入力欄３４０３と、上限数値の入力欄３４０４と、下限数値の境界条件を指定するタブ３４０５と、上限数値の境界条件を指定するタブ３４０６と、検索ボタン３４０７が表示されている。検索結果一覧フィールド３４１０には、検索結果一覧（たとえば、患者の識別コード）が表示される。
【０２２７】
図３４−２に示す検索条件入力画面３４００は、指定タブ３４０２、タブ３４０３，３４０３により指定可能な項目を示している。指定タブ３４０２では、タグ名として、「血圧値」、「血糖値」、「年齢」、「体重」、・・・などを指定することができる。また、タブ３４０５では下限数値の境界条件（「以上」または「より大きい」）を指定することができる。同様に、タブ３４０６では上限数値の境界条件（「以下」または「未満」）を指定することができる。
【０２２８】
図３４−３に示す検索条件入力画面３４００は、ユーザ操作によりタグ名として「血圧値」を指定し、下限数値として「１５０」を入力し、下限数値の境界条件として「以上」を指定した状態を示している。これにより、『血圧値１５０以上』の患者のデータを検索することができる。
【０２２９】
また、設定部３３０１は、数値情報の先頭文字となるフィーダに相当する葉の構造体１７００に、照合フラグをＯＮに設定する。具体的には、図１７に示したように、領域１７０２において、照合フラグをＯＮに設定する。また、ログインしたユーザの端末に応じて、アクセス権フラグを設定する。たとえば、指定されたタグ名が個人情報に関わる場合は、医師の端末からタグ名が指定された場合には、そのタグにアクセス権ＯＮ（許可）を設定し、事務員の端末からタグ名が指定された場合には、そのタグにアクセス権を設定しない。
【０２３０】
また、数値圧縮部３３０２は、検索条件入力部３３００によって取得された数値を圧縮する。具体的には、図１９−１〜図１９−４に示したように、数値であることを識別するフィーダの圧縮符号、全角・半角ビットの圧縮符号、カンマ有無ビットの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号、小数点を含む場合は小数点の圧縮符号などからなる圧縮情報に圧縮する。なお、各圧縮化ＸＭＬファイルＦｉ内の数値も同様な規則で圧縮されている。また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「０」（ＯＦＦ）としておく。また、図２０−１〜図２０−３に示したように、数値マップを用いた圧縮方法であってもよい。
【０２３１】
また、検出部３３０３は、検索条件入力部３３００によって入力された境界を規定する数値の桁数および先頭数字を検出する。たとえば、数値ＮがＮ＝１２，３４５である場合、桁数は「５」であり、先頭数字は「１」である。また、数値に小数が含まれている場合、小数点以下の桁数も計数する。たとえば、数値ＮがＮ＝１２，３４５．６７である場合、桁数は「７」であり、先頭数字は「１」である。また、先頭桁は最上位の１桁としたが、先頭からの連続する複数の上位桁としてもよい。たとえば、数値Ｎ（Ｎ＝１２，３４５）では、先頭数字は、「１２」としてもよい。
【０２３２】
また、中間数値群判断部３３０５は、検索条件入力部３３００によって取得された数値範囲に中間数値群が含まれているか否かを判断する。ここで、中間数値群とは、数値範囲の下限数値を含む数値群（以下、「下限数値群」と称す）と、数値範囲の上限数値を含む数値群（以下、「上限数値群」と称す）との間に存在する数値群である。下限数値群と上限数値群との桁数が相違していれば、中間数値群が存在すると判断する。また、桁数が同一であっても、先頭数字が相違していれば、中間数値群が存在すると判断する。
【０２３３】
たとえば、数値範囲が『３，７００以上６，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字６の数値群とが検出される。この場合、中間数値群として、４桁・先頭数字４の数値群と４桁・先頭数字５の数値群とが数値範囲内に存在することとなる。
【０２３４】
また、数値範囲が『３，７００以上１６，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として５桁・先頭数字１の数値群とが検出される。この場合、中間数値群として、４桁・先頭数字４の数値群〜４桁・先頭数字９の数値群が数値範囲内に存在することとなる。
【０２３５】
また、数値範囲が『３，７００以上４，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字４の数値群とが検出される。この場合、中間数値群は存在しない。
【０２３６】
同様に、数値範囲が『３，７００以上３，９００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字３の数値群とが検出される。すなわち、下限数値群および上限数値群が同一の数値群となる。この場合も、中間数値群は存在しない。
【０２３７】
また、出現マップ抽出部３３０４は、数値群の出現マップの中から、検出部３３０３によって検出された桁数および先頭数字に応じた出現マップを抽出する。たとえば、検出部３３０３により、桁数「５」で先頭数字「１」が検出された場合、５桁・先頭数字１の数値群に関する出現マップを抽出する。また、中間数値群が存在する場合、中間数値群に関する出現マップも抽出する。
【０２３８】
省略マップ設定部３３０６は、中間数値群に関する出現マップに基づいて、省略マップを設定する。省略マップとは、下限数値群に関する出現マップや上限数値群に関する出現マップとの論理積を演算するためのマップである。省略マップ自体は、数値群に関する出現マップ５０３と同様、ＸＭＬファイルｆｉにおける存否をビットのＯＮ／ＯＦＦであらわしている。したがって、ＯＮになっているビットに対応するＸＭＬファイルｆｉには、中間数値群内の数値が存在していることをあらわしており、ＯＦＦになっているビットに対応するＸＭＬファイルｆｉには、中間数値群内の数値が存在しないことをあらわしている。
【０２３９】
省略マップは、具体的には、中間数値群に関する出現マップの論理和を演算することにより中間結果マップを算出し、この中間結果マップ内のビットを反転することにより、省略マップを設定する。なお、中間数値群に関する出現マップが１つしか存在しない場合、当該出現マップ内のビットを反転することにより省略マップを設定することができる。また、中間数値群に関する出現マップがない場合、全ビットＯＦＦの省略マップを設定する。
【０２４０】
また、下限／上限マップ生成部３３０７は、下限マップおよび上限マップを生成する。ここで、下限マップとは、下限数値群に関する出現マップ（下限数値群マップ）と省略マップとの論理積により得られるマップであり、上限マップとは、上限数値群に関する出現マップ（上限数値群マップ）と省略マップとの論理積により得られるマップである。この論理積演算により、下限マップは下限数値群内数値のみの存否をあらわすマップとなり、上限マップは上限数値群内数値のみの存否をあらわすマップとなる。
【０２４１】
また、特定部３３０８は、複数の圧縮化検索対象ファイルの中から、検出部３３０３によって検出された桁数および先頭数字を満たす数値群内の数値が存在する圧縮化検索対象ファイルを特定する。具体的には、下限マップ内のビットのうち、ＯＮになっているビットに対応するＸＭＬファイルｆｉを特定し、圧縮化ＸＭＬファイル群Ｆの中から圧縮化ＸＭＬファイルＦｉを抽出する。同様に、上限マップ内のビットのうち、ＯＮになっているビットに対応するＸＭＬファイルｆｉを特定し、圧縮化ＸＭＬファイル群Ｆの中から圧縮化ＸＭＬファイルＦｉを抽出する。
【０２４２】
また、圧縮情報検索部３３０９は、特定部３３０８によって特定された圧縮化ＸＭＬファイルＦｉの中から、ファイル内数値に関する圧縮情報を検索する。圧縮化ＸＭＬファイルｆｉ内においては、ファイル内数値は、フィーダの圧縮符号、全角・半角フラグの圧縮符号、カンマフラグの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号などからなる圧縮情報により圧縮されている。
【０２４３】
圧縮情報検索部３３０９は、ファイル内数値に関する圧縮情報（たとえば、フィーダの圧縮符号のみ）を検出することで、ファイル内数値に関する圧縮情報を抽出する。このとき、ハフマン木１４０１を参照することにより、照合フラグがＯＮに設定されたフィーダの圧縮符号のみを抽出することで、検索速度の高速化を図ることができる。
【０２４４】
また、境界条件判断部３３１０は、数値圧縮部３３０２によって圧縮された境界を規定する数値の圧縮情報と、圧縮情報検索部３３０９によって検索されたファイル内数値の圧縮情報とを比較することにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断する。境界条件とは、（境界を規定する数値）以上、以下、より大きい、より小さいといった境界を規定する数値との大小関係をあらわす条件である。
【０２４５】
たとえば、まず、桁数の数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、同一桁数である場合、先頭数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、先頭数字が同一である場合、順次、つぎの桁の数字どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。これにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断することができる。
【０２４６】
また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「０」（ＯＦＦ）としてあるため、ファイル内数値の圧縮情報との比較の際、ファイル内数値の圧縮情報において、全角・半角ビットおよび圧縮符号、カンマ有無ビットを「０」（ＯＦＦ）に設定する。これにより、全角・半角の相違やカンマの有無を考慮することなく、数値検索をおこなうことができる。
【０２４７】
また、決定部３３１１は、境界条件判断部３３１０によって判断された判断結果に基づいて、特定部３３０８によって特定された圧縮化検索対象ファイルＦｉを、数値範囲内の数値を含むファイルに決定する。具体的には、ファイル内数値が境界を規定する数値との境界条件を充足した場合、特定部３３０８によって特定された圧縮化検索対象ファイルＦｉを、数値範囲内の数値を含むファイルに決定する。この決定処理では、出現マップと同様、ＸＭＬファイルに対応するビット列であらわされる下限比較結果マップおよび上限比較結果マップを用いる。初期設定として全ビットをＯＦＦにしておく。
【０２４８】
そして、圧縮化ＸＭＬファイルＦｉにおいて、ファイル内数値が下限数値との境界条件を充足した場合、下限比較結果マップ内の当該圧縮化ＸＭＬファイルＦｉに対応するビットをＯＮにする。同様に、ファイル内数値が上限数値との境界条件を充足した場合、上限比較結果マップ内の当該圧縮化ＸＭＬファイルＦｉに対応するビットをＯＮにする。
【０２４９】
そして、決定部３３１１は、最終的に得られた下限比較結果マップと上限比較結果マップと中間結果マップが存在する場合には中間結果マップとの論理和を演算することにより、数値範囲内の数値が存在する圧縮化ＸＭＬファイルＦｉを決定することができる。
【０２５０】
なお、ファイル構成データ特定部２６０９は、決定部３３１１により数値範囲内の数値が存在する圧縮化ＸＭＬファイルＦｉが決定された場合、境界を規定する数値との境界条件を満足したファイル内数値が存在する治験データｇｊのページ番号ｊおよび当該治験データｇｊが属するＸＭＬファイルｆｉのファイル番号ｉを特定する。
【０２５１】
（数値範囲の大小比較例）
つぎに、数値範囲の第１の大小比較例について説明する。ここでは、数値範囲を特定する下限の数値と上限の数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明する。図３５−１〜図３５−４は、数値範囲の大小比較例を示す説明図である。ここでは、例として、数値範囲『３，７００円以上６，３００円以下』が与えられたとして、当該数値範囲で指定された範囲の金額（数値）を含む圧縮化ＸＭＬファイルＦｉを検索する例である。なお、数値範囲の下限数値の数値情報「３，７００円」および上限数値の数値情報「６，３００円」は、ともに図１６−３に示した圧縮処理により圧縮される。
【０２５２】
図３５−１において、まず、数値範囲『３，７００円以上６，３００円以下』について、中間数値群の出現マップを抽出する。具体的には、下限数値群の出現マップとなる４桁・先頭数字３マップＭ４３と上限数値群の出現マップとなる４桁・先頭数字６マップＭ４６との間の４桁・先頭数字４マップＭ４４および４桁・先頭数字５マップＭ４５を、中間数値群の出現マップとして抽出する。
【０２５３】
４桁・先頭数字３マップＭ４３は、４桁・先頭数字３の数値を有するＸＭＬファイルｆｉの存否をあらわしている。４桁・先頭数字４マップＭ４４は、４桁・先頭数字４の数値を有するＸＭＬファイルｆｉの存否をあらわしている。４桁・先頭数字５マップＭ４５は、４桁・先頭数字５の数値を有するＸＭＬファイルｆｉの存否をあらわしている。４桁・先頭数字６マップＭ４６は、４桁・先頭数字６の数値を有するＸＭＬファイルｆｉの存否をあらわしている。
【０２５４】
ここで、４桁・先頭数字３マップＭ４３および４桁・先頭数字６マップＭ４６は、大小比較に用いる出現マップである。また、４桁・先頭数字４マップＭ４４および４桁・先頭数字５マップＭ４５は、論理和をとって中間結果マップＭ０１とする。中間結果マップＭ０１は、数値４０００〜５９９９が存在するＸＭＬファイルｆｉの存否をあらわしている。そして、この中間結果マップＭ０１内のビットを反転させることで、省略マップＭ０２を得る。
【０２５５】
図３５−２では、図３５−１で得られた４桁・先頭数字３マップＭ４３と省略マップＭ０２との論理積をとることで、下限マップＭ０３を得る。省略マップＭ０２との論理積をとることで、中間数値群内の数値を有するＸＭＬファイルを除外することができる。
【０２５６】
この下限マップＭ０３において、ビットがＯＮである圧縮化ＸＭＬファイルＦｉを抽出する。この圧縮化ＸＭＬファイルＦｉを先頭からサーチしてフィーダ（図３５−２では「ｘ’Ｂ’」）の圧縮符号「１０１１」を探索する。フィーダの圧縮符号「１０１１」が探索されると、そのフィーダの圧縮符号「１０１１」を先頭とする圧縮情報３５０１を読み出す。この圧縮情報３５０１のうち、全角・半角ビットおよびカンマ有無ビットが「１」である場合、「０」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報３５１０と称す。
【０２５７】
そして、圧縮化ＸＭＬファイルＦｉ内の数値情報「３，３００円」を圧縮した比較対象圧縮情報３５１０と、下限の数値情報「３，７００円」を圧縮処理した下限の圧縮情報３５０２とを比較する。まず、比較対象圧縮情報３５１０および下限の圧縮情報３５０２のフィーダ，桁数，先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化ＸＭＬファイルＦｉ内のつぎのフィーダをサーチする。
【０２５８】
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報３５１０は少なくとも４桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報３５１０は少なくとも先頭数字が「３」の数値の圧縮形式であることがわかる。したがって、フィーダ，桁数，および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。
【０２５９】
この例では、第２数字の圧縮符号を比較することで、比較対象圧縮情報３５０２のファイル内の数値情報「３，３００円」よりも下限数値の数値情報「３，７００円」が大きいことがわかる。この場合、下限比較結果マップＭ０４において、圧縮化ＸＭＬファイルＦｉに対応するビットは「０」のままである。そして、圧縮化ＸＭＬファイルＦｉ内のつぎのフィーダをサーチして、下限数値の数値情報「３，７００円」以上の数値情報がある場合、下限比較結果マップＭ０４において、圧縮化ＸＭＬファイルＦｉに対応するビットを「１」とする。
【０２６０】
この比較処理を、下限マップＭ０３内においてビットが立っているすべての圧縮化ＸＭＬファイルＦ０〜Ｆｎについておこなうことで、下限比較結果マップＭ０４を得ることができる。このように、下限マップＭ０３から４桁でかつ先頭数字が「３」である数値を含む圧縮化ＸＭＬファイルＦｉを抽出することで、ＸＭＬファイルｆｉを圧縮形式のまま検索することができる。
【０２６１】
図３５−３では、図３５−１で得られた４桁・先頭数字６マップＭ４６と省略マップＭ０２との論理積をとることで、上限マップＭ０５を得る。省略マップＭ０２との論理積をとることで、中間数値群内の数値を有するＸＭＬファイルを除外することができる。
【０２６２】
この上限マップＭ０５において、ビットがＯＮである圧縮化ＸＭＬファイルＦｉを抽出する。この圧縮化ＸＭＬファイルＦｉを先頭からサーチしてフィーダ（図３５−３では「ｘ’Ｂ’」）の圧縮符号「１０１１」を探索する。フィーダの圧縮符号「１０１１」が探索されると、そのフィーダの圧縮符号「１０１１」を先頭とする圧縮情報３５０３を読み出す。この圧縮情報３５０３のうち、全角・半角ビットおよびカンマ有無ビットが「１」である場合、「０」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報３５３０と称す。
【０２６３】
そして、圧縮化ＸＭＬファイルＦｉ内の数値情報「６，２００円」を圧縮した比較対象圧縮情報３５３０と、上限の数値情報「６，３００円」を圧縮処理した上限の圧縮情報３５０４とを比較する。まず、比較対象圧縮情報３５３０および上限の圧縮情報３５０４のフィーダ，桁数，先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化ＸＭＬファイルＦｉ内のつぎのフィーダをサーチする。
【０２６４】
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報３５３０は少なくとも４桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報３５３０は少なくとも先頭数字が「３」の数値の圧縮形式であることがわかる。したがって、フィーダ，桁数，および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。
【０２６５】
この例では、第２数字の圧縮符号どうしを比較することで、比較対象圧縮情報３５３０の数値情報「６，２００円」よりも上限数値の数値情報「６，３００円」が大きいことがわかる。この場合、上限比較結果マップＭ０６において、圧縮化ＸＭＬファイルＦｉに対応するビットを「１」とする。
【０２６６】
この比較処理を、上限マップＭ０５内においてビットが立っているすべての圧縮化ＸＭＬファイルＦｉについておこなうことで、上限比較結果マップＭ０６を得ることができる。このように、上限マップＭ０５から４桁でかつ先頭数字が「６」である数値を含む圧縮化ＸＭＬファイルＦｉを抽出することで、ＸＭＬファイルｆｉを圧縮形式のまま検索することができる。
【０２６７】
図３５−４では、下限比較結果マップＭ０４、中間結果マップＭ０１、および上限比較結果マップＭ０６の論理和をとることで、統合結果マップＭ０７を得ている。これにより、数値範囲『３，７００円以上６，３００円以下』内の数値情報を含むＸＭＬファイルｆｉを圧縮形式のまま特定することができる。
【０２６８】
なお、上述した図３５−１〜図３５−４の例では、数値範囲を特定する下限数値と上限数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明したが、上限の数値の桁数が大きい場合（または下限の数値の桁数が小さい場合）も同様に比較することができる。たとえば、数値範囲が『３，７００円以上６４，０００円以下』である場合、４桁先頭数字４マップ〜４桁先頭数字９マップと５桁先頭数字１マップ〜５桁先頭数字５マップまでを中間数値群の出現マップとして抽出すればよい。
【０２６９】
また、数値範囲が『３，７００円以上３，９００円以下』や『３，７００円以上４，５００円以下』など、中間数値群が存在しない場合は、中間結果マップＭ０１が存在しないため、省略マップＭ０２の全ビットをＯＦＦにする。そして、統合結果マップＭ０７を得る場合も中間結果マップＭ０１が存在しないため、下限比較結果マップＭ０４と上限比較結果マップＭ０６との論理和により統合結果マップＭ０７を演算する。
【０２７０】
（検索結果表示部６２３の詳細な機能的構成）
つぎに、図６に示した検索結果表示部６２３の詳細な機能的構成について説明する。図３６は、図６に示した検索結果表示部６２３の詳細な機能的構成を示すブロック図である。図３６において、検索結果表示部６２３は、読出し部３６０１と、ファイル伸長部３６０２と、ファイル表示部３６０３と、から構成されている。
【０２７１】
まず、読出し部３６０１は、検索候補選択部２１１１によって選択された検索候補である項目データを、圧縮化ＸＭＬファイル群Ｆの圧縮化ＸＭＬファイルＦｉから読み出す。また、ファイル伸長部３６０２は、読出し部３６０１によって読み出された項目データを、ハフマン木１４０１によって伸長する。ファイル表示部３６０３は、ファイル伸長部３６０２によって伸長された項目データを検索結果として表示する。
【０２７２】
（情報検索処理手順）
つぎに、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順について説明する。図３７は、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順を示すフローチャートである。図３７において、まず、数値・文字出現頻度管理データ生成部６１２により、数値・文字出現頻度管理データ生成処理を実行する（ステップＳ３７０１）。
【０２７３】
そして、圧縮／暗号化部６１３により、圧縮／暗号化処理を実行する（ステップＳ３７０２）。このあと、検索初期化部６２１により、検索初期化処理を実行する（ステップＳ３７０３）。つぎに、検索実行部６２２により、検索処理を実行する（ステップＳ３７０４）。
【０２７４】
最後に、検索結果表示部６２３により、検索結果表示処理を実行する（ステップＳ３７０５）。なお、検索結果表示処理では、検索候補一覧から選択された検索候補（項目データ）を圧縮ＸＭＬファイルＦｉから読み出して、ハフマン木１４０１にて伸長することにより、項目データの全文を検索結果として表示することができる。
【０２７５】
（数値・文字出現頻度管理データ生成処理手順）
つぎに、図３７に示した数値・文字出現頻度管理データ生成処理（ステップＳ３７０１）の詳細な処理手順について説明する。図３８は、図３７に示した数値・文字出現頻度管理データ生成処理（ステップＳ３７０１）の詳細な処理手順を示すフローチャートである。図３８において、まず、初期化処理を実行する（ステップＳ３８０１）。具体的には、８，１６ビットの数値・文字データ、連字データ、バイナリデータの区点対応の集計領域を確保し、出現頻度と出現マップのセグメント等を初期化する。また、数値・文字データのコードをセットし、各種カウンタを初期化する。
【０２７６】
つぎに、数値・文字出現頻度集計処理を実行する（ステップＳ３８０２）。この数値・文字出現頻度集計処理の詳細な処理手順については後述する。この数値・文字出現頻度集計処理のあと、数値・文字出現頻度管理データ５００の領域確保とその領域の初期化を実行し（ステップＳ３８０３）、８，１６ビットの数値・文字データ、連字データ、バイナリデータの文字コードと出現頻度をセットする（ステップＳ３８０４）。
【０２７７】
そして、出現マップの各セグメントを連結し（ステップＳ３８０５）。連字領域の連字データを高出現頻度順にソートする（ステップＳ３８０６）ことで、２５６種の連字データを選択する。これにより、連字データの削減を図ることができる。
【０２７８】
つぎに、連字／外字置換をおこなうとともに、連字／外字置換テーブル６４０を生成する（ステップＳ３８０７）。具体的には、高出現頻度順に連字データを外字データに置換することにより、連字外字データと連字／外字置換テーブル６４０を生成する。
【０２７９】
そして、低出現頻度の連字データ、すなわち外字に置換されなかった連字データを単一文字データに分解し、該当する文字領域に割り振る補正をおこなう（ステップＳ３８０８）。すなわち、低出現頻度の連字データを表音文字データに分割し、当該文字データの頻度の加算と出現マップのＯＲ演算を実行する。
【０２８０】
このあと、数値・文字データを高出現頻度順にソートし（ステップＳ３８０９）、頻度０回の数値・文字データをカットして、連字外字データとバイナリデータとを結合し（ステップＳ３８１０）、この結合によって得られた数値・文字出現頻度管理データ５００をファイルに出力する（ステップＳ３８１１）。これにより、ステップＳ３７０２に移行する。
【０２８１】
（数値・文字出現頻度集計処理手順）
つぎに、上述した数値・文字出現頻度集計処理（ステップＳ３８０２）の詳細な処理手順について説明する。図３９は、上述した数値・文字出現頻度集計処理（ステップＳ３８０２）の詳細な処理手順を示すフローチャート（前半）である。図３９において、まず、先頭ＸＭＬファイルｆ０をオープンする（ステップＳ３９０１）。
【０２８２】
つぎに、オープンされたＸＭＬファイルから順次データを抽出する。抽出されたデータがバイナリデータである場合（ステップＳ３９０２：Ｙｅｓ）、当該バイナリデータの出現頻度を加算し、当該バイナリデータの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３９０３）。そして、図４０に示すステップＳ３９１１に移行する。
【０２８３】
一方、ステップＳ３９０２において、抽出されたデータがバイナリデータではない場合（ステップＳ３９０２：Ｎｏ）、数値であるか否かを判定する（ステップＳ３９０４）。たとえば、数字のみからなる数字列であれば、数値と判定する。また、数字のほか「，」（カンマ）や「．」（小数点）が数字列に含まれている場合も、数値と判定する。
【０２８４】
そして、数値である場合（ステップＳ３９０４：Ｙｅｓ）、当該数値の出現頻度を加算し、当該数値の出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３９０５）。そして、図４０に示すステップＳ３９１１に移行する。
【０２８５】
一方、ステップＳ３９０４において、抽出されたデータが数値ではない場合（ステップＳ３９０４：Ｎｏ）、連字データであるか否かを判定する（ステップＳ３９０６）。連字データである場合（ステップＳ３９０６：Ｙｅｓ）、当該連字データの出現頻度を加算し、当該連字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３９０７）。そして、図４０に示すステップＳ３９１１に移行する。
【０２８６】
一方、ステップＳ３９０６において、抽出されたデータが連字データでない場合（ステップＳ３９０６：Ｎｏ）、漢字データであるか否かを判定する（ステップＳ３９０８）。漢字データでない場合（ステップＳ３９０８：Ｎｏ）、当該データは表音文字データであるため、その表音文字データの出現頻度を加算し、当該表音文字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、バイトカウンタを加算する（ステップＳ３９０９）。そして、図４０に示すステップＳ３９１１に移行する。
【０２８７】
一方、ステップＳ３９０８において、抽出されたデータが漢字データである場合（ステップＳ３９０８：Ｙｅｓ）、当該漢字データの出現頻度を加算し、当該漢字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、バイトカウンタを加算する（ステップＳ３９１０）。そして、図４０に示すステップＳ３９１１に移行する。
【０２８８】
図４０は、数値・文字出現頻度集計処理（ステップＳ３９０２）の詳細な処理手順を示すフローチャート（後半）である。図４０において、出現マップのセグメントのセグメントカウンタを加算し（ステップＳ３９１１）、セグメント終了か否か、すなわちセグメントの集計が終了したか否かを判断する（ステップＳ３９１２）。セグメントの集計が終了した場合（ステップＳ３９１２：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し、セグメントカウンタをクリアする（ステップＳ３９１３）。そして、ステップＳ３９１４に移行する。
【０２８９】
一方、セグメントの集計が終了していない場合（ステップＳ３９１２：Ｎｏ）、またはステップＳ３９１３のあと、ブロック終了か否か、たとえば、集計した数値・文字データ数が４０００文字に到達したか否かを判断する（ステップＳ３９１４）。
【０２９０】
そして、ブロック終了した場合（ステップＳ３９１４：Ｙｅｓ）、当該ブロックデータを有するＸＭＬファイルｆｉのファイル番号ｉ、当該ブロックデータのブロック番号ｍ、オフセット、文字数、およびレングスからなるブロック情報を生成してファイルに追加出力するとともに、バイトカウンタをクリアする（ステップＳ３９１５）。そして、ステップＳ３９１６に移行する。
【０２９１】
一方、ブロック終了していない場合（ステップＳ３９１４：Ｎｏ）、またはステップＳ３９１５のあと、ファイル終了か否か、すなわち、現在オープンしているＸＭＬファイルｆｉの集計が終了したか否かを判断する（ステップＳ３９１６）。現在オープンしているＸＭＬファイルｆｉの集計が終了していない場合（ステップＳ３９１６：Ｎｏ）、図３９に示したステップＳ３９０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３９０２〜Ｓ３９１０）。
【０２９２】
一方、ステップＳ３９１６において、現在オープンしているＸＭＬファイルの集計が終了した場合（ステップＳ３９１６：Ｙｅｓ）、集計終了か否か、すなわち、現在オープンしているＸＭＬファイルｆｉをクローズする（ステップＳ３９１７）。このあと、すべてのＸＭＬファイルｆ０〜ｆｎからの集計が終了したか否かを判断する（ステップＳ３９１８）。
【０２９３】
すべてのＸＭＬファイルｆ０〜ｆｎの集計が終了していない場合（ステップＳ３９１８：Ｎｏ）、つぎのファイル番号ｉ（ｉ＝ｉ＋１）のＸＭＬファイルｆｉをオープンし（ステップＳ３９１９）、図３９に示したステップＳ３９０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３９０２〜Ｓ３９１０）。
【０２９４】
一方、ステップＳ３９１８において、すべてのＸＭＬファイルｆ０〜ｆｎの集計が終了した場合（ステップＳ３９１８：Ｙｅｓ）、出現マップ５１０のセグメントをファイルに追加出力し（ステップＳ３９２０）、ステップＳ３９０３に移行することで一連の処理を終了する。
【０２９５】
（圧縮／暗号化処理手順）
つぎに、図３７に示した圧縮／暗号化処理（ステップＳ３７０２）の詳細な処理手順について説明する。図４１は、図３７に示した圧縮／暗号化処理（ステップＳ３７０２）の詳細な処理手順を示すフローチャートである。図４１において、まず、数字や小数点、フィーダ（以下、「数字等」と称す）の出現頻度の補正をおこなう（ステップＳ４１００）。そして、その他の文字データの出現頻度を補正する（ステップＳ４１０２）。
【０２９６】
そして、出現頻度順に混合領域８１２の数値・文字データをソートする（ステップＳ４１０３）。つぎに、低出現頻度の数値・文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ４１０４）。そして、混合領域８１２の数値・文字データ、連字外字データ、バイナリデータを連結し、出現頻度順にソートする（ステップＳ４１０５）。
【０２９７】
このあと、ソートされた数値・文字データごとに、補正された出現頻度に基づいて生起確率を演算し（ステップＳ４１０６）、この生起確率に基づいて、８，１６ビットの数値・文字データに共通のハフマン木を生成する（ステップＳ４１０７）。
【０２９８】
そして、各ＸＭＬファイルの圧縮処理を実行する（ステップＳ４１０８）。この圧縮処理の具体的な手順は図４０において後述する。そして、数値・文字出現頻度管理データ５００を暗号化する（ステップＳ４１０９）。具体的には、数値・文字出現頻度管理データ５００の暗号化領域（数値・文字データおよび出現頻度の領域）を、マスタキーを用いて排他的論理和（ＥＸＯＲ）により暗号化する。
【０２９９】
そして、連字／外字置換テーブル６４０を暗号化する（ステップＳ４１１０）。具体的には、連字／外字置換テーブル６４０の暗号化領域を、マスタキーを用いて排他的論理和（ＥＸＯＲ）により暗号化する。そして、検索初期化処理（ステップＳ３７０３）に移行し、一連の処理を終了する。
【０３００】
（圧縮処理手順）
つぎに、図４１のステップＳ４１０８に示した圧縮処理の詳細な処理手順について説明する。図４２は、図４１のステップＳ４１０８に示した圧縮処理の詳細な処理手順を示すフローチャートである。まず、ファイル番号ｉをｉ＝０とし（ステップＳ４２０１）、ＸＭＬファイルｆｉを、たとえば４０００文字ごとにブロック化する（ステップＳ４２０２）。つぎに、ＸＭＬファイルｆｉ内のデータを順次読み込み、読み込んだデータがフィーダであるか否かを判断する（ステップＳ４２０３）。
【０３０１】
フィーダであると判断された場合（ステップＳ４２０３：Ｙｅｓ）、フィーダに続く連続する数字を数値として読み込んで（ステップＳ４２０４）、全角・半角、数値の桁数を検出する（ステップＳ４２０５）。そして、ハフマン木による数値圧縮を実行し（ステップＳ４２０６）、ステップＳ４２０８に移行する。
【０３０２】
一方、フィーダでないと判断された場合（ステップＳ４２０３：Ｎｏ）、当該データはその他の文字データであるため、ハフマン木１４０１を用いて文字データ圧縮を実行し（ステップＳ４２０７）、ステップＳ４２０８に移行する。
【０３０３】
そして、ステップＳ４２０８において、当該ブロックにおける圧縮が終了したか否かを判断する（ステップＳ４２０８）。圧縮が終了していない場合（ステップＳ４２０８：Ｎｏ）、ステップＳ４２０３に戻って、つぎのデータを読み込む。一方、圧縮終了である場合（ステップＳ４２０８：Ｙｅｓ）、未処理ブロックがあるか否かを判断する（ステップＳ４２０９）。
【０３０４】
未処理ブロックがある場合（ステップＳ４２０９：Ｙｅｓ）、当該未処理ブロックを読み込んで（ステップＳ４２１０）、ステップＳ４２０３に戻って、データの読み込みをおこなう。一方、未処理ブロックがない場合（ステップＳ４２０９：Ｎｏ）、ファイル番号ｉをインクリメントし（ステップＳ４２１１）、ｉ＞ｎか否かを判断する（ステップＳ４２１２）。
【０３０５】
ｉ＞ｎでない場合（ステップＳ４２１２：Ｎｏ）、ステップＳ４２０２に戻って、つぎのＸＭＬファイルｆｉをブロック化する。一方、ｉ＞ｎである場合（ステップＳ４２１２：Ｙｅｓ）、図４１に示したステップＳ４１０９に移行する。これにより、圧縮処理における一連の処理を終了する。
【０３０６】
（検索初期化処理手順）
つぎに、図３７に示した検索初期化処理（ステップＳ３７０３）の詳細な処理手順について説明する。図４３は、図３７に示した検索初期化処理（ステップＳ３７０３）の詳細な処理手順を示すフローチャートである。
【０３０７】
図４３において、まず、検索初期化処理の起動を待ち受け（ステップＳ４３０１：Ｎｏ）、起動した場合（ステップＳ４３０１：Ｙｅｓ）、圧縮／暗号化処理において暗号化された暗号化数値・文字出現頻度管理データ６５０を復号化する（ステップＳ４３０２）。具体的には、暗号化数値・文字出現頻度管理データ６５０の暗号化領域（数値・文字データおよび出現頻度の領域）を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。
【０３０８】
つぎに、暗号化連字／外字置換テーブル６６０を復号化する（ステップＳ４３０３）。具体的には、暗号化連字／外字置換テーブル６６０の暗号化領域を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。
【０３０９】
つぎに、圧縮／暗号化処理で示したステップＳ４１０１〜Ｓ４１０５までの処理と同様の処理を実行する。すなわち、高出現頻度順に数値・文字データをソートし（ステップＳ４３０４）、低出現頻度の数値・文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ４３０５）。
【０３１０】
そして、数値・文字データ、連字データ、バイナリデータを連結し、高出現頻度順にソートする（ステップＳ４３０６）。このあと、数値・文字データごとに、出現頻度に基づいて生起確率を演算し（ステップＳ４３０７）、この生起確率に基づいて、８，１６ビットの数値・文字データに共通のハフマン木を生成する（ステップＳ４３０８）。
【０３１１】
このあと、出現マップ５１０の設定処理を実行する（ステップＳ４３０９）。具体的には、第１の区点対応テーブルおよび第２の区点対応テーブルの領域確保、各文字データの出現順位の第１の区点対応テーブルへのセット、各数値データの出現順位の第２の区点対応テーブルへのセット、復号された数値・文字出現頻度管理データ５００の出現マップのメモリ展開、当該出現マップと第１の区点対応テーブルおよび第２の区点対応テーブルとのリンクを実行する。このあと、検索処理（ステップＳ３７０４）に移行して、一連の処理を終了する。
【０３１２】
（検索処理手順）
つぎに、図３７に示した検索処理（ステップＳ３７０４）の詳細な処理手順について説明する。図４４および図４５は、図３７に示した検索処理（ステップＳ３７０４）の詳細な処理手順を示すフローチャートである。検索初期化処理（ステップＳ３７０３）のあと、図４４において、まず、検索モード画面の呼び出しをおこない（ステップＳ４４０１）、数値検索モードまたは文字検索モードの選択を待ち受ける（ステップＳ４４０２）。
【０３１３】
数値検索モードが選択された場合（ステップＳ４４０２：Ｙｅｓ）、図４９に示すステップＳ４９００に移行する。一方、文字検索モードが選択された場合（ステップＳ４４０２：Ｎｏ）、検索条件入力処理を実行する（ステップＳ４４０３）。検索条件入力処理は、図２７〜図２９で示したように、検索条件入力画面２７００にユーザ操作よる検索条件の入力を待ち受け、検索ボタン２７０９のクリックにより検索条件を読み込む処理である。
【０３１４】
つぎに、検索条件中の検索キーワードが複数キーワードか否かを判断する（ステップＳ４４０４）。検索キーワードが複数でない場合（ステップＳ４４０４：Ｎｏ）、ステップＳ４４０６に移行する。一方、検索キーワードが複数である場合（ステップＳ４４０４：Ｙｅｓ）、各キーワードの文字列を連結して（ステップＳ４４０５）、ステップＳ４４０６に移行する。
【０３１５】
このあと、ステップＳ４４０６において、検索キーワード内に連字データがない場合（ステップＳ４４０６：Ｎｏ）、ステップＳ４４０８に移行する。一方、連字データがある場合（ステップＳ４４０６：Ｙｅｓ）、連字／外字置換テーブル６４０を用いて、その連字データを２文字の外字データに置換して（ステップＳ４４０７）、ステップＳ４４０８に移行する。
【０３１６】
つぎに、フラグ設定処理を実行する（ステップＳ４４０８）。フラグ設定処理とは、検索キーワードの各文字データに対応する葉の構造体に、検索条件に基づいて伸長フラグ、照合フラグ、置換フラグ、アクセス権フラグを設定する処理である。フラグ設定処理（ステップＳ４４０８）の実行後、ステップＳ４４０９に移行する。フラグ設定処理の詳細については後述する。
【０３１７】
このあと、ステップＳ４４０９において、検索キーワードを単一文字データに分解して、出現マップから各文字データの各ＸＭＬファイルにおける存否ビット列を読み取る（ステップＳ４４０９）。そして、各文字データの存否ビット列の論理積により、圧縮化ＸＭＬファイルを特定（絞込み）する（ステップＳ４４１０）。
【０３１８】
そして、図４５において、検索キーワードを検索初期化処理（ステップＳ３７０３）において生成されたハフマン木１４０１で圧縮する（ステップＳ４４１１）。つぎに、テーブル設定処理（ステップＳ４４１２）を実行する。このテーブル設定処理（ステップＳ４４１２）では、検索キーワード中、先頭文字を除く残余の検索キーワードが圧縮され（ステップＳ４４１１）、レジスタＲｂにセットされると、その残余の検索キーワード（非圧縮）をその圧縮長とともに照合テーブル１７１３にセットする。また、文字列置換をおこなう場合には、残余の検索キーワード（非圧縮）およびその圧縮長とともに、置換後の文字列を置換テーブルにセットする。
【０３１９】
ここでは、検索キーワードとして「高血圧」を例にあげているため、先頭文字「高」を除く残余の検索キーワード「血圧」とその圧縮長を照合テーブル１７１３にセットする。文字列置換をおこなう場合には、置換テーブル１７１４に、さらに、「＜Ｂ＞高血圧＜／Ｂ＞」のように、置換後の文字列をセットする。
【０３２０】
このテーブル設定処理（ステップＳ４４１２）後、ファイルカウンタを初期化する（ステップＳ４４１３）。このあと、ステップＳ４４１０で特定された圧縮化ＸＭＬファイルをオープンし（ステップＳ４４１４）、オープンされた特定圧縮化ＸＭＬファイルについて部分伸長・照合処理を実行する（ステップＳ４４１５）。部分伸長・照合処理の詳細については後述する。
【０３２１】
このあと、オープンしている特定圧縮化ＸＭＬファイルをクローズし（ステップＳ４４１６）、ファイルカウンタを更新する（ステップＳ４４１７）。ファイルカウンタの更新により、未処理の特定圧縮化ＸＭＬファイルがあると判断された場合（ステップＳ４４１８：Ｙｅｓ）、ステップＳ４４１４に移行して、つぎの特定圧縮化ＸＭＬファイルをオープンする。
【０３２２】
一方、未処理の特定圧縮化ＸＭＬファイルがないと判断された場合（ステップＳ４４１８：Ｎｏ）、検索候補一覧を表示し（ステップＳ４４１９）、ユーザからの選択入力を待ち受ける（ステップＳ４４２０）ことにより、検索結果表示処理（ステップＳ３７０５）に移行して、一連の処理を終了する。
【０３２３】
このように、コンテンツが複数のＸＭＬファイルから構成されていても、単一の圧縮情報（数値・文字出現頻度管理データ５００）により共通化することができる。
【０３２４】
また、サイズが大きいＸＭＬファイルでは文字データ数に応じてブロック化をおこない、８ビットコード、１６ビットコードまたは３２ビットコードの文字データが混在する検索対象ファイルについてのハフマン圧縮技術を確立することができる。
【０３２５】
また、サイズ（容量）ではなく、文字データ数に応じたブロック化をおこない、ＸＭＬファイル内の各文字データの出現頻度の集計時に、文字データの種類（８ビットコード、１６ビットコードまたは３２ビットコード）を判定し、出現頻度を集計することができる。
【０３２６】
また、英字データなど出現頻度の高い８ビットコードの文字データに対しては、０ｘ’ＦＦ＊＊’など１６ビットコードの文字データに置換し、ハフマン圧縮をおこなう。これにより、低出現率の８ビットコードの文字データと区別して、効率的な圧縮をおこなうことができる。
【０３２７】
また、ポインタなどの非文字データはランダムな値であるため、８ビットコードに置換する。また、ハフマン木１４０１のサイズ縮小のため、出現頻度の低い１６ビットコードの文字データを分割し、８ビットコードの文字データに置換する。これにより、効率的な圧縮をおこなうことができる。
【０３２８】
また、圧縮のためのハフマン木１４０１の生成元である数値・文字出現頻度管理データ５００またはその一部を暗号化する。すなわち、コンテンツや、コンテンツ圧縮のためのハフマン木１４０１を直接暗号化せず、ハフマン木１４０１の生成元を暗号化しているため、セキュリティの向上を図ることができる。
【０３２９】
（フラグ設定処理手順）
つぎに、図４４に示したフラグ設定処理（ステップＳ４４０８）の詳細な処理手順について説明する。図４６は、フラグ設定処理（ステップＳ４４０８）の詳細な処理手順を示すフローチャートである。
【０３３０】
図４６において、まず、検索条件のタグ名に一致する要素（ＸＭＬ開始タグおよびそのＸＭＬ終了タグの組み合わせ）をタグテーブル１７１２から検出する（ステップＳ４６０１）。具体的には、その要素の葉を持つハフマン木１４０１の葉の構造体１７００の領域１７０３にその要素へのポインタを設定する。
【０３３１】
つぎに、葉の構造体１７００の領域１７０２に伸長フラグを設定する（ステップＳ４６０２）。具体的には、要素のうちＸＭＬ開始タグに対しては伸長開始フラグ（ＯＮ）を設定し、ＸＭＬ終了フラグに対しては伸長終了フラグ（ＯＦＦ）を設定する。
【０３３２】
つぎに、照合フラグを設定する（ステップＳ４６０３）。具体的には、検索キーワードの先頭文字の葉を持つハフマン木１４０１の構造体１７００の領域１７０２に照合フラグ（ＯＮ）を設定する。
【０３３３】
つぎに、置換フラグを設定する（ステップＳ４６０４）。具体的には、検索キーワードの各文字の葉を持つハフマン木１４０１の構造体１７００の領域１７０２に置換フラグ（ＯＮ）を設定する。
【０３３４】
つぎに、ステップＳ４６０１で検出されたＸＭＬ開始タグを葉とするハフマン木１４０１の構造体１７００の領域１７０３にその要素へのポインタを設定する。そして、ステップＳ４６０１で検出されたＸＭＬ開始タグを葉とするハフマン木１４０１の構造体１７００の領域１７０２にアクセス権フラグ（ＯＮ）を設定する（ステップＳ４６０５）。このあと、ステップＳ４４０９に移行する。
【０３３５】
（部分伸長・照合処理手順）
つぎに、図４４に示した部分伸長・照合処理の詳細な処理手順について説明する。図４７および図４８は、図４４に示した部分伸長・照合処理の詳細な処理手順を示すフローチャートである。図４７および図４８は、図３１、図３２−１および図３２−２の処理内容に関する手順を示したフローチャートである。
【０３３６】
図４７において、ステップＳ４４１４によりオープンされた特定圧縮化ＸＭＬファイルの先頭部分の圧縮符号列をバイト単位で図３１に示したレジスタＲａにセットする（ステップＳ４７０１）。レジスタＲａには、圧縮符号列が１ビットシフトして、１バイト分の空きが発生すると、後続の圧縮符号列がセットされる。つぎに、圧縮キーワードをレジスタＲｂにセットする（ステップＳ４７０２）。
【０３３７】
そして、ステップＳ４４１４によりオープンされた特定圧縮化ＸＭＬファイルのサーチが終了したか否かを判断する（ステップＳ４７０３）。具体的には、レジスタＲａにセットされる圧縮符号列がなくなった場合にその特定圧縮化ＸＭＬファイルについてサーチが終了したと判断することができる。
【０３３８】
サーチが終了していない場合（ステップＳ４７０３：Ｎｏ）、レジスタＲａの最上位ビットＭＳＢの０／１判定をおこなう（ステップＳ４７０４）。すなわち、遷移先のノードがリーフであるか否かを判定する。リーフでない場合（ステップＳ４７０５：Ｎｏ）、レジスタＲａにセットされている圧縮符号列を１ビットシフトして（ステップＳ４７０６）、ステップＳ４７０５に戻る。
【０３３９】
一方、リーフである場合（ステップＳ４７０５：Ｙｅｓ）、その圧縮符号に設定されているアクセス権フラグを参照することにより、アクセス権があるか否かを判断する（ステップＳ４７０７）。アクセス権がない場合（ステップＳ４７０７：Ｎｏ）、ステップＳ４７０３に戻る。一方、アクセス権がある場合（ステップＳ４７０７：Ｙｅｓ）、その圧縮符号に伸長開始フラグがあるか否かを判断する（ステップＳ４７０８）。
【０３４０】
伸長開始フラグがない場合（ステップＳ４７０８：Ｎｏ）、ステップＳ４７０３に戻る。一方、伸長開始フラグがある場合（ステップＳ４７０８：Ｙｅｓ）、伸長終了フラグがあるか否かを判断する（ステップＳ４７０９）。伸長終了フラグがない場合（ステップＳ４７０９：Ｎｏ）、図４８に示すステップＳ４８０１に移行する。
【０３４１】
図４８では、まず、レジスタＲａにセットされている圧縮符号列を１ビットシフトして（ステップＳ４８０１）、レジスタＲａの最上位ビットＭＳＢの０／１判定をおこなう（ステップＳ４８０２）。すなわち、ハフマン木１４０１における遷移先のノードがリーフであるか否かを判定する。リーフでない場合（ステップＳ４８０２：Ｎｏ）、ステップＳ４８０１に戻る。
【０３４２】
一方、リーフである場合（ステップＳ４８０３：Ｙｅｓ）、その圧縮符号に設定されているアクセス権フラグを参照することにより、アクセス権があるか否かを判断する（ステップＳ４８０４）。アクセス権がない場合（ステップＳ４８０４：Ｎｏ）、図４７に示したステップＳ４７０９に戻る。一方、アクセス権がある場合（ステップＳ４８０４：Ｙｅｓ）、その圧縮符号を文字に伸長し（ステップＳ４８０５）、伸張された文字を一時バッファ３１００に保持する（ステップＳ４８０６）。
【０３４３】
そして、この一時バッファ３１００に伸長された文字に設定されている照合フラグがＯＮであるか否かを判断する（ステップＳ４８０７）。ＯＮである場合（ステップＳ４８０７：Ｙｅｓ）、レジスタＲａにセットされている圧縮符号列を１ビットシフトして（ステップＳ４８０８）、１ビットシフト後の圧縮符号列とレジスタＲｂにセットされている圧縮キーワードとの照合演算をおこなう（ステップＳ４８０９）。そして、この照合結果３２１０とレジスタＲａの圧縮符号列とを関連付けておき（ステップＳ４８１０）、ステップＳ４８０２に戻る。
【０３４４】
一方、ＯＮでない場合（ステップＳ４８０７：Ｎｏ）、図４７に示したステップＳ４７０９に戻る。図４７において、現在特定されている圧縮符号について伸長終了フラグがある場合（ステップＳ４７０９：Ｙｅｓ）、ステップＳ４８０９の照合演算から得られる照合結果３２１０により、一致照合であるか否かを判断する（ステップ４７１０Ｓ）。
【０３４５】
一致照合である場合（ステップＳ４７１０：Ｙｅｓ）、照合テーブル１７１３を参照して、一時バッファ３１００に伸長された文字列を出力バッファ３１０１に転送する（ステップＳ４７１１）。なお、文字列置換をおこなう場合には、置換テーブル１７１４を参照することにより、置換文字列を出力バッファ３１０１に転送する。
【０３４６】
一方、不一致照合である場合（ステップＳ４７１０：Ｎｏ）、一時バッファ３１００に伸長された文字列を消去する（ステップＳ４７１２）。ステップＳ４７１１またはステップＳ４７１２のあと、レジスタＲａにセットされている圧縮符号列を１ビットシフトして（ステップＳ４７１３）、ステップＳ４７０３に戻る。ステップＳ４７０３において、サーチが終了した場合（ステップＳ４７０３：Ｙｅｓ）、ステップＳ４３１６に移行する。これにより、一連の処理を終了する。
【０３４７】
この部分伸長・照合処理により、文字境界を意識した部分伸長と、圧縮キーワードとの照合とを独立し、かつ同時並行で実行することができる。具体的には、ヒットしたＸＭＬ開始タグからＸＭＬ終了タグまで部分伸長が実行され、一時バッファ３１００に出力される。換言すれば、ヒットしないＸＭＬタグについては、伸長および照合が不要となるため、冗長性の高いＸＭＬタグやそのＸＭＬタグで括られた文字列の伸長を自動的に禁止することができる。
【０３４８】
また、部分伸長と並行してバイナリ照合が実行され、条件が満たされると一時バッファ３１００から出力バッファ３１０１に転送される。これにより、検索条件で指定されたタグに括られた圧縮符号と同一圧縮符号のみを部分伸長することができる。このような部分伸長・照合処理により、検索速度の高速化を図ることができる。
【０３４９】
（数値検索モードにおける数値検索実行処理手順）
つぎに、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順について説明する。図４９は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。
【０３５０】
図４６におけるステップＳ４６０２：Ｙｅｓのあと、入力された検索条件にしたがってフラグ設定処理を実行する（ステップＳ４９００）。フラグ設定処理（ステップＳ４９００）の詳細は、図４６に示した処理手順と同一であるため省略する。
【０３５１】
このあと、検索条件入力部３３００により数値範囲を取得する（ステップＳ４９０１）。つぎに、検出部３３０３により、数値範囲の境界を規定する数値（下限数値、上限数値）の桁数および先頭数字を検出する（ステップＳ４９０２）。そして、数値圧縮部３３０２により、下限数値および上限数値を圧縮する（ステップＳ４９０３）。
【０３５２】
このあと、出現マップ抽出部３３０５により、出現マップ５０３から下限数値群〜上限数値群の出現マップを抽出する（ステップＳ４９０４）。そして、中間数値群判断部３３０４により、中間数値群があるか否かを判断する（ステップＳ４９０５）。中間数値群があると判断された場合（ステップＳ４９０５：Ｙｅｓ）、省略マップ設定部３３０６により、中間数値群の出現マップの論理和をとることにより、中間結果マップを生成し（ステップＳ４９０６）、中間結果マップ内の全ビットを反転させて省略マップに変換する（ステップＳ４９０７）。
【０３５３】
一方、中間数値群がないと判断された場合（ステップＳ４９０５：Ｎｏ）、省略マップを初期化する（ステップＳ４９０８）。すなわち、ＸＭＬファイルｆ０〜ｆｎに対応するビット列をすべてＯＦＦにすることで、全ビット「０」の省略マップを得る。そして、ステップＳ４９０９に移行する。
【０３５４】
このあと、下限特定／比較処理（ステップＳ４９０９）および上限特定／比較処理（ステップＳ４９１０）を実行する。下限特定／比較処理（ステップＳ４９０９）および上限特定／比較処理（ステップＳ４９１０）の詳細な処理手順については後述する。
【０３５５】
そして、決定部３３１１により、数値範囲内の数値が存在する圧縮化ＸＭＬファイルＦｉを決定する（ステップＳ４９１１）。このあと、ファイル構成データ特定部２１０９により、数値範囲内の数値が存在する圧縮化ＸＭＬファイルＦｉのページリストを特定し（ステップＳ４９１２）、図４５に示したステップＳ４６１９に移行する。これにより、数値検索実行処理の一連の手順を終了する。
【０３５６】
（下限特定／比較処理手順）
つぎに、図４９に示した下限特定／比較処理の詳細な処理手順について説明する。図５０は、図４９に示した下限特定／比較処理手順を示すフローチャートである。図５０においては、図３５−１〜図３５−４に示した大小比較例を参照しながら説明する。
【０３５７】
まず、図３５−２で示したように、下限数値群マップ（４桁先頭数字３マップＭ４３）と省略マップＭ０２との論理積演算をおこなうことにより、下限マップＭ０３を得る（ステップＳ５００１）。つぎに、ファイル番号ｉをｉ＝０とし、下限比較結果マップＭ０４を初期化（全ビットＯＦＦ）する（ステップＳ５００２）。
【０３５８】
そして、下限マップＭ０３中、ｉ番目のビットがＯＮであるか否かを判断する（ステップＳ５００３）。ビットがＯＦＦである場合（ステップＳ５００３：Ｎｏ）、ステップＳ５０１０に移行する。
【０３５９】
一方、ビットがＯＮである場合（ステップＳ５００３：Ｙｅｓ）、圧縮化ＸＭＬファイルＦの中から圧縮化ＸＭＬファイルＦｉを抽出する（ステップＳ５００４）。このあと、下限数値検出処理を実行する（ステップＳ５００５）。下限数値検出処理の詳細については図５１で後述する。なお、この下限数値検出処理により、圧縮化ＸＭＬファイルＦｉの中から、ファイル内数値の圧縮情報（図３５−２では圧縮情報３５０１）を抽出することができる。
【０３６０】
このあと、下限数値照合処理を実行する（ステップＳ５００６）。この下限数値照合処理については図５２で後述する。そして、下限数値照合処理による照合結果により、下限数値の境界条件を充足しているか否かを判断する（ステップＳ５００７）。
【０３６１】
充足していない場合（ステップＳ５００７：Ｎｏ）、ステップＳ５００５に戻る。一方、境界条件を充足している場合（ステップＳ５００７：Ｙｅｓ）、下限比較結果マップＭ０４中、ｉ番目のビットがＯＦＦのままか否かを判断する（ステップＳ５００８）。すでにＯＮになっている場合（ステップＳ５００８：Ｎｏ）、ステップＳ５００５に移行する。
【０３６２】
一方、ビットがＯＦＦである場合（ステップＳ５００８：Ｙｅｓ）、そのｉ番目のビットをＯＦＦからＯＮにして（ステップＳ５００９）、ステップＳ５００５に戻る。また、ステップＳ５０１０では、ファイル番号ｉを１つインクリメントする。そして、ｉ＞ｎであるか否かを判断する（ステップＳ５０１１）。
【０３６３】
ｉ＞ｎでない場合（ステップＳ５０１１：Ｎｏ）、ステップＳ５００３に戻る。一方、ｉ＞ｎである場合（ステップＳ５０１１：Ｙｅｓ）、図４９で示したステップＳ４９１０に移行する。これにより、下限特定／比較処理の一連の手順を終了する。
【０３６４】
（下限数値検出処理手順）
つぎに、図５０に示した下限数値検出処理の詳細な処理手順について説明する。図５１は、図５０に示した下限数値検出処理手順を示すフローチャートである。図５１において、まず、図５０のステップＳ５００４で抽出された圧縮化ＸＭＬファイルＦｉのサーチを先頭から開始し、サーチが終了したか否かを判断する（ステップＳ５１０１）。ここで、サーチとは、検索条件で指定されたタグの圧縮符号と一致する圧縮符号の検出処理をいう。
【０３６５】
終了していない場合（ステップＳ５１０１：Ｎｏ）、サーチを継続する（ステップＳ５１０２）。そして、サーチ中に、検索条件で指定されたタグの圧縮符号と一致する圧縮符号が検出されるまでサーチを継続する（ステップＳ５１０２：Ｎｏ）。サーチ中に、検索条件で指定されたタグの圧縮符号と一致する圧縮符号が検出された場合（ステップＳ５１０２：Ｙｅｓ）、そのハフマン木１４０１を参照して、伸長開始フラグが検出されたＸＭＬ開始タグについてアクセス権があるか否か、すなわち、アクセス権フラグがＯＮか否かを判断する（ステップＳ５１０３）。
【０３６６】
アクセス権がない場合（ステップＳ５１０３：Ｎｏ）、ステップＳ５１０１に戻る。一方、アクセス権がある場合（ステップＳ５１０３：Ｙｅｓ）、一致検出された圧縮符号のタグを葉に持つハフマン木１４０１において伸長開始フラグが検出されたか否かを判断する（ステップＳ５１０４）。
【０３６７】
伸長開始フラグが検出されなかった場合（ステップＳ５１０４：Ｎｏ）、ステップＳ５１０１に戻る。一方、伸長開始フラグが検出された場合（ステップＳ５１０４：Ｙｅｓ）、以降の圧縮符号について伸長終了フラグが検出されたか否かを判断する（ステップＳ５１０５）。
【０３６８】
伸長終了フラグが検出されていない場合（ステップＳ５１０５：Ｎｏ）、伸長開始フラグの圧縮符号以降の圧縮符号を抽出し（ステップＳ５１０６）、ステップＳ５１０５に戻る。そして、伸長終了フラグが検出された場合（ステップＳ５１０５：Ｙｅｓ）、ステップＳ５００６に移行する。
【０３６９】
また、ステップＳ５１０１において、サーチが終了した場合（ステップＳ５１０１：Ｙｅｓ）、ステップＳ５０１０へ移行する。なお、この伸長開始フラグが検出されてから伸長終了フラグが検出されるまでの間に抽出された圧縮符号列を、以降、「数値の圧縮情報」と称す。
【０３７０】
（下限数値照合処理手順）
つぎに、図５０に示した下限数値照合処理の詳細な処理手順について説明する。図５２は、下限数値照合処理手順を示すフローチャートである。図５２において、下限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをＯＦＦにする（ステップＳ５２０１）。
【０３７１】
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する（ステップＳ５２０１）。不一致である場合（ステップＳ５２０２：Ｎｏ）、ステップＳ５００７に移行する。一方、フィーダが一致した場合（ステップＳ５２０２：Ｙｅｓ）、桁数が一致するか否かを判断する（ステップＳ５２０３）。
【０３７２】
桁数が不一致である場合（ステップＳ５２０３：Ｎｏ）、ステップＳ５００７に移行する。一方、桁数も一致する場合（ステップＳ５２０３：Ｙｅｓ）、桁数カウンタＮをＮ＝Ｎｍａｘに設定する（ステップＳ５２０４）。Ｎｍａｘは下限数値およびファイル内数値の桁数である。
【０３７３】
そして、ファイル内数値のＮ桁目の数字が下限数値のＮ桁目の数字以上であるか否かを判断する（ステップＳ５２０５）。ここで、判断基準として下限数値のＮ桁目の数字以上としたのは、数値範囲における下限数値の境界条件が「≦」であるからであり、当該境界条件が「＜」である場合、ファイル内数値のＮ桁目の数字が下限数値のＮ桁目の数字よりも大きいか否かを判断することとなる。
【０３７４】
そして、下限数値のＮ桁目の数字以上でない場合（ステップＳ５２０５：Ｎｏ）、ステップＳ５００７に移行する。一方、下限数値のＮ桁目の数字以上である場合（ステップＳ５２０５：Ｙｅｓ）、桁数カウンタＮを１つデクリメントし（ステップＳ５２０６）、桁数カウンタＮがＮ＜０であるか否かを判断する（ステップＳ５２０７）。
【０３７５】
Ｎ＜０でない場合（ステップＳ５２０７：Ｎｏ）、下限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、Ｎ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する（ステップＳ５２０８）。
【０３７６】
いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合（ステップＳ５２０８：Ｎｏ）、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップＳ５２０５に戻る。
【０３７７】
一方、いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合（ステップＳ５２０８：Ｙｅｓ）、ステップＳ５００７に移行する。
【０３７８】
また、ステップＳ５２０７において、Ｎ＜０である場合（ステップＳ５２０７：Ｙｅｓ）、ステップＳ５００７に移行する。これにより、下限数値照合処理の一連の手順を終了する。
【０３７９】
そして、図５０に示したステップＳ５００７では、ステップＳ５２０７でＮ＜０である場合（ステップＳ５２０７：Ｙｅｓ）、下限数値の境界条件を充足していると判断し、一方、ステップＳ５２０２、ステップＳ５２０３、またはステップＳ５２０５ステップＳ５２０８でＮｏ、ステップＳ５２０８でＹｅｓと判断された場合、下限数値の境界条件を充足していないと判断する。
【０３８０】
上述した下限数値検出処理とこの下限数値照合処理により、数値の部分伸長を実現することができる。すなわち、ＸＭＬタグで括られた数値が存在する場合はその圧縮符号列を伸長するが、存在しない場合は伸長しない仕様となっている。具体的には、伸長の出力を２段バッファにて処理する。
【０３８１】
より具体的には、ヒットしたＸＭＬ開始タグからＸＭＬ終了タグまで部分伸長が実行され、１段目のテンポラリバッファに出力される。その伸長と並行して数値照合などが実行され、条件が満たされるとテンポラリバッファから伸長バッファに出力される。これにより、検索条件で指定されたタグに括られた数値の圧縮符号と同一圧縮符号のみを部分伸長することができるため、検索速度の高速化を図ることができる。
【０３８２】
（上限特定／比較処理手順）
つぎに、図４９に示した上限特定／比較処理の詳細な処理手順について説明する。図５３は、図４９に示した上限特定／比較処理手順を示すフローチャートである。図５３においては、図３５−１〜図３５−４に示した大小比較例を参照しながら説明する。
【０３８３】
まず、図３５−３で示したように、上限数値群マップ（４桁先頭数字６マップＭ４６）と省略マップＭ０２との論理積演算をおこなうことにより、上限マップＭ０５を得る（ステップＳ５３０１）。つぎに、ファイル番号ｉをｉ＝０とし、上限比較結果マップＭ０６を初期化（全ビットＯＦＦ）する（ステップＳ５３０２）。
【０３８４】
そして、上限マップＭ０５中、ｉ番目のビットがＯＮであるか否かを判断する（ステップＳ５３０３）。ビットがＯＦＦである場合（ステップＳ５３０３：Ｎｏ）、ステップＳ５３１０に移行する。
【０３８５】
一方、ビットがＯＮである場合（ステップＳ５３０３：Ｙｅｓ）、圧縮化ＸＭＬファイルＦの中から圧縮化ＸＭＬファイルＦｉを抽出する（ステップＳ５３０４）。このあと、上限数値検出処理を実行する（ステップＳ５３０５）。上限数値検出処理の詳細については図５４で後述する。なお、この上限数値検出処理により、圧縮化ＸＭＬファイルＦｉの中から、ファイル内数値の圧縮情報（図３５−３では圧縮情報３５０３）を抽出することができる。
【０３８６】
このあと、上限数値照合処理を実行する（ステップＳ５３０６）。この上限数値照合処理については図５５で後述する。そして、上限数値照合処理による照合結果により、上限数値の境界条件を充足しているか否かを判断する（ステップＳ５３０７）。
【０３８７】
充足していない場合（ステップＳ５３０７：Ｎｏ）、ステップＳ５３０５に戻る。一方、境界条件を充足している場合（ステップＳ５３０７：Ｙｅｓ）、上限比較結果マップＭ０６中、ｉ番目のビットがＯＦＦのままか否かを判断する（ステップＳ５３０８）。すでにＯＮになっている場合（ステップＳ５３０８：Ｎｏ）、ステップＳ５３０５に移行する。
【０３８８】
一方、ビットがＯＦＦである場合（ステップＳ５３０８：Ｙｅｓ）、そのｉ番目のビットをＯＦＦからＯＮにして（ステップＳ５３０９）、ステップＳ５３０５に戻る。ステップＳ５３１０では、ファイル番号ｉを１つインクリメントする（ステップＳ５３１０）。そして、ｉ＞ｎであるか否かを判断する（ステップＳ５３１１）。
【０３８９】
ｉ＞ｎでない場合（ステップＳ５３１１：Ｎｏ）、ステップＳ５３０３に戻る。一方、ｉ＞ｎである場合（ステップＳ５３１１：Ｙｅｓ）、図４９で示したステップＳ４９１１に移行する。これにより、上限特定／比較処理の一連の手順を終了する。
【０３９０】
（上限数値検出処理手順）
つぎに、図５３に示した上限数値検出処理の詳細な処理手順について説明する。図５４は、図５３に示した上限数値検出処理手順を示すフローチャートである。図５４において、まず、図５３のステップＳ５３０４で抽出された圧縮化ＸＭＬファイルのサーチを先頭から開始し、サーチが終了したか否かを判断する（ステップＳ５４０１）。ここで、サーチとは、検索条件で指定されたタグの圧縮符号と一致する圧縮符号の検出処理をいう。
【０３９１】
終了していない場合（ステップＳ５４０１：Ｎｏ）、サーチを継続する（ステップＳ５４０２）。そして、サーチ中に、検索条件で指定されたタグの圧縮符号と一致する圧縮符号が検出されるまでサーチを継続する（ステップＳ５４０２：Ｎｏ）。サーチ中に、検索条件で指定されたタグの圧縮符号と一致する圧縮符号が検出された場合（ステップＳ５４０２：Ｙｅｓ）、そのハフマン木１４０１を参照して、伸長開始フラグが検出されたＸＭＬ開始タグについてアクセス権があるか否か、すなわち、アクセス権フラグがＯＮか否かを判断する（ステップＳ５４０３）。
【０３９２】
アクセス権がない場合（ステップＳ５４０３：Ｎｏ）、ステップＳ５４０１に戻る。一方、アクセス権がある場合（ステップＳ５４０３：Ｙｅｓ）、一致検出された圧縮符号のタグを葉に持つハフマン木１４０１において伸長開始フラグが検出されたか否かを判断する（ステップＳ５４０４）。
【０３９３】
伸長開始フラグが検出されなかった場合（ステップＳ５４０４：Ｎｏ）、ステップＳ５４０１に戻る。一方、伸長開始フラグが検出された場合（ステップＳ５４０４：Ｙｅｓ）、以降の圧縮符号について伸長終了フラグが検出されたか否かを判断する（ステップＳ５４０５）。
【０３９４】
伸長終了フラグが検出されていない場合（ステップＳ５４０５：Ｎｏ）、伸長開始フラグの圧縮符号以降の圧縮符号を抽出し（ステップＳ５４０６）、ステップＳ５４０５に戻る。そして、伸長終了フラグが検出された場合（ステップＳ５４０５：Ｙｅｓ）、ステップＳ５３０６に移行する。
【０３９５】
また、ステップＳ５４０１において、サーチが終了した場合（ステップＳ５４０１：Ｙｅｓ）、ステップＳ５０１０に移行する。なお、この伸長開始フラグが検出されてから伸長終了フラグが検出されるまでの間に抽出された圧縮符号列を、以降、「数値の圧縮情報」と称す。
【０３９６】
（上限数値照合処理手順）
つぎに、図５３に示した上限数値照合処理の詳細な処理手順について説明する。図５５は、上限数値照合処理手順を示すフローチャートである。図５５において、上限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをＯＦＦにする（ステップＳ５５０１）。
【０３９７】
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する（ステップＳ５５０２）。不一致である場合（ステップＳ５５０２：Ｎｏ）、ステップＳ５３０７に移行する。一方、フィーダが一致した場合（ステップＳ５５０２：Ｙｅｓ）、桁数が一致するか否かを判断する（ステップＳ５５０３）。
【０３９８】
桁数が不一致である場合（ステップＳ５５０３：Ｎｏ）、ステップＳ５３０７に移行する。一方、桁数も一致する場合（ステップＳ５５０３：Ｙｅｓ）、桁数カウンタＮをＮ＝Ｎｍａｘに設定する（ステップＳ５５０４）。Ｎｍａｘは上限数値およびファイル内数値の桁数である。
【０３９９】
そして、ファイル内数値のＮ桁目の数字が上限数値のＮ桁目の数字以下であるか否かを判断する（ステップＳ５５０５）。ここで、判断基準として「上限数値のＮ桁目の数字以下」としたのは、数値範囲における上限数値の境界条件が「≧」であるからであり、当該境界条件が「＞」である場合、ファイル内数値のＮ桁目の数字が上限数値のＮ桁目の数字よりも小さいか否かを判断することとなる。
【０４００】
そして、上限数値のＮ桁目の数字以下でない場合（ステップＳ５５０５：Ｎｏ）、ステップＳ５３０７に移行する。一方、上限数値のＮ桁目の数字以下である場合（ステップＳ５５０５：Ｙｅｓ）、桁数カウンタＮを１つデクリメントし（ステップＳ５５０６）、桁数カウンタＮがＮ＜０であるか否かを判断する（ステップＳ５５０７）。Ｎ＜０でない場合（ステップＳ５５０７：Ｎｏ）、上限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、Ｎ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する（ステップＳ５５０８）。
【０４０１】
いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合（ステップＳ５５０８：Ｎｏ）、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップＳ５５０５に戻る。
【０４０２】
一方、いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合（ステップＳ５５０８：Ｙｅｓ）、ステップＳ５３０７に移行する。
【０４０３】
また、ステップＳ５５０７において、Ｎ＜０である場合（ステップＳ５５０７：Ｙｅｓ）、ステップＳ５３０７に移行する。これにより、上限数値照合処理の一連の手順を終了する。
【０４０４】
そして、図５３に示したステップＳ５３０７では、ステップＳ５５０７でＮ＜０である場合（ステップＳ５５０７：Ｙｅｓ）、上限数値の境界条件を充足していると判断し、一方、ステップＳ５５０２、ステップＳ５５０３、またはステップＳ５５０５でＮｏ、またはステップＳ５５０８でＹｅｓと判断された場合、上限数値の境界条件を充足していないと判断する。
【０４０５】
上述した上限数値検出処理とこの上限数値照合処理により、数値の部分伸長を実現することができる。すなわち、ＸＭＬタグで括られた数値が存在する場合はその圧縮符号列を伸長するが、存在しない場合は伸長しない仕様となっている。具体的には、伸長の出力を２段バッファにて処理する。
【０４０６】
より具体的には、ヒットしたＸＭＬ開始タグからＸＭＬ終了タグまで部分伸長が実行され、１段目のテンポラリバッファに出力される。その伸長と並行して数値照合などが実行され、条件が満たされるとテンポラリバッファから伸長バッファに出力される。これにより、検索条件で指定されたタグに括られた数値の圧縮符号と同一圧縮符号のみを部分伸長することができるため、検索速度の高速化を図ることができる。
【０４０７】
また、この数値範囲検索によれば、中間数値群を検出して省略マップＭ０２に反映させているため、中間数値群の出現マップにより特定される圧縮化ＸＭＬファイルに対して数値範囲内の数値の一致照合をするまでもなく、数値範囲内の数値の有無を検出することができる。
【０４０８】
また、下限数値群や上限数値群についてのみ数値の一致照合をおこなうが、ファイル内数値はフィーダに関連付けられているため、圧縮化ＸＭＬファイルＦｉの中から数値情報のみを高速に検索することができる。また、数値の圧縮情報どうしで一致照合しているため、フィーダや桁数の圧縮符号どうしの一致照合のみで大小比較をおこなうことができ、高精度な検索を高速でおこなうことができる。
【０４０９】
また、数値・文字出現頻度管理データ５００において、数字等の出現頻度を補正することにより、数値の一致照合や伸長の高速化を図ることができる。特に、検索対象ファイルに数値データと文字データが混在する場合に、数値の一致照合や伸長の高速化を図ることができる。
【０４１０】
以上説明したように、この発明の実施の形態によれば、治験データのようにタグの種類が複雑化し、かつデータ量が膨大なＸＭＬファイルの検索の効率化を図ることができるという効果を奏する。
【０４１１】
（付記１）コンピュータを、
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成手段、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力手段、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長手段、
として機能させることを特徴とする情報検索プログラム。
【０４１２】
（付記２）前記設定手段は、
前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、
前記伸長手段は、
前記検出手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を、前記ハフマン木を用いて伸長することを特徴とする付記１に記載の情報検索プログラム。
【０４１３】
（付記３）前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することを特徴とする付記１または２に記載の情報検索プログラム。
【０４１４】
（付記４）前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された検索キーワードの先頭文字データの圧縮符号に対し、前記検索キーワードと一致する文字列へのアクセスを許可するアクセス権フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記アクセス権フラグが設定された圧縮符号のみを検出することを特徴とする付記１または２に記載の情報検索プログラム。
【０４１５】
（付記５）前記コンピュータを、
前記入力手段によって入力された検索キーワードを、前記ハフマン木を用いて圧縮することにより、圧縮キーワードを生成する検索キーワード圧縮手段、
前記圧縮化ＸＭＬファイル内の圧縮符号列と前記検索キーワード圧縮手段によって圧縮された圧縮キーワードとを照合する照合手段、として機能させ、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段によって前記圧縮キーワードと一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする付記１または２に記載の情報検索プログラム。
【０４１６】
（付記６）前記検索キーワード圧縮手段は、
前記検索キーワードの先頭文字データ以外の残余の検索キーワードを、前記ハフマン木を用いて圧縮することにより、前記残余の検索キーワードに関する圧縮キーワードを生成し、
前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記検索キーワードの先頭文字データに関する圧縮符号と同一の圧縮符号に対し、前記残余の検索キーワードに関する圧縮キーワードとの照合を指示する照合フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記照合フラグが設定された圧縮符号を検出し、
前記照合手段は、
前記検出手段によって前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記残余の検索キーワードに関する圧縮キーワードとを照合し、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする付記５に記載の情報検索プログラム。
【０４１７】
（付記７）前記入力手段は、
前記検索条件として、さらに、前記検索キーワードによる前方一致検索の入力を受け付け、
前記設定手段は、
前記入力手段により前記前方一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記種別情報に関するＸＭＬ開始タグの圧縮符号に対し、前記圧縮キーワードとの照合を指示する照合フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記照合フラグが設定された圧縮符号を検出し、
前記照合手段は、
前記検出手段によって前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記圧縮キーワードとを照合し、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする付記５に記載の情報検索プログラム。
【０４１８】
（付記８）前記入力手段は、
前記検索条件として、さらに、前記検索キーワードによる後方一致検索の入力を受け付け、
前記検索キーワード圧縮手段は、
前記入力手段により前記後方一致検索が前記検索条件として受け付けられた場合、前記検索キーワードの先頭文字データ以外の残余の検索キーワードおよび前記ＸＭＬ終了タグを、前記ハフマン木を用いて圧縮することにより、前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードを生成し、
前記設定手段は、
前記入力手段により前記後方一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記検索キーワードの先頭文字データに関する圧縮符号と同一の圧縮符号に対し、前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとの照合を指示する照合フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記照合フラグが設定された圧縮符号を検出し、
前記照合手段は、
前記検出手段によって前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記残余の検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとを照合し、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする付記５に記載の情報検索プログラム。
【０４１９】
（付記９）前記入力手段は、
前記検索条件として、さらに、前記検索キーワードによる完全一致検索の入力を受け付け、
前記検索キーワード圧縮手段は、
前記入力手段により前記完全一致検索が前記検索条件として受け付けられた場合、前記検索キーワードおよび前記ＸＭＬ終了タグを、前記ハフマン木を用いて圧縮することにより、前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードを生成し、
前記設定手段は、
前記入力手段により前記完全一致検索が前記検索条件として受け付けられた場合、前記ハフマン木によって特定される圧縮符号のうち、前記ＸＭＬ開始タグに関する圧縮符号に対し、前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとの照合を指示する照合フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記照合フラグが設定された圧縮符号を検出し、
前記照合手段は、
前記検出手段によって前記照合フラグが設定された圧縮符号が検出された場合、当該圧縮符号以降の圧縮符号列と前記検索キーワードおよび前記ＸＭＬ終了タグに関する圧縮キーワードとを照合し、
前記伸長手段は、
前記ハフマン木による伸長済み文字列のうち、前記照合手段により一致照合された圧縮符号列からの伸長済み文字列のみ出力することを特徴とする付記５に記載の情報検索プログラム。
【０４２０】
（付記１０）コンピュータを、
コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の数値データの出現頻度に基づいて、ハフマン木を生成する生成手段、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段、
数値データおよび当該数値データの種別情報からなる検索条件の入力を受け付ける入力手段、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を抽出する抽出手段、
として機能させることを特徴とする情報検索プログラム。
【０４２１】
（付記１１）前記設定手段は、
前記種別情報に関するＸＭＬ終了フラグの圧縮符号に対し、当該ＸＭＬ終了タグまでの圧縮符号で伸長終了を指示する伸長終了フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号を検出し、
前記抽出手段は、
前記検出手段によって前記伸長終了フラグが設定されたＸＭＬ終了タグの圧縮符号が検出された場合、前記ＸＭＬ終了タグまでの圧縮符号列を抽出することを特徴とする付記１０に記載の情報検索プログラム。
【０４２２】
（付記１２）前記設定手段は、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬタグの圧縮符号に対し、当該ＸＭＬタグへのアクセスを許可するアクセス権フラグを設定し、
前記検出手段は、
前記圧縮化ＸＭＬファイルの中から、前記設定手段によって前記アクセス権フラグが設定されたＸＭＬタグの圧縮符号のみを検出することを特徴とする付記１０または１１に記載の情報検索プログラム。
【０４２３】
（付記１３）付記１または１０に記載の情報検索プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【０４２４】
（付記１４）コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成手段と、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段と、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力手段と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段と、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段と、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長手段と、
を備えることを特徴とする情報検索装置。
【０４２５】
（付記１５）コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の数値データの出現頻度に基づいて、ハフマン木を生成する生成手段と、
前記生成手段によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮手段と、
数値データおよび当該数値データの種別情報からなる検索条件の入力を受け付ける入力手段と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力手段によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定手段と、
前記ファイル圧縮手段によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出手段と、
前記検出手段によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を抽出する抽出手段と、
を備えることを特徴とする情報検索装置。
【０４２６】
（付記１６）コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の文字データの出現頻度に基づいて、ハフマン木を生成する生成工程と、
前記生成工程によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮工程と、
検索キーワードおよび当該検索キーワードの種別情報からなる検索条件の入力を受け付ける入力工程と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力工程によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定工程と、
前記ファイル圧縮工程によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出工程と、
前記検出工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を、前記ハフマン木を用いて伸長する伸長工程と、
を含んだことを特徴とする情報検索方法。
【０４２７】
（付記１７）コンテンツを構成するＸＭＬファイルに記述されているＸＭＬタグおよび当該ＸＭＬタグ以外の数値データの出現頻度に基づいて、ハフマン木を生成する生成工程と、
前記生成工程によって生成されたハフマン木を用いて、前記ＸＭＬファイルを圧縮するファイル圧縮工程と、
数値データおよび当該数値データの種別情報からなる検索条件の入力を受け付ける入力工程と、
前記ハフマン木によって特定される圧縮符号のうち、前記入力工程によって入力された種別情報に関するＸＭＬ開始タグの圧縮符号に対し、当該ＸＭＬ開始タグ以降の圧縮符号列の伸長開始を指示する伸長開始フラグを設定する設定工程と、
前記ファイル圧縮工程によって圧縮された圧縮化ＸＭＬファイルの中から、前記設定工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号を検出する検出工程と、
前記検出工程によって前記伸長開始フラグが設定されたＸＭＬ開始タグの圧縮符号が検出された場合、前記ＸＭＬ開始タグ以降の圧縮符号列を抽出する抽出工程と、
を含んだことを特徴とする情報検索方法。
【産業上の利用可能性】
【０４２８】
以上のように、本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法は、治験データのようなタグが多数含まれているＸＭＬ形式のコンテンツに適している。
【符号の説明】
【０４２９】
１１０５  ハフマン木生成部
１１０６  ファイル圧縮部
２６００  検索条件入力処理部
２６０１  設定部
２６０２  検索キーワード圧縮部
２６２０  部分伸長・照合処理部
２６２１  フラグ／テーブル設定部
２６２２  部分伸長部
２６２３  バイナリ照合部
２６２４  文字列置換部
【国際調査報告】
2008142800.tif 000070
2008142800.tif 000071
2008142800.tif 000072
2008142800.tif 000073