説明

検索装置

【課題】検索インデックスの肥大化を防止するためには、充分な量の過去の検索情報の蓄積や複雑で時間のかかる処理が必要になること。
【解決手段】この検索装置1は、見出し語とその見出し語を含む文書との対応関係を記憶する検索インデックス2と、検索インデックス管理手段3と、文書検索手段4とを備える。検索インデックス管理手段3は、検索対象文書集合への第1の文書の登録時、第1の文書に含まれる語のうち、検索インデックス2に既に見出し語として登録されている語については、第1の文書の見出し語として検索インデックス2に登録し、検索インデックス2に見出し語として未だ登録されていない語については、第1の文書を引用する別の第2の文書について検索対象文書集合への登録要求があった時点で第1の文書の見出し語として検索インデックス2に登録する。文書検索手段4は、検索要求時、検索インデックス2から検索キーワードに一致する見出し語を含む文書を検索する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は検索装置に関し、特に検索インデックスを用いて検索を行う検索装置に関する。
【背景技術】
【0002】
<全文検索システムと転置インデックス>
インターネット上の情報を的確に取得するための手段として、Google(登録商標)やYahoo!(登録商標)に代表される全文検索システムが広く利用されている。これらの全文検索システムは、何らかの単語を利用者が入力した後、検索ボタンを押すことで、入力した単語を含む文書の一覧を表示する。全文検索システムにおいて利用者が入力する単語を、キーワード(keyword)と呼ぶ。
【0003】
全文検索システムが検索処理を実行するためには、全文検索システムが検索対象の文書を事前に収集しておく必要がある。この処理はクローリング(crawling)と呼ばれる。典型的には、検索対象の文書は複数のWebサーバに分散して配置されており、クローリング処理では、それらのWebサーバに対して文書取得の要求を発行することによって、検索対象の文書を収集する。
【0004】
全文検索システムが利用者から検索要求を受け取った際に、検索処理を実行する最も単純な方法は、クローリングによって収集した全文書に対して、検索キーワードが含まれているか否かを調べる方法である。この方法を全探索(exhaustive search)と呼ぶ。全探索では、検索対象の全文書の分量に比例する時間がかかるため、大量の文書を対象にした全文検索では現実的な性能が得られない。
【0005】
そこで、検索処理を高速に実行するために、検索インデックス(転置インデックス(inverted index)とも言う)を事前に作成しておく全文検索システムが広く用いられている。検索インデックスとは、単語または文節などの部分文字列を、その部分文字列が出現する文書に対応付けるデータ構造である。ここで、検索インデックスに格納させる部分文字列を、検索インデックスのキー(または見出し語)と呼ぶ。典型的には、検索インデックスには文書そのものではなく、文書IDのような形で文書を特定する情報が記録される。
【0006】
検索インデックスを用いて検索を行う検索装置の一例が特許文献1に記載されている。特許文献1に記載される検索装置は、文書収集部と、文書需要予測部と、インデックス管理部と、文書検索部とを有する。文書需要予測部は、文書収集部により収集された文書を検索対象として公開した場合の需要を予測する。インデックス管理部は、得られた需要予測値に基づいて、所定以上の需要があると予測された文書のみについて、その文書からキーワードを抽出し、抽出したキーワードをその文書の識別情報とともに検索インデックスに登録する。文書検索部は、検索インデックスに基づいて、ユーザが指定した検索キーワードを含む文書を検索し、その結果をユーザに提示する。
【0007】
なお、文書からのキーワードの抽出は、英語などの単語が分かち書きされる言語では、単に単語を取り出すだけで済む。一方、日本語などの単語が分かち書きされない言語では、文書から単語などの部分文字列を切り出すために、形態素解析(morphological analysis)と呼ぶ処理を行う。日本語の形態素解析に関する文献としては、例えば非特許文献1がある。
【0008】
このように検索インデックスを用いた全文検索システムでは、利用者から検索キーワードを含む検索要求を受け取ると、検索インデックスから、検索キーワードに一致するキーを探し、そのキーに対応付けられた文書を検索結果として返す。検索インデックスをハッシュテーブル(hash table)として構成することにより、検索インデックスからの文書の取得は、検索対象の文書の量によらずに一定となり、実用的な性能が得られる。ただし、検索インデックスを用いた全文検索システムでは、文書が公開されてから、利用者による検索要求の結果にその文書が含まれるまでに時間差(タイムラグ、time lag)が生じる。その理由は、クローリングおよび検索インデックスの作成に時間を要するためである。
【0009】
<リアルタイム検索>
上記のタイムラグを数秒〜数十秒程度まで小さくすることを目的とした全文検索システムを、リアルタイム検索システムと呼ぶ。リアルタイム検索システムは、電子掲示板(Bulletin Board System、BBS)やマイクロブログ(microblog)など、高頻度で文書が登録される情報共有システムを対象とした全文検索で典型的に用いられる。
【0010】
リアルタイム検索システムの一例が特許文献2に記載されている。特許文献2に記載されたリアルタイム検索システムは、アップロードされるファイル(文書など)が保存されるファイルデータベースと、上記ファイルの索引情報としてテキスト情報が保存され、上記テキスト情報に該当する転置ファイルが保存される索引データベースと、ファイルアップロード時に上記ファイルをパケット単位でフィルタリングして上記テキスト情報を抽出して保存し、上記テキスト情報を用いて転置ファイルを生成し保存するファイルサーバと、ファイル検索時に上記テキスト情報と転置ファイルとを用いて当該ファイルを検索する検索サーバとから構成される。このように、ファイルのアップロード過程においてファイルに対する索引及び目録の整理作業を同時に行うことによって、上記のタイムラグの短縮を図っている。
【0011】
その他、本発明に関連する技術を記載した文献として、特許文献3、特許文献4がある。特許文献3には、リアルタイム検索システムの他の例が示されている。また、特許文献4には、ユーザの閲覧履歴あるいは投稿履歴の少なくとも一方を参照して、当該ユーザが閲覧あるいは投稿したメッセージ情報に関連するメッセージ情報を抽出し、前記抽出したメッセージ情報を他のメッセージ情報と区別して処理する方法が示されている。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2005−352687号公報
【特許文献2】特開2010−44763号公報
【特許文献3】特表2004−502987号公報
【特許文献4】特開2002−278990号公報
【非特許文献】
【0013】
【非特許文献1】”Applying Conditional Random Fields to Japanese MorphologicalAnalysis”,Taku Kudo, Kaoru Yamamoto, Yuji Matsumoto,Proc.of 2004 Conference on Empirical Methods in Natural LanguageProcessing(EMNLP).
【発明の概要】
【発明が解決しようとする課題】
【0014】
検索インデックスを用いる検索装置では、検索対象となる文書の数が増えるに従って、検索インデックスの容量が大きくなる。検索インデックスの容量が大きくなると、検索条件を満たす文書を検索するのに要する時間が長くなり、検索速度が低下する。このため、検索インデックスの肥大化を抑えることが重要である。
【0015】
上述した特許文献1では、文書収集部により収集された文書を検索対象として公開した場合の需要を予測し、一定以上の需要があると予測された文書のみについて検索インデックスを作成することにより、検索インデックスが不必要に大容量化することを防止している。しかしながら、公開前に文書の需要を正確に予測するためには、充分な量の過去の検索情報の蓄積が必要であるとともに、これら多くの過去の検索情報を考慮に入れた複雑で時間のかかる予測計算が必要になる。
【0016】
本発明の目的は、上述した課題、すなわち検索インデックスの肥大化を防止するためには、充分な量の過去の検索情報の蓄積や複雑で時間のかかる処理が必要になる、という課題を解消する検索装置を提供することにある。
【課題を解決するための手段】
【0017】
本発明の一形態にかかる検索装置は、見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスと、検索対象文書集合への第1の文書の登録時、上記第1の文書に含まれる語のうち、上記検索インデックスに既に見出し語として登録されている語については、上記第1の文書の見出し語として上記検索インデックスに登録し、上記検索インデックスに見出し語として未だ登録されていない語については、上記第1の文書を引用する別の第2の文書について上記検索対象文書集合への登録要求があった時点で、上記第1の文書の見出し語として上記検索インデックスに登録する検索インデックス管理手段と、検索要求時、上記検索インデックスから検索キーワードに一致する見出し語を含む文書を検索する文書検索手段とを備える。
【発明の効果】
【0018】
本発明によれば、他の文書から引用されないような重要でない文書のみに現れる語は見出し語として検索インデックスに登録しないという簡便な処理により、重要でない文書によって検索インデックスが肥大化することを防止することができる。
【0019】
また、他の文書から引用されるほど重要な文書については、その文書のみに現れる語であっても検索インデックスに登録されるため、検索キーワードによる重要文書の検索を支障なく行うことが可能になる。
【0020】
さらに、他の文書から全く引用されない文書であっても、その文書の登録時点で検索インデックスに既に登録されている語と同一の語については、その文書の見出し語として検索インデックスに登録されるため、他の文書から引用されるほど重要な文書に含まれる語と同一の語を含む文書は、それらの語に関して検索キーワードによる検索が可能となる。この点は、需要が少ないと予測された文書については検索インデックスへの登録を一切行わない特許文献1とは相違する。
【図面の簡単な説明】
【0021】
【図1】本発明の第2の実施形態を示すブロック図である。
【図2】メッセージの構造を説明するための図である。
【図3】検索インデックスの内部構造を説明するための図である。
【図4】メッセージDBの内部構造を説明するための図である。
【図5】メッセージ投稿に関する全体の動作を説明するためのシーケンス図である。
【図6】メッセージ参照に関する全体の動作を説明するためのシーケンス図である。
【図7】メッセージ検索に関する全体の動作を説明するためのシーケンス図である。
【図8】検索インデックスからの不要な見出し語の削除に関する全体の動作を説明するためのシーケンス図である。
【図9】メッセージ投稿手段の動作手順を説明するためのフローチャートである。
【図10】メッセージ投稿手段に入力されるメッセージ投稿要求の具体例を示す図である。
【図11】メッセージ投稿手段による動作完了後におけるメッセージDBの内容の具体例を示す図である。
【図12】メッセージ参照手段の動作手順を説明するためのフローチャートである。
【図13】メッセージ検索手段の動作手順を説明するためのフローチャートである。
【図14】検索インデックス更新手段の動作手順を説明するためのフローチャートである。
【図15】検索インデックス更新手段による動作完了後における検索インデックスの内容の具体例を示す図である。
【図16】重要メッセージ抽出手段の動作手順を説明するためのフローチャートである。
【図17】重要メッセージ抽出手段により抽出される重要メッセージの具体例を示す図である。
【図18】重要メッセージ抽出手段による動作完了後における検索インデックスの内容の具体例を示す図である。
【図19】見出し語削除手段の動作手順を説明するためのフローチャートである。
【図20】本発明の第3の実施形態を示すブロック図である。
【図21】本発明の第1の実施形態を示すブロック図である。
【発明を実施するための形態】
【0022】
次に本発明の実施形態について図面を参照して詳細に説明する。
[第1の実施形態]
図21を参照すると、本発明の第1の実施形態にかかる検索装置1は、検索インデックス2と、検索インデックス管理手段3と、文書検索手段4とを備えている。
【0023】
検索インデックス2は、見出し語と、その見出し語を含む文書との対応関係を記憶する。文書が一つも登録されていない時点では、検索インデックス2には、見出し語およびそれに対応する文書は一つも記録されていない。ただし、幾つかの見出し語が初期登録されていても構わない。
【0024】
検索インデックス管理手段3は、検索インデックス2を管理する機能を有する。検索インデックス管理手段3は、検索対象となる文書の登録時、その文書に含まれる語のうち、検索インデックス2に既に見出し語として登録されている語と同一の語については、その文書の見出し語として検索インデックス2に登録する。具体的には、検索インデックス2における該当する見出し語に対応してその文書の識別子を記録する。
【0025】
他方、検索インデックス管理手段3は、登録する文書に含まれる語のうち、検索インデックス2に見出し語として未だ登録されていない語については、当該文書の登録時点では検索インデックス2に登録しない。検索インデックス管理手段3は、登録する文書に含まれる語のうち、検索インデックス2に見出し語として未だ登録されていない語については、当該文書を引用する別の文書の登録時点で、検索インデックス2に登録する。具体的には、登録する文書が他の文書を引用しているか否かを判定し、引用していれば、引用されている文書を図示しない文書記憶手段から取得し、この取得した文書に含まれる語のうち、検索インデックス2に見出し語として未だ登録されていない語については、当該語を見出し語として検索インデックス2に追加し、さらにその追加した見出し語に対応してその文書の識別子を記録する。
【0026】
文書検索手段4は、検索要求時、検索インデックス2から検索キーワードに一致する見出し語を含む文書を検索する機能を有する。
【0027】
次に本実施形態にかかる検索装置1の動作を説明する。
【0028】
例えば、ネットワークを介して接続された端末5から、登録対象となる文書が検索装置1に対して送信されると、検索装置1は受信した文書を図示しない文書記憶手段に登録する。続いて検索装置1の検索インデックス管理手段3は、登録した文書に含まれる語のうち、検索インデックス2に見出し語として既に登録されている語について、その文書の見出し語として検索インデックス2に登録する。
【0029】
さらに検索インデックス管理手段3は、登録した文書が他の文書を引用しているか否かを判定する。例えば、他の文書の引用を当該他の文書の識別子を記載することで行う場合、他の文書の識別子が付加されているか否かを判定する。若し、他の文書を引用している場合、検索インデックス管理手段3は、引用されている文書の内容を図示しない文書記憶手段から取得する。そして、引用されている文書に含まれる語のうち、検索インデックス2に見出し語として未だ登録されていない語については、当該語を見出し語として検索インデックス2に追加し、さらにその追加した見出し語に対応してその文書の識別子を記録する。
【0030】
また、検索インデックス管理手段3は、引用されている文書に含まれる語のうち、検索インデックス2に既に見出し語として登録されている語と同一の語については、その見出し語に対応して当該文書の識別子が既に登録されているか否かを調査する。このような調査を行う理由は、引用されている文書の登録時点で、その文書に含まれる語のうち検索インデックス2に既に見出し語として存在していた語については、その文書の識別子が登録されているためである。そして、調査の結果、若し登録されていなければ、当該見出し語に対応して当該文書の識別子を記録する。
【0031】
検索装置1の文書検索手段4は、例えば、ネットワークを介して接続された端末5から、検索キーワードを指定した検索要求が検索装置1に対して送信されると、検索インデックス2から検索キーワードに一致する見出し語を含む文書を検索する。そして、検索した文書の内容を図示しない文書記憶手段から取得して、端末5へ送信する。
【0032】
このように本実施形態によれば、検索インデックス2には、他の文書から引用されている文書に含まれる語のみが見出し語として追加されるため、検索インデックス2が不必要に大容量化することを防止することができる。
【0033】
また、他の文書から引用されるほど重要な文書については、その文書のみに現れる語であっても検索インデックスに登録されるため、検索キーワードによる重要文書の検索を支障なく行うことができる。
【0034】
また、検索インデックス2のサイズの縮小化が図られているために、検索速度が向上する。
【0035】
さらに、他の文書から全く引用されない文書であっても、検索インデックスに既に登録されている語と同一の語については、その文書の見出し語として検索インデックスに登録されるため、他の文書から引用されるほど重要な文書に含まれる語と同一の語を含む文書は、それらの語に関して検索キーワードによる検索が可能となる。
【0036】
[第2の実施形態]
図1を参照すると、本発明の第2の実施形態は、1台またはそれ以上のクライアント機100−1〜100−nと、1台のメッセージサーバ200と、1台の検索サーバ300と、メッセージDB(データベース)400とから構成される。
【0037】
クライアント機100−1〜100−nは、液晶ディスプレイなどの出力装置と、キーボード・マウスなどの入力装置とを備えるコンピュータである。各クライアント機は、メッセージサーバ200および検索サーバ300と、ローカルエリアネットワーク(LAN)あるいはインターネットなどのネットワークを介して接続される。本システムの利用者は、クライアント機100−1〜100−nのいずれかを通して、メッセージの投稿・参照・検索の操作を行うことができる。メッセージは、数十字〜数百字程度のテキストである。本実施形態は、メッセージを検索の対象としているが、広く文書の検索に適用可能である。
【0038】
本実施形態において、メッセージの参照とは、各メッセージに振られたメッセージIDを指定して、対応するメッセージの内容を取得する操作、あるいはメッセージIDの指定を省略し、最近登録された上位一定数のメッセージの内容を取得する操作を指す。また、メッセージの検索とは、1つまたは複数のキーワードを指定して、それらのキーワードを含むメッセージを取得する操作を指す。また、メッセージの投稿とは、新たなメッセージを登録する操作を指す。以降では、クライアント機100−1〜100−nのうちの任意の1台を指して、クライアント機100と表記する。
【0039】
メッセージサーバ200は、プログラム制御により動作するコンピュータであり、クライアント機100からのメッセージ投稿とメッセージ参照の各操作を処理する役割を持つ。メッセージサーバ200は、メッセージ投稿手段210と、メッセージ参照手段220とを備える。ここで、メッセージ投稿手段210は文書登録手段を、メッセージ参照手段220は文書参照手段をそれぞれ構成する。
【0040】
検索サーバ300は、プログラム制御により動作するコンピュータであり、クライアント機100からのメッセージ検索の操作を処理する役割を持つ。検索サーバ300は、メッセージ検索手段310と、検索インデックス更新手段320と、重要メッセージ抽出手段330と、見出し語削除手段340と、検索インデックス350とを備える。ここで、検索インデックス更新手段320、重要メッセージ抽出手段330、および見出し語削除手段340は、検索インデックス管理手段を構成する。
【0041】
メッセージDB400は、メッセージサーバ200に対して投稿されたメッセージを格納するデータベースである。メッセージDB400は、ストレージエリアネットワーク(SAN)などのネットワークを介して、メッセージサーバ200と検索サーバ300の双方に接続される。
【0042】
本システムの動作は、利用者からのメッセージ投稿・参照・検索の各操作に対応する3種類の処理と、利用者からの操作とは独立に動作する見出し語削除処理の計4種類の処理から構成される。
【0043】
以下、メッセージ投稿・参照・検索、および見出し語削除の各動作シーケンスについて、本システム全体の動作を説明する。
【0044】
<メッセージ投稿>
利用者は、クライアント機100に対してメッセージ本文を入力して、新規メッセージ投稿の操作を行う。
【0045】
この操作に対して、クライアント機100は、メッセージサーバ200に対してメッセージ投稿要求を送信する。
【0046】
メッセージサーバ200のメッセージ投稿手段210は、受け取ったメッセージに対して新規のメッセージIDを割り当てた後、このメッセージIDに対応付けてメッセージの内容をメッセージDB400に追加するとともに、検索サーバ300に対して当該メッセージに関する検索対象追加要求を送信する。
【0047】
検索サーバ300の検索インデックス更新手段320は、メッセージ投稿手段210からの検索対象追加要求を受信して、新着メッセージを検索インデックス350に追加する。検索インデックス350は、メッセージ中のキーワードを見出し語として、各見出し語とそれが出現するメッセージIDを対応付ける形を取る。新着メッセージを検索インデックスに追加する際、すでに見出し語に含まれるキーワードのみを追加対象とする。
【0048】
さらに、検索サーバ300の重要メッセージ抽出手段330は、新着メッセージから言及されている過去のメッセージをメッセージDB400から取得して、それらのメッセージに含まれるキーワードを新規の見出し語として検索インデックス350に追加する。この重要メッセージ抽出手段330の動作は、他のメッセージから言及されているメッセージを重要メッセージとみなして、重要メッセージに含まれるキーワードのみを検索インデックス中の見出し語に登録することに相当する。
【0049】
以上の処理が完了すると、メッセージ投稿手段210は、要求元のクライアント機100に対して、メッセージ投稿完了の応答を送信する。クライアント機100は、メッセージ投稿完了の旨を画面上に出力する。
【0050】
<メッセージ参照>
利用者は、クライアント機100に対して、メッセージ参照の操作を行う。メッセージの参照に関して、利用者は、特定のメッセージIDを指定するか、メッセージIDを指定せずに、直近に投稿されたメッセージを取得するかの2通りの操作を行うことができる。
【0051】
メッセージサーバ200のメッセージ参照手段220は、利用者の操作に対応して、それぞれ以下の処理を行う。
・メッセージIDが指定された場合:
メッセージDB400から、指定されたメッセージIDをキーとするメッセージ本体を取得して、要求元のクライアント機100に送信する。
・メッセージIDが指定されなかった場合:
メッセージDB400から、新着順に数件のメッセージを取得して、要求元のクライアント機100に送信する。
【0052】
いずれの場合も、クライアント機100は、メッセージサーバ200から送られた応答、すなわち取得したメッセージの内容を画面に出力する。
【0053】
<メッセージ検索>
利用者は、クライアント機100に対して、メッセージ検索の操作を行う。メッセージの検索操作では、利用者は、検索対象を示すキーワードを1つ以上入力する。この操作に対して、検索サーバ300のメッセージ検索手段310は、検索インデックス350を参照して、入力されたキーワードに一致する見出し語を検索し、その見出し語に対応するメッセージIDを取得する。
【0054】
さらに、メッセージ検索手段310は、メッセージ参照手段220を呼び出して、取得したメッセージIDに対応するメッセージ本文を取得し、それらのメッセージ本文を要求元のクライアント機100に送信する。
【0055】
クライアント機100は、検索サーバ300から送られた応答、すなわち検索結果であるメッセージの内容を画面に出力する。
【0056】
<見出し語削除>
見出し語削除処理は、検索インデックス350に格納された見出し語のうち、一定時間以上検索も更新もされていないものを削除する処理である。見出し語削除処理は、検索サーバ300が見出し語削除手段340を一定時間ごとに起動することによって開始される。
【0057】
見出し語削除手段340は、検索インデックス350中の各見出し語に付加されたタイムスタンプと、現在時刻を比較する。そして、見出し語削除手段340は、タイムスタンプに示される時刻から所定の時間が経過した見出し語を、有効期限が切れたとみなして、その見出し語および対応するメッセージIDを検索インデックス350から削除する。
【0058】
[データ構造]
続いて、本システムで扱うメッセージと、検索インデックス350およびメッセージDB400の内部構造を説明する。
【0059】
<メッセージ>
本システムにおいて、利用者が投稿・参照・検索する対象となるメッセージは、図2に示されるように、以下の構成要素を含む。
・メッセージID:投稿されたメッセージを一意に識別する文字列である。
・発言者ID:そのメッセージの発言者を一意に識別する文字列である。
・言及先メッセージID:そのメッセージが言及(引用)している他のメッセージを識別するIDである。
・日付:そのメッセージが投稿された日時である。
・本文:メッセージの本文である。
【0060】
ここで、言及先メッセージIDは0個以上の要素からなるリストである。すなわち、言及先メッセージの数は任意であり、0個の場合もある。
【0061】
<検索インデックス>
検索インデックス350は、以下の各要素(フィールド、field)からなるレコードの集まりである。
・見出し語(headword):メッセージ本文中に出現する特定の単語である。
・タイムスタンプ(timestamp):レコードが最後に更新または参照された時刻を示す日付である。
・メッセージIDリスト:本文中に見出し語が出現するメッセージのメッセージIDを列挙したリストである。
【0062】
検索インデックス350において、見出し語がレコードを一意に識別するための主キー(プライマリキー、primary key)となる。
【0063】
図3に、検索インデックス350の内容の具体例を示す。この例では、見出し語「野球」を含むメッセージが3つあり、これらはそれぞれ1053156, 105129, 98490のメッセージIDを持つ。また見出し語「野球」には、「2010/6/5 10:12:20」というタイムスタンプが付加されている。これは、見出し語「野球」に対応するメッセージIDが最後に追加または参照された時刻を示している。
【0064】
このように、見出し語をキーとして、その見出し語を含むメッセージIDのリストを保持するデータ構造は、一般に転置インデックス (inverted index) と呼ばれるものである。
【0065】
<メッセージDB>
メッセージDB400は、メッセージについての各要素、すなわちメッセージID、発言者ID、言及先メッセージID、日付、本文(図2参照)を1レコードとするデータベースである。メッセージDB400において、メッセージIDがデータベースの主キーとなる。すなわち、メッセージDB400中で、同一のメッセージIDを持つメッセージが複数存在することは許されない。
【0066】
また、メッセージDB中の各レコードは、新しく追加された順に取り出すことができる。この性質を実現するための方法の一例は、メッセージIDを1、2、3、…のような整数として表現して、新規に追加するレコードには、直前に追加されたレコードに1加えた数値をメッセージIDとすることである。
【0067】
図4に、メッセージDB400の内容の具体例を示す。この例では、メッセージDBをリレーショナル・データベース(relational database)として構成する。図4に示すデータベースには、メッセージIDがそれぞれ1055236、1054150、1054149の3つのメッセージについて、その具体的な内容が示されている。なお、メッセージDBをリレーショナル・データベースとして構成することと、図4のデータベースの内容はあくまで一例であり、本発明はこの例に限定されない。
【0068】
以下では、シーケンス図を用いて、メッセージ投稿・参照・検索・見出し語削除の各操作についての動作の流れを説明した後で、各手段の動作手順の詳細を説明する。
【0069】
[動作シーケンス]
以下の動作シーケンスの説明中に現れるステップ番号は、後述の各手段の動作手順中のステップ番号に対応する。
【0070】
<メッセージ投稿>
図5を参照して、メッセージ投稿操作に関する動作シーケンスを示す。
【0071】
クライアント機100は、メッセージサーバ200に対してメッセージ投稿要求を送信し、メッセージサーバ200のメッセージ投稿手段210がこの要求を受信する(ステップS211)。メッセージ投稿要求には、発言者ID、言及先メッセージID、およびメッセージ本文の情報が含まれる。
【0072】
すると、メッセージ投稿手段210は、受信したメッセージにメッセージIDおよびタイムスタンプを付加したものを、メッセージDB400に登録する(ステップS213)。以降、ここで登録したメッセージを新着メッセージと呼ぶ。
【0073】
次に、メッセージ投稿手段210は、検索サーバ300に対して検索対象追加要求を送る(ステップS214)。この要求には、新着メッセージの内容が含まれる。
【0074】
検索サーバ300が検索対象追加要求を受け取ると、検索インデックス更新手段320は、新着メッセージ本文に含まれるキーワードを抽出し、それらのキーワードと新着メッセージのIDの対応関係を検索インデックス350に追加する(ステップS324)。このときに追加の対象となるキーワードは、検索インデックス350中に見出し語として登録済みのものに限られる。
【0075】
次に、検索インデックス更新手段320は、重要メッセージ抽出手段330に新着メッセージ通知を送る(ステップS326)。重要メッセージ抽出手段330は、新着メッセージ中の言及先メッセージIDの情報から、新着メッセージから言及されている過去のメッセージを重要メッセージとして取得し、重要メッセージ中のキーワードを、検索インデックス350の見出し語として登録する(ステップS335)。
【0076】
以上の処理が終わると、検索インデックス更新手段320がメッセージ投稿手段210に応答を送信し、メッセージ投稿手段はクライアント機100に応答を送る(ステップS215)。
【0077】
<メッセージ参照>
図6を参照して、メッセージ参照処理に関するシーケンスを説明する。
【0078】
まず、メッセージサーバ200のメッセージ参照手段220は、クライアント機100からメッセージ参照要求を受信する(ステップS221)。メッセージ参照要求には、参照対象のメッセージIDが含まれる場合と、含まれない場合がある。
【0079】
次に、メッセージDB400から、メッセージの本体を取得する(ステップS222)。具体的には、メッセージ参照要求にメッセージIDが含まれる場合、そのメッセージIDをキーとしてメッセージ本体を取得する。一方、メッセージ参照要求にメッセージIDが含まれない場合、メッセージDB400に最後に追加されたメッセージを取得する。
【0080】
最後に、取得したメッセージの内容を、メッセージ参照要求への応答としてクライアント機100に送信する(ステップS223)。
【0081】
<メッセージ検索>
図7を参照して、メッセージ検索処理に関するシーケンスを説明する。
【0082】
まず、検索サーバ300のメッセージ検索手段310は、クライアント機100から送信されたメッセージ検索要求を受信する(ステップS311)。メッセージ検索要求には、1つまたは複数の検索キーワードが含まれる。
【0083】
次に、メッセージ検索手段310は、検索インデックス350を参照して、検索キーワードに一致する見出し語を検出する(ステップS312)。そして、該当する見出し語が存在する場合、その見出し語に対応付けられたメッセージIDリストを検索結果として取得する。複数の検索キーワードが指定されている場合、各検索キーワードに対応してメッセージIDリストを取得し、それらの間で共通部分を検索結果とする。
【0084】
次に、メッセージDB400から、検索結果のメッセージIDに対応するメッセージ本体を取得する(ステップS316)。
【0085】
最後に、検索結果のメッセージ本体を、メッセージ検索要求への応答としてクライアント機100に送信する(ステップS317)。
【0086】
<見出し語削除>
図8を参照して、見出し語削除処理のシーケンスを示す。
【0087】
まず、検索サーバ300の見出し語削除手段340は、検索インデックス350から、見出し語とそのタイムスタンプの組からなるリストを取得する(ステップS341)。そして、これらの見出し語のうち、タイムスタンプから所定の有効期間が経過したものについて、検索インデックス350から削除する(ステップS343)。
【0088】
以降では、メッセージサーバ200の各手段の詳細な動作手順を示す。各ステップ番号は、シーケンス図中に付加したステップ番号と同一である。
【0089】
[メッセージ投稿手段の動作手順]
図9のフローチャートを用いて、メッセージ投稿手段210の動作手順を説明する。この動作手順は、メッセージ投稿シーケンス(図5)の一部を構成する。
【0090】
まず、クライアント機から送信されたメッセージ投稿要求を受け取る(ステップS211)。メッセージ投稿要求には、発言者ID、言及先メッセージID、およびメッセージ本文が含まれる。
【0091】
次に、前ステップで受け取ったメッセージに割り当てるメッセージIDおよび日付を決定する(ステップS212)。ここで、タイムスタンプは、本ステップが実行された時点での現在時刻である。メッセージIDは、過去に投稿されたどのメッセージとも重ならない任意の番号である。
【0092】
メッセージIDの決定方法の一例は、直前に投稿されたメッセージのメッセージIDに1を加えた数値とすることである。メッセージID決定方法の別の例は、メッセージに付加した日付にMD5やSHA−1などのハッシュ関数を適用した結果得られるハッシュ値とすることである。
【0093】
次に、メッセージDB400に、ステップS211で受け取ったメッセージの内容に、前ステップで決定したメッセージIDと日付の組を加えたものを、新着メッセージとしてメッセージDB400に登録する(ステップS213)。具体的には、メッセージDB400中で、新着メッセージのメッセージIDからメッセージ本体を対応付けるとともに、投稿順リストの最新の要素として、新着メッセージのメッセージIDを登録する。
【0094】
次に、検索サーバ300に対して、検索対象追加要求を送信し、その応答を待つ(ステップS214)。この要求には、新着メッセージの内容を含める。
【0095】
最後に、ステップS211におけるメッセージ投稿要求への応答として、クライアント機100にメッセージ投稿処理の完了を通知する(ステップS215)。
【0096】
以下に、メッセージ投稿手段210の動作手順の具体例を示す。
【0097】
初期状態でのメッセージDB400の内容を、図4に示す内容であると仮定する。ステップS211におけるメッセージ投稿要求の例を、図10に示す。これは通常のメッセージとほぼ同様の内容であるが、メッセージIDと日時が含まれていない。
【0098】
ステップS212において、図10のメッセージ投稿要求に対して、メッセージIDと日時の情報を追加したものの例が、図2である。ここで、新着メッセージに付加したメッセージID:1055237は、図4における最新のメッセージID:1055236に1加えたものである。
【0099】
ステップS213において、新着メッセージをメッセージDB400に登録した直後のメッセージDB400の内容を、図11に示す。図中の最上段のレコードは、図2に示したメッセージの内容に一致する。
【0100】
[メッセージ参照手段の動作手順]
図12のフローチャートを参照して、メッセージ参照手段220の動作手順を説明する。この動作手順は、メッセージ参照シーケンス(図6)に対応する。
【0101】
まず、メッセージ参照手段220は、クライアント機100からメッセージ参照要求を受信する(ステップS221)。メッセージ参照要求は、参照対象となるメッセージのメッセージIDを含む場合と、含まない場合がある。
【0102】
次に、メッセージDB400から、参照対照となるメッセージ本体を取得する(ステップS222)。具体的には、メッセージ参照要求にメッセージIDが含まれていた場合、そのメッセージIDをキーとするレコードを取得する。一方、メッセージ参照要求にメッセージIDが含まれてない場合、メッセージDB400に最後に追加されたレコードを取得する。
【0103】
最後に、メッセージ参照要求への応答として、前ステップで取得したメッセージの内容を、クライアント機100に送信する(ステップS223)。
【0104】
上記のステップS222において、メッセージIDが指定されない場合の動作として、最後に追加されたレコードを1つだけ取得する代わりに、所定の個数のレコードを新しい順に取得するという動作でも良い。例えば、最後の10個のレコードを取得する場合、本システムの利用者にとっては、最新の10件のメッセージが参照できることになる。
【0105】
以下に、メッセージ参照手段220の動作の具体例を示す。メッセージDB400の内容は、図11に示す内容であると仮定する。また、ステップS221において、メッセージ参照要求としてメッセージID:1055237が指定されたとする。
【0106】
この場合、ステップS222では、メッセージDB400から、メッセージID:1055237をキーとしてレコードを取得する。この結果、図2に示す内容のレコードを取得する。また、ステップS223では、メッセージ参照要求への応答として、図2に示す内容のメッセージをクライアント100に送信する。
【0107】
以降では、メッセージサーバ300の各手段について、詳細な動作手順を説明する。
【0108】
[メッセージ検索手段の動作手順]
メッセージ検索手段310は、クライアント機100からメッセージ検索要求を受け取った際に動作を開始する。この動作は、メッセージ検索シーケンス(図7)に対応する。
【0109】
以下、図13のフローチャートを参照して、メッセージ検索手段310の動作手順を説明する。
【0110】
まず、クライアント機100から送信されたメッセージ検索要求を受信する(ステップS311)。メッセージ検索要求には、検索キーワードが1つまたは複数含まれる。
【0111】
次に、検索インデックス350中を参照して、前ステップ311で入力された検索キーワードに一致する見出し語を検出する(ステップS312)。ここで見出し語が検出された場合はステップS313に、検出されなかった場合はステップS317に進む。なお、複数の検索キーワードが入力された場合には、すべての検索キーワードについて検索ヒット語が存在する場合のみS313に進む。
【0112】
ステップS313では、検索インデックス350において、各検索キーワードに対応するレコードのタイムスタンプを、現在時刻に更新する。このステップは、検索対象になった見出し語の有効期限を延長する効果がある。
【0113】
次に、検索インデックス350において、検索キーワードに対応するレコードに含まれるメッセージIDリストを取得する(ステップS314)。若し、複数の検索キーワードが入力された場合、各検索キーワードに対応するメッセージIDリストを取得した後、それらの共通部分を本ステップの出力とする。
【0114】
次に、前ステップで取得したメッセージIDリストに1つ以上の要素があるかどうかを調べる(ステップS315)。該当する場合にはステップS316に進み、1つも要素がない場合にはステップS317に進む。
【0115】
ステップS316では、メッセージDB400から、ステップS314で取得した各メッセージIDに対応するメッセージ本体を取得する。ステップS317では、メッセージ検索要求に対する応答を、クライアント機100に送信する。
【0116】
ステップS312において、検索キーワードに一致する見出し語が検出されなかった場合、またはステップS315において、検索キーワードに対応するメッセージIDが存在しなかった場合には、応答として、検索キーワードに該当するメッセージが見つらなかった旨を送信する。
【0117】
ステップS315において、検索キーワードに対応するメッセージIDが存在した場合には、ステップS316において取得したメッセージ本体を、検索結果として応答に含める。
【0118】
上記の動作手順では、検索キーワードに一致する見出し語が検索インデックスに存在しない場合、検索は失敗となる。その場合の代替手段として、ステップS312で見出し語が存在しない場合、またはステップS315でメッセージIDリストに要素がない場合に、メッセージDB316の内容を全探索することによって、検索キーワードを本文の部分文字列とするメッセージを取得するという手順を追加してもよい。この代替手段を追加することにより、検索の成功率を上げることが可能になる。ただし、検索の所要時間は増大する。
【0119】
以下、メッセージ検索手段310の動作を、具体例を用いて説明する。検索インデックス310の内容として、図3を仮定する。また、ステップS311では、メッセージ検索要求として、検索キーワード「野球」および「サッカー」が入力されたと仮定する。
【0120】
この場合、ステップS312では、検索インデックス310から、見出し語「野球」および「サッカー」を検出する。すなわち、すべての検索キーワードについて、一致する見出し語が存在するので、ステップS313に進む。また、ステップS313では、見出し語「野球」および「サッカー」に対応するタイムスタンプを現在時刻に更新する。ここで、現在時刻が「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」に、それぞれ更新する。
【0121】
次のステップS314では、見出し語「野球」および「サッカー」に対応するメッセージIDリストを取得し、その間で共通に含まれる要素を抽出する。「野球」に対応するメッセージIDリストは、[1053156, 105129, 98490]である。「サッカー」に対応するメッセージIDリストは、[1053156, 1053022]である。したがって、これらに共通して含まれる要素からなるリスト、[1053156]がステップS314の出力となる。
【0122】
ステップS314の出力は、1つ以上の要素を持つという条件を満たしているので、ステップS316に進む。
【0123】
ステップS316では、メッセージDB400から、メッセージID:1053156に対応するメッセージの内容を取得する。このメッセージの内容を、ステップS317においてクライアント機100への応答として送信する。
【0124】
[検索インデックス更新手段の動作手順]
検索インデックス更新手段320は、メッセージ投稿手段210から検索対象追加要求を送られた際(図9:メッセージ投稿手段、ステップS214)に動作を開始する。この動作は、メッセージ投稿シーケンス(図5)の一部を構成する。
【0125】
以下、図14のフローチャートを参照して、検索インデックス更新手段320の動作手順を説明する。
【0126】
まず、メッセージ投稿手段210から送られた検索対象追加要求を受信する(ステップS321)。検索対象追加要求には、新着メッセージ本体が含まれる。
【0127】
次に、新着メッセージの本文からキーワードを抽出する(ステップS322)。キーワードを抽出する方法の一例は、事前に作成しておいたキーワード辞書と一致する文字列をキーワードとして抽出する方法である。この方法は、本文が書かれている言語に関係なく適用できる。キーワードを抽出する方法の別の例は、本文中に含まれている単語のうち、事前に作成しておいたキーワード対象外辞書(ストップワード:stop wordとも呼ばれる)に一致する単語を除いたものをキーワードとして抽出する方法である。この方法は、英語などの単語が分かち書きされる言語に対してはそのまま適用できるが、日本語などの分かち書きされない言語の場合は、事前に形態素解析(morphological analysis)と呼ぶ処理によって単語に分割する必要がある。
【0128】
以降、ステップS322で抽出された各キーワードについて、以下のステップS323〜S325の処理を行う。複数のキーワードが抽出された場合、これらのステップをその個数分繰り返す。
【0129】
ステップS323では、検索インデックス350の見出し語として、処理対象のキーワードが存在するか否かを調べる。存在する場合にはステップS324に進み、存在しない場合には処理を終了する。
【0130】
ステップS324では、検索インデックス350において、処理対象のキーワードを見出し語とするレコードのメッセージIDリストに、新着メッセージのメッセージIDを追加する。
【0131】
ステップS325では、同じレコードのタイムスタンプを、新着メッセージの日付(現在時刻でもよい)に更新する。
【0132】
ステップS322で抽出されたすべてのキーワードに関してS322〜S325の処理が終了した後で、重要メッセージ抽出手段330に、新着メッセージ到着通知を送信する(ステップS326)。この通知には、前ステップで受信した新着メッセージのメッセージIDを含める。
【0133】
新着メッセージ到着通知の送信後、重要メッセージ抽出手段330における処理が完了した後で、検索インデックス更新手段320の処理を終了する。
【0134】
以下、具体例を用いて、検索インデックス更新手段320の動作の具体例を示す。ここでは、メッセージDB400の内容として図11、検索インデックス350の初期状態として図3の内容を仮定する。さらに、ステップS321で、図2に示す新着メッセージを含む検索対象追加要求を受け取ったとする。この内容は、図11における最新のレコード、すなわちメッセージID=1055237のレコードに一致する。
【0135】
この場合、ステップS322では、新着メッセージの本文「私は高校野球をやっていました。」から、キーワードを抽出する。ここで抽出されるキーワードは、具体的なキーワード抽出アルゴリズムによって変わるが、一例として「高校」「時代」「野球」の3つのキーワードが抽出されたと仮定する。
【0136】
まず、キーワード「高校」について、ステップS323以降を実行する。ステップS323では、検索インデックス350(図3)に見出し語「高校」は含まれないので、ここで処理を終了する。
【0137】
次に、キーワード「時代」について、ステップS323以降を実行する。ステップS323では、検索インデックス350に見出し語「時代」は含まれないので、ここで処理を終了する。
【0138】
最後に、キーワード「野球」について、ステップS323以降を実行する。ステップS323では、検索インデックス350に見出し語「野球」が含まれているので、ステップS324以降に進む。
【0139】
ステップS324では、見出し語「野球」のレコードにおけるメッセージIDリストに、新着メッセージのメッセージID:1055237を追加する。
【0140】
ステップS325では、見出し語「野球」のレコードにおけるタイムスタンプを、新着メッセージの日付「2010/6/5 10:42:10」に更新する。
【0141】
以上で、ステップS322で抽出したすべてのキーワードについて、S323〜S325の処理が完了したので、ステップS326に移る。
【0142】
ステップS326では、重要メッセージ抽出手段330に対して送信する新着メッセージ到着通知に、メッセージID=1055237を含める。
【0143】
上記の動作手順を実行した結果、最終的に検索インデックス350の内容は図15のようになる。
【0144】
[重要メッセージ抽出手段の動作手順]
重要メッセージ抽出手段330は、検索インデックス更新手段320からの新着メッセージ通知(図14、ステップS326)を受け取ったときに動作を開始し、新着メッセージの言及関係に基づいて重要メッセージを抽出し、重要メッセージ中のキーワードを検索インデックス350の見出し語として追加する処理を行う。この処理は、メッセージ投稿シーケンス(図5)の一部を構成する。
【0145】
以下、図16を参照して、重要メッセージ判定手段330の動作手順を説明する。
【0146】
まず、新着メッセージ通知に含まれる新着メッセージ本体を取り出す(ステップS331)。
【0147】
次に、前ステップで取り出した新着メッセージに含まれる言及先メッセージIDをキーとして、メッセージDBからメッセージ本体を取り出す(ステップS332)。このステップは、新着メッセージから言及されている投稿済みメッセージを、重要メッセージとして抽出することに相当する。ここで、新着メッセージに含まれる言及先メッセージIDが複数ある場合、それらの言及先メッセージIDに対応するすべてのメッセージ本体を取り出す。
【0148】
次に、前ステップで取り出した重要メッセージからキーワードを抽出する(ステップS333)。この処理は、検索インデックス更新手段320(図14)におけるステップS322と同様である。ここで、重要メッセージが複数ある場合、それらすべてのメッセージについてキーワード抽出を行う。
【0149】
ステップS333で抽出した各キーワードについて、以下のステップS334〜S337の処理を行う。
【0150】
ステップS334では、検索インデックス350に、処理対象のキーワードが見出し語として含まれているかどうかを調べる。含まれている場合はステップS336、含まれない場合はステップS335にそれぞれ進む。
【0151】
ステップS335では、検索インデックス350に、新規のレコードを追加する。ここで、新規レコードの見出し語は、処理対象のキーワードであり、タイムスタンプは、現在時刻である。この時点では、新規レコードのメッセージIDリストは空とする。本ステップの後、S337に進む。
【0152】
ステップS336では、検索インデックス350における、処理対象のキーワードを見出し語とするレコードのタイムスタンプを、現在時刻に更新する。本ステップの後、S337に進む。
【0153】
ステップS337では、検索インデックス350における、処理対象のキーワードを見出し語とするレコードのメッセージIDリストに、そのキーワードを含む重要メッセージのメッセージIDを追加する。但し、既に重要メッセージのメッセージIDが登録されている場合には、追加する必要はない。
【0154】
以下に、重要メッセージ抽出手段の動作の具体例を示す。初期状態における検索インデックス350の内容として、図15を仮定し、メッセージDB400の内容として、図11を仮定する。さらに、現在時刻を「2010/6/5 10:42:15」と仮定する。ここで、新着メッセージは図11中の最上段のレコード、すなわちメッセージID:1055237のレコードである。このレコードの言及先メッセージIDは1054149なので、ステップS332では、メッセージID:1054149のレコードを取り出す。ここで取り出される重要メッセージの内容は、図17に示す内容とする。
【0155】
ステップS333において、本文「今バスケットボールを観戦しています」から抽出されるキーワードは具体的な抽出方法によるが、ここでは「バスケットボール」と「観戦」が抽出されたと仮定する。
【0156】
キーワード「バスケットボール」については、図15に見出し語として含まれていない。したがって、ステップS335において、検索インデックス350に、見出し語を「バスケットボール」とする新規のレコードを追加する。このレコードのタイムスタンプは、現在時刻、すなわち「2010/6/5 10:42:15」である。
【0157】
さらに、ステップS337において、見出し語「バスケットボール」に対応するメッセージIDリストとして、重要メッセージのメッセージID、すなわち1054149を追加する。
【0158】
キーワード「観戦」については、図15に見出し語として含まれている。したがって、ステップS336において、検索インデックス350における見出し語「観戦」のタイムスタンプを、現在時刻、すなわち「2010/6/5 10:42:15」に更新する。
【0159】
さらに、ステップS337において、見出し語「観戦」に対応するメッセージIDリストに重要メッセージのメッセージIDである1054149が既に登録されていることを確認する。
【0160】
最終的に、検索インデックス350の内容は、図18のようになる。図15と比較すると、見出し語「バスケットボール」に相当するレコードが新規に追加されていることとである。
【0161】
[見出し語削除手段の動作手順]
見出し語削除手段340は、本システムの管理者が事前に作成したスケジュールに従って起動し、検索インデックス350中の見出し語のうち、最後に更新または参照されてから一定時間以上経過したものを削除する手段である。この処理は、図8に示した見出し語削除シーケンスに対応する。
【0162】
ここでのスケジュールの一例は、一定時間ごとに見出し語削除手段を起動するというものである。
【0163】
以下、図19を参照して、見出し語削除手段340の動作手順を説明する。
【0164】
まず、検索インデックス350(図3)のすべての見出し語を取得する(ステップS341)。ここで、各見出し語にはタイムスタンプが付加されている。以下、ステップS341で取り出した見出し語のそれぞれについて、以下のステップS342およびS343の動作を行う。
【0165】
ステップS342では、処理対象の見出し語に付加されたタイムスタンプから現在時刻までの間に、見出し語有効期間と呼ぶ所定の時間が経過しているかどうかを調べる。ここで、見出し語有効期間とは、システム管理者が事前に指定した期間である。ここで、見出し語有効期間の例を示す。
【0166】
見出し語「野球」に付加されたタイムスタンプが2010/7/4 12:00:00、見出し語有効期間が1時間であるとする。この場合、現在時刻が2010/7/4 12:50:00であれば、ステップS342において見出し語有効期間は経過していないと判断する。一方、現在時刻が2010/7/3 13:10:00であれば、ステップS342において見出し語有効期間は経過したと判断する。
【0167】
ステップS342において見出し語有効期間が経過していない場合には、処理を終了する。
【0168】
ステップS342において見出し語有効期間が経過している場合には、検索インデックス350から、処理対象の見出し語と、それに関連付けられたメッセージIDリストを削除する(ステップS343)。
【0169】
以下に、見出し語削除手段340の動作の具体例を示す。初期状態での検索インデックス350の内容を図3、現在時刻が「2010/6/5 19:34:00」、見出し語有効期間が2日間と仮定する。
【0170】
この場合、ステップS341では、見出し語「野球」「観戦」「サッカー」と、それらに付加されたタイムスタンプを取得する。
【0171】
ステップS342では、見出し語「野球」について、タイムスタンプ「2010/6/5 10:12:20」であり、その2日後が「2010/6/7
10:12:20」であると計算する。これは現在時刻よりも未来の時刻を指しているので、削除の対象としない。
【0172】
見出し語「観戦」については、タイムスタンプ「2010/6/3 18:10:24」であり、その2日後は「2010/6/5
18:10:24」である。これは現在時刻よりも古いので、ステップS343に進む。その結果、見出し語「観戦」のレコードを検索インデックス350から削除する。
【0173】
見出し語「サッカー」については、タイムスタンプ「2010/6/5 10:12:20」であり、その2日後が「2010/6/7
10:12:20」であると計算する。これは現在時刻よりも未来の時刻を指しているので、削除の対象としない。
【0174】
以上のように、本実施形態によれば、見出し語削除手段340を備えているため、検索インデックス350の肥大化をより一層抑制することが可能である。また、本実施形態は、検索サーバが1台で構成されているため、クライアント機の台数や接続頻度が小さい場合に、容易に導入できるという効果がある。
【0175】
[第3の実施形態]
次に、本発明の第3の実施形態について、図面を参照して説明する。
【0176】
第2の実施形態では、メッセージサーバ、検索サーバ、メッセージDBはそれぞれ1台ずつであったが、第3の実施形態は、これらを複数台ずつ含む構成となる。
【0177】
図20を参照すると、本発明の第3の実施形態は、クライアント機100−1〜100−nと、メッセージサーバ200−1〜200−mと、検索サーバ300−1〜300−xと、メッセージDB400−1〜400−yと、ネットワーク500とから構成される。
【0178】
クライアント機100−1〜100−nは、第2の実施形態におけるクライアント機100−1〜100−nと同一である。
【0179】
メッセージサーバ200−1〜200−mは、第2の実施形態におけるメッセージサーバ200に相当し、その内部構成と動作手順も同一である。
【0180】
検索サーバ300−1〜300−xは、第2の実施形態における検索サーバ300に相当する。第2の実施形態における検索サーバ300との相違点として、マスターの検索サーバ300−1と、スレーブの検索サーバ300−2〜300−xに分かれる。マスター・スレーブに共通して、第2の実施形態における検索サーバ300と同様に、メッセージ検索手段、検索インデックス更新手段、重要メッセージ抽出手段、見出し語削除手段の各手段を備える。
【0181】
これらの構成要素のほかに、マスターの検索サーバ300−1は、マスターの検索インデックス350−1を備える。
【0182】
一方、スレーブの検索サーバ300−2〜300−xは、スレーブの検索インデックス350−2〜350−xを備える。
【0183】
各検索サーバが備える検索インデックスは、マスター・スレーブ型のデータベース複製として動作する。すなわち、検索インデックス更新手段320による検索インデックスの更新(図14、ステップS324−S325)、および重要メッセージ抽出手段330における検索インデックスの更新(図16、ステップS335・S336)の際に、まずマスターの検索インデックス350−1を更新した後、その更新内容をスレーブの検索インデックス350−2〜350−xに反映させるという手順を取る。
【0184】
メッセージDB400−1〜400−yは、第2の実施形態におけるメッセージDB400に相当する。
【0185】
第2の実施形態との相違点は、マスター・スレーブ型のデータベース複製として動作することである。すなわち、メッセージ投稿手段210によるメッセージDBの更新(図9、ステップS213)の際に、最初にマスターのメッセージDB400−1を更新した後、その更新内容をスレーブのメッセージDB400−2〜400−yに反映させるという手順を取る。
【0186】
クライアント機100−1〜100−nからメッセージサーバへのメッセージ投稿要求(図9、ステップS211)、およびメッセージ参照要求(図12、ステップS221)の際には、メッセージサーバを1台選択し、選択したメッセージサーバに対して要求を送信する。
【0187】
複数台のメッセージサーバのうちの1台を選択する方法の一例は、クライアント機100−1〜100−nが、送信先のメッセージサーバをランダムに選択するというものである。別の例は、クライアント機100−1〜100−nとメッセージサーバ200−1〜200−mの間にロードバランサ(負荷分散装置、Load Balancer)を設置し、ロードバランサが要求送信先のメッセージサーバを順番に(ラウンドロビンに)選択するというものである。
【0188】
メッセージサーバ200−1〜200−mからメッセージDBの参照(図12、S222)では、複数台のメッセージDBからどれか1台を選択する必要がある。これについても、クライアント機からメッセージサーバを選択する処理と同様に、メッセージサーバ側でランダムに選択する方法と、メッセージサーバとメッセージDBの間にロードバランサを置く方法がありうる。
【0189】
このように本実施形態によれば、第2の実施形態と同様の効果が得られるとともに、検索処理の負荷分散が可能になるという効果がある。
【産業上の利用可能性】
【0190】
本発明によれば、参加者が数十字〜数百字程度の短いメッセージを投稿するような情報共有システムにおけるキーワード検索機能といった用途に適用できる。また、ライフログ(lifelog) と呼ばれる、利用者の行動情報を時刻や位置情報、短いメッセージと組み合わせて記録するようなシステムにおけるキーワード検索機能といった用途にも適用できる。
【符号の説明】
【0191】
1…検索装置
2…検索インデックス
3…検索インデックス管理手段
4…文書検索手段
5…端末
100−1〜100−n クライアント機
200、200−1〜200−m メッセージサーバ
300、300−1〜300−x 検索サーバ
400、400−1〜400−y メッセージDB
210 メッセージ投稿手段
220 メッセージ参照手段
310 メッセージ検索手段
320 検索インデックス更新手段
330 重要メッセージ抽出手段
340 見出し語削除手段
350、350−1〜350−x 検索インデックス
400 メッセージDB
500 ネットワーク

