(57)【特許請求の範囲】
【請求項１】
コンピュータがアクセス可能な形式で格納される情報を検索するための検索システムであって、前記検索システムは、
検索対象となる情報を取得し、取得した情報を該情報の存在位置を示すポインタに対応付けて格納する情報格納部と、
前記検索対象となる情報から抽出された文字列に、文字列解析により得られるトークンを割当てる文字列解析部と、
トークンの索引上の前記情報内での位置を識別する位置識別値を定義付け、前記文字列解析部により割当てられたトークンに対し、対応する前記位置識別値の範囲を求める位置定義部と、
前記割当てられたトークンと、前記情報を識別する情報識別値と、該トークンの位置識別値とを対応付けて登録する索引データであって、対応する前記範囲が複数の位置識別値にわたるトークンに対しては、該トークンに隣接するトークンの位置を示す付加情報をさらに対応付けて登録する前記索引データを作成する索引作成部と、
検索トークンの照会を、前記付加情報を参照して前記索引データに登録される前記トークンの隣接関係を補正しつつ処理して、条件に合致した情報を探し出す検索処理部と、
前記合致した情報の少なくとも一部を含む検索結果として表示させるためのデータを作成する検索結果作成部と
を含み、
前記文字列解析部は、前記文字列を分割してトークンを割当てる分割部と、前記分割されたトークンを展開して、派生するトークンをさらに割当てる展開部とを含み、
前記位置定義部は、複数候補の境界での分割、およびトークン数を変化させる展開を考慮して、複数のトークン間で重複可能に前記位置識別値を定義付け、
前記検索処理部は、連結した複数の検索トークンによるフレーズ検索を、前記複数の検索トークンに一致する索引内の複数のトークンにわたって連続性が維持されることを前記条件として実行し、前記合致した情報について、さらに、トークン間の隣接関係を考慮してスコアを算出し、
前記検索結果作成部は、前記スコアにて前記合致した情報の並びがソーティングされた前記検索結果のデータを作成する、
検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報検索に関し、より詳細には、複合語などを含む文書の高品質な検索を可能とする検索技術に関する。
【背景技術】
【０００２】
近年、コンピュータ、インターネットなどの高速大容量通信基盤が普及し、膨大な数の非定型文書が作成されるようになり、また作成者の表現方法の多様化により文書の質も変化している。このような背景から、検索者が意図する文書を高速かつ的確に検索可能な検索システムの必要性がますます高まっている。
【０００３】
従来の検索システムでは、多くの場合、検索対象の文字列を、例えば形態素解析など適切な文字列解析方法を使用して文字、単語、センテンスなどの単位（以下、トークンとして参照する。）に分割し、元文書内におけるトークンの出現順に位置番号を与え、索引付けを行う。また、入力された検索語句についても、文字、単語、センテンスなど所定の単位（以下、検索トークンとして参照する。）に分割され、検索対象の文書について登録されたトークンが検索トークンに一致するか否かの判断に応じて、情報を検索結果として抽出するかどうかを決定する。フレーズ検索を行う場合には、各トークンに与えられた位置番号が用いられ、フレーズに含まれる検索トークンと一致したトークンに対し、連続する位置番号が与えられているか否かが判断される。そのため、フレーズ検索をサポートするためには、文書中で隣り合ったトークンには、位置番号の差分が固定（通常は１に固定）されるように索引付けなければならなかった。
【０００４】
上述のように、従来の検索システムでは、文書中で隣り合ったトークンの位置番号が連続していなければならないため、複合語など、展開するとトークン数が変化する語は、展開せずそのまま複合語として索引に保持するか、あるいは複合語を構成するより小さな単位の単語まで分割して索引に保持する手法をとることとなる。しかしながら、前者の複合語のまま保持する場合には、複合語を構成する単語では検索することができず、後者のより小さな単語単位まで分割して保持する場合には、ワイルドカード検索を実行することが非常に困難となってしまうという問題があった。なお、複合語とは、２つ以上の形態素によって形成された語である。
【０００５】
また、複合語と、より小さな単語単位まで分割したトークンとの両方を保持しようとする場合、従来の検索システムでは上記制約があるために検索ノイズが多くなってしまうという問題があった。図１０は、従来のトークン展開を行なう索引付けを一例として示す。図１０（Ａ）に示すように、この例では、「パソコンのデザイン」という文字列を対象とし、形態素解析により、「パソコン」が「パーソナル」および「コンピュータ」の２つのトークンに分割・展開される場合を想定している。展開後のトークンに位置番号を割当てる方法としては、図１０（Ｂ）に示すように展開後のトークンに対して順に連続する位置番号を与える手法と、図１０（Ｃ）に示すように展開後のトークンすべてに分割元と同一位置番号を与える手法が考えられる。しかしながら、図１０（Ｂ）に示す方法では、「パーソナルの」や「パソコンコンピュータ」といった検索語句に対しても検索がヒットしてしまい、検索ノイズが大きくなる。また図１０（Ｃ）に示す方法では、「パーソナルの」がヒットする一方、「パーソナルコンピュータ」の検索語句に対してヒットせず、検索ノイズおよび検索漏れが大きくなる。このように、従来の検索システムでは、複合語など、展開するとトークン数が変化する語を、効率的かつ高精度に検索できるように取り扱うことができなかった。
【０００６】
複合語を考慮した検索技術としては、これまで例えば特開平１１−２２４２６４号公報（特許文献１）、特開２００５−１６５７４８号公報（特許文献２）を挙げることができる。特許文献１では、入力された検索式に含まれている複合語を抽出し、その複合語を構成する単語を列記した単語リストに変換し、単語の索引を参照して、複合語を構成する単語に対応する文書の文書ポインタを取得するとともに、個別に保持する複合語の索引を参照して、検索式に含まれている複合語を含む文書の文書ポインタを取得し、複合語検索結果に応じて文書のスコアリングする文書検索技術が開示されている。特許文献２では、キーワード間の複合化規則に則って複数キーワードから複合語を生成し、検索インデックスを作成する技術が開示されている。
【特許文献１】特開平１１−２２４２６４号公報
【特許文献２】特開２００５−１６５７４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したように、検索者が意図した文書を膨大な数の文書から的確に検索するために、従来では、文書を記述する言語を特定して、文字列を解析してトークン分割することにより、単純な文字列一致検索よりも精度の良い検索を実現している。しかしながら、従来技術では、日本語やドイツ語などの多くの言語に見られる複合語や同義語などについては、これらの索引内展開、これらの部分一致検索やワイルドカード検索などを充分に効率的に行うことができなかった。
【０００８】
また、トークン分割を行なうための上記形態素解析法では、文法規則、辞書が参照され、トークン自体が有為な意味のある単位で分割および生成される。単語が活用形であった場合や別表記であった場合に、原型を同一位置番号に保持する。このため、形態素解析法は、辞書を参照することにより単語の活用なども考慮でき、検索漏れが少なく、情報検索の再現率を向上させることができる。しかしながら、形態素解析法は、文法や語彙を考慮するため、対象文書で使用されている言語を正確に特定しなければ、適切なトークンに分割することができない。対象文書の言語を誤って特定してしまった場合には、例え検索語が文書内に単語として存在したとしても、不適当なトークン分割により検索から漏れてしまう可能性があり、再現率が低下するという問題があった。また、日本語など「わかち書き」の慣例がなく単語分割境界のあいまいな言語では、複数の分割方法が考えられる場合があり、この場合も、不適当なトークン分割により検索から漏れてしまう可能性があり、再現率が低下するという問題があった。
【０００９】
さらに、上記特許文献１に開示される文書検索技術は、単語の索引とは別に保持する複合語の索引を参照しているため、出現した複合語の前後のトークンが検索に利用できず、複合語を含んだフレーズ検索を行なえるものではなく、また単語間の近接度を利用したスコアリングなどを行なえるものではなかった。さらに、複合語の索引が個別に保持されているため、他の単語の統計情報をスコアリングに反映できず、意図しない検索結果が得られる蓋然性が高くなるという問題点があった。
【００１０】
また上記特許文献２に開示される情報検索技術は、文書に含まれる複数の連結しないキーワードからも勝手に複合語が生成されてインデックス中に含められるため、必ずしも検索者の意図を反映した検索結果を与えない蓋然性があった。また、複合語が生成される前の情報を推測可能とするために、複合語を生成したときの条件と、生成した単語間の距離データとをインデックス内に付加する構成も開示されているが、なんらフレーズ検索を行なえるものではなく、また任意の単語間の近接度を定義可能なものでもなかった。
【００１１】
本発明は、上記問題点に鑑みてなされたものであり、本発明は、検索者の意図を的確に反映した検索結果を効率的に提供することを可能とする検索システム、索引作成装置、検索エンジン、索引作成方法、検索方法およびプログラムを構築することを目的とする。
【００１２】
また本発明は、複合語など展開するとトークン数が変化する語を、その原形のトークンおよび展開後の分割形のトークンの両方で検索可能とし、かつ、フレーズ検索、ワイルドカード検索および部分一致検索を効率的に実行可能とする検索システム、索引作成装置、検索エンジン、索引作成方法、検索方法およびプログラムを構築することを目的とする。
【００１３】
さらに、本発明は、日本語など単語分割の境界があいまいな言語により記述された文書や、言語を正確に特定できない文書に対する高品質な検索を可能とする検索システム、索引作成装置、検索エンジン、索引作成方法、検索方法およびプログラムを構築することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、上記従来技術の不都合に鑑みてなされたものであり、本発明では、検索対象となる情報から抽出された文字列に、文字列解析により得られるトークンを割当て、トークンの索引上の情報内での位置を識別する位置識別値を定義付け、割当てられたトークンに対し、対応する位置識別値の範囲を求める。そして、割当てられたトークンと、情報を識別する情報識別値と、該トークンの位置識別値とを対応付けるとともに、対応する範囲が複数の位置識別値にわたるトークンに対しては、該トークンに隣接するトークンの位置を示す付加情報をさらに対応付けて登録する索引データを作成する。
【００１５】
上記索引データ内では、各トークンは、それぞれに隣接するトークン、例えば次に続くトークンの情報内位置が特定可能に索引付けられている。そして、検索の際は、検索トークンの照会を、適宜、上記付加情報を参照して、索引データに登録されるトークンの隣接関係を補正しつつ処理する。このため、上記索引データは、複合語の展開など、前後でトークン数が変化するようなトークン展開が行なわれても、情報内でのトークン間の隣接関係の補正、およびトークン間の連続性の検証が可能とされ、もって、フレーズ検索やトークン間の近接度の算出が可能とされる。
【００１６】
上記索引データは、複合語など展開の前後でトークン数が変化する語の原形およびその分割形の両方のトークン、複数候補の境界での分割によるトークンなど、元の文字列から派生するあらゆるトークンを、その索引上の情報内での位置を統一的に定義付けて保持することができる。したがって、高い再現率かつ効率的な一致検索、ワイルドカード検索、部分一致検索およびフレーズ検索が実現される。また、複合語などより意味を正確に表現する語を検索文字列とした検索が可能となるため、検索者の意図をより正確に反映した検索結果を得ることが可能となり、適合率も向上される。
【００１７】
加えて、上記索引データは、複数候補の境界での分割によるトークンを保持できるため、トークン分割の粒度を任意とすることができ、索引データのサイズ等に制約がある場合にも対応することもできる。また、上記索引データでは、複数の分割境界での分割および展開により派生したトークンを、統合的に索引付けることが可能であるため、複合語のような分割境界に複数の候補がある場合、または複数候補の言語が特定された場合に、好適に対応することが可能とされる。
【００１８】
本発明では、トークンの割当ての際には、文字列を分割してトークンを割当て、さらに、辞書などを参照して、分割されたトークンを展開して、派生するトークンを割当てることができる。さらに本発明では、位置識別値を定義付ける際に、複数候補の境界での分割、およびトークン数を変化させる展開を考慮することができる。また本発明では、複数のトークン間で重複可能に上記位置識別値を定義付けることができる。
【００１９】
さらに本発明では、連結した複数の検索トークンによるフレーズ検索を、複数の検索トークンに一致する索引内の複数のトークンにわたって連続性が維持されることを条件として実行することができる。また本発明では、探し出された情報について、さらに、トークン間の隣接関係を考慮してスコアを算出し、該スコアにて情報の並びがソーティングされた検索結果のデータを作成することができる。これにより、複合語の原形など、より意味を正確に表現する語を含む文書に高いランクを与えるようにランク付けが可能とされるため、検索者の意図を的確に反映した文書が上位とされる良好な検索結果を得ることが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。
【００２１】
図１は、本実施形態の検索システム１００の概略図である。検索システム１００は、複数のクライアント・コンピュータ（以下、クライアントとして参照する。）１０２ａ〜ｃと、クライアント１０２からの検索要求を受領し、検索結果をクライアント１０２に返すサーバ・コンピュータ（以下、サーバとして参照する。）１０４とを含んで構成されている。
【００２２】
さらに検索システム１００は、ハードディスク装置などの記憶装置上に構成されＲＡＭなどの記憶領域にデータベース・アプリケーションを展開して実現されるリレーショナル・データベース（ＲＤＢ）１１６と、同様に記憶装置上に構成され記憶領域にファイル・サーバ・アプリケーションを展開して実現されるファイル・サーバ１１８とを含んで構成することができる。ＲＤＢ１１６およびファイル・サーバ１１８は、検索の対象となる情報（以下、単にコンテンツとして参照する。）を格納することができる。さらに検索システム１００は、図示しないルータなどを介して、インターネット１１４などのネットワークと接続されてもよく、ＵＲＬ（Uniform Resource Locator）またはＵＲＮ（Uniform Resource Name）などが示す記憶位置にあるコンテンツを検索対象としてもよい。
【００２３】
検索対象となるコンテンツとしては、ドキュメント・データ、イメージ・データ、マルチメディア・データなどを挙げることができ、これらのコンテンツは、文字列を、例えばデータ本体、タイトルや見出しなどのメタデータとして含むことができる。以下、各コンテンツに含まれ、検索処理の対象となる文字列を文書データとして参照する。
【００２４】
クライアント１０２と、サーバ１０４とは、ネットワーク１０８を介して相互接続されている。本実施形態では、ネットワーク１０８は、イーサネット（登録商標）やＴＣＰ／ＩＰなどのトランザクション・プロトコルによるＬＡＮ（Local Area Network）や、ＶＰＮ（Virtual Private Network）や専用線を使用して接続されるＷＡＮ（Wide Area Network）などとして構成することができるが、特に限定されるものではなく、クライアント１０２は、インターネット１１４を介してサーバ１０４に接続することもできる。
【００２５】
サーバ１０４は、ＣＧＩ(Common Gateway Interface)、ＳＳＩ（Server Side Include）、サーブレット、ウェブ・アプリケーションなどのサーバ・プログラムを実装して構成することができ、ＨＴＴＰプロトコルを使用して、クライアント１０２からの検索要求を処理し、クライアント１０２に検索結果を返す。クライアント１０２は、ウェブ・ブラウザ、プラグインなどを実装して構成することができ、検索用データ１０６を管理するサーバ１０４に検索要求を発行し、検索結果を取得する。
【００２６】
クライアント１０２は、パーソナル・コンピュータまたはワークステーションなどとして構成することができ、これまで知られた、いかなるシングルコア・プロセッサまたはマルチコア・プロセッサを含んでいてもよい。また、クライアント１０２は、ＷＩＮＤＯＷＳ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）、ＭＡＣ  ＯＳ（登録商標）など、いかなるオペレーティング・システムを実行させてもよい。
【００２７】
サーバ１０４は、いかなるシングルコア・プロセッサまたはマルチコア・プロセッサを含んでいてもよく、ＷＩＮＤＯＷＳ（登録商標）２００Ｘ、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）などのオペレーティング・システムにより制御され、クライアント１０２からの検索要求を処理し、クライアント１０２に検索結果を返すことができる限り、ウェブ・アプリケーション・サーバとして実装することもできし、分散コンピューティングのプロキシ・サーバとして実装することもできる。
【００２８】
サーバ１０４は、コンテンツを検索するための索引を含む検索用データ１０６を管理する。検索用データ１０６は、ハードディスク装置などの記憶装置上に構成されるファイルシステムやデータベース上に、コンピュータがアクセス可能なフォーマットで格納される。本実施形態のサーバ１０４は、ハードウェアおよびソフトウェアが協働して、クライアント１０２からの検索要求に応答して検索結果を返す検索エンジンとしての機能と、ＲＤＢ１１６、ファイル・サーバ１１８、インターネット１１４などの情報ソース上のコンテンツを検索するための検索用データ１０６を作成する索引作成装置としての機能との両方の機能を提供する。
【００２９】
サーバ１０４は、コンテンツを検索対象に加えるために検索用データ１０６に登録する場合、コンテンツに含まれる文書データに対して、形態素解析を適用してトークン列を生成し、トークンの文書データ内の出現位置を識別する情報と共に索引付けした後、検索用データ１０６に当該コンテンツの存在位置を示すＵＲＩ（Uniform Resource Identifier）などのポインタに対応付けて登録する。なお、検索用データ１０６は、特定のコンテンツについて複数の項目を対応付けて登録することができる限り、いかなる構成として実装することができ、また、リレーショナル・データベースやＯＯＤＢ(Object Oriented Database)などにより実装することもできる。
【００３０】
図１には、検索システム１００の他の実施形態も示されている。図１に示す他の実施形態では、サーバ１０４は、ハードウェアおよびソフトウェアが協働して、クライアント１０２からの検索要求に応答して検索結果を返す検索エンジンとしての機能を専ら提供する。一方、破線枠１２０で示す別途配置されたサーバ１１０は、ハードウェアおよびソフトウェアが協働して、検索用データ１１２の管理、コンテンツの取得、索引付けなどの索引作成装置としての機能を専ら提供するものである。図１に示した他の実施形態では、サーバ１０４は、クライアント１０２からの検索要求に応答して、検索用データ１０６を照会し、検索結果を作成し、クライアント１０２に対して検索結果を提示する。検索用データ１０６は、サーバ１１０が管理する検索用データ１１２に同期される。図１に示した他の実施形態では、クライアントからの検索要求に対する処理と、索引付け処理とを個別ノードにおいて実行することができるので、サービスの提供およびメンテナンスの面から有利である。
【００３１】
さらに大規模なシステムの場合に好適に適用できる他の実施形態としては、ハードウェアおよびソフトウェアが協働して検索エンジンとしての機能を専ら提供する複数のサーバ・ノードを、ロードバランサを介してネットワーク１０８と接続し、アクセスの混雑状況に応じて複数のサーバに検索要求を振り分けるよう構成し、検索による負荷を分散させることもできる。
【００３２】
図２は、本実施形態のサーバ１０４およびクライアント１０２上に実現される検索システム１００の機能ブロック２００を示す。図２に示すクライアント１０２に含まれる各機能部は、クライアント１０２のメモリ上にプログラムを展開し、プログラムの実行により各ハードウェア資源を動作制御することにより、クライアント１０２上に実現することができる。図２には示していないが、クライアント１０２は、ディスプレイ、入力装置などを含むユーザ・インタフェース部と、ネットワーク・インタフェース・カード（ＮＩＣ）などを含む通信処理部とを備え、ユーザ・インタフェース部への入力に従ってサーバ１０４へ検索要求を送信し、該要求に対してサーバ１０４から返信された検索結果をユーザ・インタフェース部のディスプレイなどに提示させる。
【００３３】
図２に示すサーバ１０４に含まれる各機能部は、サーバ１０４のメモリ上にプログラムを展開し、プログラムの実行により各ハードウェア資源を動作制御することにより、サーバ１０４上に実現することができる。図２には示していないが、サーバ１０４は、ネットワーク・インタフェース・カード（ＮＩＣ）などを含む通信処理部を備え、ネットワーク１０８を介して、クライアント１０２からの検索要求を受信し、検索処理を実行し、検索結果をクライアント１０２へ送信する。さらにサーバ１０４は、上記通信処理部を用いて、ネットワーク１０８を介してコンテンツを取得して、索引付けし、検索用データ１０６に登録する。以下、サーバ１０４の機能を、各処理段階ごとに分けて、より詳細に説明する。
【００３４】
（１）サーバによる情報収集
サーバ１０４は、検索対象として追加または更新する情報を収集するコンテンツ収集部２１０を含んで構成することができる。コンテンツ収集部２１０は、プロセッサの実行空間を提供するＲＡＭなどにプログラムを展開することにより、サーバ１０４上に実現される。コンテンツ収集部２１０は、リレーショナル・データベース、コンテンツ管理システム、コラボレーション・システム、ファイルシステムなど種々の情報ソースから、潜在的な検索対象となるコンテンツを巡回収集し、収集したコンテンツと該コンテンツのポインタとを対応付けてコンテンツ格納部２１２に一時的に格納する。本実施形態では、コンテンツ収集部２１０は、収集範囲とされるＲＤＢ１１６、ファイル・サーバ１１８、インターネット１１４上の所定ＵＲＬなどの情報ソースからコンテンツを巡回収集するよう構成されている。
【００３５】
コンテンツ格納部２１２は、ハードディスク装置などの記憶装置上にデータベースまたはファイルシステムとして構成され、収集したコンテンツを検索可能とする処理を施すための一時記憶領域を提供する。なお、巡回収集されるコンテンツからは、少なくとも文書データを抽出することができ、イメージなどテキスト以外のオブジェクトがリンクにより埋め込まれている場合には、テキスト以外のオブジェクト自体を取得しなくともよい。上記コンテンツ収集部２１０は、予め設定されたスケジュールに従うなど、任意のタイミングで巡回収集を開始することができる。なお、サーバ１０４を、該サーバ自身が個別に備えるデータベースの管理機能とした全文検索などに適用する場合などは、コンテンツ収集部２１０は、必ずしも要するものではない。
【００３６】
（２）サーバによる文字列解析
サーバ１０４は、さらに文字列解析部２２０を含んで構成される。文字列解析部２２０は、コンテンツ格納部２１２に格納された種々のデータ形式のコンテンツから、文書データを抽出する。より具体的には、文字列解析部２２０は、ＨＴＭＬ（HyperText Markup Language）やＸＭＬ（eXtensible Markup Language）などの構造化言語により記述されたコンテンツについては、タグの除去処理などを施し、文書データに変換する。また文字列解析部２２０は、ＰＤＦ（Portable Document Format）などバイナリ形式のデータについても、適切な文書フィルタを使用して文書データに変換する。また、ＯＣＲ（Optical Character Recognition）処理を施して、イメージ・データから文書データを抽出することもできる。文字列解析部２２０が取扱可能なデータ形式は、特に限定されるものではなく、データ形式に応じた文書フィルタ・モジュールを備えることにより、マルチ・ソース検索が可能となるように構成することができる。
【００３７】
さらに文字列解析部２２０は、文書データに対し文字列解析処理を施して、文書データから抽出される文字列に、所定粒度で分割して得られたトークン、および展開して得られたトークンを割当てて、元のコンテンツに対応付けて、文字列解析の結果として解析データを解析データ格納部２１４に格納する。解析データは、例えば、対応するコンテンツに一意に割当てるコンテンツ識別値（CONTENT_ID）と、該コンテンツのＵＲＩなどのポインタとに関連付けられて格納される。文字列解析部２２０は、プロセッサの実行空間を提供するＲＡＭなどにプログラムを展開することにより、サーバ１０４上に実現され、さらにトークン分割部２２２およびトークン展開部２２４のモジュールを備える。解析データ格納部２１４は、ハードディスク装置などの記憶装置上にデータベースまたはファイルシステムとして構成され、コンテンツの解析データを蓄積するための記憶領域を提供する。
【００３８】
トークン分割部２２２は、文書データに対し形態素解析法を実施して、辞書格納部２２６が格納する文法規則や辞書を参照しながら、文字列からトークンを切り出して分割する。なお、トークン分割部２２２による初期の分割の粒度は、任意であるが、好適には、複合語など大きな意味単位の語を残すように分割することができる。トークン展開部２２４は、同様に、辞書格納部２２６が格納する辞書を参照しながら、分割されたトークンに対し、必要に応じて、表記の揺れ、活用語、同義語、複合語および略語を展開し、派生したトークンを付加してゆく。トークンの展開のために用意することができる辞書としては、同義語のトークン（列）を関連付けて登録する同義語辞書、複合語のトークンと該複合語を構成するさらに小さな意味単位のトークン列とを関連付けて登録する複合語辞書、および、略語と該略語が表す語とのトークン（列）を関連付けて登録する略語辞書など挙げることができる。種々の辞書を用いてトークンを展開し、派生したトークンを文字列に割当てることにより、情報検索の再現率を向上させることが可能となる。他には、係り受けなどの構文解析、意味解析、文脈解析、固有表現抽出など、他のテキスト・マインイングを施すことにより、トークン間の関連性を抽出し、トークンに対し関連情報を表すトークン（列）を追加して割当てることもできる。
【００３９】
なお、トークンの展開は、複合語の展開など、その展開の前後でトークン数が変化する場合がある。以下では、説明の便宜上、前後でトークン数が変化する展開として、大きな単位のトークンから小さな単位のトークン列へ分解する場合を例に説明する。しかしながら、トークンの展開方法は、特に限定されるものではなく、小さな単位のトークン列を結合し、大きな単位のトークンへ展開することもできる。
【００４０】
以下、トークン分割部２２２およびトークン展開部２２４によるトークン分割および展開の処理を説明する。図３は、テキストから索引付けまでの文字列解析部２２０、および後述する索引構築部２３０が実行する処理を、各処理により生成されるデータ構造とともに示す概略図である。以下の説明では、コンテンツの文書データ部分が、「パソコンのデザイン」というテキスト３００で与えられているものとする。上記のテキスト３００に対し、形態素解析を適用すると、トークン分割部２２２は、テキスト３００を「パソコン」３１０ａ、「の」３１０ｂ、「デザイン」３１０ｃの３つのトークンに分割してテキスト３００に割当てる。
【００４１】
一方、辞書格納部２２６が格納する辞書には、「パソコン」３２２ａが、複合語である「パーソナルコンピュータ」３２２ｂの略語であり、さらに、この複合語から「パーソナル」３２２ｃと、続く「コンピュータ」３２２ｄの２つのトークンに分割可能であることを示すエントリ３２０があるものとする。上記トークン３１０に対し、展開を適用すると、トークン展開部２２４は、「パーソナルコンピュータ」のトークン３２２ｂと、「パーソナル」「コンピュータ」のトークン列３２２ｃ，３２２ｄとを、「パソコン」３２２ａを親とするトークン（列）として付加する。ここで、展開前のトークンを親トークンとして定義し、該親トークンから展開により派生したトークン（列）を子トークンとして定義する。また、展開により形成される一群のトークン（列）をファミリとして定義する。
【００４２】
トークンの解析処理中、文字列から分割されたトークンおよび派生したトークンは、トークン間の位置関係を維持するデータ構造として解析データに書き込まれる。解析データのデータ構造は、特に限定されないが、例えば、コンテンツ中の文書データにおけるトークンおよび文書データ中での文字位置の組を概ね出現順につなげた構造とすることができる。また、ファミリを形成するトークンについては、好適には、例えばファミリを識別する識別値（FAMILY_ID）を割当ててることができる。さらに、トークンの解析処理中に、各トークンについて、ＨＴＭＬやＸＭＬのタグなどからその重要度を判定し、検索時のランク付けのために、トークンの重要度を関連付けることもできる。
【００４３】
上記文字列解析部２２０は、管理者などからの外部指令に応答したり、予め設定されたスケジュールに従って、または所定量の更新または追加すべきコンテンツがコンテンツ格納部２１２に新たに格納されたことに応答したりして、未処理のコンテンツに対する文字列解析を開始することができるが、特に限定されるものではない。トークン分割部２２２およびトークン展開部２２４は、本実施形態では、プロセッサの実行空間を提供するＲＡＭなどにプログラムを展開することにより、ハードウェアおよびソフトウェアが協働して統合的に機能するトークン割当部としてサーバ１０４上に実現される。
【００４４】
（３）サーバによる索引作成
再び図２を参照すると、サーバ１０４は、索引構築部２３０を含んで構成されている。索引構築部２３０は、解析データ格納部２１４に格納された解析データを読み出して、索引付けを施して索引データを作成し、索引格納部２１６に格納する。索引構築部２３０は、プロセッサの実行空間を提供するＲＡＭなどにプログラムを展開することにより、サーバ１０４上に実現され、さらにトークン位置定義部２３２および文書内索引作成部２３４のモジュールを備える。索引格納部２１６は、ハードディスク装置などの記憶装置上にデータベースまたはファイルシステムとして構成され、クライアント１０２からの検索要求に対し迅速に応答可能なデータ構造で上記索引データを格納する。
【００４５】
索引格納部２１６が格納する索引データは、好適には、文書データ中のトークンの出現位置を示す情報を含んだ転置インデックス（Inverted Index）として構成することができる。しかしながら、索引データのデータ構造は、トークンと、当該トークンを文書データ内に有するコンテンツと、該文書データ中の当該トークンの出現位置とが対応付けられる限り、特に限定されるものではない。
【００４６】
トークン位置定義部２３２は、各解析データに含まれる各トークン間の位置関係から、各トークンに対して、文書内位置番号（TOKEN_POS：以下、単に位置番号として参照する。）を定義して、割当てる。上記位置番号（TOKEN_POS）は、索引上、コンテンツ内での位置を識別する。特に、トークン数を変化させる展開によりファミリを形成しているトークンが含まれる場合には、全体の位置番号は、そのトークン数の変化が考慮されて補正されることとなる。より具体的には、トークン位置定義部２３２は、これらのトークン間の位置関係から、各トークンの開始位置を示す位置番号と、終了位置を示す位置番号、つまり該トークンに対応する位置番号の範囲を求める。そして、トークン位置定義部２３２は、開始位置を示す位置番号を各トークンの位置番号（TOKEN_POS）として定義し、トークン数を変化させる展開によりファミリを形成しているトークンについては、適宜、その次に続くべきトークンの位置番号を示す付加情報（NEXT_POS）をさらに求める。上記位置番号（TOKEN_POS）および付加情報（NEXT_POS）は、後述するフレーズ検索や、近接度によるランク付けのために用いることができる。
【００４７】
トークン位置定義部２３２および文書内索引作成部２３４による索引付けは、概略的には以下のように実行される。ここで、再び図３を参照する。上述したように、図３に示す例では、「パソコンのデザイン」という文書データ部分のテキスト３００は、文字列解析部２２０により、「パソコン」「の」「デザイン」という３つのトークン３１０に分割され、さらに「パーソナルコンピュータ」のトークンと、「パーソナル」「コンピュータ」のトークン列とが、「パソコン」を親とする子トークンとして付加されている。本実施形態のトークン位置定義部２３２は、最初の分割時の３つの親トークンの出現順ではなく、展開により派生した子トークンを含むトークンの集合の中から、より小さな単位のトークンを用いて編成されるトークン列（以下、基本トークン列として参照する）を基準として位置番号を定義する。
【００４８】
図３に示す例では、トークン位置定義部２３２は、「パーソナル」「コンピュータ」「の」「デザイン」といった単位のトークン３３２ａ〜ｄに対し、順に連続した位置番号を割当てることとなる。つまり、トークン位置定義部２３２は、展開前の親トークン「パソコン」３１０ａが含まれるファミリ内の、最も大きなトークン数に分割されたトークン列によって、親トークン３１０ａを置き換えて、基本トークン列３３２を編成し、割当てる位置番号を補正する。一方、基本トークン列を構成するもの以外のトークン（以下、付加トークンとして参照する）については、トークン位置定義部２３２は、その付加トークンが基本トークン列中のどのトークン（列）に対応するかを求めて、開始位置に対応する位置番号をその付加トークンの位置番号（TOKEN_POS）として割当て、さらに次に続くべきトークンの位置番号を付加情報（NEXT_POS）として関連付ける。位置番号は、複数のトークン間で重複可能に定義されることとなる。
【００４９】
図３に示す例では、「パソコン」３３４ａは、基本トークン列３３２の「パーソナル」３３２ａおよび「コンピュータ」３３２ｂに対応するため、「パーソナル」３３２ａと同一の位置番号「０」が割当てられ、さらに付加情報「２」が関連付けられる。同様に、「パーソナルコンピュータ」３３６ａには、「パーソナル」３３２ａと同一の位置番号「０」が割当てられ、付加情報「２」が関連づけられる。付加トークンの次に続くべきトークンの位置番号は、基本トークン列中の対応する最後尾のトークンの位置番号に、所定の固定値（１）を加算した値とすることができる。
【００５０】
なお本実施形態では、付加情報（NEXT_POS）として、次に続くトークンの位置番号を保持しているが、他の実施形態では、索引データの省容量化および検索効率の観点から、当該付加トークンと次に続くトークンと間の位置番号の差分値を保持することもできる。また、差分値が所定の固定値（１）で有る場合には、付加情報（NEXT_POS）を省略することもできる。また、本実施形態では、開始位置に対応する位置番号を各トークンの位置識別値として定義しているが、索引上コンテンツ内での各トークンの位置を識別できる限り、トークンの位置識別値は特に限定されるものではない。同様に付加情報も、トークン間の隣接関係を示す情報である限り、次に続くトークンの上記位置番号または上記差分値に限定されるものではない。例えば、他の実施形態では、終了位置に対応する位置番号をトークンの位置識別値とし、前に来るトークンの位置番号またはその差分値を関連づけることもできる。トークン位置定義部２３２は、本実施形態では、それぞれ、プロセッサの実行空間を提供するＲＡＭなどにプログラムを展開することにより、ハードウェアおよびソフトウェアが協働して機能する位置定義部としてサーバ１０４上に実現される。
【００５１】
図２に示す文書内索引作成部２３４は、コンテンツ毎に、トークン、位置番号（TOKEN_POS）、および適宜付加情報（NEXT_POS）を対応づけて、文書データ内での索引である索引エントリ３３０を作成する。索引エントリ３３０のデータ構造は、特に限定されるものではないが、例えば、各トークン毎に、位置番号（TOKEN_POS）、および適宜付加情報（NEXT_POS）を整理した配列に、コンテンツ識別値（Content_ID）を関連付けたものとして構成することができる。
【００５２】
索引構築部２３０は、各解析データ（コンテンツ）について得られた索引エントリ３３０−１〜Ｎを用いて、各トークン毎に全コンテンツにわたって整理し、逆引き索引付けを実行する。そして索引構築部２３０は、逆引き索引付けにより、転置インデックスなどとして構成される索引データを作成して、索引格納部２１６に格納する。文書内索引作成部２３４は、管理者などからの外部指令に応答したり、予めスケジュールされた時刻の到来や時間間隔の経過に応答したり、または解析データ格納部２１４に新たに解析データが追加されたことに応答したりして、索引付け処理を開始することができるが、特に限定されるものではない。
【００５３】
また、索引データは、単一の索引データとして構成してもよく、または、検索のために最適化された主インデックスと、まだ主索引データに編成されていない索引エントリの内容を含む差分インデックスとに分けて構成することもできる。この場合、索引構築部２３０は、文書内索引作成部２３４と同様に任意のタイミングにて、差分インデックスの内容を主インデックスに編成し、全索引の再構成を行なうよう構成される。索引構築部２３０および文書内索引作成部２３４は、本実施形態では、それぞれ、プロセッサの実行空間を提供するＲＡＭなどにプログラムを展開することにより、ハードウェアおよびソフトウェアが協働して統合的に機能する索引作成部としてサーバ１０４上に実現される。
【００５４】
また索引構築部２３０は、索引付け処理中、コンテンツの重複に対応する処理、リンク構造などに応じたコンテンツ自体の重要度を算出する処理などを実行することもできる。さらに索引構築部２３０は、ｔｆ−ｉｄｆ（Term Frequency inverse Document Frequency）など統計解析法を実装することにより、索引全体における各トークンの重要度を算出して付加することができ、また、文書内でのトークンの出現頻度を算出して付加することもできる。さらに索引構築部２３０は、索引付けが完了した後、例えば、元情報ソース上のアクセス制御リスト（Access Control List:ＡＣＬ）のアクセス権を継承したスコープを定義し、ユーザの権限に応じた検索結果を生成するよう構成することもできる。なお、図１に示した検索用データ１０６，１１２は、図２に示す索引格納部２１６および解析データ格納部２１４が格納する索引データおよび解析データを含んで構成することができる。解析データは、検索結果に含ませるコンテンツ・サマリなどを生成するためなどに使用することもできる。
【００５５】
（４）サーバによる検索処理
再び図２を参照すると、サーバ１０４は、検索部２４０をさらに含んで構成されている。検索部２４０は、クライアント１０２からの検索要求に応答して、該検索要求に含まれる検索式について、索引格納部２１６の索引データと照合しながら検索処理を実行し、検索結果をクライアント１０２へ返す。検索部２４０は、プロセッサの実行空間を提供するＲＡＭなどにプログラムを展開することにより、サーバ１０４上に実現され、さらに検索要求受付部２４２、検索結果作成部２４４および検索処理部２４６のモジュールを備える。
【００５６】
一方、クライアント１０２は、ウェブ・ブラウザ、プラグインなどのソフトウェアと、プロセッサ、該プロセッサの実行空間を提供するＲＡＭなどのハードウェアとが協働して機能する検索照会部２６０を含んで構成され、さらに検索要求部２６２および検索結果表示部２６４のモジュールを備える。検索時には、クライアント１０２の検索要求部２６２は、例えばブラウザ画面上の検索ボタンがクリックされたことに応答して、検索テキスト・ボックスに所定の検索言語に従って入力された検索式を含む検索要求をサーバ１０４に送信する。
【００５７】
検索要求受付部２４２は、クライアント１０２の検索要求部２６２から検索要求を受領し、受領された検索要求を解析して、検索クエリを検索処理部２４６に発行する。上記検索要求は、検索文字列、検索文字列間を接続する論理演算子などの検索式などを含むことができる。また検索文字列は、形態素解析などにより検索トークン（列）に分割することができる。検索文字列の分割の粒度は、任意であるが、好適には、複合語など大きな意味単位の語を残すように分割することができる。
【００５８】
検索クエリを受領すると検索処理部２４６は、索引格納部２１６の索引データに対する照会を実行して、当該照会に対応する照会集合を取得する。検索文字列が、図３に示す例の「パソコン」や「コンピュータ」など、単一単語の検索トークンである場合には、検索トークンに一致するトークンを文書データ中に含むコンテンツが、索引データから容易に検索され、照会集合に加えられる。検索文字列が「パーソナルコンピュータ」など複合語である場合には、「パーソナルコンピュータ」といった単一検索トークンを用いた一致検索、または「パーソナル」「コンピュータ」といった検索トークン列を用いたフレーズ検索によって照会集合を求めることができる。検索文字列が「コンピュータのデザイン」で有る場合には、「コンピュータ」「の」「デザイン」に分割され、これらのフレーズ検索によって照会集合を求めることができる。
【００５９】
（４−１）フレーズ検索
連結した複数の検索トークンを用いたフレーズ検索では、検索処理部２４６は、索引内のトークンに付された付加情報（NEXT_POS）を参照して、文書内でのトークンの隣接関係を補正しつつ、その連続性を検証する。より具体的には、フレーズ検索では、第１の検索トークンを含むコンテンツが検索され、そのコンテンツの当該トークンの位置番号および、適宜付加情報（NEXT_POS）が取得され、その次に続くべきトークンの位置番号が求められる。そして、次に来るべきトークンの位置番号に第２の検索トークンが存在するか否かが判定され、存在する場合には検索トークン間の連続性が確認されることとなる。そして、検索処理部２４６は、検索トークン列すべてについて連続性が確認されたコンテンツを照会集合に加える。
【００６０】
上述の例では、「パーソナル」「コンピュータ」の検索トークン列は、コンテンツ（CONTENT_ID=1）内で、それぞれ一致するトークンが「０」「１」の位置番号で示す位置に出現し、かつ「パーソナル」の次に続くべきトークンの位置番号の差分が１であるため、コンテンツ（CONTENT_ID=1）はヒットとなり照会集合に加えられる。「コンピュータ」「の」「デザイン」の検索トークン列を用いたフレーズ検索では、コンテンツ（CONTENT_ID=1）内では、それぞれ「１」「２」「３」の位置番号に出現し、かつ、それぞれに続くべきトークンの位置番号の差分が１であるため、ヒットとなる。「パソコン」「の」「デザイン」の検索トークン列を用いたフレーズ検索では、コンテンツ（CONTENT_ID=1）内では、それぞれ「０」「２」「３」の位置番号に出現し、「パソコン」については、差分が２で次に続くべきトークンの位置番号が２であり、「の」については差分が１であるため、連続性が確認され、ヒットとなる。
【００６１】
一方、「パーソナル」「の」「デザイン」の検索トークン列を用いたフレーズ検索では、コンテンツ（CONTENT_ID=1）内では、それぞれ「０」「２」「３」の位置番号に出現し、「パーソナル」については、次に続くべきトークンの位置番号の差分が１であるため、連続性が認められず、コンテンツ（CONTENT_ID=1）は、ヒットしない。「パソコン」「コンピュータ」の検索トークン列を用いたフレーズ検索では、同様に、「パソコン」の次に続くべきトークンの位置番号の差分が２であるため、コンテンツ（CONTENT_ID=1）は、ヒットとはならない。
【００６２】
このように、本実施形態の文字列解析部２２０および索引構築部２３０により作成された索引データは、複合語など展開の前後でトークン数が変化する語の原形およびその分割形の両方をインデックスに含むことができ、このため、高い再現率が実現される。さらに本実施形態では、より意味を正確に表現する複合語を検索文字列とした検索が可能となるため、検索者の意図をより正確に反映した検索結果を得ることができ、もって、高い適合率かつ効率的な情報検索が実現される。また、本実施形態の索引データは、各トークンにつき、それぞれに隣接するトークンの文書内位置が特定可能に索引付けられている。このため、トークン数が変化するようなトークン展開が行なわれても、文書内でのトークン間の隣接関係の補正、およびその連続性の検証が可能とされ、もって、フレーズ検索がサポートされる。
【００６３】
（４−２）ワイルドカード検索
以下、ワイルドカード検索について、図４を参照して説明する。図４は、本実施形態の索引データを用いたワイルドカード検索を、参照されるデータ構造とともに示す概略図である。以下の説明では、検索したいコンテンツの文書データ部分が、「大和ソフトウェア開発研究所」というテキスト４００で与えられているものとして説明する。さらに、上記のテキスト４００に対し、形態素解析による分割・展開を適用して、「大和」「ソフトウェア」「開発」「研究所」の基本トークン列４０２が割当てられている。また、位置番号「０」には、「大和ソフトウェア開発研究所」の付加トークン４０４ａが割当てられ、位置番号「１」には、「ソフトウェア開発研究所」および「ソフトウェア開発」の付加トークン４０４ｂ，４０４ｃが割当てられている。位置番号「２」には、「開発研究所」の付加トークン４０４ｄが割当てられている。そして、図４に示す実施形態では、これらの情報を含む索引エントリ４１０が、索引データ中に当該コンテンツの索引情報として編成されている。なお、付加トークン４０４ａ，４０４ｂ，４０４ｄには付加情報「４」が、付加トークン４０４ｃには付加情報「３」が、次に続くトークンの位置番号を示すために付されている。
【００６４】
ここで、例えば「＊和ソフトウェ＊」４０６ａの検索文字列が与えられた場合、形態素解析では分割位置が不明であるため、「和ソフトウェ」に中間一致するトークンを、索引データを走査して探すこととなる。なお、『＊』は、文字数不定の文字列の代用を意味し、『？』は、単一文字の代用を意味するワールドカードである。分割後の基本トークン列４０２しか保持していない索引では、「大和」および「ソフトウェア」の分割形で保持されるため、通常、このコンテンツはヒットしない。
【００６５】
このような場合でも、あらゆるトークンの組み合わせから、組み合わせた文字列中に「和ソフトウェ」を含むものを探すこともできるが、膨大な計算時間が必要となり検索処理のスケーラビリティに欠け、メモリ、ＣＰＵ占有時間などのハードウェア資源を浪費してしまう。これに対して本実施形態の索引データは、図４に示すように、元の複合語である「大和ソフトウェア開発研究所」４０４ａのトークンを索引に含むため、組み合わせを考慮せずとも、効率的に当該コンテンツが探し出され、照会集合に加えられることとなる。
【００６６】
同様に、「大和＊研究所」４０６ｂまたは「？和ソフトウェア開発研究所」４０６ｃの検索文字列が与えられた場合にも、索引データ中、「大和ソフトウェア開発研究所」４０４ａの存在により、当該コンテンツがヒットする。「ソフトウェア？？」４０６ｄの検索文字列が与えられた場合には、索引データ中、「ソフトウェア開発」４０４ｃがあるため、当該コンテンツがヒットする。さらに、「開発＊所」４０６ｅの検索文字列が与えられた場合には、索引データ中、「開発研究所」４０４ｄがあるため、このコンテンツがヒットする。このように、本実施形態の索引データは、複合語などの原形およびその分割形との両方をインデックスに含むため、再現率が高くかつ効率的なワイルドカード検索および部分一致検索が実現される。
【００６７】
（４−３）ランク付け
以下、検索結果を作成するためのランク付け処理について説明する。複合語などを検索文字列に含む場合、検索者の意図を的確に反映した検索結果をもれなく提示するためには、当該複合語そのものを文書データ中に含むコンテンツに加え、当該複合語の分割形の単語を共に文書データ中に含むコンテンツについても、適切なランク付けとともに照会集合に含ませることが好ましい。
【００６８】
図２に示す検索処理部２４６は、与えられた検索文字列を、複合語自体の検索文字列と、複合語の分割形における複数単語の検索文字列間の論理積との論理和の検索式に展開して照会を実行する。当該照会に対応する照会集合に含まれる各コンテンツは、文書データ内でのトークンの出現数、タグによるトークンの重要度、ｔｆ−ｉｄｆによる文書内での出現頻度および索引全体におけるトークンの重要度、リンク構造などを考慮してスコアが算出される。また、複合語自体の検索文字列から得られる集合と、分割形の複数単語の検索文字列間の論理積から得られる集合とは、それぞれ総合スコアを計算する際の重みが割当てられる。複合語自体の照会集合に対しより大きな重みを割当てることにより、検索者の意図を正確に表現する複合語を含むコンテンツが、上位にランク付けされる。複合語自体を検索文字列とする場合には、複合語自体の一致検索または分割形のフレーズ検索として実行されるが、どちらも複合語を構成する小さな単位のトークン間の隣接関係を考慮したものといえる。なお、ｔｆ−ｉｄｆによるランク付けが実行される場合には、上述のような重み付けを用いなくとも、希少性の高い複合語を文書データに含んでいるコンテンツは、自然に上位にランク付けされることとなる。
【００６９】
図５は、本実施形態の索引データを用いたランク付けを、参照されるデータ構造とともに示す概略図である。以下に説明する実施形態は、検索文字列が、複合語の「検索システム」というテキスト５００で与えられている。さらに、本実施形態では、索引データ５１０内では、「検索システム」「検索」「システム」の各トークンに対して、各トークンが含まれるコンテンツ（CONTENT_ID）、そのコンテンツの文書データ内の位置番号（TOKEN_POS）、適宜付加情報（NEXT_POS）が関連づけられ、さらに各トークンの重要度（IMPORTANCE）が関連付けられている。
【００７０】
図５に示す例では、「検索システム」５０２には重み「０．７５」が与えられ、「検索」５０４および「システム」５０６の論理積には、重み「０．２５」が与えられている。図５に示す索引データ５１０に対し展開検索式を用いて照会が実行されると、各集合のコンテンツの総合スコアが重み付けに応じて算出され、照会集合全体のコンテンツにランク付けを施したコンテンツ・リスト５２０が作成される。図５に示すコンテンツ・リスト５２０では、「検索システム」そのものを含むコンテンツ（DOCUMENT_ID=1）に対しは、「検索」および「システム」の両方を含むが「検索システム」そのものを含まないコンテンツ（DOCUMENT_ID=5）よりも大きな総合スコアが与えられ、総合スコア順にコンテンツの並びがソーティングされている。
【００７１】
（４−４）検索結果
検索結果作成部２４４は、検索処理部２４６が作成したコンテンツ・リスト５２０を取得し、リストに含まれる識別値（CONTENT_ID）を解析データ格納部２１４に与えて、対応する解析データやコンテンツのポインタなどを取得し、そして、検索結果を作成する。検索結果のデータ構造は、特に限定されるものではないが、検索結果作成部２４４は、例えば、照会集合中の総合スコア上位所定数までの各コンテンツ毎に、ＵＲＩやパス名を指定してリンク可能な態様としたコンテンツ・サマリを含むデータとして作成する。より具体的には、例えばＨＴＭＬ、ＸＭＬなどの構造化文書、またはそれ以外のアプリケーション固有のフォーマットのデータとして作成することができる。
【００７２】
作成された検索結果のデータは、クライアント１０２に送信され、クライアント１０２が検索結果を参照することを可能とさせる。クライアント１０２の検索結果表示部２６４は、検索結果のデータを受信して、ブラウザ画面上に、総合スコア上位所定数までの各コンテンツ毎に、ＵＲＩやパス名を指定してリンク可能な態様でコンテンツ・サマリを表示させる。
【００７３】
このように、本実施形態の文字列解析部２２０および索引構築部２３０により作成された索引データを参照し、より意味を正確に表現する複合語などを文書データ中に含むコンテンツに対して、高いランクを与えるようランク付けすることができる。したがって、本実施形態では、より検索者の意図に適合したコンテンツが上位にランク付けされた検索結果を提示することが可能となる。また、本実施形態の索引データは、各トークンにつき、それぞれに隣接するトークンの文書内位置が特定可能に索引付けられているため、文書内でのトークン間の隣接関係から検索トークン間の近接度を定義し、近接度をスコア計算の際に用いることもできる。
【００７４】
上述した実施形態は、コンテンツ格納部２１２、文字列解析部２２０、解析データ格納部２１４、索引構築部２３０、索引格納部２１６、および検索部２４０が、同一のサーバ１０４上で実現され、サーバ１０４が検索エンジンおよび索引作成装置の機能を両方提供するものとして説明してきた。しかしながら、他の実施形態では、各機能部を個別のサーバ・ノード上で実現することもできる。
【００７５】
例えば、コンテンツ格納部２１２、文字列解析部２２０、解析データ格納部２１４、索引構築部２３０、および索引格納部２１６が、同一のサーバ・ノード上で実現され、索引作成装置の機能を専ら提供する別のサーバ・ノードを配置して構成することができる。また、さらに他の実施形態では、解析データ格納部２１４、索引格納部２１６および検索部２４０が、同一のサーバ・ノードに実装され、検索エンジンとしての機能を専ら提供するように実装することもできる。さらに、クライアントーサーバモデルの検索システム以外にも、単一のコンピュータ上にクライアント１０２およびサーバ１０４の各機能部が実現され、ローカル内のコンテンツを検索するデスクトップ検索を実行する装置として構成することもできる。
【００７６】
（５）索引作成方法
以下、図６を参照して、サーバによる文書データの索引作成方法の実施形態について説明する。図６は、サーバが実行する第１実施形態の文書データの索引作成方法を示すフローチャートである。図６に示す処理は、ステップＳ１００から開始し、ステップＳ１０１では、文字列解析部２２０は、コンテンツ格納部２１２からコンテンツを読み出し、文書データを抽出する。ステップＳ１０２では、文字列解析部２２０は、トークン分割部２２２を呼び出す。ステップＳ１０２でトークン分割部２２２は、形態素解析により、文書データに含まれる文字列からトークンを切り出して、分割したトークンを割当てる。その後、文字列解析部２２０は、トークン展開部２２４を呼び出し、トークン展開部２２４は、辞書を参照して、分割されたトークンを展開し、派生したトークン（列）を割当てる。親トークン、および派生した子トークン（列）は、相互に関連付けられて解析データ格納部２１４に解析データとして格納される。
【００７７】
ステップＳ１０３では、索引構築部２３０は、解析データ格納部２１４から解析データを読み出し、トークン位置定義部２３２を呼び出す。さらに、索引構築部２３０は、トークン位置定義部２３２に対し、位置番号のカウンタＭをリセットさせ、展開前のトークンを先頭から処理対象として選択させて、トークン位置の定義付けを開始させる。ステップＳ１０４では、トークン位置定義部２３２は、例えばファミリ識別値（Family_ID）の有無を確認して、対象のトークンがファミリを形成しているか否かを判定する。ステップＳ１０４で、ファミリを形成していないと判定された場合（ＮＯ）には、処理をステップＳ１１２へ分岐させる。この場合、そのトークンに対応する位置番号の範囲は、複数にわたらず、位置番号の補正が必要でないため、ステップＳ１１２では、トークン位置定義部２３２は、カウンタＭの値を位置番号（TOKEN_POS）としてトークンに割当て、カウンタＭをインクリメントし、ステップＳ１０９へ分岐させる。一方、ステップＳ１０４で、ファミリを形成していると判定された場合（ＹＥＳ）には、処理をステップＳ１０５へ分岐させる。
【００７８】
ステップＳ１０５では、トークン位置定義部２３２は、ファミリの中にトークン列が含まれるか否か、つまり展開によりトークン数が変化しているか否かを判定する。ステップＳ１０５で、トークン数が変化しないと判定された場合（ＮＯ）には、処理をステップＳ１１３へ分岐させる。トークン数が変化していない場合、そのトークンに対応する位置番号の範囲は、複数にわたらず、位置番号の補正が必要でない。このため、ステップＳ１１３では、トークン位置定義部２３２は、ファミリのすべてのトークンに対し、カウンタＭの値を位置番号（TOKEN_POS）として割当て、カウンタＭをインクリメントし、ステップＳ１０９へ分岐させる。一方、ステップＳ１０５で、トークン数が変化していると判定された場合（ＹＥＳ）には、処理をステップＳ１０６へ分岐させる。
【００７９】
ステップＳ１０６では、トークン位置定義部２３２は、ファミリ中で、トークンの変化数が最も大きなトークン列を基本トークン列として編成し、各基本トークンに対し、カウンタＭの値から順に連続した位置番号（TOKEN_POS）を割当てる。ステップＳ１０７では、トークン位置定義部２３２は、ファミリ中の基本トークン列以外の付加トークンに対し、トークン間の位置関係から、対応する基本トークンを算出する。さらに、トークン位置定義部２３２は、算出された開始位置に対応する基本トークンの位置番号を、付加トークンの位置番号（TOKEN_POS）として割当てる。トークン位置定義部２３２は、さらに、算出された終了位置に対応する基本トークンの位置番号から、次に続くべきトークンの位置番号を示す付加情報（NEXT_POS）を算出して、適宜関連付ける。ステップＳ１０８では、基本トークン列に編成したトークン列のトークン数だけ、カウンタＭをインクリメントし、ステップＳ１０９へ処理を渡す。
【００８０】
ステップＳ１０９では、トークン位置定義部２３２は、現在処理を行ったトークンが最後のトークンであったか否かを判定する。ステップＳ１０９で、最後のトークンではないと判定された場合（ＮＯ）には、ステップＳ１０３に処理を戻す。ステップＳ１０３では、トークン位置定義部２３２は、出現順に次の展開前のトークンを処理対象として選択し、最後のトークンまで処理を繰り返す。一方、ステップＳ１０９で、最後のトークンであると判定された場合（ＹＥＳ）には、トークン位置定義部２３２は、索引構築部２３０に終了を通知し、処理をステップＳ１１０へ分岐させる。
【００８１】
ステップＳ１１０では、索引構築部２３０は、文書内索引作成部２３４を呼び出す。文書内索引作成部２３４は、各トークン毎に、文書内での位置番号（TOKEN_POS）、および適宜付加情報（NEXT_POS）からなる組を出現数分連ねた配列に整理し、コンテンツの識別値（CONTENT_ID）に関連付けて、当該コンテンツ（CONTENT_ID）の索引エントリとして作成し、ステップＳ１１１で処理を終了する。その後、索引構築部２３０は、コンテンツ毎に作成された索引エントリが揃った段階で、逆引き索引付けし、転置インデックスとして構成される索引データを構築することとなる。
【００８２】
なお、図６に示した第１実施形態は、コンテンツ毎に文書データ単位のサイクルで、トークンの分割・展開、および位置番号の定義付けを行なう。しかしながら、他の実施形態では、文書データ内の文章単位のサイクルで、文章間の位置番号の連続性を維持しつつ、トークンの分割・展開、および位置番号の定義付けを実行してもよく、特に限定されるものではない。
【００８３】
（６）フレーズ検索方法
以下、図７を参照して、サーバが実行するフレーズ検索方法の実施形態について、詳細を説明する。図７は、本実施形態のサーバが実行するフレーズ検索方法の実施形態のフローチャートである。図７に示す処理は、例えばクライアント１０２からの検索要求を受領して、ステップＳ２００から開始する。なお、当該検索要求にはフレーズ検索が指令されているものとして、以下、説明を行なう。ステップＳ２０１では、検索処理部２４６は、検索クエリに含まれる連結する複数の検索トークンを取得する。ステップＳ２０２では、検索処理部２４６は、索引データを照会し、各検索トークン毎に、一致するトークンを少なくとも１つ含むコンテンツの集合をそれぞれ得て、集合１〜Ｓ（Ｓは自然数であり、検索トークンを識別する。）を取得する。
【００８４】
ステップＳ２０３では、検索処理部２４６は、集合１〜Ｓの積集合演算を実行し、集合１〜Ｓが共通のコンテンツをひとつも含まず、交わりを持たないか否かを判定する。ステップＳ２０３で、積集合中にひとつも共通のコンテンツが含まれず、交わりを持たないと判定された場合（ＹＥＳ）には、ステップＳ２１１へ処理を分岐させ、ヒットなしとして検索処理を終了する。一方、ステップＳ２０３で、積集合の中に少なくとも１つの共通のコンテンツが含まれ、交わりを持つと判定された場合（ＮＯ）には、ステップＳ２０４へ処理を分岐させる。そして、ステップＳ２０４では、検索処理部２４６は、上記積集合を仮の照会集合とする。
【００８５】
検索処理部２４６は、ステップＳ２０５では、照会集合に含まれるコンテンツのひとつを処理対象として選択し、ステップＳ２０６では、選択したコンテンツについて文書データ内での検索トークン列の連続性を検証する。ステップＳ２０６の処理は、文書内の各トークンの隣接関係を、次にくるべきトークンの位置番号を示す付属情報を用いて補正しつつ行われる。ステップＳ２０７では、検索処理部２４６は、文書データ内での検索トークン列の連続性を検証した結果、全検索トークンにわたる連続性が少なくとも１つ維持されているか否かを判定する。ステップＳ２０７で、連続性が少なくとも１つ維持されていると判定された場合（ＹＥＳ）には、ステップＳ２０８で、選択したコンテンツを照会集合に保持したまま、ステップＳ２１０へ処理を渡す。一方、ステップＳ２０７で、連続性が１つも維持されていないと判定された場合（ＮＯ）には、当該文書中には検索語句が存在しないことが明らかなので、ステップＳ２０９で、当該コンテンツを照会集合から削除して、ステップＳ２１０へ処理を渡す。
【００８６】
ステップＳ２１０では、検索処理部２４６は、照会集合中にまだ未処理のコンテンツが有るか否かを判定する。ステップＳ２１０で、まだ未処理のコンテンツが有ると判定された場合（ＹＥＳ）には、ステップＳ２０５へ処理を分岐させ、次の対象のコンテンツを選択し、照会集合中すべてのコンテンツについて処理が完了するまで繰り繰り返す。一方、ステップＳ２１０で、未処理のコンテンツが存在しないと判定された場合（ＮＯ）には、ステップＳ２１１へ処理を進め、現在の照会集合を検索結果として確定し、処理を終了させる。このように、全コンテンツ中から、連結する複数の検索トークンに一致する複数のトークンを索引内に有し、かつ、該トークン間の連続性が確認されることを条件として、該条件に合致したコンテンツが照会集合に残されることとなる。
【００８７】
（７）第２実施形態の索引作成方法
以下、図８および図９を参照して、第２実施形態の索引作成方法について説明する。図８は、第２実施形態の索引作成方法の処理を、生成されるデータ構造とともに示す概略図である。図６を参照して説明した第１実施形態の索引作成方法では、トークンの分割および展開によって、分割および派生したトークンのうち、最も粒度の小さな単位のトークンにより編成される基本トークン列に従って、各トークンの位置関係が定義付けられる。例えば、コンテンツの文書データ部分が、「今の東京都知事は」というテキスト８００で与えられている場合、第１実施形態の索引作成方法では、最小単位の「今」「の」「東京」「都」「知事」「は」の基本トークン列が与えられ、例えば０から順に位置番号が割当てられる。しかしながら、形態素解析の分割の粒度は、任意なので、索引データのサイズや検索効率などを勘案して、索引から小さな単位のトークンを除外したいという要望もある。また、複合語を任意の粒度で切り出す場合、複合語の分割境界として複数の候補が有る場合も想定できる。第２実施形態の索引作成方法は、このような場合に好適に適用することができる。
【００８８】
図９は、サーバが実行する第２実施形態の文書データの索引作成方法を示すフローチャートである。図９に示す処理は、ステップＳ３００から開始され、ステップＳ３０１では、文字列解析部２２０は、コンテンツ格納部２１２からコンテンツを読み出し、文書データを抽出する。抽出された文書データには、「今の東京都知事は」というテキスト８００が与えられているものとする。ステップＳ３０２では、文字列解析部２２０は、トークン分割部２２２を呼び出して、形態素解析により、任意の粒度にてテキスト８００からトークンを切り出し、分割したトークンを文字列に割当てる。上記テキスト８００に対し、任意の粒度の形態素解析が適用されると、テキスト８００が「今」「の」「東京都知事」「は」に分割され、さらに「東京都知事」については、２つの分割境界で「東京都」と「都知事」とが切り出されるものとする。切り出されたトークンは、例えば先頭の文字位置に関連付けられて、解析データ格納部２１４に解析データとして格納される。
【００８９】
ステップＳ３０３では、索引構築部２３０は、解析データ格納部２１４から解析データを読み出し、トークン位置定義部２３２に対して、トークン位置の定義付けの基準を設定させる。第２実施形態の索引作成方法では、トークン位置定義部２３２は、まず、トークンに関連付けられた文字位置やトークンの文字数などから、全トークンの境界を文字列上にマップする。図８を参照すると、分割されたトークン８０２ａ〜ｆの境界が、点線にてテキスト８００上にマップされている様子が示されている。トークン位置定義部２３２は、ステップＳ３０４で、マップされた境界により「今」「の」「東京」「都」「知事」「は」の文字区分を定義し、各文字区分に対し、順に位置番号を割当てる。この文字区分は、第１実施形態の索引作成方法における基本トークン列の役割を果たす。
【００９０】
ステップＳ３０５では、トークン位置定義部２３２は、先頭からトークンを処理対象として選択し、トークン位置の定義付けを開始する。ステップＳ３０６では、トークン位置定義部２３２は、選択されたトークンに対し、いずれの文字区分（列）に対応するかを算出する。そしてトークン位置定義部２３２は、開始位置に対応する文字区分の位置番号（以下、開始位置番号として参照する。）を当該トークンの位置番号（TOKEN_POS）として割当て、さらに終了位置に対応する文字区分の位置番号（以下、終了位置番号として参照する。）を算出する。図８に示す例では、「東京都」８１２ｄについては、開始位置番号「２」および終了位置番号「３」が算出され、「都知事」８１２ｅについては、開始位置番号「３」および終了位置番号「４」が算出される。「今」「の」「は」については、開始位置番号および終了位置番号は、同じ値が算出される。
【００９１】
トークン位置定義部２３２は、ステップＳ３０７で、開始位置番号と終了位置番号とが等しいか否かを判定する。ステップＳ３０７で、開始位置番号と終了位置番号とが等しいと判定された場合（ＹＥＳ）には、そのままステップＳ３０９へ処理を分岐させる。この場合は、次に続くべきトークンの位置番号が連続するため、付加情報（NEXT_POS）を省略する。一方、ステップＳ３０７で、開始位置番号と終了位置番号とが等しくはない判定された場合（ＮＯ）には、ステップＳ３０８へ分岐させる。ステップＳ３０８では、トークン位置定義部２３２は、次に続くべきトークンの位置番号を示す付加情報（NEXT_POS）を算出してトークンに関連付け、ステップＳ３０９へ処理を渡す。第１実施形態の索引作成方法と同様に、付加情報（NEXT_POS）は、次に続くべきトークンの位置番号そのものであっても、差分であってもよい。次に続くべきトークンの位置番号は、終了位置番号に所定の固定値（１）だけ加算した値となる。
【００９２】
図８に示す実施形態では、「東京都知事」８１２ｃには位置番号「２」、および付加情報「５」が与えられ、「東京都」８１２ｄには、同じ位置番号「２」、および付加情報「４」が与えられる。さらに「都」の文字区分の位置番号「３」には、「都知事」８１２ｅが与えられ、さらに付加情報「５」が付加されている。なお、この例では、「知事」の文字区分の位置番号「４」は、いずれのトークンにも割当てられない。
【００９３】
ステップＳ３０９では、トークン位置定義部２３２は、処理対象であったトークンが最後のトークンであったか否かを判定する。ステップＳ３０９で、最後のトークンではないと判定された場合（ＮＯ）には、ステップＳ３０５に処理を戻し、ステップＳ３０５では、出現順に次のトークンを処理対象として選択し、最後のトークンまで処理を繰り返す。一方、ステップＳ３０９で、最後のトークンであると判定された場合（ＹＥＳ）には、トークン位置定義部２３２は、索引構築部２３０に終了を通知し、ステップＳ３１０へ処理を分岐させる。
【００９４】
ステップＳ３１０では、索引構築部２３０は、文書内索引作成部２３４を呼び出す。文書内索引作成部２３４は、各トークン毎に、文書内での位置番号（TOKEN_POS）、および適宜付加情報（NEXT_POS）からなる組を出現数分連ねた配列に整理し、コンテンツの識別値（CONTENT_ID）に関連付けて、当該コンテンツ（CONTENT_ID）の索引エントリとして作成し、ステップＳ３１１で処理を終了する。そして、第１実施形態と同様に、索引構築部２３０は、コンテンツ毎に作成された索引エントリが揃った段階で、逆引き索引付けし、転置インデックスとして構成される索引データを構築することとなる。
【００９５】
上述の第２実施形態の索引作成方法では、トークン分割の粒度に関わらずトークンの位置が定義可能とされ、また、複数候補の分割境界により派生するトークンの位置が、ともに統一的に定義可能とされる。このため、第２実施形態の索引作成方法は、分割境界が曖昧な複合語に対して好適に適用することができる。さらに、形態素解析では、言語を特定しなければ適切にトークンを分割することができない可能性が有る。一方、第２実施形態の索引作成方法では、言語特定プロセスにより複数の候補まで言語が特定できる場合には、複数の候補となる言語での分割結果をともに索引に編成することが可能である。したがって、文書データ中に他言語の引用を含む場合などに好適に適用することができる。
【００９６】
以上説明したように、本発明によれば、複合語など展開するとトークン数が変化する語を、その原形のトークンおよび分割形のトークンの両方で検索可能とし、かつ、フレーズ検索、ワイルドカード検索および部分一致検索を効率的に実行可能とする、検索システム、索引作成装置、検索エンジン索引作成方法、検索方法およびプログラムを提供することができる。さらに、本発明によれば、日本語など単語分割の境界があいまいな言語により記述された文書や、複合語が多用される言語により記述された文書や、言語を正確に特定できない文書の高品質な検索を可能とする、検索システム、索引作成装置、検索エンジン、索引作成方法、検索方法およびプログラムを提供することができる。さらに本発明によれば、検索者の意図を的確に反映した検索結果を効率的に提供することを可能とする、検索システム、索引作成装置、検索エンジン、索引作成方法、検索方法およびプログラムを提供することができる。
【００９７】
また、本発明では、特定の実施形態として文字列解析方法について形態素解析を使用して説明した。しかしながら、特定の言語により適切な文字列解析方法が存在する場合、形態素解析の他、分かち書きされる言語の空白を用いた分割など、特定の言語に最適な文字列解析方法でのトークンの分割も可能であることは、当業者であれば、容易に想到することができるものである。また、本発明では、好適に適用できる言語としては、例えば、中国語、日本語、アラビア語など単語間の分割境界があいまいな言語、日本語やドイツ語など複合語が多い言語を挙げることができるが、本発明は、英語、フランス語、ロシア語、韓国語など、上述した以外の言語についても適用可能である。
【００９８】
なお、本発明につき、発明の理解を容易にするために各機能部および各機能部の処理を記述したが、本発明は、上述した特定の機能部が特定の処理を実行する外、処理効率や実装上のプログラミングなどの効率を考慮して、いかなる機能部に、上述した処理を実行するための機能を割当てることができる。
【００９９】
本発明の上記機能は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｊａｖａ（登録商標）Ｂｅａｎｓ、Ｊａｖａ（登録商標）Ａｐｐｌｅｔ、Ｊａｖａ（登録商標）Ｓｃｒｉｐｔ、Ｐｅｒｌ、Ｒｕｂｙなどのオブジェクト指向プログラミング言語、ＳＱＬなどの検索言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布または伝送して頒布することができる。
【０１００】
これまで本発明を、特定の実施形態をもって説明してきたが、本発明は、実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【０１０１】
【図１】本実施形態の検索システムの概略図。
【図２】本実施形態のサーバおよびクライアント上に実現される検索システムの機能ブロックを示す図。
【図３】テキストから索引付けまでの文字列解析部および索引構成部が実行する処理を、各処理により生成されるデータ構造とともに示す概略図。
【図４】索引データを用いたワイルドカード検索を、参照されるデータ構造とともに示す概略図。
【図５】索引データを用いたランク付けを、参照されるデータ構造とともに示す概略図。
【図６】第１実施形態の文書データの索引作成方法を示すフローチャート。
【図７】フレーズ検索方法を示すフローチャート。
【図８】第２実施形態の索引作成方法の処理を、生成されるデータ構造とともに示す概略図。
【図９】第２実施形態の文書データの索引作成方法を示すフローチャート。
【図１０】従来のトークン展開を行なう索引付けを一例として示す図。
【符号の説明】
【０１０２】
１００…検索システム、１０２…クライアント、１０４…サーバ、１０６…検索用データ、１０８…ネットワーク、１１０…サーバ、１１２…検索用データ、１１４…インターネット、１１６…ＲＤＢ、１１８…ファイル・サーバ、１２０…破線枠、２００…機能ブロック、２１０…コンテンツ収集部、２１２…コンテンツ格納部、２１４…解析データ格納部、２１６…索引格納部、２２０…文字列解析部、２２２…トークン分割部、２２４…トークン展開部、２２６…辞書格納部、２３０…索引構成部、２３２…トークン位置定義部、２３４…文書内索引作成部、２４０…検索部、２４２…検索要求受付部、２４４…検索結果作成部、２４６…検索処理部、２６０…検索照会部、２６２…検索要求部、２６４…検索結果表示部、３００…テキスト、３１０…トークン、３２０…辞書エントリ、３３０…索引エントリ、３３２…基本トークン、３３４，３３６…付加トークン、４００，５００，８００…テキスト、４０２…基本トークン列、４０４…付加トークン、４０６…検索文字列、４１０，８１０…索引エントリ、５１０…索引データ、５２０…コンテンツ・リスト、８０２，８１２…トークン
【図１】
0005260123.tif 000002
【図２】
0005260123.tif 000003
【図３】
0005260123.tif 000004
【図４】
0005260123.tif 000005
【図５】
0005260123.tif 000006
【図６】
0005260123.tif 000007
【図７】
0005260123.tif 000008
【図８】
0005260123.tif 000009
【図９】
0005260123.tif 000010
【図１０】
0005260123.tif 000011