(57)【要約】【課題】従来は索引のサイズ縮小のため、分割文書単位で索引を作成するので、索引語の出現位置情報が分割文書の出現位置でなく分割文書単位で検索効率が悪く、また分割単位が全索引語同基準のため、高頻出の索引語は文書量の増加で検索サイズが巨大化する。【解決手段】索引語抽出部で文書から索引語と索引語の文書中での出現位置を抽出し、索引種類取得部で取得された抽出索引語の索引種類から作成する索引の索引種類を索引種類決定部で決定し、この索引種類で索引語の文書中での出現位置リストと索引種類と索引サイズの索引を索引生成部で作成し索引記憶部に格納する。索引種類取得部は索引記憶部に前記抽出索引語の索引が格納済みの時はその索引種類と索引サイズとを索引記憶部から取得し、索引種類決定部はこの索引種類と索引サイズから作成索引の索引種類を決定することで、索引サイズを上限値以内にする。【選択図】図１
2008209996.tif 000002
【特許請求の範囲】
【請求項１】
文書から索引語と該索引語の文書中での出現位置を抽出する索引語抽出部と、
索引語抽出部で抽出された索引語の索引種類を取得する索引種類取得部と、
索引種類取得部で取得された索引種類から作成する索引の索引種類を決定する索引種類決定部と、
異なる索引種類間で索引種類を変換する索引種類変換部と
決定された索引種類で索引語の文書中での出現位置のリストと索引種類と索引サイズを有する索引を作成する索引生成部と、
索引生成部で生成された索引を格納する索引記憶部とを有し、
索引種類取得部は、索引記憶部に索引語抽出部で抽出された索引語の索引が先に格納されている場合は索引語抽出部で抽出された索引語の索引種類と索引サイズとを索引記憶部から取得し、
索引種類決定部は、索引種類取得部が取得した索引種類と索引サイズから索引生成部が作成する索引の索引種類を決定し、
索引種類変換部は、索引種類決定部で決定された索引種類が索引記憶部の索引種類と異なる場合、索引記憶部の索引種類を索引種類決定部で決定された索引種類に変換することを特徴とする検索索引作成装置。
【請求項２】
索引生成部は、入力文書が構造化文書の場合に、構造単位で索引を作成する構成にされたことを特徴とする請求項１記載の検索索引作成装置。
【請求項３】
複数の文書に対して索引を作成する場合に、複数の文書を1つの文書に統合する文書構築部を有することを特徴とする請求項１又は２記載の検索索引作成装置。
【請求項４】
索引種類決定部は、索引種類取得部が取得した索引種類と、すべての索引語の索引サイズの合計に対する上限値から索引生成部が作成する索引の索引種類を決定する構成にされたことを特徴とする請求項１〜３の何れか１項に記載の検索索引作成装置。
【請求項５】
文書から索引語と該索引語の文書中での出現位置を抽出する索引語抽出工程と、
索引語抽出工程で抽出された索引語の索引種類を取得する索引種類取得工程と、
索引種類取得工程で取得された索引種類から作成する索引の索引種類を決定する索引種類決定工程と、
異なる索引種類間で索引種類を変換する索引種類変換工程と
決定された索引種類で索引語の文書中での出現位置のリストと索引種類と索引サイズを有する索引を作成し、生成された索引を索引記憶部に格納する索引生成工程とを有し、
索引種類取得工程は、索引記憶部に索引語抽出工程で抽出された索引語の索引が先に格納されている場合は索引語抽出工程で抽出された索引語の索引種類と索引サイズとを索引記憶部から取得し、
索引種類決定工程は、索引種類取得工程が取得した索引種類と索引サイズから索引生成工程が作成する索引の索引種類を決定し、
索引種類変換工程は、索引種類決定工程で決定された索引種類が索引記憶部の索引種類と異なる場合、索引記憶部の索引種類を索引種類決定工程で決定された索引種類に変換することを特徴とする検索索引作成方法。
【請求項６】
検索索引作成するためにコンピュータを
文書から索引語と該索引語の文書中での出現位置を抽出する索引語抽出手段、
索引語抽出手段で抽出された索引語の索引種類を取得する索引種類取得手段、
索引種類取得手段で取得された索引種類から作成する索引の索引種類を決定する索引種類決定手段、
異なる索引種類間で索引種類を変換する索引種類変換手段、
決定された索引種類で索引語の文書中での出現位置のリストと索引種類と索引サイズを有する索引を作成し、生成された索引を格納する索引記憶部とに格納する索引生成手段として機能させ、
さらに、索引種類取得手段は、索引記憶部に索引語抽出手段で抽出された索引語の索引が先に格納されている場合は索引語抽出手段で抽出された索引語の索引種類と索引サイズとを索引記憶部から取得し、
索引種類決定手段は、索引種類取得手段が取得した索引種類と索引サイズから索引生成手段が作成する索引の索引種類を決定し、
索引種類変換手段は、索引種類決定手段で決定された索引種類が索引記憶部の索引種類と異なる場合、索引記憶部の索引種類を索引種類決定手段で決定された索引種類に変換する機能をさせるための検索索引作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、電子文書データベースを検索するに際し用いられる索引を作成する装置及びその方法並びに索引を作成するためにコンピュータを実行させるプログラムに関する。
【背景技術】
【０００２】
大量の文書から指定された単語あるいは文字列を検索する技術がデータベースやウェブサーチエンジンなどにおいて利用されている。大量の文書から高速に検索を行うためには、単語の文書中での出現位置を記録した索引をあらかじめ作成しておく場合が多い（索引を形成する単語を以下では索引語と呼ぶ）。索引語としては文書中の文字列をバイグラムなどのNグラムに分割したものや、形態素などが用いられる。索引を参照することで文書全体を参照する必要がなく、効率的に検索単語を発見することができる。しかし、一般に文書量が非常に多くなると索引も巨大になり、索引を記憶装置に格納しておくのが困難になる。また、索引の読み込みに時間がかかるので検索効率も悪くなる。
【０００３】
そのため従来の索引作成装置では、ある一定の基準で文書を分割することで索引サイズを縮小している。分割された文書の１つ１つを分割文書と呼ぶことにし、分割文書に一意の識別子をつける。索引語が文書のどこに出現するかという出現位置情報として、分割文書の識別子を記録し、分割文書内に同一の索引語が出現してもそれらを重複して索引に記録しないようにすれば、索引に記録すべき情報は少なくなるので索引サイズは小さくなる（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開平9−114856号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の検索索引作成装置では、分割文書の単位で索引を作成することで索引全体のサイズを縮小することができるが、全ての索引語に関して分割文書中における出現位置情報を失うことになる。索引語としてバイグラムを用いる場合、例えば「あいうえ」を検索するためには「あい」と「うえ」という索引語の出現位置情報を索引から取得し、それらが連続して出現しているかどうかを検査することになる。索引から取得できる出現位置情報が「文書中の１０文字目に索引語が出現する」といった詳細な位置情報である場合、実際に二つの索引語が連続しているかどうか検査するには、それぞれの索引語の出現位置情報だけを照合するだけでよい。しかし、索引から取得できる出現位置情報が分割文書単位である場合、実際に二つの索引語が連続しているかどうか検査するには、分割文書内で「あい」と「うえ」という文字列が出現しているところを分割文書の再走査により列挙して照合しなければならず、検索効率が悪いという問題があった。
【０００６】
また、索引語毎の索引のサイズや索引全体のサイズに上限を設けることができず、分割する単位が全ての索引語に対して同じ基準で設定されるため、高頻出する索引語は入力文書量の増加に応じて索引が巨大化する。特に組込み機器などでは記憶装置や一時記憶装置（メモリ）を十分に確保できない場合が多いので、このような巨大な索引を利用することができず、検索できないという問題があった。
【０００７】
この発明は上記のような問題点を解決するためになされたもので、索引語毎の索引のサイズが上限値以下であることを保障し、高速に索引語の出現位置を同定できる索引を作成する検索索引作成装置を実現することを目的とするものである。
【課題を解決するための手段】
【０００８】
この発明に係る検索索引作成装置は、
文書から索引語と該索引語の文書中での出現位置を抽出する索引語抽出部と、
索引語抽出部で抽出された索引語の索引種類を取得する索引種類取得部と、
索引種類取得部で取得された索引種類から作成する索引の索引種類を決定する索引種類決定部と、
異なる索引種類間で索引種類を変換する索引種類変換部と
決定された索引種類で索引語の文書中での出現位置のリストと索引種類と索引サイズを有する索引を作成する索引生成部と、
索引生成部で生成された索引を格納する索引記憶部とを有し、
索引種類取得部は、索引記憶部に索引語抽出部で抽出された索引語の索引が先に格納されている場合は索引語抽出部で抽出された索引語の索引種類と索引サイズとを索引記憶部から取得し、
索引種類決定部は、索引種類取得部が取得した索引種類と索引サイズから索引生成部が作成する索引の索引種類を決定し、
索引種類変換部は、索引種類決定部で決定された索引種類が索引記憶部の索引種類と異なる場合、索引記憶部の索引種類を索引種類決定部で決定された索引種類に変換する。
【発明の効果】
【０００９】
この発明によれば、索引種類決定部により索引サイズに基づき索引種類を決めているので、すべての索引語の索引が最大索引サイズ以下にされることが可能で、索引全体のサイズも縮小可能である。また、索引種類の小さい索引ほど、より詳細な出現位置情報を持つため、この発明による索引サイズにより索引種類が決定される索引を用いることで、すべての索引語が一定の基準で分割された分割文書番号しか持たない索引を用いる場合よりも高速に検索することができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
図１はこの発明の実施の形態１による検索索引作成装置を示す構成図である。文書構築部７は入力文書を統括データファイル１０に保存されている文書に追加連結するものである。索引語抽出部１は統括データファイル１０の文書を走査し索引語とその出現位置を抽出する。索引種類取得部２は索引語抽出部１で抽出された索引語について、索引記憶部６から抽出された索引語の索引を参照し、その索引種類および索引サイズを取得する。索引種類決定部３は索引種類取得部２から得られた索引種類と索引サイズから、作成する索引の索引種類を決定するものである。索引生成部４は決定された索引種類によって指定された索引語の索引を生成する。索引種類変換部５は任意の索引種類で作成された索引を任意の索引種類に変換する。索引記憶部６は索引生成部４で生成された索引を記憶するものである。
【００１１】
図２は図１に示す検索索引作成装置による索引作成の手順を示した図である。以下図２を参照して索引作成の手順を説明する。文書構築部７により入力文書を取り込み（図２の１００１）、統括データファイル１０に保存されている文書に追加連結し（図２の１００２）、追加分に対して索引語抽出部１により索引語抽出（図２の１００３）を行う。次に索引語種類取得部２により抽出された索引語の索引語種類取得（図２の１００４）を行い、索引語種類決定部３により索引生成部４が作成する索引の種類を決定する（図２の１００５）。決定した索引種類と既存の索引種類が等しい場合は索引生成部４により索引生成（図２の１００７）を行い、異なる場合は索引種類変換部５により索引種類変換（図２の１００６）を行った後、索引生成部４により索引生成（図２の１００７）を行う。
【００１２】
以下、図３から図９までを参照しつつ、本実施の形態の検索索引作成装置における動作の概要について説明する。
図３は入力文書の例である。文書構築部７はこれらの入力文書を統括データファイル１０に保存されている文書に連結する。文書が連結された統括データファイル１０の概念図を図４に示す。本実施の形態では図４のように、入力された文書を順に統括データファイル１０の末尾に連結する。統括データファイル１０内の文書区切り格納テーブル１１に各文書の統括データファイル１０中での開始位置を格納する。統括データファイル１０によりすべての入力文書を１つの連結ファイルとして扱うことにより、後に述べるように、索引語の出現位置情報に統括データファイル１０の文書の先頭からの記憶容量数（バイト）を用いることができる。本実施の形態による検索索引作成装置で作成する索引は、この統括データファイル１０の文書における位置情報とする。統括データファイル１０は、登録した文書の内容を連続的に参照できればよいので、本実施の形態のように1ファイルによって構成する必要はなく、登録文書のリストのような構成になっていてもよい。
【００１３】
索引語抽出部１は統括データファイル１０の文書に含まれる文字列を取り出し、取り出した文字列から索引語となる部分文字列とその部分文字列の統括データファイル１０の文書内での詳細出現位置情報を抽出する。索引語は文書を検索する場合の検索語となりうる単語、あるいはその部分文字列とする。ここでは簡単のため、索引語は統括データファイル１０の文書から取り出した文字列中のすべての連続する２文字（バイグラム）とするが、この索引語は２文字以上の連続する文字列（Nグラム）や形態素などでもよい。
詳細出現位置情報は索引語が統括データファイル１０の文書内で出現する位置を表現するものとし、統括データファイル１０の文書の先頭からの記憶容量数（バイト）とする。図５に入力文書の例とそれから抽出される索引語と詳細出現位置情報を示す。索引語として入力文書の先頭から順に「そら」、「らの」、「のて」とすべての連続する２文字を抽出する。図５に示した詳細出現位置情報は索引語「です」のもので、「です」は３４番目、４４番目、１７７番目、２１１番目に現れるので、入力文書が１文字２バイトの文字列だとすると図５のような詳細出現位置情報になる。
【００１４】
索引種類取得部２は索引語抽出部１から得られた索引語の索引種類と索引サイズを索引記憶部６に格納されている索引語の索引から取得する。索引記憶部６に格納される索引語毎の索引とは、図６のように 索引語文字列１０１、ヘッダ部１０２、出現位置情報のリスト１０３の組である。ヘッダ部分１０２は索引種類を表す整数と、索引サイズと等しい整数を格納し、索引サイズは出現位置情報のリスト部分の記憶容量（バイト）とする。ヘッダ部分１０２は“索引種類,索引サイズ”の順でそれぞれ格納されている。図６の例では索引語文字列は「あい」、索引種類は“0”、索引サイズは“25”である。一般に出現位置情報のリスト１０３のサイズは登録文書量に応じて大きくなるが、ヘッダ部分１０２のサイズは変わらないので、ヘッダ部分１０２のみを取得することで高速に索引種類と索引サイズを取得することができる。索引種類取得部２は対象の索引語に対応する索引が索引記憶部６にない場合は、索引が未作成であるという索引種類を取得する。本実施の形態では索引種類が異なると出現位置情報の解釈方法が異なる。
【００１５】
本実施の形態では索引種類は“0”または“1”または2の累乗の整数“N”を取るものとすると、本実施の形態の出現位置情報は次の意味を持つ。索引種類が“0”の場合は詳細出現位置情報とする。索引種類が1あるいは2の累乗の整数“N”の場合は、規定サイズ（以下、分割単位サイズとする。）のN倍のサイズごとに統括データファイル１０の文書を分割した場合に、索引語が含まれる分割文書の連番番号を出現位置情報とする。索引種類が“1”以上の索引を作成する場合に、索引として格納されるべき分割文書の番号を取得するには、実際に文書を分割して保存しておく必要はなく、詳細出現位置情報から直ちに計算することができる。例えば、分割単位サイズが100バイト、索引種類が“2”、詳細出現位置情報が“560”の場合を考える。この場合、0〜99バイトまでの領域が番号“0”の分割文書、100〜199バイトまでの領域が番号“1”の分割文書となり、同様に100バイトごとに番号を振っていくとすると、詳細出現位置情報“560”が含まれる分割文書の番号は“5”と分かる。
【００１６】
索引種類決定部３は索引語に対応する索引種類と索引サイズから、索引に出現位置情報をさらに追加しても索引サイズがあらかじめ設定されたサイズ（以下、最大索引サイズとする。）内に収まるために必要な索引種類を決定する。決定した索引種類が既存の索引の索引種類と同じ場合は、索引種類決定部３は索引生成部４を呼び出し、索引生成部４に索引種類を渡す。決定した索引種類が既存の索引の索引種類と異なる場合は、索引種類決定部３は索引種類変換部５を呼び出す。索引種類変換部５は索引記憶部６に格納されている索引を索引種類決定部３が決定した索引種類の索引に変換し、索引記憶部６に保存する。変換の後、索引種類決定部３は索引生成部４を呼び出し、変換後の索引種類を渡す。
【００１７】
既存の索引がない場合は、索引種類決定部３は索引生成部４を呼び出し、索引が未作成であることを示す索引種類“-1”を渡す。
【００１８】
索引生成部４は索引種類決定部３で決定された索引種類と詳細出現位置情報に基づいて、索引を作成・更新する。索引種類が“-1”の場合は詳細出現位置情報により新規に索引を作成し、索引記憶部６に保存する。索引種類が“0”の場合は詳細出現位置情報を索引記憶部６の該当索引に追加する。索引種類が“N”の場合は、詳細出現位置情報と索引種類より分割文書番号を算出し、索引記憶部６の該当索引に追加する。分割文書番号の算出は（式１）により導出する。ただし、（式１）において[]はガウス記号で、[x]はxを超えない最大の整数を意味する。
【００１９】
【数１】
2008209996.tif 000003
【００２０】
索引種類変換部５は索引記憶部６に格納されている既存の索引を、索引種類決定部３で決定された索引種類に変換する。索引種類を“M”から“N”に変換する場合を説明する。ただし、NはMより大きいとする。索引の変換の手順を図７に示す。
まず、索引記憶部６から索引を取得する（図７の１１０１）。この索引の索引種類が“M”とする。取得した索引の出現位置情報のリスト（図６参照）について各要素を順次参照していき（図７の１１０２）、変換後の索引種類“N”における索引に変換し（図７の１１０３）、変換後のリストに未登録であれば登録する（図７の１１０４）。変換後のリストを索引として索引記憶部６に保存する（図７の１１０５）。変換前の索引種類が“M”で分割文書番号（出現位置情報）が“I”、変換後の索引種類が“N”の場合、変換後の分割文書番号（出現位置情報）は（式２）により導出することができる。ただし、（式２）において[]はガウス記号で、[x]はxを超えない最大の整数を意味する。
【００２１】
【数２】
2008209996.tif 000004
【００２２】
本実施の形態ではこの変換を簡単にするため索引種類を“0”または“1”または“2の累乗の整数”としたが、分割文書内の索引語の包含関係を判定する手段があれば任意の整数で定義してもよい。分割文書の索引語の包含関係を判定する手段として、例えば分割文書内の索引語を再検索して変換後の分割文書を判定する手段がある。
【００２３】
1つの索引語に関する索引の追加と索引種類の変換について具体的に説明する。例として図８に分割単位サイズが100バイト、最大索引サイズを40バイトとした場合の、索引語「あい」に関する索引を作成する過程と、索引種類による索引と索引サイズの変化を示す。索引語「あい」についての索引を新規に作成する場合は詳細位置情報索引により索引を作成し、索引種類を“0”とする。入力文書が追加され、その文書内に「あい」が出現していると、図２の索引生成１００７により出現位置情報のリストが追加され、索引サイズは増加する。詳細位置情報および分割文書番号を4バイトの整数で格納するとすると、図８の[１]では索引が5つあるので索引サイズは20バイトとなる。入力文書が追加され、出現位置情報のリストが追加されると、図８の[２]のように索引サイズは40バイトとなる。
【００２４】
さらに入力文書が追加され、出現位置情報の追加をする場合は最大索引サイズを超えるので索引種類を変更し、索引を変換する。図８の[２]から[３]への変換では100バイト単位で統括データファイル１０の文章を分割した分割文書番号による索引に変換している。図８の[２]の索引中、“2,10,14,26,40”は0バイト以上100バイト未満の位置であるので、これらは番号“0”の分割文書内に含まれるということになり、これら5つの詳細出現位置情報は“0”という1つの分割文書番号索引に変換される。同様に“100,150,180”は分割文書番号“1”に、“220”は“2”に、“1580”は“15”に変換される。この結果、図８の[３]における索引サイズは16バイトに縮小され、ヘッダ部分は索引種類が100バイト単位であることを示す“1”と索引サイズが16バイトであることを示す“16”に更新される。以後、索引語「あい」の索引は索引サイズが最大索引サイズに到達するまで索引種類“1”として追加する。
【００２５】
図８の[４]のように最大索引サイズより大きくなると、200バイト単位で統括データファイル１０の文章を分割した分割文書番号による索引に変換する。図８の[４]から[５]への変換では、索引種類“1”での出現位置情報“0,1”は0バイト以上200バイト未満の領域に相当するので、索引種類“2”での“0”という1つの分割文書番号索引に変換される。同様の変換により図８の[５]における索引サイズは28バイトに縮小される。
【００２６】
索引記憶部６は図９のように、図６に示す索引を格納する。本実施の形態では、図６における索引語文字列１０１をキー、ヘッダ部分１０２および出現位置情報のリスト１０３を値とするB+tree形式により格納し、索引語から索引を高速に参照できるようにする。この格納形式は他の形式でも良い。
【００２７】
以上の構成により、すべての索引語の索引が最大索引サイズ以下であることが保障され、索引全体のサイズも縮小される。また、索引種類の小さい索引ほど、より詳細な出現位置情報を持つため、この実施の形態の索引を用いることで、すべての索引語が一定の基準で分割された分割文書番号しか持たない索引を用いる場合よりも高速に検索することができる。例えば、索引語「あい」の索引が詳細出現位置情報を持ち、索引語「うえ」の索引が分割文書番号による出現位置情報を持つ場合に「あいうえ」を検索するには次のようにする。両者の出現位置情報を照合して「あい」の詳細出現位置情報のリストのうち、「うえ」の分割文書番号に対応する分割文書の領域に含まれるもののみを取得する。この取得には（式１）を用いることで容易に可能である。取得した詳細出現位置情報に該当する統括データファイル１０の文章の位置のみを再検査することによって、「あいうえ」が連続して出現しているかどうか判断することができる。
【００２８】
文書区切り格納テーブル１１を参照し、区切りの位置をまたいで検査しないことで、異なる文書をまたがった文字列を検索してしまうことはない。もし、索引語「あい」の索引も分割文書番号による出現位置情報であった場合には、両者を（式２）を用いて照合し、「あい」と「うえ」が含まれる索引種類のより小さい方の分割文書番号のリストを取得する。取得した分割文書番号に対応する分割文書領域に「あいうえ」が連続して出現しているかどうかは、従来通り分割文書内を再検査することで判断できる。
【００２９】
上記に述べた実施の形態において、上記の全ての機能あるいは一部の機能は、パーソナルコンピュータなどのソフトウェアとしてプログラム実行したり、ＣＰＵ(Central Processor Unit)などの組み込みソフトウェアやファームウェアとしてプログラム実行することで達成することもできる。
【００３０】
また、上記のソフトウェア等は、例えばＲＯＭ(Read Only Memory)、磁気ディスク、（ハードディスクやリムーバブルディスクなど）、不揮発性半導体メモリなどの記憶手段に予め保持しておいたものであってもよいし、例えばインターネット，ＬＡＮ(Local Area Network）、赤外線通信、Bluetooth、携帯電話のパッケト通信などの有線・無線通信手段を用いてサーバ上の記憶手段からダウンロードしたり、例えば、CD-ROM(Compact Disc - Read Only Memory)、CD-R(Compact Disc-Recordable）、DVD（Digital Versatile Disk)、ＭＯ（Magneto Optical)ディスク、磁気カード等の記憶媒体や、バーコード等が印刷されたカードなどの印刷媒体より配布・提供されるものであってもよい。この場合、記憶媒体等から読み出された上記ソフトウェアのプログラムコードが、上記実施の形態の機能を実現することとなる。
【００３１】
実施の形態２．
実施の形態１では文書を容量で分割し、その分割文書番号をもってヘッダ部分１０２、出現位置情報のリスト１０３を構成したが、入力文書がXML(Extended Markup Language)形式のような構造化文書である場合には、構造単位による出現位置情報を用いることができる。以下では構造化文書としてXML、構造単位としてXMLノードを用いる場合を説明する。
【００３２】
図１０はこの発明の実施の形態２による検索索引作成装置の構成図を示すものである。図１０において、ノード索引生成部２１はXMLノードに一意のID(Identification)を付与し（以下ノードIDとする）、ノード索引記憶部２２に索引を格納するものである。
【００３３】
ノード索引記憶部２２はノードIDからそのノードの階層レベルと親ノードのIDを取得できるように構築する。例えば特開2003-271443号公報に示されるような方法でこのような索引を作成できる。ノード索引記憶部２２には統括データファイル１０におけるノードの開始位置と終了位置も索引として格納し、取得できるようにする。この開始位置と終了位置は統括データファイル１０の文章の先頭からの記憶容量数（バイト）によって定義する。
【００３４】
文書構築部７は入力されたXML文書を統括データファイル１０の文章に統合する。本実施の形態では統括データファイル１０の文書はXML形式で構築し、入力XML文書は統括データファイル１０の文章の末尾に入力XML文書の構造を保ったまま連結する。
【００３５】
実施の形態１では索引語の出現位置情報として統括データファイル１０の文章における位置を示す整数あるいは分割文書番号として構成したが、本実施の形態では出現位置情報としてXMLノードのIDを持つ。図１１に示すように、索引は索引語文字列２０１、ヘッダ部分２０２、出現位置情報のリスト２０３からなる。ヘッダ部分２０２には“索引種類,最深階層レベル,索引サイズ”が格納される。索引種類および索引サイズは実施の形態１の場合と同様で、それぞれ索引種類を示す整数と出現位置情報のリスト２０３の記憶容量（バイト）を示す整数である。最深階層レベルは索引語を含むノードの中で、最も階層が深い（階層レベルが大きい）ものの階層レベルを格納する。階層レベルはXMLのルートノードの階層を“0”とした場合のノードの深さで定義する。図１１の場合、索引語「あい」に対する索引種類は“0”、最深階層レベルは“3”、索引サイズは“25”である。
【００３６】
索引種類が“0”の場合、索引語が出現する直属のノードのIDを出現位置情報とする。索引種類が“N”（Nは1以上の整数）の場合は、最深階層レベル以下の階層レベルのノード単位で索引を作成し、そのノードIDを出現位置情報とする。例えば図１２のような統括データファイルの場合で、索引語「あい」と「いう」の索引が図１３である場合、索引語「あい」は索引種類が“0”なのでノードIDが“c1”、“c1”、“c1”であるようなノードの直下に「あい」が出現することを意味する。以下では説明の便宜上、ノードIDを“ノード名”＋“出現順”で定義するが、実際には上記で述べたノード索引記憶部２２に格納されたノードIDを用いる。一方、索引語「いう」は索引種類が“1”であるので、最深階層レベル“2”以下のノード単位で出現位置情報を持っていることを意味する。例の場合は出現位置情報のリストにノードID“b1”を持つので、そのノード直下かそのノードに所属するノード内に「いう」が出現することを意味する。また出現位置情報にノードID“a2”を持つのでそのノードの直下に「いう」が出現することを意味する。
【００３７】
索引を作成する過程を説明する。実施の形態１と同様に、ある索引語の索引を新規作成する場合、索引種類を“0”として作成する。例えば図１４の場合、索引語「あい」が最初の“<c>”と対応する終了タグ“</c>”で囲まれた領域に出現するので、そのノードID“c1”を出現位置情報として出現位置情報のリスト２０３に格納する。同様にノードIDの異なる“<c>”要素内に「あい」が出現する場合は、そのノードIDを出現位置情報のリスト２０３に追加する。ヘッダ部分２０２にはノードID“c1”のノードの階層レベルである“3”を最深階層レベルとして格納する。もし、要素“<b>”の直下（“<c>”で囲まれていない領域）に索引語「あい」が出現する場合、その要素“<b>”に対応するノードIDを出現位置情報として追加する。このとき、最深階層レベルは“3”のままである。もし階層レベルが4以上のノード内に索引語が出現する場合はそのノードのノードIDを追加し、最深階層レベルを“4”に更新する。
【００３８】
出現位置情報を追加していき、索引が最大索引サイズよりも大きくなると、索引種類変換部５により索引を変換する。索引種類“0”から索引種類“1”へ変換するには次のようにする。最深階層レベルから1減算し、新しい最深階層レベルとしてヘッダ部分２０２を更新する。出現位置情報のリスト２０３に格納されたノードIDの内、新しい最深階層レベルより大きい階層レベルを持つノードのものは、その親ノードのIDをノード索引記憶部２２から取得し、親ノードIDに置き換える。このとき、すでにそのノードIDが格納されている場合は、重複して格納はしない。図１４の場合は、最初の“<c>”要素に対応するノードIDは最初の“<b>”要素に対応するノードIDに置き換える。親ノードの階層レベルが最深階層レベルよりも大きい場合は、親ノードのさらに親のノードのIDを取得し、これに置き換える。最深階層レベルよりも大きい階層レベルを持つノードは出現位置情報のリスト２０３に格納されていないので、索引種類“0”から索引種類“1”への変換ではこれは起こりえないが、索引種類“0”から索引種類“2”への変換では起こりうる。この変換により、例えば出現位置情報のリストに兄弟ノードが複数含まれていた場合、1つの親ノードに統合されることになり、索引サイズが縮小される。
【００３９】
索引変換後は索引種類“1”として索引を構築する。つまり、最深階層レベル以下のノードのIDを出現位置情報とし、出現位置情報のリストに追加する。索引種類が“1”以上の場合は最深階層レベル以下のノードIDを出現位置情報とする。
【００４０】
一般に索引種類“K”から索引種類“L”への変換では（LはKよりも大きいとする）、新しい最深階層レベルを（式３）で定義する。
【００４１】
【数３】
2008209996.tif 000005
【００４２】
1つの索引語に関する索引の追加と索引種類の変換について具体的に説明する。例として図１５に最大索引サイズを70バイトした場合の、索引語「あい」に関する索引を作成する過程と、索引種類の変換の過程を示す。ノードIDを格納するのに必要な記憶容量は10バイトとする。索引語「あい」についての索引を初めて作成する場合は、「あい」が出現する直属ノードのノードIDを出現位置情報のリストに追加し、索引種類を“0”として作成する。図１５の[１]は索引種類が“0”、最深階層レベルが“3”、索引サイズが20バイトであることを示している。入力文書が追加され、その中に「あい」が出現していると、出現位置情報のリストに追加される。図１５の[２]では出現位置情報のリストが追加され、索引サイズが70バイトとなっている。
【００４３】
索引サイズが最大索引サイズに達し、これ以上出現位置情報を追加することはできないので、索引種類の変換を行う。図１５の[２]から [３]への変換では索引種類を“0”から“1”に変更し、最深階層レベルを“3”から“2”に変更する。さらに、ノード“c1”、c2”がノード“b1”に含まれ、ノード“c5”、“c6”、“c8”、“c9”がノード“b4”に含まれるとすると、出現位置情報のリスト中の“c1,c2”を“b1”に、“c5,c6,c8,c9”を“b4”に置換する。この結果、索引サイズは30バイトに縮小される。
【００４４】
図１５の[３]以降は階層レベル“2”以下のノード単位で出現位置情報のリストに追加する。入力文書が追加され、出現位置情報のリストにノードIDが追加されることで、図１５の[４]では索引サイズが再び70バイトになっている。
【００４５】
これ以上出現位置情報を追加することはできないので、再度索引種類の変換を行う。図１５の[４]から [５]への変換では索引種類を“1”から“2”に変更し、最深階層レベルを“2”から“1”に変更する。ノード“b4”、“b5”、“b6”がノード“a2”に含まれ、ノード“b12”、“b13”、“b14”がノード“a4”に含まれるとすると、出現位置情報のリスト中の“b4,b4,b6”を“a2”に、“b12,b13,b14”を“a4”に置換する。この結果、索引サイズは30バイトに縮小される。
【００４６】
上記過程で、ノード“c1”がどのノードに含まれるのかは、“c1”の親ノードを取得することで可能である。
【００４７】
以上のように構成することにより、すべての索引語の索引が最大索引サイズ以下であることが保障され、なおかつXMLの構造単位で検索が可能な索引を作成することができる。また、実施の形態１の場合と同様に、索引種類が小さい索引ほど詳細な出現位置情報を持っていることになり、すべての索引語に対して大きい構造単位で索引を作成する場合に比べて高速に検索することができる。
【産業上の利用可能性】
【００４８】
この発明は、データベース、ウェブサーチエンジンや、カーナビゲーションシステムなど大量の文書から指定された単語あるいは文字列を検索するための索引作成に利用できる。
【図面の簡単な説明】
【００４９】
【図１】この発明の実施の形態１による検索索引作成装置を示す構成図である。
【図２】実施の形態１による検索索引作成装置の索引作成動作の説明図である。
【図３】入力文書の例を示す説明図である。
【図４】入力文書を統括データファイルに結合する例を示す説明図である。
【図５】実施の形態１における入力文書、抽出索引語および詳細出現位置情報例の説明図である。
【図６】実施の形態１における索引の例を示す説明図である。
【図７】実施の形態１における索引変換の動作の説明図である。
【図８】実施の形態１における索引作成過程の例を示す説明図である。
【図９】実施の形態１における索引記憶部の概念図である。
【図１０】この発明の実施の形態２の検索索引作成装置を示す構成図である。
【図１１】実施の形態２における索引例の説明図である。
【図１２】この発明の実施の形態２における統括データファイル例の説明図である。
【図１３】この発明の実施の形態２における索引の例を示す説明図である。
【図１４】この発明の実施の形態２における索引種類と構造化文書の構造との関係を示す概念図である。
【図１５】この発明の実施の形態２における索引作成過程の例を示す説明図である。
【符号の説明】
【００５０】
１；索引語抽出部、２；索引種類取得部、３；索引種類決定部、４；索引生成部、５；索引種類変換部、６；索引記憶部、７；文書構築部、１０；入力文書を統括データファイル、２１；ノード索引生成部、２２；ノード索引記憶部。
【図１】
2008209996.tif 000006
【図２】
2008209996.tif 000007
【図３】
2008209996.tif 000008
【図４】
2008209996.tif 000009
【図５】
2008209996.tif 000010
【図６】
2008209996.tif 000011
【図７】
2008209996.tif 000012
【図８】
2008209996.tif 000013
【図９】
2008209996.tif 000014
【図１０】
2008209996.tif 000015
【図１１】
2008209996.tif 000016
【図１２】
2008209996.tif 000017
【図１３】
2008209996.tif 000018
【図１４】
2008209996.tif 000019
【図１５】
2008209996.tif 000020