【特許請求の範囲】
【請求項1】
見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスと、
検索対象文書集合への第1の文書の登録時、前記第1の文書に含まれる語のうち、前記検索インデックスに既に見出し語として登録されている語については、前記第1の文書の見出し語として前記検索インデックスに登録し、前記検索インデックスに見出し語として未だ登録されていない語については、前記第1の文書を引用する別の第2の文書について前記検索対象文書集合への登録要求があった時点で前記第1の文書の見出し語として前記検索インデックスに登録する検索インデックス管理手段と、
検索要求時、前記検索インデックスから検索キーワードに一致する見出し語を含む文書を検索する文書検索手段とを備えることを特徴とする検索装置。
【請求項2】
前記検索インデックス管理手段は、新規に登録された文書に含まれる語のうち、前記検索インデックスに既に見出し語として含まれる語を、前記文書の見出し語として前記検索インデックスに登録する検索インデックス更新手段と、新規に登録された文書から引用されている過去の文書に含まれる語を、その文書の見出し語として前記検索インデックスに登録する重要メッセージ抽出手段とを有することを特徴とする請求項1に記載の検索装置。
【請求項3】
前記検索インデックスは、見出し語ごとに、最新のアクセス時刻を記録するタイムスタンプを有し、
前記検索インデックス管理手段は、一定時間以上アクセスされていない見出し語を前記検索インデックスから削除することを特徴とする請求項1または2に記載の検索装置。
【請求項4】
前記検索インデックス管理手段は、前記検索インデックスの見出し語のうち、付加されたタイムスタンプから一定時間以上アクセスされていない見出し語を定期的に検出し、削除する見出し語削除手段を有することを特徴とする請求項1乃至3の何れかに記載の検索装置。
【請求項5】
前記検索対象文書集合に含まれる文書を記憶する文書記憶手段と、
登録要求のあった文書を登録順に前記文書記憶手段に記憶する文書登録手段と、
参照要求時、前記文書記憶手段に最近登録された上位一定個数の文書を参照要求元へ送信する文書参照手段とを備えることを特徴とする請求項1乃至4の何れかに記載の検索装置。
【請求項6】
前記検索対象文書集合に含まれる文書は、文書識別子と、文書本文と、引用する他の文書の文書識別子とを含むことを特徴とする請求項1乃至5の何れかに記載の検索装置。
【請求項7】
見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスと、検索インデックス管理手段と、文書検索手段とを備える検索装置で実行される検索方法であって、
前記検索インデックス管理手段が、検索対象文書集合への第1の文書の登録時、前記第1の文書に含まれる語のうち、前記検索インデックスに既に見出し語として登録されている語については、前記第1の文書の見出し語として前記検索インデックスに登録し、前記検索インデックスに見出し語として未だ登録されていない語については、前記第1の文書を引用する別の第2の文書について前記検索対象文書集合への登録要求があった時点で前記第1の文書の見出し語として前記検索インデックスに登録し、
前記文書検索手段が、検索要求時、前記検索インデックスから検索キーワードに一致する見出し語を含む文書を検索する
ことを特徴とする検索方法。
【請求項8】
見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスを作成する装置であって、
検索対象文書集合への第1の文書の登録時、前記第1の文書に含まれる語のうち、前記検索インデックスに既に見出し語として登録されている語については、前記第1の文書の見出し語として前記検索インデックスに登録し、前記検索インデックスに見出し語として未だ登録されていない語については、前記第1の文書を引用する別の第2の文書について前記検索対象文書集合への登録要求があった時点で前記第1の文書の見出し語として前記検索インデックスに登録する検索インデックス管理手段を備えることを特徴とする検索インデックス作成装置。
【請求項9】
見出し語と該見出し語を含む文書との対応関係を記憶する検索インデックスを備えたコンピュータを、
検索対象文書集合への第1の文書の登録時、前記第1の文書に含まれる語のうち、前記検索インデックスに既に見出し語として登録されている語については、前記第1の文書の見出し語として前記検索インデックスに登録し、前記検索インデックスに見出し語として未だ登録されていない語については、前記第1の文書を引用する別の第2の文書について前記検索対象文書集合への登録要求があった時点で前記第1の文書の見出し語として前記検索インデックスに登録する検索インデックス管理手段と、
検索要求時、前記検索インデックスから検索キーワードに一致する見出し語を含む文書を検索する文書検索手段と
して機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2011−238098(P2011−238098A)
【公開日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願番号】特願2010−110129(P2010−110129)
【出願日】平成22年5月12日(2010.5.12)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】