(57)【要約】【課題】検索インデックスの肥大化を防止するためには、充分な量の過去の検索情報の蓄積や複雑で時間のかかる処理が必要になること。【解決手段】この検索装置１は、見出し語とその見出し語を含む文書との対応関係を記憶する検索インデックス２と、検索インデックス管理手段３と、文書検索手段４とを備える。検索インデックス管理手段３は、検索対象文書集合への第１の文書の登録時、第１の文書に含まれる語のうち、検索インデックス２に既に見出し語として登録されている語については、第１の文書の見出し語として検索インデックス２に登録し、検索インデックス２に見出し語として未だ登録されていない語については、第１の文書を引用する別の第２の文書について検索対象文書集合への登録要求があった時点で第１の文書の見出し語として検索インデックス２に登録する。文書検索手段４は、検索要求時、検索インデックス２から検索キーワードに一致する見出し語を含む文書を検索する。【選択図】図１
2011238098.tif 000002
【特許請求の範囲】
【請求項１】
見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスと、
検索対象文書集合への第１の文書の登録時、前記第１の文書に含まれる語のうち、前記検索インデックスに既に見出し語として登録されている語については、前記第１の文書の見出し語として前記検索インデックスに登録し、前記検索インデックスに見出し語として未だ登録されていない語については、前記第１の文書を引用する別の第２の文書について前記検索対象文書集合への登録要求があった時点で前記第１の文書の見出し語として前記検索インデックスに登録する検索インデックス管理手段と、
検索要求時、前記検索インデックスから検索キーワードに一致する見出し語を含む文書を検索する文書検索手段とを備えることを特徴とする検索装置。
【請求項２】
前記検索インデックス管理手段は、新規に登録された文書に含まれる語のうち、前記検索インデックスに既に見出し語として含まれる語を、前記文書の見出し語として前記検索インデックスに登録する検索インデックス更新手段と、新規に登録された文書から引用されている過去の文書に含まれる語を、その文書の見出し語として前記検索インデックスに登録する重要メッセージ抽出手段とを有することを特徴とする請求項１に記載の検索装置。
【請求項３】
前記検索インデックスは、見出し語ごとに、最新のアクセス時刻を記録するタイムスタンプを有し、
前記検索インデックス管理手段は、一定時間以上アクセスされていない見出し語を前記検索インデックスから削除することを特徴とする請求項１または２に記載の検索装置。
【請求項４】
前記検索インデックス管理手段は、前記検索インデックスの見出し語のうち、付加されたタイムスタンプから一定時間以上アクセスされていない見出し語を定期的に検出し、削除する見出し語削除手段を有することを特徴とする請求項１乃至３の何れかに記載の検索装置。
【請求項５】
前記検索対象文書集合に含まれる文書を記憶する文書記憶手段と、
登録要求のあった文書を登録順に前記文書記憶手段に記憶する文書登録手段と、
参照要求時、前記文書記憶手段に最近登録された上位一定個数の文書を参照要求元へ送信する文書参照手段とを備えることを特徴とする請求項１乃至４の何れかに記載の検索装置。
【請求項６】
前記検索対象文書集合に含まれる文書は、文書識別子と、文書本文と、引用する他の文書の文書識別子とを含むことを特徴とする請求項１乃至５の何れかに記載の検索装置。
【請求項７】
見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスと、検索インデックス管理手段と、文書検索手段とを備える検索装置で実行される検索方法であって、
前記検索インデックス管理手段が、検索対象文書集合への第１の文書の登録時、前記第１の文書に含まれる語のうち、前記検索インデックスに既に見出し語として登録されている語については、前記第１の文書の見出し語として前記検索インデックスに登録し、前記検索インデックスに見出し語として未だ登録されていない語については、前記第１の文書を引用する別の第２の文書について前記検索対象文書集合への登録要求があった時点で前記第１の文書の見出し語として前記検索インデックスに登録し、
前記文書検索手段が、検索要求時、前記検索インデックスから検索キーワードに一致する見出し語を含む文書を検索する
ことを特徴とする検索方法。
【請求項８】
見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスを作成する装置であって、
検索対象文書集合への第１の文書の登録時、前記第１の文書に含まれる語のうち、前記検索インデックスに既に見出し語として登録されている語については、前記第１の文書の見出し語として前記検索インデックスに登録し、前記検索インデックスに見出し語として未だ登録されていない語については、前記第１の文書を引用する別の第２の文書について前記検索対象文書集合への登録要求があった時点で前記第１の文書の見出し語として前記検索インデックスに登録する検索インデックス管理手段を備えることを特徴とする検索インデックス作成装置。
【請求項９】
見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスを備えたコンピュータを、
検索対象文書集合への第１の文書の登録時、前記第１の文書に含まれる語のうち、前記検索インデックスに既に見出し語として登録されている語については、前記第１の文書の見出し語として前記検索インデックスに登録し、前記検索インデックスに見出し語として未だ登録されていない語については、前記第１の文書を引用する別の第２の文書について前記検索対象文書集合への登録要求があった時点で前記第１の文書の見出し語として前記検索インデックスに登録する検索インデックス管理手段と、
検索要求時、前記検索インデックスから検索キーワードに一致する見出し語を含む文書を検索する文書検索手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は検索装置に関し、特に検索インデックスを用いて検索を行う検索装置に関する。
【背景技術】
【０００２】
＜全文検索システムと転置インデックス＞
インターネット上の情報を的確に取得するための手段として、Ｇｏｏｇｌｅ（登録商標）やＹａｈｏｏ！（登録商標）に代表される全文検索システムが広く利用されている。これらの全文検索システムは、何らかの単語を利用者が入力した後、検索ボタンを押すことで、入力した単語を含む文書の一覧を表示する。全文検索システムにおいて利用者が入力する単語を、キーワード（keyword）と呼ぶ。
【０００３】
全文検索システムが検索処理を実行するためには、全文検索システムが検索対象の文書を事前に収集しておく必要がある。この処理はクローリング（crawling）と呼ばれる。典型的には、検索対象の文書は複数のＷｅｂサーバに分散して配置されており、クローリング処理では、それらのＷｅｂサーバに対して文書取得の要求を発行することによって、検索対象の文書を収集する。
【０００４】
全文検索システムが利用者から検索要求を受け取った際に、検索処理を実行する最も単純な方法は、クローリングによって収集した全文書に対して、検索キーワードが含まれているか否かを調べる方法である。この方法を全探索（exhaustive search）と呼ぶ。全探索では、検索対象の全文書の分量に比例する時間がかかるため、大量の文書を対象にした全文検索では現実的な性能が得られない。
【０００５】
そこで、検索処理を高速に実行するために、検索インデックス（転置インデックス（inverted index）とも言う）を事前に作成しておく全文検索システムが広く用いられている。検索インデックスとは、単語または文節などの部分文字列を、その部分文字列が出現する文書に対応付けるデータ構造である。ここで、検索インデックスに格納させる部分文字列を、検索インデックスのキー（または見出し語）と呼ぶ。典型的には、検索インデックスには文書そのものではなく、文書ＩＤのような形で文書を特定する情報が記録される。
【０００６】
検索インデックスを用いて検索を行う検索装置の一例が特許文献１に記載されている。特許文献１に記載される検索装置は、文書収集部と、文書需要予測部と、インデックス管理部と、文書検索部とを有する。文書需要予測部は、文書収集部により収集された文書を検索対象として公開した場合の需要を予測する。インデックス管理部は、得られた需要予測値に基づいて、所定以上の需要があると予測された文書のみについて、その文書からキーワードを抽出し、抽出したキーワードをその文書の識別情報とともに検索インデックスに登録する。文書検索部は、検索インデックスに基づいて、ユーザが指定した検索キーワードを含む文書を検索し、その結果をユーザに提示する。
【０００７】
なお、文書からのキーワードの抽出は、英語などの単語が分かち書きされる言語では、単に単語を取り出すだけで済む。一方、日本語などの単語が分かち書きされない言語では、文書から単語などの部分文字列を切り出すために、形態素解析（morphological analysis）と呼ぶ処理を行う。日本語の形態素解析に関する文献としては、例えば非特許文献１がある。
【０００８】
このように検索インデックスを用いた全文検索システムでは、利用者から検索キーワードを含む検索要求を受け取ると、検索インデックスから、検索キーワードに一致するキーを探し、そのキーに対応付けられた文書を検索結果として返す。検索インデックスをハッシュテーブル（hash table）として構成することにより、検索インデックスからの文書の取得は、検索対象の文書の量によらずに一定となり、実用的な性能が得られる。ただし、検索インデックスを用いた全文検索システムでは、文書が公開されてから、利用者による検索要求の結果にその文書が含まれるまでに時間差（タイムラグ、time lag）が生じる。その理由は、クローリングおよび検索インデックスの作成に時間を要するためである。
【０００９】
＜リアルタイム検索＞
上記のタイムラグを数秒〜数十秒程度まで小さくすることを目的とした全文検索システムを、リアルタイム検索システムと呼ぶ。リアルタイム検索システムは、電子掲示板（Bulletin Board System、BBS）やマイクロブログ（microblog）など、高頻度で文書が登録される情報共有システムを対象とした全文検索で典型的に用いられる。
【００１０】
リアルタイム検索システムの一例が特許文献２に記載されている。特許文献２に記載されたリアルタイム検索システムは、アップロードされるファイル（文書など）が保存されるファイルデータベースと、上記ファイルの索引情報としてテキスト情報が保存され、上記テキスト情報に該当する転置ファイルが保存される索引データベースと、ファイルアップロード時に上記ファイルをパケット単位でフィルタリングして上記テキスト情報を抽出して保存し、上記テキスト情報を用いて転置ファイルを生成し保存するファイルサーバと、ファイル検索時に上記テキスト情報と転置ファイルとを用いて当該ファイルを検索する検索サーバとから構成される。このように、ファイルのアップロード過程においてファイルに対する索引及び目録の整理作業を同時に行うことによって、上記のタイムラグの短縮を図っている。
【００１１】
その他、本発明に関連する技術を記載した文献として、特許文献３、特許文献４がある。特許文献３には、リアルタイム検索システムの他の例が示されている。また、特許文献４には、ユーザの閲覧履歴あるいは投稿履歴の少なくとも一方を参照して、当該ユーザが閲覧あるいは投稿したメッセージ情報に関連するメッセージ情報を抽出し、前記抽出したメッセージ情報を他のメッセージ情報と区別して処理する方法が示されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００５−３５２６８７号公報
【特許文献２】特開２０１０−４４７６３号公報
【特許文献３】特表２００４−５０２９８７号公報
【特許文献４】特開２００２−２７８９９０号公報
【非特許文献】
【００１３】
【非特許文献１】”Applying Conditional Random Fields to Japanese MorphologicalAnalysis”,Taku Kudo, Kaoru Yamamoto, Yuji Matsumoto,Proc.of 2004 Conference on Empirical Methods in Natural LanguageProcessing(EMNLP).
【発明の概要】
【発明が解決しようとする課題】
【００１４】
検索インデックスを用いる検索装置では、検索対象となる文書の数が増えるに従って、検索インデックスの容量が大きくなる。検索インデックスの容量が大きくなると、検索条件を満たす文書を検索するのに要する時間が長くなり、検索速度が低下する。このため、検索インデックスの肥大化を抑えることが重要である。
【００１５】
上述した特許文献１では、文書収集部により収集された文書を検索対象として公開した場合の需要を予測し、一定以上の需要があると予測された文書のみについて検索インデックスを作成することにより、検索インデックスが不必要に大容量化することを防止している。しかしながら、公開前に文書の需要を正確に予測するためには、充分な量の過去の検索情報の蓄積が必要であるとともに、これら多くの過去の検索情報を考慮に入れた複雑で時間のかかる予測計算が必要になる。
【００１６】
本発明の目的は、上述した課題、すなわち検索インデックスの肥大化を防止するためには、充分な量の過去の検索情報の蓄積や複雑で時間のかかる処理が必要になる、という課題を解消する検索装置を提供することにある。
【課題を解決するための手段】
【００１７】
本発明の一形態にかかる検索装置は、見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスと、検索対象文書集合への第１の文書の登録時、上記第１の文書に含まれる語のうち、上記検索インデックスに既に見出し語として登録されている語については、上記第１の文書の見出し語として上記検索インデックスに登録し、上記検索インデックスに見出し語として未だ登録されていない語については、上記第１の文書を引用する別の第２の文書について上記検索対象文書集合への登録要求があった時点で、上記第１の文書の見出し語として上記検索インデックスに登録する検索インデックス管理手段と、検索要求時、上記検索インデックスから検索キーワードに一致する見出し語を含む文書を検索する文書検索手段とを備える。
【発明の効果】
【００１８】
本発明によれば、他の文書から引用されないような重要でない文書のみに現れる語は見出し語として検索インデックスに登録しないという簡便な処理により、重要でない文書によって検索インデックスが肥大化することを防止することができる。
【００１９】
また、他の文書から引用されるほど重要な文書については、その文書のみに現れる語であっても検索インデックスに登録されるため、検索キーワードによる重要文書の検索を支障なく行うことが可能になる。
【００２０】
さらに、他の文書から全く引用されない文書であっても、その文書の登録時点で検索インデックスに既に登録されている語と同一の語については、その文書の見出し語として検索インデックスに登録されるため、他の文書から引用されるほど重要な文書に含まれる語と同一の語を含む文書は、それらの語に関して検索キーワードによる検索が可能となる。この点は、需要が少ないと予測された文書については検索インデックスへの登録を一切行わない特許文献１とは相違する。
【図面の簡単な説明】
【００２１】
【図１】本発明の第２の実施形態を示すブロック図である。
【図２】メッセージの構造を説明するための図である。
【図３】検索インデックスの内部構造を説明するための図である。
【図４】メッセージＤＢの内部構造を説明するための図である。
【図５】メッセージ投稿に関する全体の動作を説明するためのシーケンス図である。
【図６】メッセージ参照に関する全体の動作を説明するためのシーケンス図である。
【図７】メッセージ検索に関する全体の動作を説明するためのシーケンス図である。
【図８】検索インデックスからの不要な見出し語の削除に関する全体の動作を説明するためのシーケンス図である。
【図９】メッセージ投稿手段の動作手順を説明するためのフローチャートである。
【図１０】メッセージ投稿手段に入力されるメッセージ投稿要求の具体例を示す図である。
【図１１】メッセージ投稿手段による動作完了後におけるメッセージＤＢの内容の具体例を示す図である。
【図１２】メッセージ参照手段の動作手順を説明するためのフローチャートである。
【図１３】メッセージ検索手段の動作手順を説明するためのフローチャートである。
【図１４】検索インデックス更新手段の動作手順を説明するためのフローチャートである。
【図１５】検索インデックス更新手段による動作完了後における検索インデックスの内容の具体例を示す図である。
【図１６】重要メッセージ抽出手段の動作手順を説明するためのフローチャートである。
【図１７】重要メッセージ抽出手段により抽出される重要メッセージの具体例を示す図である。
【図１８】重要メッセージ抽出手段による動作完了後における検索インデックスの内容の具体例を示す図である。
【図１９】見出し語削除手段の動作手順を説明するためのフローチャートである。
【図２０】本発明の第３の実施形態を示すブロック図である。
【図２１】本発明の第１の実施形態を示すブロック図である。
【発明を実施するための形態】
【００２２】
次に本発明の実施形態について図面を参照して詳細に説明する。
[第１の実施形態]
図２１を参照すると、本発明の第１の実施形態にかかる検索装置１は、検索インデックス２と、検索インデックス管理手段３と、文書検索手段４とを備えている。
【００２３】
検索インデックス２は、見出し語と、その見出し語を含む文書との対応関係を記憶する。文書が一つも登録されていない時点では、検索インデックス２には、見出し語およびそれに対応する文書は一つも記録されていない。ただし、幾つかの見出し語が初期登録されていても構わない。
【００２４】
検索インデックス管理手段３は、検索インデックス２を管理する機能を有する。検索インデックス管理手段３は、検索対象となる文書の登録時、その文書に含まれる語のうち、検索インデックス２に既に見出し語として登録されている語と同一の語については、その文書の見出し語として検索インデックス２に登録する。具体的には、検索インデックス２における該当する見出し語に対応してその文書の識別子を記録する。
【００２５】
他方、検索インデックス管理手段３は、登録する文書に含まれる語のうち、検索インデックス２に見出し語として未だ登録されていない語については、当該文書の登録時点では検索インデックス２に登録しない。検索インデックス管理手段３は、登録する文書に含まれる語のうち、検索インデックス２に見出し語として未だ登録されていない語については、当該文書を引用する別の文書の登録時点で、検索インデックス２に登録する。具体的には、登録する文書が他の文書を引用しているか否かを判定し、引用していれば、引用されている文書を図示しない文書記憶手段から取得し、この取得した文書に含まれる語のうち、検索インデックス２に見出し語として未だ登録されていない語については、当該語を見出し語として検索インデックス２に追加し、さらにその追加した見出し語に対応してその文書の識別子を記録する。
【００２６】
文書検索手段４は、検索要求時、検索インデックス２から検索キーワードに一致する見出し語を含む文書を検索する機能を有する。
【００２７】
次に本実施形態にかかる検索装置１の動作を説明する。
【００２８】
例えば、ネットワークを介して接続された端末５から、登録対象となる文書が検索装置１に対して送信されると、検索装置１は受信した文書を図示しない文書記憶手段に登録する。続いて検索装置１の検索インデックス管理手段３は、登録した文書に含まれる語のうち、検索インデックス２に見出し語として既に登録されている語について、その文書の見出し語として検索インデックス２に登録する。
【００２９】
さらに検索インデックス管理手段３は、登録した文書が他の文書を引用しているか否かを判定する。例えば、他の文書の引用を当該他の文書の識別子を記載することで行う場合、他の文書の識別子が付加されているか否かを判定する。若し、他の文書を引用している場合、検索インデックス管理手段３は、引用されている文書の内容を図示しない文書記憶手段から取得する。そして、引用されている文書に含まれる語のうち、検索インデックス２に見出し語として未だ登録されていない語については、当該語を見出し語として検索インデックス２に追加し、さらにその追加した見出し語に対応してその文書の識別子を記録する。
【００３０】
また、検索インデックス管理手段３は、引用されている文書に含まれる語のうち、検索インデックス２に既に見出し語として登録されている語と同一の語については、その見出し語に対応して当該文書の識別子が既に登録されているか否かを調査する。このような調査を行う理由は、引用されている文書の登録時点で、その文書に含まれる語のうち検索インデックス２に既に見出し語として存在していた語については、その文書の識別子が登録されているためである。そして、調査の結果、若し登録されていなければ、当該見出し語に対応して当該文書の識別子を記録する。
【００３１】
検索装置１の文書検索手段４は、例えば、ネットワークを介して接続された端末５から、検索キーワードを指定した検索要求が検索装置１に対して送信されると、検索インデックス２から検索キーワードに一致する見出し語を含む文書を検索する。そして、検索した文書の内容を図示しない文書記憶手段から取得して、端末５へ送信する。
【００３２】
このように本実施形態によれば、検索インデックス２には、他の文書から引用されている文書に含まれる語のみが見出し語として追加されるため、検索インデックス２が不必要に大容量化することを防止することができる。
【００３３】
また、他の文書から引用されるほど重要な文書については、その文書のみに現れる語であっても検索インデックスに登録されるため、検索キーワードによる重要文書の検索を支障なく行うことができる。
【００３４】
また、検索インデックス２のサイズの縮小化が図られているために、検索速度が向上する。
【００３５】
さらに、他の文書から全く引用されない文書であっても、検索インデックスに既に登録されている語と同一の語については、その文書の見出し語として検索インデックスに登録されるため、他の文書から引用されるほど重要な文書に含まれる語と同一の語を含む文書は、それらの語に関して検索キーワードによる検索が可能となる。
【００３６】
[第２の実施形態]
図１を参照すると、本発明の第２の実施形態は、１台またはそれ以上のクライアント機１００−１〜１００−ｎと、１台のメッセージサーバ２００と、１台の検索サーバ３００と、メッセージＤＢ（データベース）４００とから構成される。
【００３７】
クライアント機１００−１〜１００−ｎは、液晶ディスプレイなどの出力装置と、キーボード・マウスなどの入力装置とを備えるコンピュータである。各クライアント機は、メッセージサーバ２００および検索サーバ３００と、ローカルエリアネットワーク（ＬＡＮ）あるいはインターネットなどのネットワークを介して接続される。本システムの利用者は、クライアント機１００−１〜１００−ｎのいずれかを通して、メッセージの投稿・参照・検索の操作を行うことができる。メッセージは、数十字〜数百字程度のテキストである。本実施形態は、メッセージを検索の対象としているが、広く文書の検索に適用可能である。
【００３８】
本実施形態において、メッセージの参照とは、各メッセージに振られたメッセージＩＤを指定して、対応するメッセージの内容を取得する操作、あるいはメッセージＩＤの指定を省略し、最近登録された上位一定数のメッセージの内容を取得する操作を指す。また、メッセージの検索とは、１つまたは複数のキーワードを指定して、それらのキーワードを含むメッセージを取得する操作を指す。また、メッセージの投稿とは、新たなメッセージを登録する操作を指す。以降では、クライアント機１００−１〜１００−ｎのうちの任意の１台を指して、クライアント機１００と表記する。
【００３９】
メッセージサーバ２００は、プログラム制御により動作するコンピュータであり、クライアント機１００からのメッセージ投稿とメッセージ参照の各操作を処理する役割を持つ。メッセージサーバ２００は、メッセージ投稿手段２１０と、メッセージ参照手段２２０とを備える。ここで、メッセージ投稿手段２１０は文書登録手段を、メッセージ参照手段２２０は文書参照手段をそれぞれ構成する。
【００４０】
検索サーバ３００は、プログラム制御により動作するコンピュータであり、クライアント機１００からのメッセージ検索の操作を処理する役割を持つ。検索サーバ３００は、メッセージ検索手段３１０と、検索インデックス更新手段３２０と、重要メッセージ抽出手段３３０と、見出し語削除手段３４０と、検索インデックス３５０とを備える。ここで、検索インデックス更新手段３２０、重要メッセージ抽出手段３３０、および見出し語削除手段３４０は、検索インデックス管理手段を構成する。
【００４１】
メッセージＤＢ４００は、メッセージサーバ２００に対して投稿されたメッセージを格納するデータベースである。メッセージＤＢ４００は、ストレージエリアネットワーク（ＳＡＮ）などのネットワークを介して、メッセージサーバ２００と検索サーバ３００の双方に接続される。
【００４２】
本システムの動作は、利用者からのメッセージ投稿・参照・検索の各操作に対応する３種類の処理と、利用者からの操作とは独立に動作する見出し語削除処理の計４種類の処理から構成される。
【００４３】
以下、メッセージ投稿・参照・検索、および見出し語削除の各動作シーケンスについて、本システム全体の動作を説明する。
【００４４】
＜メッセージ投稿＞
利用者は、クライアント機１００に対してメッセージ本文を入力して、新規メッセージ投稿の操作を行う。
【００４５】
この操作に対して、クライアント機１００は、メッセージサーバ２００に対してメッセージ投稿要求を送信する。
【００４６】
メッセージサーバ２００のメッセージ投稿手段２１０は、受け取ったメッセージに対して新規のメッセージＩＤを割り当てた後、このメッセージＩＤに対応付けてメッセージの内容をメッセージＤＢ４００に追加するとともに、検索サーバ３００に対して当該メッセージに関する検索対象追加要求を送信する。
【００４７】
検索サーバ３００の検索インデックス更新手段３２０は、メッセージ投稿手段２１０からの検索対象追加要求を受信して、新着メッセージを検索インデックス３５０に追加する。検索インデックス３５０は、メッセージ中のキーワードを見出し語として、各見出し語とそれが出現するメッセージＩＤを対応付ける形を取る。新着メッセージを検索インデックスに追加する際、すでに見出し語に含まれるキーワードのみを追加対象とする。
【００４８】
さらに、検索サーバ３００の重要メッセージ抽出手段３３０は、新着メッセージから言及されている過去のメッセージをメッセージＤＢ４００から取得して、それらのメッセージに含まれるキーワードを新規の見出し語として検索インデックス３５０に追加する。この重要メッセージ抽出手段３３０の動作は、他のメッセージから言及されているメッセージを重要メッセージとみなして、重要メッセージに含まれるキーワードのみを検索インデックス中の見出し語に登録することに相当する。
【００４９】
以上の処理が完了すると、メッセージ投稿手段２１０は、要求元のクライアント機１００に対して、メッセージ投稿完了の応答を送信する。クライアント機１００は、メッセージ投稿完了の旨を画面上に出力する。
【００５０】
＜メッセージ参照＞
利用者は、クライアント機１００に対して、メッセージ参照の操作を行う。メッセージの参照に関して、利用者は、特定のメッセージＩＤを指定するか、メッセージＩＤを指定せずに、直近に投稿されたメッセージを取得するかの２通りの操作を行うことができる。
【００５１】
メッセージサーバ２００のメッセージ参照手段２２０は、利用者の操作に対応して、それぞれ以下の処理を行う。
・メッセージＩＤが指定された場合：
メッセージＤＢ４００から、指定されたメッセージＩＤをキーとするメッセージ本体を取得して、要求元のクライアント機１００に送信する。
・メッセージＩＤが指定されなかった場合：
メッセージＤＢ４００から、新着順に数件のメッセージを取得して、要求元のクライアント機１００に送信する。
【００５２】
いずれの場合も、クライアント機１００は、メッセージサーバ２００から送られた応答、すなわち取得したメッセージの内容を画面に出力する。
【００５３】
＜メッセージ検索＞
利用者は、クライアント機１００に対して、メッセージ検索の操作を行う。メッセージの検索操作では、利用者は、検索対象を示すキーワードを１つ以上入力する。この操作に対して、検索サーバ３００のメッセージ検索手段３１０は、検索インデックス３５０を参照して、入力されたキーワードに一致する見出し語を検索し、その見出し語に対応するメッセージＩＤを取得する。
【００５４】
さらに、メッセージ検索手段３１０は、メッセージ参照手段２２０を呼び出して、取得したメッセージＩＤに対応するメッセージ本文を取得し、それらのメッセージ本文を要求元のクライアント機１００に送信する。
【００５５】
クライアント機１００は、検索サーバ３００から送られた応答、すなわち検索結果であるメッセージの内容を画面に出力する。
【００５６】
＜見出し語削除＞
見出し語削除処理は、検索インデックス３５０に格納された見出し語のうち、一定時間以上検索も更新もされていないものを削除する処理である。見出し語削除処理は、検索サーバ３００が見出し語削除手段３４０を一定時間ごとに起動することによって開始される。
【００５７】
見出し語削除手段３４０は、検索インデックス３５０中の各見出し語に付加されたタイムスタンプと、現在時刻を比較する。そして、見出し語削除手段３４０は、タイムスタンプに示される時刻から所定の時間が経過した見出し語を、有効期限が切れたとみなして、その見出し語および対応するメッセージＩＤを検索インデックス３５０から削除する。
【００５８】
[データ構造]
続いて、本システムで扱うメッセージと、検索インデックス３５０およびメッセージＤＢ４００の内部構造を説明する。
【００５９】
＜メッセージ＞
本システムにおいて、利用者が投稿・参照・検索する対象となるメッセージは、図２に示されるように、以下の構成要素を含む。
・メッセージＩＤ：投稿されたメッセージを一意に識別する文字列である。
・発言者ＩＤ：そのメッセージの発言者を一意に識別する文字列である。
・言及先メッセージＩＤ：そのメッセージが言及（引用）している他のメッセージを識別するＩＤである。
・日付：そのメッセージが投稿された日時である。
・本文：メッセージの本文である。
【００６０】
ここで、言及先メッセージＩＤは０個以上の要素からなるリストである。すなわち、言及先メッセージの数は任意であり、０個の場合もある。
【００６１】
＜検索インデックス＞
検索インデックス３５０は、以下の各要素（フィールド、field）からなるレコードの集まりである。
・見出し語（headword）：メッセージ本文中に出現する特定の単語である。
・タイムスタンプ（timestamp）：レコードが最後に更新または参照された時刻を示す日付である。
・メッセージＩＤリスト：本文中に見出し語が出現するメッセージのメッセージＩＤを列挙したリストである。
【００６２】
検索インデックス３５０において、見出し語がレコードを一意に識別するための主キー（プライマリキー、primary key）となる。
【００６３】
図３に、検索インデックス３５０の内容の具体例を示す。この例では、見出し語「野球」を含むメッセージが３つあり、これらはそれぞれ1053156, 105129, 98490のメッセージＩＤを持つ。また見出し語「野球」には、「2010/6/5 10:12:20」というタイムスタンプが付加されている。これは、見出し語「野球」に対応するメッセージＩＤが最後に追加または参照された時刻を示している。
【００６４】
このように、見出し語をキーとして、その見出し語を含むメッセージＩＤのリストを保持するデータ構造は、一般に転置インデックス (inverted index) と呼ばれるものである。
【００６５】
＜メッセージＤＢ＞
メッセージＤＢ４００は、メッセージについての各要素、すなわちメッセージＩＤ、発言者ＩＤ、言及先メッセージＩＤ、日付、本文（図２参照）を１レコードとするデータベースである。メッセージＤＢ４００において、メッセージＩＤがデータベースの主キーとなる。すなわち、メッセージＤＢ４００中で、同一のメッセージＩＤを持つメッセージが複数存在することは許されない。
【００６６】
また、メッセージＤＢ中の各レコードは、新しく追加された順に取り出すことができる。この性質を実現するための方法の一例は、メッセージＩＤを１、２、３、…のような整数として表現して、新規に追加するレコードには、直前に追加されたレコードに１加えた数値をメッセージＩＤとすることである。
【００６７】
図４に、メッセージＤＢ４００の内容の具体例を示す。この例では、メッセージＤＢをリレーショナル・データベース（relational database）として構成する。図４に示すデータベースには、メッセージＩＤがそれぞれ1055236、1054150、1054149の3つのメッセージについて、その具体的な内容が示されている。なお、メッセージＤＢをリレーショナル・データベースとして構成することと、図４のデータベースの内容はあくまで一例であり、本発明はこの例に限定されない。
【００６８】
以下では、シーケンス図を用いて、メッセージ投稿・参照・検索・見出し語削除の各操作についての動作の流れを説明した後で、各手段の動作手順の詳細を説明する。
【００６９】
[動作シーケンス]
以下の動作シーケンスの説明中に現れるステップ番号は、後述の各手段の動作手順中のステップ番号に対応する。
【００７０】
＜メッセージ投稿＞
図５を参照して、メッセージ投稿操作に関する動作シーケンスを示す。
【００７１】
クライアント機１００は、メッセージサーバ２００に対してメッセージ投稿要求を送信し、メッセージサーバ２００のメッセージ投稿手段２１０がこの要求を受信する（ステップＳ２１１）。メッセージ投稿要求には、発言者ＩＤ、言及先メッセージＩＤ、およびメッセージ本文の情報が含まれる。
【００７２】
すると、メッセージ投稿手段２１０は、受信したメッセージにメッセージＩＤおよびタイムスタンプを付加したものを、メッセージＤＢ４００に登録する（ステップＳ２１３）。以降、ここで登録したメッセージを新着メッセージと呼ぶ。
【００７３】
次に、メッセージ投稿手段２１０は、検索サーバ３００に対して検索対象追加要求を送る（ステップＳ２１４）。この要求には、新着メッセージの内容が含まれる。
【００７４】
検索サーバ３００が検索対象追加要求を受け取ると、検索インデックス更新手段３２０は、新着メッセージ本文に含まれるキーワードを抽出し、それらのキーワードと新着メッセージのＩＤの対応関係を検索インデックス３５０に追加する（ステップＳ３２４）。このときに追加の対象となるキーワードは、検索インデックス３５０中に見出し語として登録済みのものに限られる。
【００７５】
次に、検索インデックス更新手段３２０は、重要メッセージ抽出手段３３０に新着メッセージ通知を送る（ステップＳ３２６）。重要メッセージ抽出手段３３０は、新着メッセージ中の言及先メッセージＩＤの情報から、新着メッセージから言及されている過去のメッセージを重要メッセージとして取得し、重要メッセージ中のキーワードを、検索インデックス３５０の見出し語として登録する（ステップＳ３３５）。
【００７６】
以上の処理が終わると、検索インデックス更新手段３２０がメッセージ投稿手段２１０に応答を送信し、メッセージ投稿手段はクライアント機１００に応答を送る（ステップＳ２１５）。
【００７７】
＜メッセージ参照＞
図６を参照して、メッセージ参照処理に関するシーケンスを説明する。
【００７８】
まず、メッセージサーバ２００のメッセージ参照手段２２０は、クライアント機１００からメッセージ参照要求を受信する（ステップＳ２２１）。メッセージ参照要求には、参照対象のメッセージＩＤが含まれる場合と、含まれない場合がある。
【００７９】
次に、メッセージＤＢ４００から、メッセージの本体を取得する（ステップＳ２２２）。具体的には、メッセージ参照要求にメッセージＩＤが含まれる場合、そのメッセージＩＤをキーとしてメッセージ本体を取得する。一方、メッセージ参照要求にメッセージＩＤが含まれない場合、メッセージＤＢ４００に最後に追加されたメッセージを取得する。
【００８０】
最後に、取得したメッセージの内容を、メッセージ参照要求への応答としてクライアント機１００に送信する（ステップＳ２２３）。
【００８１】
＜メッセージ検索＞
図７を参照して、メッセージ検索処理に関するシーケンスを説明する。
【００８２】
まず、検索サーバ３００のメッセージ検索手段３１０は、クライアント機１００から送信されたメッセージ検索要求を受信する（ステップＳ３１１）。メッセージ検索要求には、１つまたは複数の検索キーワードが含まれる。
【００８３】
次に、メッセージ検索手段３１０は、検索インデックス３５０を参照して、検索キーワードに一致する見出し語を検出する（ステップＳ３１２）。そして、該当する見出し語が存在する場合、その見出し語に対応付けられたメッセージＩＤリストを検索結果として取得する。複数の検索キーワードが指定されている場合、各検索キーワードに対応してメッセージＩＤリストを取得し、それらの間で共通部分を検索結果とする。
【００８４】
次に、メッセージＤＢ４００から、検索結果のメッセージＩＤに対応するメッセージ本体を取得する（ステップＳ３１６）。
【００８５】
最後に、検索結果のメッセージ本体を、メッセージ検索要求への応答としてクライアント機１００に送信する（ステップＳ３１７）。
【００８６】
＜見出し語削除＞
図８を参照して、見出し語削除処理のシーケンスを示す。
【００８７】
まず、検索サーバ３００の見出し語削除手段３４０は、検索インデックス３５０から、見出し語とそのタイムスタンプの組からなるリストを取得する（ステップＳ３４１）。そして、これらの見出し語のうち、タイムスタンプから所定の有効期間が経過したものについて、検索インデックス３５０から削除する（ステップＳ３４３）。
【００８８】
以降では、メッセージサーバ２００の各手段の詳細な動作手順を示す。各ステップ番号は、シーケンス図中に付加したステップ番号と同一である。
【００８９】
[メッセージ投稿手段の動作手順]
図９のフローチャートを用いて、メッセージ投稿手段２１０の動作手順を説明する。この動作手順は、メッセージ投稿シーケンス（図５）の一部を構成する。
【００９０】
まず、クライアント機から送信されたメッセージ投稿要求を受け取る（ステップＳ２１１）。メッセージ投稿要求には、発言者ＩＤ、言及先メッセージＩＤ、およびメッセージ本文が含まれる。
【００９１】
次に、前ステップで受け取ったメッセージに割り当てるメッセージＩＤおよび日付を決定する（ステップＳ２１２）。ここで、タイムスタンプは、本ステップが実行された時点での現在時刻である。メッセージＩＤは、過去に投稿されたどのメッセージとも重ならない任意の番号である。
【００９２】
メッセージＩＤの決定方法の一例は、直前に投稿されたメッセージのメッセージＩＤに１を加えた数値とすることである。メッセージＩＤ決定方法の別の例は、メッセージに付加した日付にＭＤ５やＳＨＡ−１などのハッシュ関数を適用した結果得られるハッシュ値とすることである。
【００９３】
次に、メッセージＤＢ４００に、ステップＳ２１１で受け取ったメッセージの内容に、前ステップで決定したメッセージＩＤと日付の組を加えたものを、新着メッセージとしてメッセージＤＢ４００に登録する（ステップＳ２１３）。具体的には、メッセージＤＢ４００中で、新着メッセージのメッセージＩＤからメッセージ本体を対応付けるとともに、投稿順リストの最新の要素として、新着メッセージのメッセージＩＤを登録する。
【００９４】
次に、検索サーバ３００に対して、検索対象追加要求を送信し、その応答を待つ（ステップＳ２１４）。この要求には、新着メッセージの内容を含める。
【００９５】
最後に、ステップＳ２１１におけるメッセージ投稿要求への応答として、クライアント機１００にメッセージ投稿処理の完了を通知する（ステップＳ２１５）。
【００９６】
以下に、メッセージ投稿手段２１０の動作手順の具体例を示す。
【００９７】
初期状態でのメッセージＤＢ４００の内容を、図４に示す内容であると仮定する。ステップＳ２１１におけるメッセージ投稿要求の例を、図１０に示す。これは通常のメッセージとほぼ同様の内容であるが、メッセージＩＤと日時が含まれていない。
【００９８】
ステップＳ２１２において、図１０のメッセージ投稿要求に対して、メッセージＩＤと日時の情報を追加したものの例が、図２である。ここで、新着メッセージに付加したメッセージＩＤ：1055237は、図４における最新のメッセージＩＤ：1055236に1加えたものである。
【００９９】
ステップＳ２１３において、新着メッセージをメッセージＤＢ４００に登録した直後のメッセージＤＢ４００の内容を、図１１に示す。図中の最上段のレコードは、図２に示したメッセージの内容に一致する。
【０１００】
[メッセージ参照手段の動作手順]
図１２のフローチャートを参照して、メッセージ参照手段２２０の動作手順を説明する。この動作手順は、メッセージ参照シーケンス（図６）に対応する。
【０１０１】
まず、メッセージ参照手段２２０は、クライアント機１００からメッセージ参照要求を受信する（ステップＳ２２１）。メッセージ参照要求は、参照対象となるメッセージのメッセージＩＤを含む場合と、含まない場合がある。
【０１０２】
次に、メッセージＤＢ４００から、参照対照となるメッセージ本体を取得する（ステップＳ２２２）。具体的には、メッセージ参照要求にメッセージＩＤが含まれていた場合、そのメッセージＩＤをキーとするレコードを取得する。一方、メッセージ参照要求にメッセージＩＤが含まれてない場合、メッセージＤＢ４００に最後に追加されたレコードを取得する。
【０１０３】
最後に、メッセージ参照要求への応答として、前ステップで取得したメッセージの内容を、クライアント機１００に送信する（ステップＳ２２３）。
【０１０４】
上記のステップＳ２２２において、メッセージＩＤが指定されない場合の動作として、最後に追加されたレコードを１つだけ取得する代わりに、所定の個数のレコードを新しい順に取得するという動作でも良い。例えば、最後の１０個のレコードを取得する場合、本システムの利用者にとっては、最新の１０件のメッセージが参照できることになる。
【０１０５】
以下に、メッセージ参照手段２２０の動作の具体例を示す。メッセージＤＢ４００の内容は、図１１に示す内容であると仮定する。また、ステップＳ２２１において、メッセージ参照要求としてメッセージＩＤ：1055237が指定されたとする。
【０１０６】
この場合、ステップＳ２２２では、メッセージＤＢ４００から、メッセージＩＤ：1055237をキーとしてレコードを取得する。この結果、図２に示す内容のレコードを取得する。また、ステップＳ２２３では、メッセージ参照要求への応答として、図２に示す内容のメッセージをクライアント１００に送信する。
【０１０７】
以降では、メッセージサーバ３００の各手段について、詳細な動作手順を説明する。
【０１０８】
[メッセージ検索手段の動作手順]
メッセージ検索手段３１０は、クライアント機１００からメッセージ検索要求を受け取った際に動作を開始する。この動作は、メッセージ検索シーケンス（図７）に対応する。
【０１０９】
以下、図１３のフローチャートを参照して、メッセージ検索手段３１０の動作手順を説明する。
【０１１０】
まず、クライアント機１００から送信されたメッセージ検索要求を受信する（ステップＳ３１１）。メッセージ検索要求には、検索キーワードが１つまたは複数含まれる。
【０１１１】
次に、検索インデックス３５０中を参照して、前ステップ３１１で入力された検索キーワードに一致する見出し語を検出する（ステップＳ３１２）。ここで見出し語が検出された場合はステップＳ３１３に、検出されなかった場合はステップＳ３１７に進む。なお、複数の検索キーワードが入力された場合には、すべての検索キーワードについて検索ヒット語が存在する場合のみＳ３１３に進む。
【０１１２】
ステップＳ３１３では、検索インデックス３５０において、各検索キーワードに対応するレコードのタイムスタンプを、現在時刻に更新する。このステップは、検索対象になった見出し語の有効期限を延長する効果がある。
【０１１３】
次に、検索インデックス３５０において、検索キーワードに対応するレコードに含まれるメッセージＩＤリストを取得する（ステップＳ３１４）。若し、複数の検索キーワードが入力された場合、各検索キーワードに対応するメッセージＩＤリストを取得した後、それらの共通部分を本ステップの出力とする。
【０１１４】
次に、前ステップで取得したメッセージＩＤリストに１つ以上の要素があるかどうかを調べる（ステップＳ３１５）。該当する場合にはステップＳ３１６に進み、１つも要素がない場合にはステップＳ３１７に進む。
【０１１５】
ステップＳ３１６では、メッセージＤＢ４００から、ステップＳ３１４で取得した各メッセージＩＤに対応するメッセージ本体を取得する。ステップＳ３１７では、メッセージ検索要求に対する応答を、クライアント機１００に送信する。
【０１１６】
ステップＳ３１２において、検索キーワードに一致する見出し語が検出されなかった場合、またはステップＳ３１５において、検索キーワードに対応するメッセージＩＤが存在しなかった場合には、応答として、検索キーワードに該当するメッセージが見つらなかった旨を送信する。
【０１１７】
ステップＳ３１５において、検索キーワードに対応するメッセージＩＤが存在した場合には、ステップＳ３１６において取得したメッセージ本体を、検索結果として応答に含める。
【０１１８】
上記の動作手順では、検索キーワードに一致する見出し語が検索インデックスに存在しない場合、検索は失敗となる。その場合の代替手段として、ステップＳ３１２で見出し語が存在しない場合、またはステップＳ３１５でメッセージＩＤリストに要素がない場合に、メッセージＤＢ３１６の内容を全探索することによって、検索キーワードを本文の部分文字列とするメッセージを取得するという手順を追加してもよい。この代替手段を追加することにより、検索の成功率を上げることが可能になる。ただし、検索の所要時間は増大する。
【０１１９】
以下、メッセージ検索手段３１０の動作を、具体例を用いて説明する。検索インデックス３１０の内容として、図３を仮定する。また、ステップＳ３１１では、メッセージ検索要求として、検索キーワード「野球」および「サッカー」が入力されたと仮定する。
【０１２０】
この場合、ステップＳ３１２では、検索インデックス３１０から、見出し語「野球」および「サッカー」を検出する。すなわち、すべての検索キーワードについて、一致する見出し語が存在するので、ステップＳ３１３に進む。また、ステップＳ３１３では、見出し語「野球」および「サッカー」に対応するタイムスタンプを現在時刻に更新する。ここで、現在時刻が「2010/6/5 11:09:02」であるとすると、「野球」についてのタイムスタンプを「2010/6/5
10:12:20」から「2010/6/5 11:09:02」に、「サッカー」についてのタイムスタンプを「2010/6/5 10:12:20」から「2010/6/5 11:09:02」に、それぞれ更新する。
【０１２１】
次のステップＳ３１４では、見出し語「野球」および「サッカー」に対応するメッセージＩＤリストを取得し、その間で共通に含まれる要素を抽出する。「野球」に対応するメッセージＩＤリストは、[1053156, 105129, 98490]である。「サッカー」に対応するメッセージＩＤリストは、[1053156, 1053022]である。したがって、これらに共通して含まれる要素からなるリスト、[1053156]がステップＳ３１４の出力となる。
【０１２２】
ステップＳ３１４の出力は、１つ以上の要素を持つという条件を満たしているので、ステップＳ３１６に進む。
【０１２３】
ステップＳ３１６では、メッセージＤＢ４００から、メッセージＩＤ：1053156に対応するメッセージの内容を取得する。このメッセージの内容を、ステップＳ３１７においてクライアント機１００への応答として送信する。
【０１２４】
[検索インデックス更新手段の動作手順]
検索インデックス更新手段３２０は、メッセージ投稿手段２１０から検索対象追加要求を送られた際（図９：メッセージ投稿手段、ステップＳ２１４）に動作を開始する。この動作は、メッセージ投稿シーケンス（図５）の一部を構成する。
【０１２５】
以下、図１４のフローチャートを参照して、検索インデックス更新手段３２０の動作手順を説明する。
【０１２６】
まず、メッセージ投稿手段２１０から送られた検索対象追加要求を受信する（ステップＳ３２１）。検索対象追加要求には、新着メッセージ本体が含まれる。
【０１２７】
次に、新着メッセージの本文からキーワードを抽出する（ステップＳ３２２）。キーワードを抽出する方法の一例は、事前に作成しておいたキーワード辞書と一致する文字列をキーワードとして抽出する方法である。この方法は、本文が書かれている言語に関係なく適用できる。キーワードを抽出する方法の別の例は、本文中に含まれている単語のうち、事前に作成しておいたキーワード対象外辞書（ストップワード：stop wordとも呼ばれる）に一致する単語を除いたものをキーワードとして抽出する方法である。この方法は、英語などの単語が分かち書きされる言語に対してはそのまま適用できるが、日本語などの分かち書きされない言語の場合は、事前に形態素解析（morphological analysis）と呼ぶ処理によって単語に分割する必要がある。
【０１２８】
以降、ステップＳ３２２で抽出された各キーワードについて、以下のステップＳ３２３〜Ｓ３２５の処理を行う。複数のキーワードが抽出された場合、これらのステップをその個数分繰り返す。
【０１２９】
ステップＳ３２３では、検索インデックス３５０の見出し語として、処理対象のキーワードが存在するか否かを調べる。存在する場合にはステップＳ３２４に進み、存在しない場合には処理を終了する。
【０１３０】
ステップＳ３２４では、検索インデックス３５０において、処理対象のキーワードを見出し語とするレコードのメッセージＩＤリストに、新着メッセージのメッセージＩＤを追加する。
【０１３１】
ステップＳ３２５では、同じレコードのタイムスタンプを、新着メッセージの日付（現在時刻でもよい）に更新する。
【０１３２】
ステップＳ３２２で抽出されたすべてのキーワードに関してＳ３２２〜Ｓ３２５の処理が終了した後で、重要メッセージ抽出手段３３０に、新着メッセージ到着通知を送信する（ステップＳ３２６）。この通知には、前ステップで受信した新着メッセージのメッセージＩＤを含める。
【０１３３】
新着メッセージ到着通知の送信後、重要メッセージ抽出手段３３０における処理が完了した後で、検索インデックス更新手段３２０の処理を終了する。
【０１３４】
以下、具体例を用いて、検索インデックス更新手段３２０の動作の具体例を示す。ここでは、メッセージＤＢ４００の内容として図１１、検索インデックス３５０の初期状態として図３の内容を仮定する。さらに、ステップＳ３２１で、図２に示す新着メッセージを含む検索対象追加要求を受け取ったとする。この内容は、図１１における最新のレコード、すなわちメッセージＩＤ＝1055237のレコードに一致する。
【０１３５】
この場合、ステップＳ３２２では、新着メッセージの本文「私は高校野球をやっていました。」から、キーワードを抽出する。ここで抽出されるキーワードは、具体的なキーワード抽出アルゴリズムによって変わるが、一例として「高校」「時代」「野球」の３つのキーワードが抽出されたと仮定する。
【０１３６】
まず、キーワード「高校」について、ステップＳ３２３以降を実行する。ステップＳ３２３では、検索インデックス３５０（図３）に見出し語「高校」は含まれないので、ここで処理を終了する。
【０１３７】
次に、キーワード「時代」について、ステップＳ３２３以降を実行する。ステップＳ３２３では、検索インデックス３５０に見出し語「時代」は含まれないので、ここで処理を終了する。
【０１３８】
最後に、キーワード「野球」について、ステップＳ３２３以降を実行する。ステップＳ３２３では、検索インデックス３５０に見出し語「野球」が含まれているので、ステップＳ３２４以降に進む。
【０１３９】
ステップＳ３２４では、見出し語「野球」のレコードにおけるメッセージＩＤリストに、新着メッセージのメッセージＩＤ：1055237を追加する。
【０１４０】
ステップＳ３２５では、見出し語「野球」のレコードにおけるタイムスタンプを、新着メッセージの日付「2010/6/5 10:42:10」に更新する。
【０１４１】
以上で、ステップＳ３２２で抽出したすべてのキーワードについて、Ｓ３２３〜Ｓ３２５の処理が完了したので、ステップＳ３２６に移る。
【０１４２】
ステップＳ３２６では、重要メッセージ抽出手段３３０に対して送信する新着メッセージ到着通知に、メッセージＩＤ＝1055237を含める。
【０１４３】
上記の動作手順を実行した結果、最終的に検索インデックス３５０の内容は図１５のようになる。
【０１４４】
[重要メッセージ抽出手段の動作手順]
重要メッセージ抽出手段３３０は、検索インデックス更新手段３２０からの新着メッセージ通知（図１４、ステップＳ３２６）を受け取ったときに動作を開始し、新着メッセージの言及関係に基づいて重要メッセージを抽出し、重要メッセージ中のキーワードを検索インデックス３５０の見出し語として追加する処理を行う。この処理は、メッセージ投稿シーケンス（図５）の一部を構成する。
【０１４５】
以下、図１６を参照して、重要メッセージ判定手段３３０の動作手順を説明する。
【０１４６】
まず、新着メッセージ通知に含まれる新着メッセージ本体を取り出す（ステップＳ３３１）。
【０１４７】
次に、前ステップで取り出した新着メッセージに含まれる言及先メッセージＩＤをキーとして、メッセージＤＢからメッセージ本体を取り出す（ステップＳ３３２）。このステップは、新着メッセージから言及されている投稿済みメッセージを、重要メッセージとして抽出することに相当する。ここで、新着メッセージに含まれる言及先メッセージＩＤが複数ある場合、それらの言及先メッセージＩＤに対応するすべてのメッセージ本体を取り出す。
【０１４８】
次に、前ステップで取り出した重要メッセージからキーワードを抽出する（ステップＳ３３３）。この処理は、検索インデックス更新手段３２０（図１４）におけるステップＳ３２２と同様である。ここで、重要メッセージが複数ある場合、それらすべてのメッセージについてキーワード抽出を行う。
【０１４９】
ステップＳ３３３で抽出した各キーワードについて、以下のステップＳ３３４〜Ｓ３３７の処理を行う。
【０１５０】
ステップＳ３３４では、検索インデックス３５０に、処理対象のキーワードが見出し語として含まれているかどうかを調べる。含まれている場合はステップＳ３３６、含まれない場合はステップＳ３３５にそれぞれ進む。
【０１５１】
ステップＳ３３５では、検索インデックス３５０に、新規のレコードを追加する。ここで、新規レコードの見出し語は、処理対象のキーワードであり、タイムスタンプは、現在時刻である。この時点では、新規レコードのメッセージＩＤリストは空とする。本ステップの後、Ｓ３３７に進む。
【０１５２】
ステップＳ３３６では、検索インデックス３５０における、処理対象のキーワードを見出し語とするレコードのタイムスタンプを、現在時刻に更新する。本ステップの後、Ｓ３３７に進む。
【０１５３】
ステップＳ３３７では、検索インデックス３５０における、処理対象のキーワードを見出し語とするレコードのメッセージＩＤリストに、そのキーワードを含む重要メッセージのメッセージＩＤを追加する。但し、既に重要メッセージのメッセージＩＤが登録されている場合には、追加する必要はない。
【０１５４】
以下に、重要メッセージ抽出手段の動作の具体例を示す。初期状態における検索インデックス３５０の内容として、図１５を仮定し、メッセージＤＢ４００の内容として、図１１を仮定する。さらに、現在時刻を「2010/6/5 10:42:15」と仮定する。ここで、新着メッセージは図１１中の最上段のレコード、すなわちメッセージＩＤ：1055237のレコードである。このレコードの言及先メッセージＩＤは1054149なので、ステップＳ３３２では、メッセージＩＤ：1054149のレコードを取り出す。ここで取り出される重要メッセージの内容は、図１７に示す内容とする。
【０１５５】
ステップＳ３３３において、本文「今バスケットボールを観戦しています」から抽出されるキーワードは具体的な抽出方法によるが、ここでは「バスケットボール」と「観戦」が抽出されたと仮定する。
【０１５６】
キーワード「バスケットボール」については、図１５に見出し語として含まれていない。したがって、ステップＳ３３５において、検索インデックス３５０に、見出し語を「バスケットボール」とする新規のレコードを追加する。このレコードのタイムスタンプは、現在時刻、すなわち「2010/6/5 10:42:15」である。
【０１５７】
さらに、ステップＳ３３７において、見出し語「バスケットボール」に対応するメッセージＩＤリストとして、重要メッセージのメッセージＩＤ、すなわち1054149を追加する。
【０１５８】
キーワード「観戦」については、図１５に見出し語として含まれている。したがって、ステップＳ３３６において、検索インデックス３５０における見出し語「観戦」のタイムスタンプを、現在時刻、すなわち「2010/6/5 10:42:15」に更新する。
【０１５９】
さらに、ステップＳ３３７において、見出し語「観戦」に対応するメッセージＩＤリストに重要メッセージのメッセージＩＤである1054149が既に登録されていることを確認する。
【０１６０】
最終的に、検索インデックス３５０の内容は、図１８のようになる。図１５と比較すると、見出し語「バスケットボール」に相当するレコードが新規に追加されていることとである。
【０１６１】
[見出し語削除手段の動作手順]
見出し語削除手段３４０は、本システムの管理者が事前に作成したスケジュールに従って起動し、検索インデックス３５０中の見出し語のうち、最後に更新または参照されてから一定時間以上経過したものを削除する手段である。この処理は、図８に示した見出し語削除シーケンスに対応する。
【０１６２】
ここでのスケジュールの一例は、一定時間ごとに見出し語削除手段を起動するというものである。
【０１６３】
以下、図１９を参照して、見出し語削除手段３４０の動作手順を説明する。
【０１６４】
まず、検索インデックス３５０（図３）のすべての見出し語を取得する（ステップＳ３４１）。ここで、各見出し語にはタイムスタンプが付加されている。以下、ステップＳ３４１で取り出した見出し語のそれぞれについて、以下のステップＳ３４２およびＳ３４３の動作を行う。
【０１６５】
ステップＳ３４２では、処理対象の見出し語に付加されたタイムスタンプから現在時刻までの間に、見出し語有効期間と呼ぶ所定の時間が経過しているかどうかを調べる。ここで、見出し語有効期間とは、システム管理者が事前に指定した期間である。ここで、見出し語有効期間の例を示す。
【０１６６】
見出し語「野球」に付加されたタイムスタンプが2010/7/4 12:00:00、見出し語有効期間が１時間であるとする。この場合、現在時刻が2010/7/4 12:50:00であれば、ステップＳ３４２において見出し語有効期間は経過していないと判断する。一方、現在時刻が2010/7/3 13:10:00であれば、ステップＳ３４２において見出し語有効期間は経過したと判断する。
【０１６７】
ステップＳ３４２において見出し語有効期間が経過していない場合には、処理を終了する。
【０１６８】
ステップＳ３４２において見出し語有効期間が経過している場合には、検索インデックス３５０から、処理対象の見出し語と、それに関連付けられたメッセージＩＤリストを削除する（ステップＳ３４３）。
【０１６９】
以下に、見出し語削除手段３４０の動作の具体例を示す。初期状態での検索インデックス３５０の内容を図３、現在時刻が「2010/6/5 19:34:00」、見出し語有効期間が２日間と仮定する。
【０１７０】
この場合、ステップＳ３４１では、見出し語「野球」「観戦」「サッカー」と、それらに付加されたタイムスタンプを取得する。
【０１７１】
ステップＳ３４２では、見出し語「野球」について、タイムスタンプ「2010/6/5 10:12:20」であり、その２日後が「2010/6/7
10:12:20」であると計算する。これは現在時刻よりも未来の時刻を指しているので、削除の対象としない。
【０１７２】
見出し語「観戦」については、タイムスタンプ「2010/6/3 18:10:24」であり、その２日後は「2010/6/5
18:10:24」である。これは現在時刻よりも古いので、ステップＳ３４３に進む。その結果、見出し語「観戦」のレコードを検索インデックス３５０から削除する。
【０１７３】
見出し語「サッカー」については、タイムスタンプ「2010/6/5 10:12:20」であり、その２日後が「2010/6/7
10:12:20」であると計算する。これは現在時刻よりも未来の時刻を指しているので、削除の対象としない。
【０１７４】
以上のように、本実施形態によれば、見出し語削除手段３４０を備えているため、検索インデックス３５０の肥大化をより一層抑制することが可能である。また、本実施形態は、検索サーバが１台で構成されているため、クライアント機の台数や接続頻度が小さい場合に、容易に導入できるという効果がある。
【０１７５】
[第３の実施形態]
次に、本発明の第３の実施形態について、図面を参照して説明する。
【０１７６】
第２の実施形態では、メッセージサーバ、検索サーバ、メッセージＤＢはそれぞれ１台ずつであったが、第３の実施形態は、これらを複数台ずつ含む構成となる。
【０１７７】
図２０を参照すると、本発明の第３の実施形態は、クライアント機１００−１〜１００−ｎと、メッセージサーバ２００−１〜２００−ｍと、検索サーバ３００−１〜３００−ｘと、メッセージＤＢ４００−１〜４００−ｙと、ネットワーク５００とから構成される。
【０１７８】
クライアント機１００−１〜１００−ｎは、第２の実施形態におけるクライアント機１００−１〜１００−ｎと同一である。
【０１７９】
メッセージサーバ２００−１〜２００−ｍは、第２の実施形態におけるメッセージサーバ２００に相当し、その内部構成と動作手順も同一である。
【０１８０】
検索サーバ３００−１〜３００−ｘは、第２の実施形態における検索サーバ３００に相当する。第２の実施形態における検索サーバ３００との相違点として、マスターの検索サーバ３００−１と、スレーブの検索サーバ３００−２〜３００−ｘに分かれる。マスター・スレーブに共通して、第２の実施形態における検索サーバ３００と同様に、メッセージ検索手段、検索インデックス更新手段、重要メッセージ抽出手段、見出し語削除手段の各手段を備える。
【０１８１】
これらの構成要素のほかに、マスターの検索サーバ３００−１は、マスターの検索インデックス３５０−１を備える。
【０１８２】
一方、スレーブの検索サーバ３００−２〜３００−ｘは、スレーブの検索インデックス３５０−２〜３５０−ｘを備える。
【０１８３】
各検索サーバが備える検索インデックスは、マスター・スレーブ型のデータベース複製として動作する。すなわち、検索インデックス更新手段３２０による検索インデックスの更新（図１４、ステップＳ３２４−Ｓ３２５）、および重要メッセージ抽出手段３３０における検索インデックスの更新（図１６、ステップＳ３３５・Ｓ３３６）の際に、まずマスターの検索インデックス３５０−１を更新した後、その更新内容をスレーブの検索インデックス３５０−２〜３５０−ｘに反映させるという手順を取る。
【０１８４】
メッセージＤＢ４００−１〜４００−ｙは、第２の実施形態におけるメッセージＤＢ４００に相当する。
【０１８５】
第２の実施形態との相違点は、マスター・スレーブ型のデータベース複製として動作することである。すなわち、メッセージ投稿手段２１０によるメッセージＤＢの更新（図９、ステップＳ２１３）の際に、最初にマスターのメッセージＤＢ４００−１を更新した後、その更新内容をスレーブのメッセージＤＢ４００−２〜４００−ｙに反映させるという手順を取る。
【０１８６】
クライアント機１００−１〜１００−ｎからメッセージサーバへのメッセージ投稿要求（図９、ステップＳ２１１）、およびメッセージ参照要求（図１２、ステップＳ２２１）の際には、メッセージサーバを１台選択し、選択したメッセージサーバに対して要求を送信する。
【０１８７】
複数台のメッセージサーバのうちの1台を選択する方法の一例は、クライアント機１００−１〜１００−ｎが、送信先のメッセージサーバをランダムに選択するというものである。別の例は、クライアント機１００−１〜１００−ｎとメッセージサーバ２００−１〜２００−ｍの間にロードバランサ（負荷分散装置、Load Balancer）を設置し、ロードバランサが要求送信先のメッセージサーバを順番に（ラウンドロビンに）選択するというものである。
【０１８８】
メッセージサーバ２００−１〜２００−ｍからメッセージＤＢの参照（図１２、Ｓ２２２）では、複数台のメッセージＤＢからどれか１台を選択する必要がある。これについても、クライアント機からメッセージサーバを選択する処理と同様に、メッセージサーバ側でランダムに選択する方法と、メッセージサーバとメッセージＤＢの間にロードバランサを置く方法がありうる。
【０１８９】
このように本実施形態によれば、第２の実施形態と同様の効果が得られるとともに、検索処理の負荷分散が可能になるという効果がある。
【産業上の利用可能性】
【０１９０】
本発明によれば、参加者が数十字〜数百字程度の短いメッセージを投稿するような情報共有システムにおけるキーワード検索機能といった用途に適用できる。また、ライフログ(lifelog) と呼ばれる、利用者の行動情報を時刻や位置情報、短いメッセージと組み合わせて記録するようなシステムにおけるキーワード検索機能といった用途にも適用できる。
【符号の説明】
【０１９１】
１…検索装置
２…検索インデックス
３…検索インデックス管理手段
４…文書検索手段
５…端末
１００−１〜１００−ｎ  クライアント機
２００、２００−１〜２００−ｍ  メッセージサーバ
３００、３００−１〜３００−ｘ  検索サーバ
４００、４００−１〜４００−ｙ  メッセージＤＢ
２１０  メッセージ投稿手段
２２０  メッセージ参照手段
３１０  メッセージ検索手段
３２０  検索インデックス更新手段
３３０  重要メッセージ抽出手段
３４０  見出し語削除手段
３５０、３５０−１〜３５０−ｘ  検索インデックス
４００  メッセージＤＢ
５００  ネットワーク
【図１】
2011238098.tif 000003
【図２】
2011238098.tif 000004
【図３】
2011238098.tif 000005
【図４】
2011238098.tif 000006
【図５】
2011238098.tif 000007
【図６】
2011238098.tif 000008
【図７】
2011238098.tif 000009
【図８】
2011238098.tif 000010
【図９】
2011238098.tif 000011
【図１０】
2011238098.tif 000012
【図１１】
2011238098.tif 000013
【図１２】
2011238098.tif 000014
【図１３】
2011238098.tif 000015
【図１４】
2011238098.tif 000016
【図１５】
2011238098.tif 000017
【図１６】
2011238098.tif 000018
【図１７】
2011238098.tif 000019
【図１８】
2011238098.tif 000020
【図１９】
2011238098.tif 000021
【図２０】
2011238098.tif 000022
【図２１】
2011238098.tif 000023