(57)【要約】【課題】  検索装置が単位時間あたりに処理できる検索要求数を向上させる。【解決手段】  本発明は、文書が更新されると転置インデックスも更新される。このとき、文書の更新に合わせて当該文書中の単語毎に更新時刻ntを単語−最新時刻ＤＢに保持しておき、キャッシュ（スコアキャッシュＤＢ）には検索語毎に前回の利用時刻tcを保持しておき、検索時には、単語毎の更新時刻ntと前回の利用時刻tcとを比較して、更新時刻ntが古ければキャッシュ情報をそのまま利用してスコアキャッシュＤＢに格納されている文書ＩＤをスコアの高い順に出力する。【選択図】  図１
2011198113.tif 000002
【特許請求の範囲】
【請求項１】
文書集合中から入力された検索語を含む文書を検索する文書検索装置であって、
単語、該単語が出現する文書番号、該単語が該文書中に出現する回数、該単語が該文書中で出現位置情報及び、該文書の最終更新時刻を格納した転置インデックス記憶手段と、
検索語、キャッシュエントリの最終格納時刻tc、検索結果の文書ＩＤ、該文書のスコア、該文書の更新時刻を格納するスコアキャッシュ記憶手段と、
単語毎に、該単語を含む文書群のうち、最も新しい最終更新時刻ntを格納する単語−最終時刻記憶手段と、
検索語が入力されると、該検索語に基づいて前記スコアキャッシュ記憶手段を参照し、前記キャッシュエントリの最終格納時刻tcを取得し、該検索語中の各単語に基づいて前記単語−最終時刻記憶手段を参照し、該単語に対する最終更新時刻ntを取得し、該最終格納時刻tcと該最終更新時刻ntとを比較して、該最終更新時刻ntのうち該最終格納時刻tcよりも古いものがあれば何も出力せず、古いものがなければ該検索語中の各単語に基づいて前記転置インデックス記憶手段を参照し、転置リストを出力する転置インデクス展開手段と、
前記転置リストの各文書の最終更新時刻ntが前記最終格納時刻tcよりも新しいかを判定し、新しい場合は該文書のスコアを計算し、該文書の検索語、該最終格納時刻tc、文書ＩＤ、該文書のスコア、該文書の最終更新時刻ntを前記スコアキャッシュ記憶手段に格納するスコア計算手段と、
入力された前記検索語に基づいて前記スコアキャッシュ記憶手段を参照し、該検索語に対応するエントリを取得して、文書のスコアの高い順に文書ＩＤを出力するランキング計算手段と、
を有することを特徴とする文書検索装置。
【請求項２】
前記スコア計算手段は、
ＡＮＤ条件や、フレーズ条件を満たす文書を前記転置リストとする
請求項１記載の文書検索装置。
【請求項３】
文書集合中から入力された検索語を含む文書を検索する文書検索方法であって、
単語、該単語が出現する文書番号、該単語が該文書中に出現する回数、該単語が該文書中で出現位置情報及び、該文書の最終更新時刻を格納した転置インデックス記憶手段と、
検索語、キャッシュエントリの最終格納時刻tc、検索結果の文書ＩＤ、該文書のスコア、該文書の更新時刻を格納するスコアキャッシュ記憶手段と、
単語毎に、該単語を含む文書群のうち、最も新しい最終更新時刻ntを格納する単語−最終時刻記憶手段と、を有する装置が、
検索語が入力されると、該検索語に基づいて前記スコアキャッシュ記憶手段を参照し、前記キャッシュエントリの最終格納時刻tcを取得し、該検索語中の各単語に基づいて前記単語−最終時刻記憶手段を参照し、該単語に対する最終更新時刻ntを取得し、該最終格納時刻tcと該最終更新時刻ntとを比較して、該最終更新時刻ntのうち該最終格納時刻tcよりも古いものがあれば何も出力せず、古いものがなければ該検索語中の各単語に基づいて前記転置インデックス記憶手段を参照し、転置リストを出力するインデックス展開ステップと、
前記転置リストの各文書の最終更新時刻ntが前記最終格納時刻tcよりも新しいかを判定し、新しい場合は該文書のスコアを計算し、該文書の検索語、該最終格納時刻tc、文書ＩＤ、該文書のスコア、該文書の最終更新時刻ntを前記スコアキャッシュ記憶手段に格納するスコア計算ステップと、
入力された前記検索語に基づいて前記スコアキャッシュ記憶手段を参照し、該検索語に対応するエントリを取得して、文書のスコアの高い順に文書ＩＤを出力するランキングステップと、
を行うことを特徴とする文書検索方法。
【請求項４】
前記スコア計算ステップにおいて、
ＡＮＤ条件や、フレーズ条件を満たす文書を前記転置リストとする
請求項３記載の文書検索方法。
【請求項５】
請求項１または２記載の文書検索装置を構成する各手段としてコンピュータを機能させるための文書検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書検索装置及び方法及びプログラムに係り、特に、文書集合の中から利用者が入力した検索語を含むような文書を検索し出力する文書検索装置及び方法及びプログラムに関する。
【背景技術】
【０００２】
大規模な文書集合を対象に、高速な検索を行うためには、従来より、転置インデクスと呼ばれる、単語をキーとしてその単語が出現するような文書の番号を記録した索引情報が広く利用されている（例えば、非特許文献１参照）。
【０００３】
さらに、連続して多数の検索要求が行われる場合の高速化のために、全ての検索要求を転置インデクスを用いて処理するのではなく、検索要求に対する処理結果を保存しておき、同一の、あるいは類似した検索要求が行われた場合に保存してあった処理結果を用いるキャッシュと呼ばれる方法が存在する（例えば、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「分散型高速情報収集／全文検索システムInfoBee/Evangelist」、竹野浩、井上孝史、NTT R&D, vol. 52, no.n 2,2003, pp 78-84.
【非特許文献２】Baeza-Yates, R, Gionis,  A., Junqueira,  F., Murdock,  V., Plachouras,  V., and Silvestri, F. 2007.  The impact of caching on search engines.  In Proceedings of the 30th Annual international ACM SIGIR Conference on Research and Development in information Retrieval  (Amsterdam, The Netherlands, July 23 - 27, 2007).
【発明の概要】
【発明が解決しようとする課題】
【０００５】
文書検索装置において、新しい文書を検索対象として追加したり、あるいは既存の検索対象文書が変更された場合には、転置インデクス自体を何らかの方法で変更する必要がある。この方法としては、転置インデクスを作り直す方法や、あるいは、前述の非特許文献１や、文献「Tomasic, A., Graca-Molina, H., and Shoens, K. 1994. Incremental updates of inverted lists for text document retrieval.  SIGMOD Rec. 23, 2 (Jun.  1994), pp. 289-300」で示されている方法を使うことが考えられる。
【０００６】
しかし、転置インデクスが変更された場合、単語に対する転置リストの内容も変わってしまい、結果として検索結果も変わってしまう。このため、従来のキャッシュ方式を用いた場合、転置インデクスが変更された場合には、キャッシュは無効となってしまう。このため、キャッシュの利用効率が下がり、結果として、検索装置が単位時間当たりに処理することができる検索要求数が減少してしまうという問題があった。
【０００７】
本発明は、上記の点に鑑みなされたもので、キャッシュを利用した検索装置が単位時間あたりに処理できる検索要求数を向上させることが可能な文書検索装置及び方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
図１は、本発明の原理構成図である。
【０００９】
本発明（請求項１）は、文書集合中から入力された検索語を含む文書を検索する文書検索装置であって、
単語、該単語が出現する文書番号、該単語が該文書中に出現する回数、該単語が該文書中で出現位置情報及び、該文書の最終更新時刻を格納した転置インデックス記憶手段１０２と、
検索語、キャッシュエントリの最終格納時刻tc、検索結果の文書ＩＤ、該文書のスコア、該文書の更新時刻を格納するスコアキャッシュ記憶手段１０４と、
単語毎に、該単語を含む文書群のうち、最も新しい最終更新時刻ntを格納する単語−最終時刻記憶手段１０３と、
検索語が入力されると、該検索語に基づいてスコアキャッシュ記憶手段１０４を参照し、キャッシュエントリの最終格納時刻tcを取得し、該検索語中の各単語に基づいて単語−最終時刻記憶手段１０３を参照し、該単語に対する最終更新時刻ntを取得し、該最終格納時刻tcと該最終更新時刻ntとを比較して、該最終更新時刻ntのうち該最終格納時刻tcよりも古いものがあれば何も出力せず、古いものがなければ該検索語中の各単語に基づいて転置インデックス記憶手段１０２を参照し、転置リストを出力する転置インデクス展開手段１２１と、
転置リストの各文書の最終更新時刻ntが最終格納時刻tcよりも新しいかを判定し、新しい場合は該文書のスコアを計算し、該文書の検索語、該最終格納時刻tc、文書ＩＤ、該文書のスコア、該文書の最終更新時刻ntをスコアキャッシュ記憶手段１０４に格納するスコア計算手段１２２と、
入力された検索語に基づいて前記スコアキャッシュ記憶手段１０４を参照し、該検索語に対応するエントリを取得して、文書のスコアの高い順に文書ＩＤを出力するランキング計算手段１２３と、を有する。
【００１０】
また、本発明（請求項２）は、スコア計算手段１２２において、ＡＮＤ条件や、フレーズ条件を満たす文書を転置リストとする。
【００１１】
図２は、本発明の原理を説明するための図である。
【００１２】
本発明（請求項３）は、文書集合中から入力された検索語を含む文書を検索する文書検索方法であって、
単語、該単語が出現する文書番号、該単語が該文書中に出現する回数、該単語が該文書中で出現位置情報及び、該文書の最終更新時刻を格納した転置インデックス記憶手段と、
検索語、キャッシュエントリの最終格納時刻tc、検索結果の文書ＩＤ、該文書のスコア、該文書の更新時刻を格納するスコアキャッシュ記憶手段と、
単語毎に、該単語を含む文書群のうち、最も新しい最終更新時刻ntを格納する単語−最終時刻記憶手段と、を有する装置が、
検索語が入力されると、該検索語に基づいてスコアキャッシュ記憶手段を参照し、キャッシュエントリの最終格納時刻tcを取得し、該検索語中の各単語に基づいて単語−最終時刻記憶手段を参照し、該単語に対する最終更新時刻ntを取得し（ステップ１）、該最終格納時刻tcと該最終更新時刻ntとを比較して、該最終更新時刻ntのうち該最終格納時刻tcよりも古いものがあれば（ステップ２、Ｙｅｓ）何も出力せず、古いものがなければ（ステップ２、Ｎｏ）該検索語中の各単語に基づいて転置インデックス記憶手段を参照し、転置リストを出力する（ステップ３）インデックス展開ステップと、
転置リストの各文書の最終更新時刻ntが最終格納時刻tcよりも新しいかを判定し、新しい場合は（ステップ４、Ｙｅｓ）該文書のスコアを計算し、該文書の検索語、該最終格納時刻tc、文書ＩＤ、該文書のスコア、該文書の最終更新時刻ntをスコアキャッシュ記憶手段に格納する（ステップ５）スコア計算ステップと、
入力された検索語に基づいてスコアキャッシュ記憶手段を参照し、該検索語に対応するエントリを取得して、文書のスコアの高い順に文書ＩＤを出力する（ステップ６）ランキングステップと、を行う。
【００１３】
また、本発明（請求項４）は、スコア計算ステップにおいて、ＡＮＤ条件や、フレーズ条件を満たす文書を転置リストとする。
【００１４】
本発明（請求項５）は、請求項１または２記載の文書検索装置を構成する各手段としてコンピュータを機能させるための文書検索プログラムである。
【発明の効果】
【００１５】
上記のように本発明によれば、時刻情報付きのスコアのキャッシュを導入することにより、キャッシュが有効な古い文書については転置リストの取得、及びスコアの計算が不要となる。
【００１６】
また、転置インデクスに加えて文書の更新または追加時刻情報をインデクスとして持つことにより、上記のスコアキャッシュを利用可能になる。
【図面の簡単な説明】
【００１７】
【図１】本発明の原理構成図である。
【図２】本発明の原理を説明するための図である。
【図３】本発明の一実施の形態における文書検索装置の構成図である。
【図４】本発明の一実施の形態におけるスコアキャッシュＤＢの例である。
【図５】本発明の一実施の形態における前処理のフローチャートである。
【図６】本発明の一実施の形態における検索処理のフローチャートである。
【発明を実施するための形態】
【００１８】
以下、図面と共に本発明の実施の形態を説明する。
【００１９】
本発明では、利用者によって入力された検索語に最も関連している文書群、即ち、スコアが上位である文書群を出力する。
【００２０】
利用者から受け付ける検索語は、単一の単語、複数単語、句とする。複数単語の場合には、それらの単語が全て含まれている文書を検索対象とする（AND検索）。句の場合は、句を構成する複数の単語が、検索語中での順序と、文書中での出現順序が同一であるような文書を検索対象とする（フレーズ検索）。
【００２１】
図３は、本発明の一実施の形態における文書検索装置の構成を示す。
【００２２】
同図に示す文書検索装置は、転置インデクス作成部１１１を有する前処理部１１０と、転置インデクス展開部１２１、スコア計算部１２２、ランキング計算部１２３を有する検索処理部１２０及び、転置インデクス記憶部１０２、単語−最新時刻ＤＢ１０３、スコアキャッシュＤＢ１０４及び、転置リスト記憶部１２４から構成される。
【００２３】
前処理部１１０の転置インデクス作成部１１１は、与えられた文書集合１０１内に出現した全ての単語について、各単語をキーとして、文書から
・当該単語が出現する文書の番号；
・当該文書内における単語の出現回数
・当該文書内での単語の出現位置；
・当該文書の最終更新時刻
を抽出し、これをインデクスとして転置インデクス記憶部１０２に格納する。また、転置インデクス作成部１１１は、単語毎にその単語を含む文書群のうち、最も新しい最終更新時刻を抽出し、単語と共に単語−最新時刻ＤＢ１０３に格納する。
【００２４】
検索処理部１２０の転置インデクス展開部１２１は、検索語が入力されると、当該検索語中の各単語に対応する転置インデックスのエントリ（転置リスト）を転置リスト記憶部１２４に出力するものである。
【００２５】
検索処理部１２０のスコア計算部１２２は、検索語と転置インデクス展開部１２１より出力された転置リスト記憶部１２４の検索語中の各単語に対応する転置リストを入力として、各文書のスコアを出力するものである。
【００２６】
検索処理部１２０のランキング計算部１２３は、入力された検索語との関連度の高い順に文書ＩＤを出力するものである。
【００２７】
スコアキャッシュＤＢ１０４は、図４に示すように、検索語をキーとして、そのキャッシュエントリの最終格納時刻tc及び検索結果の文書ＩＤと文書のスコアと文書の更新時刻ntの対のリストを持つような表として構成される。
【００２８】
本発明の文書検索装置の動作は、文書集合が更新される度に行う前処理と、利用者が検索語を入力した場合に行う検索処理に分けられる。
【００２９】
以下に、上記の構成における動作を説明する。
【００３０】
最初に前処理部１１０による前処理について説明する。
【００３１】
図５は、本発明の一実施の形態における前処理のフローチャートである。
【００３２】
ステップ１０１）  転置インデクス作成部１１１は、与えられた文書集合１０１内に出現した全ての単語について、単語をキーとして、その単語が出現する文書の番号、及び、当該文書での出現回数、及び、当該文書での出現位置のリスト、及び当該文書の最終更新時刻を格納したインデクスを作成し、転置インデクス記憶部１０２に格納する。この処理は、一般的な転置インデクスの作成手順を利用することもできる。
【００３３】
ステップ１０２）  更に、単語毎にその単語を含む文書群のうち、最も新しい最終更新時刻ntを値とするようなＤＢ（単語−最新時刻ＤＢ１０３）を作成する。
【００３４】
なお、最新更新時刻は必ずしも正確なものである必要はなく、最後に更新（あるいは追加）が確認できた時刻を用いてもよい。
【００３５】
次に、検索処理部１２０における検索処理について説明する。
【００３６】
図６は、本発明の一実施の形態における検索処理のフローチャートである。
【００３７】
ステップ２０１）  転置インデックス展開部１２１は、入力された検索語に基づいてスコアキャッシュＤＢ１０４を参照し、当該検索語に対するスコアのキャッシュの最終格納時刻tcを得る。もし、スコアキャッシュＤＢ１０４に当該検索語が含まれていない場合は、最終格納時刻は十分古い時刻として、tc＝０とする。
【００３８】
ステップ２０２）  次に、転置インデクス展開部１２１は、検索語中の各単語に基づいて単語−最新時刻ＤＢ１０３を参照して、各単語に対する転置リスト中の文書群の中での最新更新時刻ntを取得する。
【００３９】
ステップ２０３）  この転置リスト中の文書の最新の更新時刻ntのうち、１つでもスコアキャッシュＤＢ１０４から取得した最終格納時刻tcより古いものが１つでもあれば、単一単語による検索、ＡＮＤ検索、フレーズ検索のいずれの場合においてもスコアキャッシュＤＢ１０４のエントリのみで装置の応答は可能であり、スコアの計算は必要ないため、転置インデックス展開部１２１は、何も出力せず終了する（ステップ２０９に移行する）。
【００４０】
ステップ２０４）  スコアキャッシュＤＢ１０４から取得したスコアキャッシュの最終格納時刻tcより古いものが１つもなければ、転置インデックス記憶部１０２の検索語中の各単語に対する転置インデクスを参照し、各単語のエントリ（転置リスト）を転置リスト記憶部１２４に出力する。
【００４１】
ステップ２０５）  次に、スコア計算部１２２は、転置インデクス展開部１２１より得られた転置インデクス記憶部１２４の各転置インデクスを参照し、検索語を構成する各単語の文書ＩＤのリストを取得する。この各単語に対する文書ＩＤリストにより、ＡＮＤ条件やフレーズ条件を満たす文書のリストＬｐを作成する。
【００４２】
ステップ２０６）  リストＬｐ中の各単語について、更新時刻ntが転置インデクス展開部１２１で求めた最終格納時刻tcよりも新しいかどうかを判定する。
【００４３】
ステップ２０７）  リストＬｐの文書の更新時刻ntが新しい場合は文書のスコアを計算し、当該スコア計算部１２２内のメモリ（図示せず）に格納する。スコアの計算は、BM25やtfidfといった一般的に知られているスコア計算方法を用いることができる。但し、tfidfにおけるidf項のように、検索文書集合全体より得られる統計値を用いるスコア計算方法を利用する場合は、近似的に現在の文書集合ではなく、過去のある時点での文書集合に基づく統計値を用いる。
【００４４】
ステップ２０８）  リストＬｐの全ての文書要素の数分、上記のステップ２０７のスコア計算を行った後、得られた各文書の検索語に対するスコアを、スコアキャッシュＤＢ１０４に追記する。この際、文書ＩＤが重複するものについては上書きする。次に、スコアキャッシュＤＢ１０４の最終格納時刻を現在時刻で上書きする。
【００４５】
ステップ２０９）  次に、ランキング計算部１２３は、まず、入力された検索語に基づいて、スコアキャッシュＤＢ１０４を参照し、当該検索語に対応するエントリを取得し、各文書のＩＤをその文書のスコアが高い順に並び替えて、その順序で文書ＩＤを出力する。
【００４６】
上記のように、文書が更新されると転置インデックスも更新される。このとき、文書の更新に合わせて単語毎に更新時刻ntを保持しておき、キャッシュ（スコアキャッシュＤＢ１０４）には検索語毎に前回の利用時刻tcを保持しておき、検索時には、単語毎の更新時刻ntと前回の利用時刻（最終格納時刻）tcとを比較して、更新時刻ntの方が古ければキャッシュ情報をそのまま利用してスコアキャッシュＤＢ１０４に格納されている文書ＩＤをスコアの高い順に出力する。
【００４７】
上記の図３に示す文書検索装置の構成要素の動作をプログラムとして構築し、文書検索装置として利用されるコンピュータにインストールして実行させる、または、ネットワーク介して流通させることが可能である。
【００４８】
また、構築されたプログラムをハードディスクや、フレキシブルディスク・ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【００４９】
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【００５０】
１１０  前処理部
１０１  文書集合
１０２  転置インデクス記憶手段、転置インデックス記憶部
１０３  単語−最新時刻記憶手段、単語−最新時刻記憶部
１０４  スコアキャッシュ記憶手段、スコアキャッシュＤＢ（データベース）
１２１  転置インデクス展開手段、転置インデクス展開部
１２２  スコア計算手段、スコア計算部
１２３  ランキング計算手段、ランキング計算部
１２４  転置リスト記憶部
【図１】
2011198113.tif 000003
【図２】
2011198113.tif 000004
【図３】
2011198113.tif 000005
【図４】
2011198113.tif 000006
【図５】
2011198113.tif 000007
【図６】
2011198113.tif 000008