以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。以下の実施形態では、ネットワーク上の複数のデータソースからデータを収集し、情報検索のための検索用データを作成し、一方でクライアント・コンピュータからの検索要求に応えて検索結果を提供する横断検索システム110を例として説明する。
図1は、第1の実施形態による横断検索システム110を含んで構成されるネットワーク環境100の機能ブロックを示す。図1に示すネットワーク環境100は、ネットワークに接続される横断検索システム110と、横断検索システム110が提供する検索インタフェースにアクセスし、検索要求を行うクライアント・コンピュータ(以下、ユーザ端末という。)150と、複数のデータソース160A〜160Cとを含む。上記ネットワークは、特に限定されるものではないが、例えばTCP/IPおよびイーサネット(登録商標)によるローカル・エリア・ネットワーク(LAN)、VPN(Virtual Private Network)や専用線を使用するWAN(Wide Area Network)などとして構成される。
図1に示す複数のデータソース160A〜160Cは、横断検索システム110に設定される検索範囲に含まれる情報源であり、検索対象となるドキュメント・データ、画像データ、マルチメディア・データなど種々のデータを格納する。なお、データソース160は、横断検索システム110がデータ取得可能である限り、如何なる形式の情報源とすることができる。上記データソース160としては、特定の実施形態では、リレーショナル・データベース、XML(eXtensible Markup Language)データベース、オブジェクト指向データベース、ファイル・サーバ上のフォルダ、文書(コンテンツ)管理システム、共有フォルダなどを挙げることができる。
データソース160には、それぞれ固有の属性および属性値の1以上のセットが付されたデータ群が格納される。複数のデータソース160A〜160Cは、それぞれ異なる観点に基づいて整備されており、例えば、説明する実施形態では、データソース160Aは、提案書を共有するためのデータベースであり、提案書の種類に重点を置いた設計となっている。データソース160Bは、例えば営業活動を支援するための情報を提供することを目的に整備されたデータベースであり、入力者による入力の表記にぶれが発生し難いように、分類が選択式で入力される設計となっている。一方、データソース160Cは、営業関係の情報共有を目的に設置されたデータベースであり、情報の共有の便宜を考慮し、最低限必要の文書の種類以外はすべて入力を強要しない設計となっている。
図2は、データソースが格納するデータのデータ構造を例示する。データソース160A、データソース160Bおよびデータソース160Cには、説明する実施形態では、それぞれ図2(A)、(B)および(C)に示すフォーマットのデータが格納される。図2には、属性の属性名、該属性のデータ型、該属性について入力されるサンプルの属性値が示されており、さらに、「説明」の欄において各属性の性質が補足されている。
属性名は、文字列で表される属性の名称であり、データ型は、文字列(string)、日付日時(datetime)、整数値(int)、ブール値(boolean)、単精度浮動小数点型(single)など種々のデータ取扱形式の中から選択される属性値のデータ型である。「データ型」欄において「null可」と示されている属性は、値が設定されないことが許容される形式であることを示す。図2に示す「説明」欄において、「フリーテキスト」と説明されている属性は、入力者が属性値を自由に記述することが可能な形式であることを示す。例えば、自社製品を識別または分類するためのseihin属性などについては、同一企業内では、まったく内容の異なる値が入力される可能性は少ないが、入力者によって粒度が異なる可能性がある。一方、「説明」欄において、「選択式」と説明されている属性は、入力される属性値のバリエーションが所与の値の範囲に固定されている形式であることを示し、この属性においては、入力者による粒度の相違は発生し得ない。また、「説明」欄において、「自動で入力される」と説明されている属性は、それぞれのデータソースを管理するシステムによって自動的に属性値が付与されることを示す。
なお、説明の便宜上、データソース160Aおよび160Bはリレーショナル・データベースであり、データソース160Cはファイル・サーバ上のフォルダであるものとして説明する。また、図2(C)は、データソース160Cのデータ構造を示しているが、データソース160Cの各データは、ファイルとして格納され、それぞれ、「事例」や「提案書」などのサブフォルダ内に、カテゴリ、キーワード、コメントなどのプロパティが付与されて格納されている。また、データソース160Cにおいてデータの内容自体はファイル中に、利用するアプリケーション・ソフトウェアに応じた形式で格納されており、本実施形態では、便宜上、予めテキスト抽出ソフトウェアによってファイルの内容が抽出され、コメント・プロパティとして付与されているものとする。なお、上述したまたは以下に説明する具体例は、説明のための例示するものであり、特にこれに限定されるものではないことはいうまでもない。
上述したように、横断検索システム110の検索範囲に含まれる複数のデータソース160は、それぞれ異なる観点で設計されたものであるため、同じような名称の属性であっても、それに設定される属性値は、所与の選択肢から選択する選択式であったり、フリーテキストであったり、数値表現であったりと、種々の様式が想定される。したがって、なんら工夫がなされていなければ、ユーザは、あるひとつの観点で検索したいだけであるにもかかわらず、複数のデータソースのそれぞれに対して、それぞれ対応する適切な検索手段を用いて、適切な属性値を指定して、個別に検索しなければならないことになる。
例えば、同じく製品を分類する、データソース160Aのseihin属性と、データソース160Bのproduct-type属性とは、類似する性質を表す属性であるが、seihin属性がフリーテキストで入力されるのに対し、product-type属性が所定範囲の整数値から選択される。このため、データソース160Bのproduct-type属性に対応する所与の値を指定してデータソース160Aおよびデータソース160Bを横断的に検索したとしても、データソース160Bのみのデータしかヒットしない。したがって、データソース160Aおよび160Bから例えば財務管理系の製品情報を検索しようとする場合には、データソース160Aについては、seihin属性に「財務管理X」を指定して検索し、データソース160Bについては、product-type属性に「1」を指定して別途検索しなければならない。また、上記データソースに格納されたデータを単純にテキストとして処理し、横断的に検索するよう構成しただけでは、充分な検索結果を得ることは難しい。
そこで、本実施形態の横断検索システム110は、以下詳細を説明するデータ収集部114および類似属性正規化部116を備える構成を採用する。データ収集部114は、スケジュール管理部112から定期または不定期に呼び出され、検索範囲として予め設定されているデータソース160A〜160Cにアクセスし、これらのデータソース160A〜160Cが保有するデータを検索するための検索対象データを収集する。収集される検索対象データは、検索対象の各データについて取得され、1以上の属性および属性値のセットを含み、データソース160が保有するデータそのもの、または保有するデータから抽出される。
スケジュール管理部112は、データを収集するスケジュールをデータソース160毎に管理しており、さらに、収集対象のデータソースの所在を示す情報(以下、アクセス先情報という。)およびアクセス方法を示す情報を記憶する。どのようなスケジュールとするかは、特定のデータソースの更新頻度などの統計情報に応じて適宜設定することができる。図3(A)は、スケジュール管理部112が管理するスケジュールの管理データを示し、図3(A)に示されるスケジュール(間隔、曜日、時刻)に従って、アクセス先情報およびアクセス方法を指定してデータ収集部114を起動する。データ収集部114は、上記アクセス先情報で特定されるデータソースに、上記アクセス方法にてアクセスして、必要な検索対象データを取得する。
スケジュール管理部112の実装としては、UNIX(登録商標)系のオペレーティング・システム(OS)を搭載したシステムであれば、cronを利用することができ、Windows(登録商標)系のOSを搭載したシステムであれば、タスクスケジューラを利用することができる。cronおよびタスクスケジューラでは、コマンド呼び出し時の引数が指定可能であるため、上記アクセス先情報およびアクセス方法は引数として指定することができる。説明する実施形態では、横断検索システム110がWindows(登録商標)系OSで構成されている場合を示すが、この場合、タスクスケジューラに、図3(A)に示すようにスケジュールでデータ収集部114を利用するためのコマンドが設定され、コマンドラインのオプションとしてアクセス先情報およびアクセス方法が与えらえる。なお、他のOSを使用する実施形態では、使用するOSに応じた適切なスケジュール管理手段を利用することができる。
データソース160からデータ収集するためのアクセス方法は、データソースの種類により異なり、特に限定されるものではないが、例えばデータソース160Aおよび160Bについては、リレーショナル・データベースであるので、JDBCやODBC(Open DataBase Connectivity)を用いた問い合わせにより行うことができる。例えばデータソース160Cについては、ファイル・サーバ上のフォルダであるので、Windows(登録商標)系であればshell32.dllを用いて行うことができる。図3(A)に示す例では、「RDB-XX」が指定されるデータソース160A,160Bについては、JDBCを用いてアクセス先にアクセスし、「filesystem」が指定されるデータソースについては、shell32.dllを用いてアクセス先にアクセスすることになる。なお、企業内においては、データソースにアクセス制限が施されることが通常であるが、その場合、アクセス制限を考慮した既知のデータ収集方法を適宜採用することができる。なお、以下の説明では、便宜上すべてのデータソースについてアクセス制限がかけられていないものとして説明する。
また、データ収集部114は、図3(B)に示すようなデータ収集履歴を保持しており、2回目以降のデータ収集では、データソース160内のデータのうち、前回収集日時以降に変化があったデータについての情報を収集し、検索対象データを更新し、新たな検索対象のデータを追加し、または存在しなくなった検索対象のデータを削除する。
データ収集部114は、問い合わせの結果として検索対象データを取得すると、得られた検索対象データについて、属性変換テーブル118および類似属性正規化部116を用いてデータの加工を行い、その結果を検索用データとして検索用データベース122に格納する。属性変換テーブル118は、データソース固有に定義される一部の属性(属性名およびデータ型のセット)を、データソース間共通の属性(属性名およびデータ型のセット)に変換するためのテーブルである。
図4は、属性変換テーブルのデータ構造を例示する。図4に示す属性変換テーブル118は、データソースを特定する情報が入力されるカラムと、データソースにおける属性名およびデータ型がそれぞれ入力される各カラムと、共通の対応属性名および対応データ型がそれぞれ入力される各カラムとを含むレコードから構成される。属性変換テーブル118中に定義される属性としては、(1)id属性、docid属性、絶対パス属性などの検索対象を識別する属性(これらはdoc_id属性に正規化される。)、(2)koushin属性、lastupdate属性、前回保存日時属性などの検索対象の最終更新日時を示す属性(これらはdoc_updateTime属性に正規化される。)、(3)title属性、subject属性、ファイル名属性など検索対象の名称を示す属性(これらはdoc_title属性に正規化される。)、(4)body属性、content属性、コメント属性など検索対象の内容を表す属性(これらはdoc_body属性に正規化される。)など、概ねデータソースに共通して定義される共用性の高い属性が定義される。
データ収集部114は、図4に示すような属性変換テーブル118を参照して、問い合わせの結果として得られた検索対象データについて、データソース間でまちまちであった属性を共通の属性に変換する。データ収集部114は、属性変換した後、さらに、検索対象データの各属性について、類似属性正規化部116を呼び出し、検索対象データを正規化する。類似属性正規化部116は、類似属性定義テーブル120を参照して、検索対象データ中に含まれる属性のうち、該テーブル120内に定義される属性について正規化を行う。
類似属性定義テーブル120は、データソース固有に定義される属性名および属性値の組を、データソース間共通の正規化された属性名(以下、正規化属性名という。)および属性値(以下、正規化属性値という。)の組に対応付けるテーブルである。図5は、類似属性定義テーブルのデータ構造を例示する。図5に示す類似属性定義テーブル120は、データソースを特定する情報が入力されるカラムと、データソースにおける属性名および属性値がそれぞれ入力される各カラムと、正規化属性名および正規化属性値がそれぞれ入力される各カラムとを含むレコードから構成される。
類似属性定義テーブル120には、複数のデータソース間で表記にぶれが存在し得る属性名および属性値の組が定義されており、類似属性正規化部116は、類似属性定義テーブル120を参照して、データソース固有の属性名および属性値をデータソース間共通の正規化属性名および正規化属性値に正規化し、適用結果をデータ収集部114に返す。類似属性定義テーブル120中の「*」印は、文字列の後ろに付されて前方一致を表し、文字列の前に付されて後方一致を表し、文字列の前後に付されて部分一致を表し、単独で用いられて文字数不定の任意の文字列に無条件にマッチするワイルドカードを表す。例えば、図5に示す類似属性定義テーブル120中の2番目のレコードは、teian-type属性の属性値が「提案」に後方一致する場合には、doc_docType正規化属性に、正規化属性値「提案書」が一律にラベルされることになる。また、図5に示す類似属性定義テーブル120中の8番目のレコードでは、3番目からのレコードに規定される条件、つまりkokyaku属性の属性値が「全業種」、「設備」、「学校」、「塾」・・・のいずれにも該当しない場合に、正規化属性値としてnull値がラベルされることになる。
類似属性正規化部116からの適用結果を返されたデータ収集部114は、収集元データソースを識別する情報と、適用結果として得られた正規化属性に、正規化属性値に加えて正規化前の属性値を関連付けて、検索用データとして検索用データベース122に追加し、または更新する。図3(C)は、検索用データベース内に格納される検索用データのデータ構造を示す。図3(C)に示すように、各検索対象について作成される検索用データは、doc_dataSource属性とdoc_id属性とによって固有に識別され、図2(A)〜(C)に示されたデータソース固有の属性が正規化されたデータ構造を有する。図3(C)中の「データ型」欄におけるstring配列は、この属性値には文字列データ形式のデータ配列が保持されることを表しており、この属性値には上記正規化属性値および正規化前の属性値が配列として入力され得る。
以下、図6を参照しながら、データ収集処理についてより詳細に説明する。図6は、横断検索システム110のデータ収集部114が実行する、データ収集処理を示すフローチャートである。図6に示す処理は、スケジュール管理部112が、スケジュールされたタイミングで、データソースのアクセス先情報およびアクセス方法を指定してデータ収集部114を呼び出したことに応答して、ステップS100から開始する。例えば、現在の日時が20xx年8月31日の22:00であるとすると、スケジュール管理部112から、データソース160A(//target_server:port/target_db)を指定して、データ収集部114が呼び出される。なお、図6に示す処理は、データソース毎に行われる処理である。
ステップS101では、データ収集部114は、図3(B)に示すようなデータ収集履歴を参照して、指定されたデータソースについての前回収集日時を取得する。図3(B)に示す例では、データソース160Aについて日時(20xx年8月29日22:00)が取得される。ステップS102では、データ収集部114は、当該データソースのデータ収集履歴の前回収集日時を現在日時で更新する。説明する例では、前回収集日時を現在日時(20xx年8月31日22:00)で上書きする。ステップS103では、当該データソースに対し、指定されたアクセス手法を用いてアクセスして、前回収集日時以降に変化があったデータを取得し、その検索対象データを作成する。説明する例では、更新前の前回収集日時(20xx年8月31日22:00)以降に変化があるデータ(lastupdate属性の属性値が20xx-08-31 22:00以上のもの)を問い合わせ、データソース160Aから変化分のデータを取得する。
なお、図6を参照したデータ収集処理の説明では、収集されるデータは、レコード毎またはファイル毎に取得され、前回収集日時以降に変化があったすべてのデータベースのレコードまたはファイルについて、ステップS103〜ステップS107の処理が繰り返されるものとして説明する。
現在の日時が20xx年9月4日の10:00であるとすると、データソース160C(\\test_server3\target_folder)に関するデータ収集が行われる。データソース160Cはファイル・サーバであるため、データ収集部114は、ステップS103で、指定されたフォルダ以下のサブフォルダすべてについて、ファイルのプロパティを検査し、更新前の前回収集日時(20xx年8月31日22:00)以降に保存されたファイル(前回保存日時が20xx年8月28日の10:00以降となっているファイル)について、プロパティ情報のカテゴリ、キーワード、前回保存日時およびコメントを、サブフォルダおよび絶対パスの情報と併せて取得する。
ステップS104では、データ収集部114は、作成された検索対象データに対して、属性変換テーブル118を適用し、データソース間共通の対応属性名および対応データ型から構成される属性に変換し、検索用データを作成する。例えばデータソース160Aであれば、データ収集部114は、各属性毎に、データソース160Aを識別するアクセス先情報(//target_server:port/target_db)と属性名をキーに、属性変換テーブル118を参照する。図4に示す属性変換テーブル118では、id属性、koushin属性、title属性、body属性の4つの属性について対応属性名が記載されており、データ収集部114は、属性名を対応属性名に変換する処理を行う。なお、図4に示す例では、属性値のデータ型の変化はないため、各属性値は、変更されず、そのまま対応する属性に引き継がれる。
ステップS105では、データ収集部114は、作成された検索対象データ中の各属性について、類似属性正規化部116を呼び出し、ステップS106で、類似属性正規化部116から適用結果を受け取り、検索用データに追加する。データソース160Aであれば、データ収集部114は、各属性毎に、データソースを識別するアクセス先情報と、属性名と、属性値とを、文字列として類似属性正規化部116に渡し、適用結果として、図5に示した類似属性定義テーブル120に定義される3つの正規化属性(doc_docType属性,doc_customorType属性,doc_productType属性)について、それぞれ文字列の配列を受け取る。データソース160Aであれば、取得された変更にかかる各データについて、図2(A)に例示する最初のid属性から最後のbody属性まで、類似属性正規化部116が合計7回呼び出され、適用結果が累積される。
類似属性正規化部116は、類似属性定義テーブル120を適用し、データソースと、属性名と、属性値とのセットを受け取ると、まず、文字列で表現された属性値を、全角または半角のカンマ、全角または半角の読点、全角または半角のスペースなどのデリミタで分割し、属性値の文字列の配列を作成する。類似属性正規化部116は、その後、データソース、属性名、属性値(文字列の配列の個別要素)をキーとして、図5に示すような類似属性定義テーブル120を参照して正規化し、適用結果を返す。
例えば、セット(//target_server:port/target_db,id,2010-08-31-00231)では、類似属性定義テーブル120に該当する属性名が存在しないため、類似属性正規化部116は、3つの正規化属性(doc_docType属性,doc_customorType属性,doc_productType属性)のそれぞれについて空の配列を返却する。セット(//target_server:port/target_db,teian-type,個別提案)では、類似属性定義テーブル120の2番目レコードの属性値「*提案」にマッチするため、正規化属性(doc_docType属性)に「提案書」と、さらに元となった正規化前の属性値である「個別提案」とが格納され、残りのdoc_customorType属性(空の配列)およびdoc_productType属性の空の配列と共に適用結果が返される。
セット(//target_server:port/target_db,kokyaku,”学校,塾”)のセットでは、属性値がデリミタで分割され、サブセット(//target_server:port/target_db,kokyaku,学校)およびサブセット(//target_server:port/target_db,kokyaku,塾)となり、類似属性定義テーブル120の5番目、6番目、8番目にマッチするため、doc_docType属性(空の配列)、doc_customorType属性([O.教育学習支援業,学校,塾])、doc_productType属性(空の配列)が返される。seihin属性に関するセットからは、doc_docType属性(空の配列)、doc_customorType(空の配列)、doc_productType属性([財務管理系,財務管理X])が返される。なお、配列へのデータを格納する際には、説明する実施形態では、重複データは改めて格納されないものとする。
データソース160Bについても同様であり、まずステップS104で、属性変換テーブル118により、docid属性(int)がdoc_id属性(string)へ、lastupdate属性(datetime)がdoc_updateTime属性(datetime)へ、subject属性(string)がdoc_title属性(string)へ、content属性(string)がdoc_body属性(string)へ変換され、さらにgoushu-2属性(string)がdoc_body属性(string)の末尾に変換後追加される。次に、ステップS105で、各属性毎に類似属性正規化部116が呼び出され、類似属性正規化部116は、類似属性定義テーブル120を参照して正規化処理を行う。処理結果として、information-type属性に関するセットからは、doc_docType属性([商談事例,3])、doc_customorType属性(空の配列)、doc_productType属性(空の配列)が返され、gyoushu-1属性に関するセットからはdoc_docType属性(空の配列)、doc_customorType属性([農業,3])、doc_productType属性(空の配列)が返され、product-type属性に関するセットからはdoc_docType属性(空の配列)、doc_customorType属性(空の配列)、doc_productType属性([顧客管理系,7])が返される。
データソース160Cについても同様であり、まずステップS104で、属性変換テーブル118を用いて、絶対パス属性(string)がdoc_id(string)属性へ、前回保存日時属性(string)がdoc_updateTime属性(datetime)へ、ファイル名属性(string)がdoc_title属性(string)へ、コメント属性(string)がdoc_body属性(string)へ変換される。続いて、ステップS105で、各属性毎に類似属性正規化部116が呼び出され、類似属性正規化部116による処理の結果として、サブフォルダに関するセットからはdoc_docType属性(カタログ)、doc_customorType属性(空の配列)、doc_productType属性(空の配列)が返され、カテゴリに関するセットからはdoc_docType属性(空の配列)、doc_customorType属性(空の配列)、doc_productType属性(空の配列)が返り、キーワードに関するセットからはdoc_docType属性(空の配列)、doc_customorType属性(空の配列)、doc_productType属性(管理系X)が返される。管理系Xと参照される製品に適切に正規化属性値を与える定義は、図5に示す類似属性定義テーブル120中には存在しないが、データソース160C(\\test_server3\target_folder)の末尾に、任意の文字列にマッチする属性値が「*」設定されているため、その結果として、元の属性値である「管理系X」は、doc_productType属性の属性値として格納される。
引き続き図6を参照すると、ステップS107では、データ収集部114は、最終的な検索用データを検索用データベース122に格納する。検索用データは、処理対象としているデータソースのアクセス先情報が格納されるdoc_dataSource属性、doc_id属性、doc_updateTime属性、doc_docType属性、doc_customorType属性、doc_productType属性、doc_title属性およびdoc_body属性を含む。ここでは、取得された検索対象が新規なものであれば、検索用データベース120に検索用データが挿入され、既に存在する場合には更新される。例えば、当該doc_dataSource属性およびdoc_id属性の値のセットを持つ検索用データについて更新操作(UPDATE)を行い、更新が成功すればそれで終了し、更新が失敗した場合には、検索用データベース122へ検索用データの挿入操作(INSERT)を行う。
ステップS108では、データ収集部114は、指定のデータソースにおいて処理すべきデータが他に存在するか否かを判定する。ステップS108で、処理すべきデータが他にまだ存在すると判定された場合(YES)には、ステップS103へループさせ、データソース中に前回更新時刻以降変化があったデータが存在しなくなるまで、処理を繰り返させる。一方、ステップS108で、処理すべきデータがもう存在しないと判定された場合(NO)には、ステップS109へ処理を分岐させる。ステップS109では、データ収集部114は、当該データソースについての検索用データが格納済みの検索対象について存在確認し、存在しなくなっているものについては検索用データ自体を削除し、または検索用データに削除フラグを設定する。
この際に、当該データソースへのアクセスに必要なデータ形式で検索対象を識別する識別子を得るため、属性変換テーブル118を適用して、データソース間共通の対応属性doc_idから、アクセス先データソース固有の形式(データソース160Aであればid属性)に変換し、元の属性名を取得する。存在確認は、当該データソースに対し、doc_id属性の属性値(例えば20xx-08-31-00231)を元の属性(データソース160Aでは、id属性である。)として有する情報の問い合わせすることにより行うことができ、その値を有するデータが存在しなければ、エラー応答があるため、これにより存在を確認することができる。検索用データベース122からの削除は、当該データソースのdoc_dataSource属性の属性値および当該doc_id属性の属性値を指定した検索用データの削除または削除フラグの設定により行うことができる。
以上説明したデータ収集処理によって検索対象の検索用データが検索用データベース122に格納されると、当該検索対象が実際に検索可能となる。以下、図1、図7および図8を参照して、第1の実施形態の横断検索システム110を用いた検索処理について説明する。
図1を再び参照すると、横断検索システム110は、さらにユーザ端末150に対し検索用のグラフィカル・ユーザ・インタフェース(以下、GUIと参照する。)を提供する検索インタフェース部124を含む。検索インタフェース部124は、説明する実施形態では、CGI(Common Gateway Interface)、SSI(Server Side Include)、サーブレット、ウェブ・アプリケーションなどのサーバ・プログラムとして実装され、HTTPプロトコルを使用して、ユーザ端末150のブラウザ152に対して検索用ウェブ・ページを提供し、当該検索用ウェブ・ページを介した検索要求を受信して、検索結果を返すよう構成されている。ユーザ端末150は、ウェブ・ブラウザ152を実装する汎用コンピュータ装置またはPDAや携帯電話などの携帯端末装置などとして構成されており、横断検索システム110に対し検索要求を発行し、検索結果を取得して、その表示デバイス上に検索結果を表示する。
図7(A)は、第1の実施形態による横断検索システムの検索インタフェース部が提供する検索用ウェブ・ページが表示された検索画面を例示する。図7(A)に示す検索画面200は、文書の種類、製品分類、業種、キーワードを入力するためのGUI部品210,220,230,240を含み、ユーザ端末150の利用者は、各GUI部品に値をセットすることが可能であり、これらに値がセットされた後、検索ボタン250がクリックされると、ブラウザ152は、GUI部品にセットされた値を含めて検索クエリを横断検索システム110の検索インタフェース部124に送信し、検索インタフェース部124から検索結果を受信して、検索結果表示エリア260に表示する。
検索画面200上の文書の種類、業種、製品分類を指定するための各GUI部品210,220,230は、それぞれ、検索用データベース122におけるdoc_docType属性、doc_customorType属性およびdoc_productType属性の属性値を指定するためのものであり、新規入力可能なコンボボックスにより実現されている。それぞれのGUI部品210,220,230の右端にある下向き矢印のボタンをクリックすると、選択可能な値のリストが表示され、その中から反転表示212で値を選択することにより、各属性に対する値がセットされる。リストの先頭と末尾は特殊な項目であり、先頭は「選択なし」の項目、末尾は「新規入力」の項目となっている。「選択なし」の項目が選択された状態では、対応する属性値はセットされない。「新規入力」の項目214が選択された状態では、「新規入力」の文字列の上に文字列の上書入力が可能となり、属性に対する値の指定としては、上書入力した文字列がセットされる。
キーワードを入力するためのGUI部品240は、例えばテキストボックスにより実現され、ユーザは、自由に文字列が入力可能とされ、単語毎にデリミタで区切って文字列を入力することが期待される。検索ボタン250がクリックされると、ブラウザ152は、GUI部品210〜240にセットされた値に従って検索条件が記述された検索クエリを検索インタフェース部124に送信する。検索インタフェース部124は、検索クエリを解釈し、上記キーワードについては、GUI部品240にセットされたキーワード文字列をデリミタにして分割し、検索用キーワード列W(0)〜W(n)(ここで、nはキーワード要素数に応じた数である。)を得る。なお、これらの検索用キーワード列と、文書の種類、業種、製品分類のそれぞれについては、値がセットされていない場合は検索条件としては使用されない。
検索インタフェース部124は、上記文書の種類(doc_docType属性)、業種(doc_customorType属性)、製品分類(doc_productType属性)に対する値の指定と、検索用キーワード列W(0)〜W(n)を論理積(AND)で結合した条件式を検索条件とし、検索条件に合致する検索用データを検索用データベース122から検索し、検索結果を取得する。検索インタフェース部124は、検索結果を取得すると、ユーザが認識しやすい表示用の形式に検索結果を整形し、ユーザ端末150のブラウザ152へ整形後の検索結果を送信する。ブラウザ152は、整形後の検索結果を受け取り、図7(A)に示す検索画面200の検索結果表示エリア260を検索結果に応じて更新し、表示デバイスを介してユーザに提示する。
図8は、第1の実施形態による横断検索システムの検索インタフェース部が実行する、検索処理を示すフローチャートである。図8に示す処理は、ユーザ端末150のブラウザ152から検索クエリが送信されたことに応答して、ステップS200から開始する。ステップS201では、検索インタフェース部124は、ユーザ端末150から検索クエリを受信する。図7(A)に示す検索画面では、文書の種類として「商談事例」が選択され、キーワードとして「オーエス サイト構築」がセットされているため、この状態で、検索ボタン250がクリックされると、doc_docType属性に対して値(商談事例)を指定し、キーワード文字列(「オーエス サイト構築」)を含む検索クエリが発行される。
ステップ202では、検索インタフェース部124は、検索クエリを解釈して、上記属性に対する値および検索キーワード列を含む検索条件を抽出する。図7(A)に示す検索画面の例では、キーワードについては、デリミタで分割され、「オーエス」および「サイト構築」のキーワード列が取得される。製品分類、業種については値がセットされていないため検索条件としては採用されない。ステップS203では、検索インタフェース部124は、上記抽出した検索条件に合致する検索用データを検索用データベース122から検索し、検索結果を取得する。説明の例では、検索条件(doc_docType=「商談事例」 AND doc_body=「*linux*」 AND doc_body=「*サイト構築*」)で検索用データベース122への問い合わせが行われる。
ステップS204では、検索インタフェース部124は、表示用に検索結果を整形し、検索結果表示用データを作成する。例えば、検索結果は、1データごとに5行づつ、10データ毎に表示され、タイトル(doc_title)が1行目に、データソース(doc_dataSource属性)およびデータの識別子(doc_id)が2行目に、当該文書からの抜粋が3行目および4行目に、空行が5行目に含まれる。対応するデータソースが、ブラウザからアクセス可能な形式のものであれば、2行目のデータソースおよびデータの識別子の表示に代えて、1行目のタイトルに当該検索対象のデータへのハイパーリンクを張ることもできる。この場合には、検索用データベース122のデータ構造において、doc_dataSource属性、doc_id属性の他、検索対象の格納位置を特定するURLを格納するdoc_URL属性を設け、このためのデータ取得、変換規則を設ければよい。
また、データソースは、doc_dataSource属性に格納された値そのままでは、通常ユーザには理解し難いため、検索インタフェース部124は、上記整形処理として、図7(B)に示すようなテーブルを参照して、doc_dataSource属性値を表示用文字列に変換する処理を行うことができる。
ステップS205では、検索インタフェース部124は、ユーザ端末150に対し、検索結果として検索結果表示用データを返信する。図7(A)に示す例では、検索結果表示エリア260中、1番目がデータソース160Aからの結果、2番目がデータソース160Bからの結果となっており、3番目以降は、画面から見切れており、スクロール・バー等によって順次表示していくように構成されている。なお、図7(B)から、データソース160Bは「営業のモト」に、データソース160Cは「営業部共有ファイル・サーバ」として表示される。3行目および4行目は、指定したキーワードによるヒット位置前後の当該文書から抜粋された文字列が表示される。
なお、上述した横断検索システム110に含まれる各機能部および各処理は、コンピュータ装置が、コンピュータ可読な記録媒体からプログラムを読み出し、メモリ上にプログラムを展開し、CPUがプログラムを実行し、各ハードウェア資源を動作制御することによって実現することができる。上記実施形態において、横断検索システム110は、データ収集機能および検索機能の両方を備えるコンピュータ装置として構成することもできるが、図1に点線で示すように、データ収集機能を専ら担当する情報収集サーバと、データ検索機能を専ら担当する情報検索サーバとに分けて、複数のコンピュータ装置として横断検索システム110を構成することもできる。
なお、本実施形態の横断検索システム110を構成するコンピュータ装置は、概ねパーソナル・コンピュータ、ワークステーション、ミッドレンジまたはメインフレームなどの汎用コンピュータ装置として構成される。コンピュータ装置は、より具体的には、シングルコア・プロセッサまたはマルチコア・プロセッサなどのCPU、キャッシュ・メモリ、RAM、ネットワーク・インタフェース・カード、ストレージ・インタフェースを介して接続されるストレージ装置などを備え、WINDOWS(登録商標)200X、UNIX(登録商標)、LINUX(登録商標)などのオペレーティング・システム(以下、OSとして参照する。)の制御の下、データベース管理システムを実装し、上記ストレージ装置が提供する記憶領域に、各種テーブル118,120および検索用データベース122をデータベースとして実現している。
上述したデータ収集処理により、検索範囲の各データソースについて、データソース間で共通の正規化された属性値と併せて、データソース固有の正規化前の属性値も、正規化属性名に関連付けて検索用データベース122に格納され、正規化前後の属性値を指定した検索が可能とされる。したがって、上述したデータ検索処理により、ユーザは、それぞれ異なった観点で設計された複数のデータソースに対して、正規化属性値による統一的な観点で検索を行えるとともに、それぞれのデータソース固有な属性値によるきめ細やかな観点で検索を行うことが可能となる。ひいては、ユーザに対し、統一的観点によるデータソース群の検索と、データソースへの依存性の高いきめ細かな観点によるデータソース群の検索とを同一のシステム内で提供し、従来では分断された作業を統合して、データ利用の利便性を向上させることができる。
以下、第2の実施形態による横断検索システムについて説明する。図9は、第2の実施形態による横断検索システムを含んで構成されるネットワーク環境の機能ブロックを示す。なお、第2の実施形態による横断検索システムは、第1の実施形態と同様な機能を有するため、以下、同様の機能を奏する機能部には同一符番を付して参照し、以下、相違点を中心に説明する。
第2の実施形態による横断検索システム110は、図9に示すように、特定表現定義テーブル126、属性値変換テーブル128およびデータソース属性定義テーブル130を備え、類似属性正規化部116が、類似属性定義テーブル120に加えて、これら特定表現定義テーブル126、属性値変換テーブル128およびデータソース属性定義テーブル130を参照しながら検索対象データを正規化する点を除いて、第1の実施形態と同様である。また、データソース160は、第1の実施形態で参照したデータソース160A〜160Cに加えて、データソース160Dが存在する点でも相違する。
以下、類似属性正規化部116による、特定表現定義テーブル126を用いた正規化処理について、より詳細に説明する。データソース160は、第1の実施形態において上述した通り、提案書を共有するための情報源等であるが、情報は予め用意された分類のみで分類しきれない場合も多い。そして、運用上、入力者が適当な分類を新たに定義して、その分類を目立つような形で示しつつ入力するというような運用が行われる可能性がある。例えば、図2(A)に例示するように、title属性において、「〔事例あり〕」などの文字列の特定表現により、分類名を付加するという提示方法が想定される。
説明する例では、データソース160Aの運用上、title属性がフリーテキストであるが、規則として、データソース160Aが提案書を共有することとなっており、teian-type属性に入力可能な情報の分類値が「提案書」や「お知らせ」程度であるため、説明の便宜上、「提案書」以外の情報の存在は、タイトルへの「〔」および「〕」で囲って特定表現により分類を付加するという分類提示方法で補う運用とされているものとする。
第2の実施形態による類似属性正規化部116は、類似属性定義テーブル120を参照して検索対象データを正規化するとともに、特定表現定義テーブル126を参照して、上記運用上の分類提示方法に対応した正規化処理を行う。特定表現定義テーブル126は、指定属性の属性値中に特定表現が存在する場合に、それに対応付けて正規化属性値を付すためのテーブルであり、データソース固有に定義される属性名、および属性値中の特定表現の組を、正規化属性名および正規化属性値の組に対応付ける。図10(A)は、特定表現定義テーブル126のデータ構造を例示する。図10(A)に示す特定表現定義テーブル126は、データソースを特定する情報が入力されるカラムと、データソースにおける属性名が入力されるカラムと、属性値中の特定表現が入力されるカラムと、正規化属性名および正規化属性値がそれぞれ入力される各カラムとを含むレコードから構成される。
第2の実施形態による類似属性正規化部116は、データ収集部114より指定された属性について、類似属性定義テーブル120の参照後、さらに、類似属性定義テーブル120の場合と同様の動作で、データソース、属性名、属性値(文字列の配列の個別要素)をキーとして特定表現定義テーブル126を参照する。図10(A)に示す特定表現定義テーブル126では、図2(A)に示すデータソース160Aのデータは、タイトル(title属性)に文字列(〔事例あり〕)を含むため、doc_docType正規化属性として「商談事例」と、正規化前の属性として「〔事例あり〕」が付される。上記構成により、ユーザは、データソースの設計とは離れて、データソース160に格納される内容そのものに埋め込む形で属性が記述される運用が行われている場合においても、統一的観点での検索と、データソース固有の観点での検索を同一システム内で提供することが可能となる。
以下、類似属性正規化部116による、属性値変換テーブル128を用いた正規化処理についてより詳細に説明する。データソース160は、第1の実施形態において上述した通り、営業支援情報を提供するための情報源等であるが、選択式の値を持つ項目については、データベース設計上、表示される値と格納される値とを分け、表示される値はユーザにわかりやすい文字列で、格納される値は無機質な数値で格納することがしばしばある。図2(B)に示すデータソース160Bは、上述のような設計とされており、属性値が数値で格納されている。したがって、正規化前の属性値として、文字列を表現した数値(例えば7)などを格納したとしても、このままでは、ユーザの検索に役立たない可能性がある。
そこで、第2の実施形態による類似属性正規化部116は、類似属性定義テーブル120を参照して正規化するとともに、さらに、属性値変換テーブル128を参照して、上記属性値の正規化処理を行う。属性値変換テーブル128は、指定属性の属性値が無機質な数値で表現されている場合に、該無機質な数値から、人間が理解可能な意味を提示する提示属性値に変換するためのテーブルであり、データソース固有に定義される属性名、および属性値を提示属性値に対応付ける。図10(B)は、属性値変換テーブル128のデータ構造を例示する。図10(B)に示す属性値変換テーブル128は、データソースを特定する情報が入力されるカラムと、データソースにおける属性名が入力されるカラムと、属性値中の特定表現が入力されるカラムと、提示属性値が入力されるカラムとを含むレコードから構成される。
第2の実施形態による類似属性正規化部116は、データ収集部114より指定された属性について、類似属性定義テーブル120の参照後、さらに、類似属性定義テーブル120の場合と同様の動作により、データソース、属性名、属性値(文字列の配列の個別要素)をキーとして、属性値変換テーブル128を参照する。図10(B)に示す属性値変換テーブル128によれば、図2(B)に示すデータソース160Bのデータでは、属性値(information-type属性=3)については正規化属性値(事例)が、属性値(gyoushu-1属性=3)については正規化属性値(農業)が、属性値(product-type=7)については正規化属性値(人事系製品)が、それぞれ数値の替わりに格納される。上記構成により、ユーザに提示される文字列とは異なる値がデータソース160に実際に格納されている場合であっても、ユーザがデータソース160について記憶している、覚えやすい観点を指定しても、良好な結果を得ることが可能となる。
以下、類似属性正規化部116による、データソース属性定義テーブル130を用いた正規化処理についてより詳細に説明する。図11(A)は、データソース160Dが格納するデータのデータ構造を例示する。データソース160Dは、データソース160Aと同様に提案書を共有する目的で設計されているものであるが、データソース160Aと異なるデータ構造を有する。具体的には、データソース160Aに備わっていた属性のうち、teian-type属性が、データソース160Dには備わっていない。データソース160Aとデータソース160Dのように、データベースの方向性は同じであっても、特定の部分に特化してデータを提供するケースは多くあり、このような場合には、大きな観点では必要とされる属性値も、自明なため付与されず、省略されることがある。
そこで、第2の実施形態による類似属性正規化部116は、類似属性定義テーブル120を参照して正規化するとともに、さらに、データソース属性定義テーブル130を参照して、上記データソースに対し正規化属性を補足する。データソース属性定義テーブル130は、上述のように属性値の付与が省略される場合に、データソースに対して正規化属性を補足するためのテーブルであり、データソースを正規化属性名および正規化属性値へ対応付ける。図11(B)は、データソース属性定義テーブル130のデータ構造を例示する。図11(B)に示すデータソース属性定義テーブル130は、データソースを特定する情報が入力されるカラムと、正規化属性名および正規化属性値がそれぞれ入力される各カラムとを含むレコードから構成される。
第2の実施形態による類似属性正規化部116は、データ収集部114より指定された属性について、類似属性定義テーブル120の参照後、さらに、データソースをキーとして、データソース属性定義テーブル130を参照し、キーがマッチする場合は、対応する正規化属性を補足し、当該正規化属性に正規化属性値を格納する。図11(B)に示すデータソース属性定義テーブル130によれば、図11(A)に示すデータソース160Dのデータでは、doc_docType属性に対して値(提案書)が格納される。上記構成により、データソースにも、文書の中身にも手がかりとなる属性名、属性値が明確に示されておらず、データソースの利用目的自体から、暗黙のうちに属性が設定されているような場合であっても、観点が欠落しているためにシステムの対象にできないという状況を解消し、システムから統一的観点で検索することが可能となる。
以上説明したように、上述した実施形態によれば、異なる観点で定義される複数のデータソースから、データソース間で統一された観点と、各データソースへの依存性の高い細かな観点との両方の観点による検索を同一のシステムとして提供し、横断的検索のための利用と、個別のデータソースの利用との分断を回避し、ひいてはデータ利用の利便性を向上させることができる、情報検索システム、情報収集装置、情報検索装置、情報収集方法、プログラムおよび記録媒体を提供することが可能とされる。
上記機能は、アセンブラ、C、C++、C#、Java(登録商標)、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ROM、EEPROM、EPROM、フラッシュメモリ、フレキシブルディスク、CD−ROM、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、ブルーレイディスク、SDカード、MOなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。