最初に、図1乃至図3を用いて、本技術の実施の形態における概要を説明しておく。本実施の形態において検索対象となるデータベースは複数であり、各々異なる種類のデータが格納されている。データベースに格納されているデータは、一のエンティティに対して複数のデータブロックが関連付けられており、これらのデータブロックが複数のデータベースに分散して格納されている。図1(a)乃至図1(c)は、本実施の形態において検索対象となるデータベースの例である。
図1(a)は、検索対象となるデータベースの例1を説明するための図である。例1では、識別子によりエンティティと複数のデータブロックが関連付けられる。識別子は、例えば、書籍のタイトル、店舗の店名、文献の文献番号などである。この識別子が各データブロックに付与されることで、エンティティとデータブロックが関連付けられる。図1(a)では、識別子e1が付与されたデータブロックd1はエンティティE1に関連付けられ、識別子e2が付与されたデータブロックd2はエンティティE2に関連付けられ、識別子e3が付与されたデータブロックd3はエンティティE3に関連付けられている。各データブロックd1乃至d3は、その種類に応じて複数のデータベースに分散して格納されている。例えば、エンティティが書籍であれば、書誌事項が記述されたデータブロック、評価が記述されたデータブロックなどが各々異なるデータベースに格納される。なお、ここで識別子は、例えば個々を識別するシリアル番号のように、厳密な一意名としての識別子だけでなく、例えば製品名といったように、種類や分類を特定できる名称等も含まれる。
図1(b)は、検索対象となるデータベースの例2を説明するための図である。例2では、参照によりエンティティと複数のデータブロックとが関連付けられる。例えば、エンティティに関する主となるデータブロックと、付属的なデータブロックとがあり、付属的なデータブロックは主となるデータブロックへのリンクを有する。そして、主となるデータブロックと付属的なデータブロックは、複数のデータベースに分散して格納されている。典型例としては、例えば、Webアノテーションが挙げられる。Webアノテーションは、Webページに付加情報を与える技術である。たとえば、Webページに付箋(メモ書き)を電子的に与える場合、Webページが主となるデータブロックであり、Webページにリンクを有するメモ書きが付属的なデータブロックである。図1(b)では、エンティティE1についてはデータブロックd42がデータブロックd41を参照し、エンティティE2についてはデータブロックd52がデータブロックd51を参照し、エンティティE3についてはデータブロックd62がデータブロックd61を参照している。主となるデータブロックd41,d51,d61と付属的なデータブロックd42,d52,d62は、異なるデータベースに分散して格納されている。
図1(c)は、検索対象となるデータベースの例3を説明するための図である。例3は、データの分割によりエンティティと複数のデータブロックが関連付けられる。各エンティティに関するデータは、物理的には一つのデータブロックであるが、その中に複数の種類の情報が含まれている。このデータブロックは情報の種類ごとに仮想的に分離され、その分離されたパーツの各々が仮想的なデータブロックとみなされる。そして、仮想的なデータブロックは、仮想的なデータベースに分散して格納されているとみなされる。典型例としては、エンティティの紹介サイトが挙げられる。エンティティのデータブロックには、基本情報と評価情報が含まれる。基本情報は、例えば、書籍の書誌事項や、店舗の種類や店名や地図などの情報である。評価情報は、エンティティに対する評価の記述や点数などの情報である。この基本情報と評価情報が仮想的に分離され、分離されたパーツの各々が仮想的なデータブロックとみなされる。そして、基本情報のデータベースと評価情報のデータベースが仮想的にあるとみなされ、仮想的なデータブロックが仮想的なデータベースに分散して格納されているとみなされる。図1(c)では、エンティティE1に関するデータブロック中に仮想的なデータブロックd71,d72,d73が含まれており、エンティティE2に関するデータブロック中に仮想的なデータブロックd81,d82が含まれており、エンティティE3に関するデータブロック中に仮想的なデータブロックd91,d92が含まれている。なお、データブロックd71,d81,d91とデータブロックd72,d73,d82,d92は、その種類に応じて、複数の仮想的なデータベースに分散して格納されているとみなされる。
上記例1乃至例3に示されるように、各々異なる種類のデータを格納する複数のデータベースを検索対象とする場合、ユーザがデータベースごとに専用の検索クエリーを入力するとなると、利便性が低くなる。一方、複数のデータベースに共通の検索クエリーに基づいて検索することとすると、データベースのデータの種類に合致しないクエリー要素が含まれるため、検索精度が低くなる。また、検索結果はデータベースごとに出力され、ユーザにとっては煩雑である。また、ユーザが検索クエリーに合致するエンティティを求めている場合であっても、検索結果は検索クエリーに適合するデータブロックの列として与えられるため、ユーザの情報ニーズに必ずしもマッチしない。本実施の形態の技術はこのような問題を解決できるものである。
図2は、本実施の形態の検索装置100の機能ブロック図であり、図3は、検索装置100による処理の処理フローを示す図である。検索装置100は、複数のデータベースD1,D2,D3を検索可能である。データベースD1,D2,D3の各々には、異なる種類のデータが格納されている。本実施の形態では、一のエンティティに複数のデータブロックが関連付けられており、この複数のデータブロックがデータベースD1,D2,D3に分散して格納されている。データベースの例は、図1(a),図1(b),図1(c)に示した通りである。本実施の形態において、データベースは三つであるが、その数は複数であれば良く、三つに限定されるものではない。検索装置100は、抽出部1と、計算部2と、判定部3と、検索クエリー生成部4と、検索部51,52,53と、集合生成部61,62,63と、部分集合生成部7と、クエリーリスト格納部10と、クエリー格納部11と、集合格納部12と、部分集合格納部13とを有する。
以下、各部について説明する。なお、図3の各ステップは、各部に対応して実行されるため、各ステップの説明は各部に各ステップを対応付けることで行う。抽出部1は、ユーザから入力された第1の検索クエリーQ1に含まれる1または複数のクエリー要素qiを抽出する(ステップS1)機能を備える。計算部2は、抽出部1にて抽出されたクエリー要素qiの各々について、各データベースDj(D1,D2,D3)との関連度f(qi,Dj)を算出する(ステップS3)機能を備える。判定部3は、計算部2にて算出された関連度f(qi,Dj)に基づいて、クエリー要素qiの各々について各データベースDj(D1,D2,D3)との関連の有無を判定する(ステップS5)機能を備える。検索クエリー生成部4は、データベースDj(D1,D2,D3)の各々について、そのデータベースDj(D1,D2,D3)と関連有りと判定されたクエリー要素qiがある場合は、そのクエリー要素qiを含む第2の検索クエリーQ2djを生成する(ステップS7)機能を備える。検索部51,52,53は、第2の検索クエリーQ2djに基づいて、データベースD1,D2,D3のうち、第2の検索クエリーQ2djに対応するデータベースDjを検索する(ステップS9)機能を備える。検索部51はデータベースD1の検索を担当し、検索部52はデータベースD2の検索を担当し、検索部53はデータベースD3の検索を担当する。集合生成部61,62,63は、検索部51,52,53による処理において、データベースD1,D2,D3のうち二以上のデータベースの各々からデータブロックが検出されると、そのデータブロックに関連付けられるエンティティを特定して、エンティティの集合を生成する(ステップS11)機能を備える。集合生成部61は検索部51の検索結果を処理し、集合生成部62は検索部52の検索結果を処理し、集合生成部63は検索部53の検索結果を処理する。部分集合生成部7は、所定のルールに基づいて、集合生成部61,62,63により特定されたエンティティの集合から、エンティティの部分集合を生成する(ステップS13)機能を備える。
検索装置100は、以下のように使用される。ユーザは、第1の検索クエリーQ1を入力する。このとき、ユーザは、データベースD1,D2,D3に格納されるデータの種類を意識することなく、複数のデータベースD1,D2,D3に共通の検索クエリーとして第1のクエリーQ1を入力すれば良い。ユーザはデータベースD1,D2,D3ごとに検索クエリーを入力しなくてもよく、又、どのデータベースにどのような種類のキーワードが適するかを考えなくてもよい。第1の検索クエリーQ1にどのようなクエリー要素が含まれていも、後述する関連度に基づいて関連の有無が判断されるため、使用するクエリー要素が制限されることもなく、第1の検索クエリーの自由度は高い。
第1の検索クエリーQ1が入力されると、抽出部1は第1の検索クエリーQ1から1又は複数のクエリー要素qiを抽出する。計算部2は、クエリー要素qiの各々についてデータベースD1,D2,D3との関連度f(qi,Dj)を算出する。判定部3は、関連度f(qi,Dj)に基づいて、各クエリー要素qiとデータベースD1,D2,D3との関連の有無を判定する。第1の検索クエリーQ1にどのようなクエリー要素が含まれていても、その都度、関連度f(qi,Dj)が計算され、関連の有無が判定される。そして、検索クエリー生成部4は、複数のデータベースDj(D1,D2,D3)の各々について、第2の検索クエリーQ2djを生成する。第2の検索クエリーQ2djには、そのデータベースDjと関連有りと判定されたクエリー要素が含まれている。検索部51,52,53は、第2の検索クエリーQ2djに基づいて、その第2の検索クエリーQ2djに対応するデータベースDjを検索する。検索部51,52,53は、担当のデータベースDj(D1,D2,D3)に適する第2の検索クエリーQ2djに基づいて、担当のデータベースDj(D1,D2,D3)を検索することとなるため、検索精度が高くなる。集合生成部61,62,63は、検索部51,52,53により二以上のデータベースからデータブロックが検出されると、そのデータブロックに関連付けられているエンティティを特定し、エンティティの集合を生成する。そして、部分集合生成部7は、所定のルールに基づいて、エンティティの集合から部分集合を生成する。ユーザには、この部分集合に含まれるエンティティのリストが出力される。エンティティのリストは、エンティティの識別子のリストでも良いし、エンティティに関するデータへのリンクのリストでも良い。エンティティの部分集合は、所定のルールに基づいて、データベースD1,D2,D3の検索結果が統合されたものである。本実施の形態によれば、ユーザは、データベースごとに検索結果を得るのではなく、統合された検索結果を得ることができる。検索結果はエンティティの集合として与えられるため、ユーザの情報ニーズにもマッチする。
以下に、上記各部及び各ステップの一例を詳細に説明する。
図4は、抽出部1の処理の処理フローの一例を示す図であり、図3のステップS1に相当する処理である。本実施の形態において、第1の検索クエリーQ1は、自然言語テキストデータとしてユーザにより入力される。抽出部1は、第1の検索クエリーQ1を取り込み(ステップS101)、形態素解析を行い(ステップS103)、ストップワードを除去する(ステップS105)。ストップワードとは、検索に用いる語から除外する語であり、例えば機能語等である。次に、抽出部1は、チャンキングにより意味的な観点から形態素をまとめ(ステップS107)、検索の観点から語形の整形を行う(ステップS109)。整形は、例えば、活用形を終止形や語幹に変換したり、表記のゆれを考慮して標準形へ変換することが考えられる。なお、本実施の形態において、第1の検索クエリーQ1はテキスト形式の自然言語であるが、これに限られるものではない。例えば、第1の検索クエリーQ1は、音声形式であっても良く、又、単語やフレーズの列であっても良い。また、第1の検索クエリーQ1は、検索装置100の入力部(図示せず)から直接入力されても良いし、別途設けられるユーザ端末から入力され、インターネット等のネットワークを介して検索装置100に入力されても良い。
図5は、抽出部1による処理の具体例を説明する図である。第1の検索クエリーQ1として「日本橋のおいしくてそれほど高くないお寿司屋さん」が入力されると、抽出部1は、形態素解析により第1の検索クエリーQ1を形態素の列に分解する。その結果、第1の検索クエリーQ1は、「日本橋」「の」「おいしく」「て」「それほど」「高く」「ない」「お」「寿司」「屋」「さん」となる。次に、ストップワード「の」「て」「それほど」「お」「屋」「さん」が除去される。そして、チャンキングにより、「高く」「ない」がまとめられて「高くない」となり、整形により「おいしく」が「おいしい」となる。これにより、第1の検索クエリーQ1からクエリー要素「日本橋」「おいしい」「高くない」「寿司」が抽出される。
図6は、計算部2と判定部3の処理の処理フローの例1を示す図であり、図3のステップS3及びステップS5に相当する。例1は、判定部3における判定を閾値により行う例である。計算部2は、抽出されたクエリー要素からクエリー要素qiを一つ取得し(ステップS2101)、クエリー要素qiとデータベースDjとの関連度f(qi,Dj)を計算し、例えばメインメモリ等の記憶装置に格納する(ステップS2103)。ここで、データベースDjは、複数のデータベースD1,D2,D3のうちの一つのデータベースである。なお、関連度の具体的な計算方法については後述する。判定部3は関連度f(qi,Dj)の閾値判定を行う(ステップS2105)。関連度f(qi,Dj)が閾値範囲内であれば、クエリー要素qiはデータベースDjと関連有りと判断し、クエリー要素qiをデータベースDjのクエリーリストL1djに追加する(ステップS2107)。ステップS2105において、関連度f(qi,Dj)が閾値範囲外の場合、判定部3は、クエリー要素qiとデータベースDjとは関連無しと判断し、ステップS2109に進む。ステップS2109では、計算部2がクエリー要素qiについて、データベースD1,D2,D3との関連度を計算したか判断する。「No」の場合、計算部2は、処理対象を次のデータベースに設定し(ステップS2111)、ステップS2103に戻る。この処理が繰り返されることで、クエリー要素qiについて、データベースD1,D2,D3との関連度が算出され、関連の有無が判断される。計算部2は、ステップS2109にて、「Yes」と判断した場合、すべてのクエリー要素について関連度を算出したか判断する(ステップS2113)。「No」の場合、計算部2は、処理対象を次のクエリー要素に設定し(ステップS2115)、ステップS2101に戻る。この処理が繰り返されることで、クエリー要素の各々について、データベースD1,D2,D3との関連度が算出され、関連の有無が判定される。クエリーリストL1djは、データベースDjと関連付けてクエリーリスト格納部10に格納される。クエリーリストL1djには、そのデータベースDjとの関連度が閾値範囲内であるクエリー要素、すなわち、そのデータベースDjと関連有りと判断されたクエリー要素の列が格納される。なお、判定における閾値は上限も設定することが好ましい。出現頻度が高すぎるクエリー要素はデータの種類に関係無く使用される要素である可能性が高く、特定のデータベースと関連が高いと判断することは不適切なためである。
図7は計算部2と判定部3の処理フローの例2を示す図であり、図3のステップS3及びステップS5に相当する。例2は、判定部3における判定が、関連度の最高値に基づいて行われる例である。計算部2は、抽出されたクエリー要素からクエリー要素qiを一つ取得し(ステップS2201)、クエリー要素qiとデータベースDjとの関連度f(qi,Dj)を計算し、例えばメインメモリ等の記憶装置に格納する(ステップS2203)。計算部2は、クエリー要素qiについて、データベースD1,D2,D3との関連度を算出したか判断する(ステップS2205)。「No」の場合、計算部2は、処理対象を次のデータベースに設定し(ステップS2207)、ステップS2203に戻る。この処理が繰り返されることで、クエリー要素qiについて、データベースD1,D2,D3との関連度f(qi,Dj)が算出される。判定部3は、ステップS2205にて「Yes」と判断した場合、データベースD1,D2,D3の各々について算出された関連度を比較し、最も高い関連度を示すデータベースDjを特定する。そして、判定部3は、クエリー要素qiはデータベースDjと関連があると判断し、データベースDjのクエリーリストL1djにクエリー要素qiを追加する(ステップS2209)。計算部2は、すべてのクエリー要素について関連度を算出したか判断する(ステップS2211)。「No」の場合、計算部2は、処理対象を次のクエリー要素に設定し(ステップS2213)、ステップS2201に戻る。クエリーリストは、クエリーリスト格納部10に格納される。例2の処理の結果、データベースDjのクエリーリストL1djには、複数のデータベースD1,D2,D3のうち、データベースDjとの関連度が最高値であったクエリー要素、すなわち、データベースDjと関連有りと判断されたクエリー要素の列が格納される。
図8(a)乃至(d)は、計算部2と判定部3の処理の具体例を説明する図である。クエリー要素として「日本橋」「おいしい」「高くない」「寿司」が抽出されると(図8(a))、計算部2はデータベースD1,D2,D3の各々について、各クエリー要素「日本橋」「おいしい」「高くない」「寿司」との関連度を計算する(図8(b))。判定部3は、算出された関連度に基づいて関連の有無を判定する(図8(c))。上記例1に示す処理においては、閾値に基づいて判定が行われる。例えば、閾値が10/100から50/100の範囲内である場合は、以下の通りとなる。データベースD1については、「日本橋」(関連度10/100)と「寿司」(関連度20/100)が関連有りと判断され、データベースD1の第1のクエリーリストL1d1に追加される(図8(d))。データベースD2については、「おいしい」(関連度30/100)と「高くない」(関連度20/100)が関連有りと判断され、データベースD2のクエリーリストL1d2に追加される(図8(d))。データベースD3については、閾値範囲内のクエリー要素がないので、クエリーリストL1d3は作成されない。なお、図8(b)に示す関連度の値は、説明の便宜のために設定したものであり、実際の値とは異なる。
また、上記例2に示す処理においては、最も高い関連度に基づいて判定が行われる。判定部3は、クエリー要素「日本橋」について、各データベースD1,D2,D3との関連度を比較し、関連度が最高値であるデータベースD1と関連有りと判断する(図8(c))。データベースD1の第1のクエリーリストL1d1には「日本橋」が追加される。同様に、「おいしい」「高くない」「寿司」についても比較が行われ、関連度が最高値を示すデータベースDjの第1のクエリーリストL1djにクエリー要素が追加される(図8(d))。この結果、クエリーリストL1d1にはデータベースD1と関連有りと判断されたクエリー要素「日本橋」「寿司」が格納され、クエリーリストL1d2にはデータベースD2と関連有りと判断されたクエリー要素「おいしい」「高くない」が格納される。
図9は、関連度を計算する処理の処理フローの例1を示す図であり、図10は、その例2を示す図である。この例1及び例2は、図6に示される関連度計算及び判定(例1)の処理フローのステップS2103、及び、図7に示される関連度計算及び判定(例2)の処理フローのステップS2203に相当する処理である。例1は、出現頻度に基づいて関連度を算出する例である。特定のクエリー要素が特定のデータベースに頻繁に出現する場合、そのクエリー要素とデータベースとは関連を有する可能性が高い。そこで、この出現頻度に基づいて関連度を計算することにより、関連度がより適切な値となる。計算部2は、クエリー要素qiを一つ取得し(ステップ311)、クエリー要素qiのデータベースDjにおける出現頻度Rdjをカウントする(ステップ313)。次に、計算部2は、データベースDjのデータ要素数に対する出現頻度Rdjの割合に基づいて、関連度f(qi,Dj)を算出し、例えばメインメモリ等の記憶装置に格納する(ステップS315)。関連度f(qi,Dj)は出現頻度が高いほど高くなる。ここで、データベースDjのデータ要素とは、クエリー要素に対応する要素である。データ要素は、例えば、各データベースD1,D2,D3に格納されるデータについて、抽出部1による同様のクエリー要素抽出処理を行うことで抽出でき、データ要素数は、各データベースから抽出されたデータ要素の数をカウントすることにより得られる。これらの処理は予め行っておき、データベースD1,D2,D3の各々について、データ要素数を格納部に格納しておくことが好ましい。なお、関連度は、必ずしもデータ要素数に対する割合を用いなくても良く、例えば、出現頻度Rdjをそのまま用いて算出されても良い。
図10に示す例2は、カテゴリを用いて関連度を計算する例である。例えば、データに店舗の所在地が記述されている場合、具体的な地名(「日本橋」「東京」等)に基づいて関連度が判断されると、データベースにその具体的な地名が出現しない場合は関連度が低いと誤判断される。そこで、例2は、クエリー要素やデータ要素をカテゴリに置き換えて関連度を計算する。検索システム100には、カテゴリと、そのカテゴリに含まれるカテゴリ要素とを対応付けるルールが予め規定されている。このルールは、例えば、図11に示されるように、カテゴリテーブルの形式で検索システム100の格納部(図示せず)に格納されている。計算部2は、クエリー要素qiを取得すると(ステップS321)、カテゴリテーブルを参照し、クエリー要素qiをカテゴリ要素として含むカテゴリciを特定する(ステップS323)。次に、計算部2は、カテゴリテーブルからカテゴリciに含まれるカテゴリ要素を取得し、そのカテゴリ要素がデータベースDjに出現する出現頻度Rdjをカウントする(ステップS325)。次に、計算部2は、データベースDjのデータ要素数に対する出現頻度Rdjの割合に基づいて関連度f(ci、Dj)を算出し、例えばメインメモリ等の記憶装置に格納する(ステップS327)。これにより、カテゴリに基づいて関連度が算出され、関連度が更に適切な値となる。ここで、関連度は、必ずしもデータ要素数に対する割合を用いなくても良く、例えば、出現頻度Rdjをそのまま用いて算出されても良い。
なお、データベースDjの各データ要素のカテゴリは、図11に示したように、カテゴリテーブルに基づいて予め特定され、格納部(図示せず)に格納されていることが好ましい。また、カテゴリに関するルールは、一部一致によりカテゴリが特定されるものでも良い。例えば、カテゴリテーブルには「橋」「町」「川」などが地名接尾辞として規定されており、この地名接尾辞を有する要素については、カテゴリを「地名」と判断する。また、カテゴリとしては、表記のゆれや同義語だけをまとめて一つのカテゴリとした粒度の細かいもの、或いは、「地名」「料理種類」「味」「値頃感」などのような意味的なカテゴリ、或いは、「名詞」「形容詞」などのような品詞レベルの粒度の粗いカテゴリでも良い。また、関連度は、クエリー要素とデータベースとがどの程度の関連性を有するかの指標となる値であれば良く、上記例1及び例2に限られない。例えば、n文字の文字列(ngram)を単位として、その文字列の出現頻度に基づき、関連度を算出しても良い。
図12は、検索クエリー生成部4による処理の処理フローの一例を示す図であり、図3のステップ7に相当する。クエリー生成部4は、クエリーリスト格納部10に格納されているデータベースDjのクエリーリストL1djを参照する(ステップS701)。クエリーリストL1djには、データベースDjに関連有りと判断された1又は複数のクエリー要素が格納されている。クエリーリストL1djに含まれるクエリー要素は一つである場合もあるし、複数の場合もある。クエリー生成部4は、クエリーリストL1djに格納されている1又は複数のクエリー要素を取得し、所定のルールに基づいて、そのクエリー要素を含む第2の検索クエリーQ2djを生成する(ステップS703)。次に、検索クエリー生成部4は、第2の検索クエリーQ2djをデータベースDjと関連付けてクエリー格納部11に格納する(ステップS705)。検索クエリー生成部4は、データベースD1,D2,D3について第2の検索クエリーを生成したか判断する(ステップS707)。「No」の場合、検索クエリー生成部4は、処理対象を次のデータベースのクエリーリストに設定して(ステップS709)、ステップS701に戻る。「Yes」の場合は終了する。クエリー格納部11には、データベースD1,D2,D3に関連付けて第2の検索クエリーQ2d1,Q2d2,Q2d3が格納される。これにより、データベースD1,D2,D3の各々について、専用の第2の検索クエリーQ2d1,Q2d2,Q2d3が生成される。データベースDjの第2の検索クエリーQ2djには、データベースDjに関連有りと判断されたクエリー要素が含まれる。ただし、データベースDjについて、関連有りと判断されたクエリー要素がない場合は、そのデータベースDjに対応する第2の検索クエリーQ2djは生成されない。
図13(a)及び(b)は、検索クエリー生成部4による処理の具体例を説明する図である。クエリー生成部4は、クエリーリスト格納部10に格納されているデータベースD1のクエリーリストL1d1を参照し、所定のルールに基づいて、クエリーリストL1d1のクエリー要素「日本橋」「寿司」を含む第2の検索クエリーQ2d1を生成する(図13(a))。第2の検索クエリーQ2d1には、データベースD1に関連有りと判断されたクエリー要素「日本橋」「寿司」が含まれる。同様に、検索クエリー生成部4は、データベースD2のクエリーリストL1d2を参照し、クエリー要素「おいしい」「高くない」を含む第2の検索クエリーQ2d2を生成する(図13(b))。第2の検索クエリーQ2d2には、データベースD2に関連有りと判断されたクエリー要素「おいしい」「高くない」が含まれる。データベースD3についてはクエリーリストL1d3がないため、第2の検索クエリーQ2d3は生成されない。第2の検索クエリーQ2d1,Q2d2はデータベースD1,D2と関連付けられてクエリー格納部11に格納される。なお、図13の例では、所定のルールは、クエリー要素を「or」で結ぶとしているが、これに限られるものではない。
図14Aは、検索部51,52,53による処理の処理フローの例を示す図であり、図3のステップS9の処理に相当する。検索部51,52,53は、クエリー格納部11に格納されている第2のクエリーQ2djを取得する(ステップS5101)。そして、検索部51,52,53は、担当のデータベースDjに専用の第2の検索クエリーQ2djを取得した場合、第2の検索クエリーQ2djに基づいて担当のデータベースDjを検索する(ステップS5103)。データベースDjからは第2の検索クエリーQ2djに適合するデータブロックが検出される。検出されるデータブロックは一つの場合もあるし、複数の場合もある。
ユーザから入力された第1の検索クエリーQ1は、データベースD1,D2,D3に共通の検索クエリーであり、データベースによっては関連のないクエリー要素が含まれている。このため、第1の検索クエリーQ1に基づいてデータベースD1,D2,D3を検索すると、検索精度が低くなる。これに対し、第2の検索クエリーQ2djは、データベースDjに専用の検索クエリーであり、データベースDjに関連有りと判断されたクエリー要素のみが含まれるため、検索精度が高くなる。
なお、検索部51,52,53における検索方法は、任意であるが、例えば、Boolean検索や拡張Boolean検索が挙げられる。また、クエリー要素に応じて検索方法が選択されても良い。この場合、クエリー要素と検索方法との対応付けを規定したテーブルが格納部に格納されている。検索部51,52,53は、そのテーブルを参照し、第2の検索クエリーQ2djに含まれるクエリー要素に対応する検索方法を特定し、その検索方法にてデータベースDjを検索する。これにより、クエリー要素の特性に適する検索方法にて検索が行われ、検索精度を更に高めることができる。
また、クエリー要素のカテゴリに応じて検索方法が選択されても良い。図14Bは、カテゴリに応じて検索方法を選択する処理の処理フローを示す図である。検索部51,52,53は、第2の検索クエリーQ2djからクエリー要素を取得し、カテゴリとカテゴリに含まれる複数のカテゴリ要素とを対応付けるカテゴリルールに基づいて、そのクエリー要素をカテゴリ要素として含むカテゴリを特定する(ステップS5201)。次に、検索部51,52,53は、カテゴリと検索方法とを対応付ける検索ルールに基づいて、特定されたカテゴリに対応する検索方法を特定する(ステップS5203)。そして、検索部51,52,53は、そのクエリー要素についてはその検索方法にてデータベースを検索する。第2の検索クエリーQ2djに複数のクエリー要素が含まれる場合は、各々のクエリー要素についてカテゴリを特定し、クエリー要素ごとにカテゴリに応じた検索方法にて検索を行う。なお、カテゴリルールは、上述したカテゴリテーブルを用いても良い。また、検索ルールは、カテゴリと検索方法とを対応付けるテーブルとして格納部(図示せず)に格納されていても良い。これにより、クエリー要素のカテゴリの特性に適する検索方法にて検索が行われ、検索精度を更に高めることができる。
更に、検索方法は、データベースに応じて選択されても良い。この場合、データベースD1,D2,D3と検索方法を対応付けたテーブルが格納部(図示せず)に格納されている。検索部51,52,53は、このテーブルを参照し、担当のデータベースDjに対応する検索方法を特定し、その検索方法にて担当のデータベースDjを検索する。これにより、データベースの特性に適する検索方法にて検索が行われ、検索精度を更に高めることができる。
図15は集合生成部61,62,63による処理の処理フローの例1を示す図であり、図17はその例2を示す図である。例1及び例2は、図3のステップS11に相当する。例1では、検索部51,52,53による検索の結果、担当のデータベースDjに第2の検索クエリーQ2djに適合するデータブロックが検出されると、集合生成部61,62,63は、検出されたデータブロックに関連付けられるエンティティExを特定する(ステップS1111)。エンティティは一つである場合もあれば、複数の場合もある。集合生成部61,62,63は、エンティティExが特定されると、そのエンティティをデータベースDjのエンティティリストL2djに追加する(ステップS1113)。エンティティリストL2djには、データベースDjから検出されたエンティティExの列が含まれる。集合生成部61,62,63は、エンティティリストL2djをデータベースDjと関連付けて集合格納部12に格納する。集合格納部12に格納されたエンティティリストL2djは、データベースDjから検出されたエンティティの集合を構成する。すなわち、集合格納部12には、データベースDjごとに、そのデータベースから検出されたエンティティの集合が格納される。
図16は集合生成部61,62,63の処理フローの例1の具体例を説明する図である。枠A内は集合生成部61の処理の説明であり、枠B内は集合生成部62の処理の説明であり、枠C内は集合生成部63の処理の説明である。枠A内において、検索部51は、検索クエリーQ2d1を取得し、データベースD1を検索する。その結果、データブロックd1、d2、d3、d4が検出されると、集合生成部61は、データブロックd1、d2、d3、d4に関連付けられるエンティティE1、E2,E3,E4を特定し、エンティティリストL2d1に追加する。同様に、枠B内において、検索部52がデータベースD2からデータブロックd5,d6,d7を検出すると、集合生成部62は、これらに関連付けられるエンティティE1,E3,E5をエンティティリストL2d2に追加する。データベースD3に専用の第2の検索クエリーQ2d3は生成されていないため、検索部53及び集合生成部63の処理は行われない。エンティティリストL2d1は、データベースD1から検出されたエンティティの集合であり、エンティティリストL2d1はデータベースD2から検出されたエンティティの集合である。
図17は集合生成部61,62,63による処理フローの例2を示す図である。検索部51,52,53により、データベースDjから第2の検索クエリーQ2djに適合するデータブロックが検出されると、集合生成部61,62,63は、検出されたデータブロックに関連付けられるエンティティExを特定する(ステップS1121)。次に、集合生成部61,62,63は、検出されたデータブロックの各々について第1の評価値Vdを算出する(ステップS1123)。第1の評価値Vdは、データブロックdが第2の検索クエリーQ2djに合致する程度を表す値であれば良い。第2の検索クエリーQ2djに対するデータブロックdの合致度が高いほど、第1の評価値Vdは高くなる。第1の評価値Vdの具体的な算出方法については後述する。集合生成部61,62,63は、エンティティExと第1の評価値Vdとを関連付けてエンティティリストL3djに追加する(ステップS1125)。エンティティリストL3djは、データベースDjと関連付けて集合格納部12に格納される。
図18は、集合生成部61,62,63の上記例2の具体例を説明する図である。例1と同様に、集合生成部61は、データブロックd1、d2、d3、d4に関連付けられるエンティティE1、E2,E3,E4を特定し、データベースD1のエンティティリストL3d1に追加する。また、集合生成部61は、検索部51により検出されたデータブロックd1、d2、d3、d4の各々について第1の評価値Vdを算出し、エンティティE1、E2,E3,E4と関連付けてエンティティリストL3d1に追加する。集合生成部62も同様の処理を行い、エンティティと第1の評価値VdをデータベースD2のエンティティリストL3d2に追加する。エンティティリストL3d1は、データベースD1の検索の結果として検出されたエンティティと第1の評価値Vdとの組みの列を含む。エンティティリストL3d2は、データベースD2の検索の結果として検出されたエンティティと第1の評価値Vdの組みの列を含む。なお、図18に示す第1の評価値Vdの値は、説明の便宜のために設定したものであり、実際の値とは異なる。
ここで、第1の評価値は次のように算出される。検索装置100の格納部(図示せず)には、第1の評価値Vdの算出方法を規定した評価値ルールが格納されている。集合生成部61,62,63は、格納部(図示せず)に格納される評価値ルールを参照し、評価値ルールに基づいて第1の評価値Vdを算出する。第2の検索クエリーQ2djに複数のクエリー要素が含まれる場合は、複数のクエリー要素の各々について評価値を算出し、これらの評価値の総和又は平均値等を算出し、データブロックの第1の評価値Vdとしても良い。第1の評価値Vdの算出方法の例としては、次のものが挙げられる。第1の例として、第2の検索クエリーQ2djのクエリー要素とデータブロックのデータ要素との関連性に基づいて算出するものが挙げられる。関連性を表す値としては、例えば、類似度や関連度や近似度が挙げられる。例えば、クエリー要素が地名属性の場合、地名が完全一致したときは評価値1、隣町の関係を有するときは評価値0.8とする。関連性を表す値の算出方法は、予め検索装置100の格納部(図示せず)に算出ルールとして格納されている。集合生成部61,62,63は、クエリー要素に応じた算出ルールを取得し、その算出ルールに基づいて類似度や関連度や近似度などを算出し、例えばメインメモリ等の記憶装置に格納する。例えば、地名の場合は、図19に示されるような地域名と各地域の位置関係を示すデータが格納部(図示せず)格納されている。集合生成部61,62,63は、そのデータを参照し、位置関係に基づいて第1の評価値Vdを算出する。
また、第1の評価値Vdの算出方法は、オントロジー間の距離を用いるものであっても良い。例えば、集合生成部61,62,63は、クエリー要素が「寿司」の場合、日本料理として共通する「天ぷら」は距離が近いと判断し、フランス料理は距離が遠いと判断し、その距離に応じた値を第1の評価値Vdとする。また第1の評価値の他の算出方法としては、クエリー要素の出現頻度に基づくものが挙げられる。第2の検索クエリーQ2djに含まれるクエリー要素の出現頻度が高いデータブロックは、第2の検索クエリーQ2djに対する合致度が高い。そこで、集合生成部61,62,63は、検出されたデータブロックについて、第2の検索クエリーQ2djに含まれるクエリー要素の出現頻度をカウントし、出現頻度に基づいて第1の評価値Vdを算出する。また、第1の評価値Vdの他の算出方法としては、集合生成部61,62,63は、シソーラス等の辞書データを参照し、検出されたデータブロックについて、クエリー要素と一定の関係にある語(同義語、反意語、類義語など)の出現頻度をカウントし、その出現頻度に基づいて第1の評価値Vdを算出しても良い。出現頻度が高いほど、第1の評価値Vdは高くなる。
図20は、部分集合生成部7による処理の処理フローの例1を示す図であり、図22と図23はその例2を示す図である。例1及び例2は、図3のステップS13に相当する処理である。例1は集合生成部61,62,63の処理を処理フローの例1(図15)としたときの後続処理であり、例2は集合生成部61,62,63の処理を処理フローの例2(図17)としたときの後続処理である。
図20に示される例1において、部分集合生成部7は、集合格納部12からデータベースDjのエンティティリストL2djを取得する(ステップ13101)。次に、部分集合生成部7は、エンティティリストL2djからエンティティExを取得し(ステップS13103)、エンティティExの評価リストL4exにデータベースDjを追加する(ステップS13105)。エンティティは一つの場合もあれば、複数の場合もある。部分集合生成部7は、エンティティリストL2djに含まれるすべてのエンティティEを処理したか判断する(ステップS13107)。「No」の場合、部分集合生成部7は、処理対象を次のエンティティに設定し(ステップS13109)、ステップS13103に戻る。この処理を繰り返すことで、エンティティリストL2djに含まれるすべてのエンティティExについて、対応する評価リストL4exにデータベースDjが追加される。ステップS13107において「Yes」と判断された場合、部分集合生成部7は、すべてのエンティティリストについて処理したか判断する(ステップS13111)。「No」の場合、部分集合生成部7は、処理対象を次のエンティティリストに設定し(ステップS13113)、ステップS13101に戻る。これにより、エンティティの各々について、評価リストが生成される。生成された評価リストは、例えばメインメモリ等の記憶装置に格納される。エンティティExの評価リストL4exには、そのエンティティExが検出されたデータベースの列が設けられる。部分集合生成部7は、生成された各エンティティの評価リストを参照し、所定のルールに基づいて、エンティティを抽出し、抽出したエンティティのリストL5を部分集合格納部13に格納する(ステップS13115)。部分集合格納部13に格納されたリストL5はエンティティの部分集合を構成する。
エンティティを抽出するときの所定のルールの例としては、次のものが挙げられる。検索部51,52,53の検索において、多くのデータベースで検出されたエンティティは、第1の検索クエリーQ1に適合するエンティティである可能性が高い。そこで、例えば、部分集合生成部7は、エンティティExの評価リストL4exに含まれるデータベースの数が閾値以上の場合、エンティティExを抽出するようにしても良い。また、別の例では、部分集合生成部7は、集合生成部61,62,63で生成されたエンティティリストを一つの集合とみなし、その和集合又は積集合を生成することで、部分集合を生成しても良い。
図21(a)乃至(c)は、部分集合生成部7による処理の処理フローの例1について具体例を説明する図である。図21(a)に示すように、部分集合生成部7は、エンティティリストL2d1からエンティティE1を取得し、エンティティE1の評価リストL4e1にデータベースD1を追加する。同様に、部分集合生成部7は、エンティティリストL2d1からエンティティE2,E3,E4を取得し、評価リストL4e2,L4e3,L4e4にデータベースD1を追加する。また、図21(b)に示すように、部分集合生成部7は、エンティティリストL2d2からエンティティE1,E3,E5を取得し、エンティティの評価リストL4e1,L4e3,L4e5に追加する。評価リストL4e1乃至L4e5は、例えばメインメモリ等の記憶装置に格納される。部分集合生成部7は、所定のルールに基づいてエンティティE1,E2,E3,E4,E5からエンティティを抽出する。本具体例においては、エンティティExの評価リストL4exに二以上のデータベースが含まれる場合、そのエンティティExが抽出される。図21(c)に示すように、部分集合生成部7は、評価リストに二以上のデータベースが含まれるエンティティE1,E3を抽出し、リストL5に追加する。リストL5はエンティティの部分集合である。
図22及び図23に示される例2は、集合生成部61,62,63の処理を処理フローの例2(図17)とした場合の後続処理である。図20に示される例1と異なる点は、次の点である。なお、例1と共通する点については説明を省略する。部分集合生成部7は、ステップS13203において、エンティティリストL3djからエンティティExと第1の評価値Vdを取得し、ステップ13205において、エンティティExの評価リストL4exに第1の評価値Vdを追加する。評価リストL4exは、エンティティと関連付けられて、例えばメインメモリ等の記憶装置に格納される。例1において、評価リストL4exにはデータベースDjが追加されたが、本例においては、第1の評価値Vdが追加される。図23に示されるように、部分集合生成部7は、エンティティExの評価リストL4exに含まれる第1の評価値Vdに基づいて、エンティティExの総合評価値Vxを算出する(ステップS13215)。総合評価値Vxは、エンティティExと関連付けられて、例えばメインメモリ等の記憶装置に格納される。総合評価値Vxは、エンティティExの第1のクエリーQ1に対する合致度を表しており、合致度が高いほど総合評価値Vxは高くなる。エンティティExの評価値リストL4exに複数の第1の評価値Vdが格納されている場合は、第1の評価値Vdの総和又は平均値等を総合評価値としても良い。部分集合生成部7は、すべてのエンティティの総合評価値を算出したかを判断する(ステップS13217)。「No」の場合、部分集合生成部7は、処理対象を次のエンティティに設定し(ステップS13219)、ステップS13215に戻る。この処理を繰り返すことにより、すべてのエンティティについて総合評価値が算出される。ステップS13217にて「Yes」と判断した場合、部分集合生成部7は、各エンティティの総合評価値を参照し、所定のルールに基づいて、エンティティを抽出する。抽出されたエンティティのリストL5は部分集合格納部13に格納される(ステップS13221)。ここで、所定のルールとしては、例えば、総合評価値が閾値以上であるエンティティを抽出するものが挙げられる。部分集合格納部13に格納されたリストL5はエンティティの部分集合である。
図24(a)乃至(c)は、上記例2の具体例を説明する図である。図24(a)に示されるように、部分集合生成部7は、エンティティリストL3d1から各エンティティE1乃至E4の第1の評価値Vdを取得し、各エンティティの評価リストL4e1乃至L4e4に追加する。また、図24(b)に示されるように、部分集合生成部7は、エンティティリストL3d2から各エンティティE1,E3,E5の第1の評価値Vdを取得し、各エンティティの評価リストL4e1,L4e3,L4e5に追加する。評価リストは、エンティティと関連付けられて、例えばメインメモリ等の記憶装置に格納される。部分集合生成部7は、評価リストL4exの各々について第1の評価値Vdの総和を算出し、各エンティティE1乃至E5の総合評価値V1乃至V5とする。総合評価値は、エンティティと関連付けられて、例えばメインメモリ等の記憶装置に格納される。図24(c)に示されるように、部分集合生成部7は、所定のルールに基づいて、エンティティを抽出し、リストL5に追加する。リストL5は部分集合格納部13に格納される。ここでは、総合評価値が閾値以上のエンティティE1とエンティティE3が抽出される。リストL5は、エンティティの部分集合である。
生成されたエンティティの部分集合は、モニターやプリンターなどの出力装置に出力され、ユーザに提供される。これにより、ユーザは、第1の検索クエリーQ1の検索結果として、エンティティの部分集合を得ることができる。エンティティの部分集合は、エンティティのリストとして提供されても良いし、エンティティに関連付けられるデータブロックへのリンクのリストとして提供されても良い。本実施の形態では、データベースごとに検索結果が出力されるのではなく、各データベースの検索結果が統合されて出力される。出力されるエンティティは、総合評価値に基づいて第1の検索クエリーQ1との合致度が高いと判断されたものである。したがって、ユーザは、情報ニーズに近いエンティティを求めることが可能となる。
また、本技術の実施の形態の他の例として検索装置200が挙げられる。図25は、検索装置200を説明する機能ブロック図である。図25において、検索装置100と同一の要素は、同一の符号を付することで説明を省略する。検索装置200は、検索装置100における集合生成部61,62,63、集合格納部12、部分集合生成部7、部分集合格納部13を備えないものである。すなわち、検索装置200は、検索装置100の検索部51,52,53による処理までを行う。そして、検索結果として、検出されたデータブロックのリストや、検出されたデータブロックへのリンクのリストが出力される。検索装置100はデータブロックに関連付けられるエンティティを検索するものであるが、検索装置200はデータブロック自体を検索したいときに有効である。
また、本技術の実施の形態の他の例として検索装置300が挙げられる。図26は、検索装置300を説明する機能ブロック図である。図26において、検索装置100と同一の要素は、同一の符号を付することで説明を省略する。検索装置300は、検索装置100における部分集合生成部7、部分集合格納部13を備えないものである。すなわち、検索装置300は、集合生成部61,62,63による処理までを行う。そして、検索結果として、集合格納部12に格納されているエンティティリストが出力されたり、エンティティリストに含まれるエンティティへのリンクが出力されたりする。エンティティリストは、データベースごとに生成されるため、検索結果はデータベースごとに出力される。検索装置100は、各データベースの検索結果を統合してエンティティの部分集合を出力するものであるが、検索装置300は、データベースごとに検索結果を分けて得たい場合に有効である。
以上本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、図2,図25,図26の機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成と一致しない。また、処理フローについても、処理結果が変わらない限り、ステップの順番を入れ替えたり、並列に実行しても良い場合もある。
なお、上で述べた検索装置100,200,300は、コンピュータ装置であって、図27に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
本実施の形態に係る検索方法は、(A)ユーザから入力された第1の検索クエリーに含まれる1又は複数のクエリー要素を抽出し、(B)クエリー要素ごとに、各々異なる種類のデータを格納する複数のデータベースとの関連度を算出し、(C)関連度に基づいて、クエリー要素ごとに複数のデータベースの各々との関連の有無を判定し、(D)複数のデータベースの各々について、当該データベースと関連有りと判定されたクエリー要素がある場合は、当該クエリー要素を含む第2の検索クエリーを生成し、(E)第2の検索クエリーに基づいて、複数のデータベースのうち、当該第2の検索クエリーに対応するデータベースを検索する処理を含む。なお、ここで、複数のデータベースとは、図1(a)や図1(b)に示されるように、物理的に分離されたデータベースでも良いし、図1(c)に示されるように、物理的には同一であり仮想的に分離されたデータベースであっても良い。
本検索方法によれば、ユーザは複数のデータベースに共通の検索クエリーとして第1の検索クエリーを入力すると、データベースの各々について、そのデータベースに専用の第2の検索クエリーが生成される。第2の検索クエリーは、担当のデータベースに関連有りと判断されたクエリー要素が含まれている。したがって、ユーザは、データベースごとに検索クエリーを入力したり、データベースのデータの種類に適する検索クエリーを考えたりしなくてもよいため、利便性が高くなる。第1の検索クエリーは複数のデータベースに共通のものであるが、これにより検索精度が落ちることはない。ユーザは、各データベースに専用の検索クエリーを入力しなくても、精度の高い検索結果を得ることができるようになる。検索クエリーにどのようなクエリー要素が含まれていても、クエリー要素ごとに関連度が判断され、各データベースとの関連の有無が判定されるため、第1の検索クエリーの自由度も高い。
また、一のエンティティに対して関連付けられた複数のデータブロックが、前記複数のデータベースに分散して格納されている場合がある。この場合、上で述べた検索する処理において、(E1)複数のデータベースのうち二以上のデータベースの各々からデータブロックが検出されると、当該データブロックに関連付けられているエンティティを特定して、当該エンティティの集合を生成し、(E2)エンティティの集合から、所定のルールに基づいて、当該エンティティの部分集合を生成する処理を実行する場合もある。これによって、二以上のデータベースの各々からデータブロックが検出されても、所定のルールに基づいて、エンティティの部分集合とすることで、統合された検索結果を得ることができるようになる。検索結果はエンティティのリストとなるため、ユーザは情報ニーズに適合した検索結果を得ることができる。ここで、所定のルールは、二以上のデータベースから得られたエンティティの集合を統合して一つの集合にするものであれば良い。例えば、各データベースから得られるエンティティの集合の和集合又は積集合としても良い。また、エンティティの各々について、第1の検索クエリーに対する適合度を示す総合評価値を算出し、総合評価値が閾値以上のエンティティのみを抽出し、部分集合としても良い。なお、ここで、データブロックとは、図1(a)や図1(b)に示されるように、物理的に分離されたものでも良いし、図1(c)に示されるように、物理的には同一であって仮想的に分離されたものでも良い。
さらに、上で述べた関連度を算出する処理において、クエリー要素ごとに、複数のデータベースの各々における当該クエリー要素の出現頻度をカウントし、当該出現頻度に基づいて、当該クエリー要素とデータベースの各々との関連度を算出するようにしても良い。特定のクエリー要素が特定のデータベースに頻繁に出現する場合、そのクエリー要素とデータベースとは関連を有する可能性が高い。このようにすれば、関連度がより適切な値となる。
さらに、上で述べた関連度を算出する処理が、(B1)カテゴリと当該カテゴリに含まれる複数のカテゴリ要素とを対応付けるカテゴリルールに基づいて、クエリー要素をカテゴリ要素として含むカテゴリを特定し、(B2)カテゴリルールに基づいて、特定されたカテゴリに含まれる複数のカテゴリ要素を取得し、(B3)複数のデータベースの各々について、取得した複数のカテゴリ要素の出現頻度をカウントし、(B4)出現頻度に基づいて、クエリー要素と複数のデータベースの各々との関連度を算出する処理を含むようにしても良い。例えば、データに店舗の所在地が記述されている場合、具体的な地名(「日本橋」「東京」等)に基づいて関連度が判断されると、データベースにその具体的な地名が出現しない場合は関連度が低いと誤って判断される。このようにすれば、カテゴリに基づいて関連度が算出され、関連度は更に適切な値となる。
さらに、上で述べた検索する処理が、(E3)カテゴリと当該カテゴリに含まれる複数のカテゴリ要素とを対応付けるカテゴリルールに基づいて、クエリー要素をカテゴリ要素として含むカテゴリを特定し、(E4)カテゴリと検索方法とを対応付ける検索ルールに基づいて、特定されたカテゴリに対応する検索方法を特定し、(E5)特定された検索方法に基づいてクエリー要素を含む第2の検索クエリーを生成する処理を含むようにしても良い。このようにすれば、カテゴリに応じた検索方法により検索が行われ、検索の精度が更に高くなる。
さらに、上で述べたエンティティの集合を生成する処理が、検索する処理にて検出されたデータブロックごとに、所定のルールに基づいて、第2の検索クエリーとの合致度を示す第1の評価値を算出する処理を含むようにしても良い。その際、上で述べたエンティティの部分集合を生成する処理が、エンティティごとに、当該エンティティに関連付けられたデータブロックの第1の評価値に基づいて、当該エンティティの評価を示す総合評価値を算出し、総合評価値に基づいて、エンティティの集合からエンティティの部分集合を生成する処理を含むようにしても良い。このようにすれば、第1の検索クエリーとの合致度が高いデータブロックの第1の評価値が高くなる。そして、データブロックの第1の評価値に基づいて、そのデータブロックに関連付けられるエンティティの総合評価値が算出される。この総合評価値は、エンティティと第1の検索クエリーとの合致度が高いほど高くなる。部分集合には第1の検索クエリーと合致度が高いエンティティが含まれることとなり、ユーザは情報ニーズに適合した検索結果を得ることができる。
なお、当該プログラムは、例えばフレキシブル・ディスク、CD−ROMなどの光ディスク、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ユーザから入力された第1の検索クエリーに含まれる1又は複数のクエリー要素を抽出し、
前記クエリー要素ごとに、各々異なる種類のデータを格納する複数のデータベースとの関連度を算出し、
前記関連度に基づいて、前記クエリー要素ごとに前記複数のデータベースの各々との関連の有無を判定し、
前記複数のデータベースの各々について、当該データベースと関連有りと判定されたクエリー要素がある場合は、当該クエリー要素を含む第2の検索クエリーを生成し
前記第2の検索クエリーに基づいて、前記複数のデータベースのうち、当該第2の検索クエリーに対応するデータベースを検索する
処理をコンピュータに実行させるための検索プログラム。
(付記2)
一のエンティティに対して関連付けられた複数のデータブロックが、前記複数のデータベースに分散して格納されており、
前記検索する処理において、前記複数のデータベースのうち二以上のデータベースの各々から前記データブロックが検出されると、当該データブロックに関連付けられているエンティティを特定して、当該エンティティの集合を生成し、
前記エンティティの集合から、所定のルールに基づいて、当該エンティティの部分集合を生成する
処理を、さらに、前記コンピュータに実行させるための付記1記載の検索プログラム。
(付記3)
前記関連度を算出する処理が、
前記クエリー要素ごとに、前記複数のデータベースの各々における当該クエリー要素の出現頻度をカウントし、
当該出現頻度に基づいて、当該クエリー要素と前記データベースの各々との前記関連度を算出する
処理を含む、付記1又は2記載の検索プログラム。
(付記4)
前記関連度を算出する処理が、
カテゴリと当該カテゴリに含まれる複数のカテゴリ要素とを対応付けるカテゴリルールに基づいて、前記クエリー要素を前記カテゴリ要素として含むカテゴリを特定し、
前記カテゴリルールに基づいて、特定された前記カテゴリに含まれる前記複数のカテゴリ要素を取得し、
前記複数のデータベースの各々について、取得した前記複数のカテゴリ要素の出現頻度をカウントし、
前記出現頻度に基づいて、前記クエリー要素と前記複数のデータベースの各々との前記関連度を算出する
処理を含む、付記1又は2記載の検索プログラム。
(付記5)
前記検索する処理が、
カテゴリと当該カテゴリに含まれる複数のカテゴリ要素とを対応付けるカテゴリルールに基づいて、前記クエリー要素をカテゴリ要素として含むカテゴリを特定し、
前記カテゴリと検索方法とを対応付ける検索ルールに基づいて、特定された前記カテゴリに対応する検索方法を特定し、
特定された前記検索方法に基づいて検索する
処理を含む、付記1又は2記載の検索プログラム。
(付記6)
前記エンティティの集合を生成する処理が、
前記検索する処理にて検出された前記データブロックごとに、所定のルールに基づいて前記第2の検索クエリーとの合致度を示す第1の評価値を算出し、
前記エンティティの部分集合を生成する処理が、
前記エンティティごとに、当該エンティティに関連付けられた前記データブロックの前記第1の評価値に基づいて、当該エンティティの評価を示す総合評価値を算出し、
前記総合評価値に基づいて、前記エンティティの集合から前記エンティティの部分集合を生成する
処理を含む付記2記載の検索プログラム。
(付記7)
ユーザから入力された第1の検索クエリーに含まれる一又は複数のクエリー要素を抽出し、
前記クエリー要素ごとに、各々異なる種類のデータを格納する複数のデータベースとの関連度を算出し、
前記関連度に基づいて、前記クエリー要素ごとに前記複数のデータベースとの関連の有無を判定し、
前記複数のデータベースの各々について、当該データベースと関連有りと判定されたクエリー要素がある場合は、当該クエリー要素を含む第2の検索クエリーを生成し、
前記第2検索クエリーに基づいて、前記複数のデータベースのうち、当該第2検索クエリーに対応するデータベースを検索する
処理を含み、コンピュータにより実行される検索方法。
(付記8)
ユーザから入力された第1の検索クエリーに含まれる一又は複数のクエリー要素を抽出する抽出部と、
前記クエリー要素ごとに、各々異なる種類のデータを格納する複数のデータベースの各々との関連度を算出する計算部と、
前記関連度に基づいて、前記クエリー要素ごとに前記複数のデータベースの各々との関連の有無を判定する判定部と、
前記複数のデータベースの各々について、当該データベースと関連有りと判定された前記クエリー要素がある場合は、当該クエリー要素を含む第2の検索クエリーを生成する検索クエリー生成部と、
前記第2の検索クエリーに基づいて、前記複数のデータベースのうち、当該第2の検索クエリーに対応するデータベースを検索する検索部と
を有する検索装置。