JP5155001B2 - 文書検索装置 - Google Patents

文書検索装置 Download PDF

Info

Publication number
JP5155001B2
JP5155001B2 JP2008095462A JP2008095462A JP5155001B2 JP 5155001 B2 JP5155001 B2 JP 5155001B2 JP 2008095462 A JP2008095462 A JP 2008095462A JP 2008095462 A JP2008095462 A JP 2008095462A JP 5155001 B2 JP5155001 B2 JP 5155001B2
Authority
JP
Japan
Prior art keywords
search
document
expression
formula
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008095462A
Other languages
English (en)
Other versions
JP2009251686A (ja
JP2009251686A5 (ja
Inventor
真 岩山
修 今一
知弘 安田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008095462A priority Critical patent/JP5155001B2/ja
Priority to US12/342,166 priority patent/US7984044B2/en
Publication of JP2009251686A publication Critical patent/JP2009251686A/ja
Publication of JP2009251686A5 publication Critical patent/JP2009251686A5/ja
Application granted granted Critical
Publication of JP5155001B2 publication Critical patent/JP5155001B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3341Query execution using boolean model

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、文書検索において、複数の検索式をまとめて効率良く検索する技術に関する。
文書検索サービスを安定運用するためには、サービス混雑時にも一定時間内で検索結果を返さねばならない。サービス混雑時には複数の検索式が相次いで検索サーバに到着する。複数の検索式を処理する方式としては、先に到着した検索式から順番に処理する方式(逐次処理方式)や、OSのタイムシェアリング機能を使い複数の検索式を並列に処理する方式(並列処理方式)が良く知られている。しかし、これらの方式は、検索式の同時処理数が増すにつれ各検索式に対する応答時間も比例して長くなってしまう。並列処理方式では、CPUが複数個あれば同時処理能力も高くなるが、それでも同時処理数が数十を超えると遅くなる。
そこで、複数の検索式をOR結合して一括して検索を行う方式(一括処理方式)が提案されている(特許文献1)。一括処理方式の性能はその前提となる文書検索方式によって異なるが、ここでは、文書を先頭からスキャンしながら検索する検索方式(スキャン型検索)を考える。スキャン型検索の場合、逐次処理方式や並列処理方式が同じ文書を何度もスキャンしてしまうのに対し、一括処理方式ではスキャンは一回のみで済む。ただし、検索式をOR結合しているので、ある文書がどの検索式でヒットしているのかを後で調べる必要がある。それでも、文書を複数回スキャンするのに比べれば高速に処理できる。
特許第3413866号公報
一括処理方式では、OR結合された検索式の中で一番遅い検索式に検索速度が支配されてしまうことが多い。つまり、速く検索できる検索式でも、遅い検索式とOR結合してしまうと遅くなってしまう。この性質が顕著に現れるのが、インデックス型検索とスキャン型検索を組み合わせたハイブリッド型検索である。ハイブリッド型検索では、インデックスにより絞り込んだ文書のみスキャンする。絞り込みによって10文書しかスキャンする必要がない検索式と、絞り込んでも1万文書をスキャンせねばならない検索式とをOR結合でまとめてしまうと、前者の検索式についても1万個強の文書をスキャンせねばならず、インデックスによる絞込みの効果がなくなってしまう。
本発明は、上記の課題を解決するために、複数の検索式をそれぞれの予測検索速度に基づいて複数の集合に分割し、それぞれの集合内で検索式をOR結合し、予測検索速度の速い検索式集合から順次一括検索を行う。ここでは、予測検索速度の推定方法と、集合への分割方法が問題となる。前者に関しては、上記のハイブリッド型検索を例にして、スキャン文書数の推定値を予測検索速度とする。スキャン文書数は、検索式の構成タームのヒット件数から推定することができる。集合への分割方法に関しては、過去に行った検索履歴から最適な分割パラメータを決定する。
本発明により、複数の検索式がほぼ同時に到着するサービス混雑時においても、通常時と大きく変わらない応答時間を得ることができる。
以下、図面を参照して本発明の実施の形態を説明する。図1は、本発明による文書検索システムの構成例を示す図である。文書検索システムは、検索サーバ10、ネットワーク11、及び任意個の検索クライアント121〜123を備える。
検索サーバ10は、CPU101、メモリ102、文書DB103、検索制御部104、検索部105、及びデータ通信部106を備えている。CPU101は、検索制御部104、及び検索部105を構成する各種プログラムを実行することによって各種処理を実行する。メモリ102は、CPU101が実行するプログラム、及びプログラムを実行するために必要なデータを一時的に記憶する。文書DB103は、検索対象の文書とそれらを検索するために必要なインデックスを格納している。データ通信部106は、ネットワーク11を介してデータ通信をするインターフェースであり、例えば、TCP/IPプロトコルによって通信可能なLANカードによって構成される。検索サーバ10は、データ通信部106を介して、ネットワーク11に接続された複数の検索クライアントと通信する。図1では121から123まで3つの検索クライアントがある。
それぞれの検索クライアントは、利用者からの検索式を受け付けて、ネットワーク11を介して検索サーバ10に検索式を送付し、検索サーバ10から同じくネットワーク11を介して検索結果を受け取り、利用者に提示する。検索クライアントの内部構成については説明を省略する。
検索サーバに複数の検索クライアントから検索式がほぼ同時に到着した場合の処理方式として、逐次処理方式(図2)、並列処理方式(図4)、一括処理方式(図6)がある。本発明の実施の形態を説明する前に、まず、それぞれの従来方式を説明する。
図2の逐次処理方式では、到着した検索式集合21をなんらかの順番で一個ずつ処理する。最も単純な順番は検索式の到着順である。図2では、検索式1(221)から検索式n(231)の順に検索1(22)から検索n(23)までを逐次実行し、それぞれの検索結果である検索結果1(222)から検索結果n(232)を検索クライアントに返す。
逐次処理方式のタイムチャートを図3に示す。ここでは31、32、33の3つの検索式をこの順に処理している。それぞれの検索式を単独に発行すると、3T、10T、2Tの検索時間を要する。ここでTは単位時間であり、図中ではそれぞれの四角に相当する。また、ハッチングされた四角は検索中であることを、白抜きの四角は待機中であることを表す。
逐次処理方式では、後ろで実行される検索式は前の検索式が終了するまで待つことになる。よって、後ろで実行される検索式ほど待ち時間が長くなり応答時間も増してしまう。図3の例の場合、最初に実行される検索式1は3Tで検索が終了するが、次に実行される検索式2では3Tの待ち時間が生じる。検索時間と合わせると、3T+10T=13Tの応答時間になる。同様にして、最後に実行される検索式3の応答時間は13T+2T=15Tになる。検索式3は単独で検索すると2Tと高速に検索できるが、逐次処理方式では最後に検索されるため13Tもの待ち時間が生じてしまう。
後ろで実行される検索式が不利になるという逐次処理方式の欠点を克服するためには、図4の並列処理方式のように、どの検索式も平等に処理を進めればよい。通常は、タイムシェアリング方式とよばれる方式により、細かく区切った時間毎に処理対象を切り替えながら平等に処理を進めていく。タイムシェアリング方式はOSで実装されていることが多いため、アプリケーションでは単純に並列に命令を発行すれば良い。図4では、検索式集合41のn個の検索式421〜431のそれぞれに対して、検索1(42)から検索n(43)までn個の検索処理を並列に実行している。
図5に並列処理方式のタイムチャートを示す。検索式は図3と同じである。最初の処理時間Tでは検索式1の検索を進め、次の処理時間Tでは検索式2の検索を進める。このように、単位時間毎に順番に検索処理を進めていくため、どの検索式の待ち時間も等しくなる。応答時間は、検索式1で7T、検索式2で15T、検索式3で6Tとなり、単独処理時の検索時間に比例した時間となっている。合計応答時間(平均応答時間と等価)は、図3の逐次処理方式では31T(3T+13T+15T)であるのに対し、並列処理方式では28T(7T+15T+6T)と短くなっている。
これまでの2つの方式では、各検索式を独立に処理するため、同じ処理を重複して実行している可能性がある。例えば、文書をスキャンして検索を行うスキャン型検索では、同じ文書を複数の検索式で重複してスキャンしてしまう可能性がある。そこで、図6に示す一括処理方式では、検索式集合61内の検索式をORで結合した新たな検索式を作り、この検索式を用いて一括検索処理62を実行する。一括検索では、同じ文書の処理は一回しか行わないため、前述したような重複処理はなくなる。一括検索処理の詳細は後述する。
図7に一括処理方式のタイムチャートを示す。ここでは、一括処理対象のそれぞれの検索式の単独検索時間で最大のものを全体の一括処理時間としている。これは近似値であり、実際はこの最大時間よりも長い時間を要することが多い。図7に見られるように、一括処理方式には、検索が速く終わる検索式71及び73が遅い検索式72につられて遅くなってしまうという問題がある。合計応答時間も30T(10T+10T+10T)と遅い。どのような検索式でも同じ検索速度を持つような検索方式であればこの問題は生じないが、大抵の検索方式では、検索式によってその検索時間も異なるため、上記の問題が顕在化する。
図8に、本発明の実施の形態のフロー図を示す。本発明の実施の形態では、検索式をその予測検索時間に基づいて複数の集合に振り分けて、それぞれの集合毎に一括処理を実行する。そのために、まず検索式振り分け処理82で、一括処理する検索式集合81をその予測検索時間に応じて複数の検索式集合(83から84までのn個)に分割する。検索式振り分け処理の詳細は後述する。次に、分割した検索式集合をその予測検索時間が短いものから順に処理する(85から86のn個の一括検索)。それぞれの一括検索処理では、通常の一括検索と同様に、複数の検索式をOR結合でまとめて処理する。検索結果集合87から88が得られたら、その時点で検索クライアントに検索結果を返す。
図9に本発明の実施の形態の方式のタイムチャートを示す。ここでは、検索式1(91)と検索式3(92)を一括検索1としてまとめたと仮定している。前述したように、一括検索では、一番遅い検索式の検索時間が全体の検索時間となるが、この例のように、同等の検索速度を持つ検索式だけをまとめることができれば、速い検索式が遅い検索式につられて遅くなるという問題が生じ難くなる。例の場合、検索式3は2Tと速いが、同時に処理する検索式1も3Tと速いため、一括処理を行っても、1Tの無駄しか生じない。図7の従来方式だと、更に遅い検索式2により、検索式1も検索式3も10Tの時間を要していた。本発明の実施の形態の方式では、残った検索式2(93)は、一括検索1の結果を待って処理される。そのために一括検索1の処理時間である3Tの待ち時間が生じるが、全体の効率を考えるとこの方式の方が平均検索時間の点で有利である。実際に、合計応答時間は18T(3T+3T+13T)と従来のどの方式よりも短くなっている。
図8で示した方式では、検索式振り分け処理と一括検索処理を同じ処理フロー上で順次実行していたため、例えば、一括検索1(85)を処理している間に到着した検索式の中で後方の一括検索で処理出来るものも次回の処理まで待たねばならなかった。図10は、検索式振り分け処理と一括検索処理を別のスレッドで独立に実行するフロー図である。検索式振り分けスレッドは、一括検索とは無関係に、検索式集合1001を検索式集合1(1003)から検索集合n(1005)に振り分ける。検索スレッドは、一括検索1(1006)から一括検索n(1008)までを順番に繰り返し実行する。ただし、それぞれの一括検索では、自分より前の一括検索で処理されるべき検索式集合も一括処理する。例えば、一括検索i(1007)では、一括検索i用の検索式集合i(1004)だけでなく、自分より前である1からi−1番目の検索式集合に振り分けられている検索式も一括処理することになる。これは、自分より早い検索式を加えて一括検索しても全体の検索速度が悪くならないという性質を利用している。とはいえ、この性質が成り立たない場合もあるため、本来処理すべき検索式集合(例の場合は検索式集合i(1004))のみを処理する方式も考えられる。
本発明の実施の形態では、検索式振り分けスレッドは図1の検索制御部104で、検索スレッドは検索部105で実行される。
以上が本発明の実施の形態の概要である。以降では、本発明の実施の形態の主要部である、検索式振り分け処理と一括検索処理の詳細について説明していくが、その前に、本発明の実施の形態が前提とする検索方式について触れておく。
図11は、代表的な文書検索方式を説明する図である。いずれの場合も、検索キーワード「情報検索」(1101)を含む文書を検索する。検索対象は、文書1(1102)、文書2(1103)、文書3(1104)の3文書である。文書1には「情報検索」という文字列が、文書2には「情報の検索」という文字列が、文書3には「画像検索」という文字列が含まれているため、本検索の検索結果は文書1になる。
まず、インデックス型検索1105では、インデックスと呼ばれる索引をあらかじめ作成しておき、インデックスを使って検索を行う。インデックスは、検索ターム毎に作成する。図11では、2つの検索ターム「情報」と「検索」に対してインデックスを作成している。検索タームにも様々な種類のものがあるが、図11では形態素とよばれる単位を検索タームとしている。各検索タームに対しては、出現文書リストとそれぞれの出現文書内での位置リストを事前に数え上げて格納しておく。例えば、検索ターム「情報」1110に対しては、「情報」が出現する文書1と文書2を出現文書リスト1111に格納する。同時に、例えば文書1に関してはその文書中で「情報」が出現する位置を位置リスト1112に格納する。位置はバイト単位でも文字単位でも良い。検索時には、まず出現文書リスト1111を使って、「情報」と「検索」が共に出現する文書(例の場合、文書1と文書2)を探し、それぞれに対して位置リストを使って、双方が連続して出現しているかどうかを検査する。例の場合、文書2は「情報の検索」であるから、「情報」と「検索」の間には1文字あり、ヒットしないこことが判明する。インデックス型検索では、インデックスにより高速な検索が出来るが、インデックスを事前に準備しておかねばならない。また、位置リストも含めるとインデックスの大きさは、元文書のサイズの数倍になってしまう。
一方、スキャン型検索1106では、インデックスのような二次データは使わず、検索対象の文書を直接先頭からスキャンしながらキーワードの有無を調べる。スキャン方式には様々なものがあるが、例えばBM(Boyer-Moore)法と呼ばれる方式(Boyer R.S.,Moore J.S.,"A fast string search algorithm",Comminications of the ACM,20(10):762-772,1997)では、キーワードに符合しない不要な箇所を読み飛ばすことにより高速なスキャンを実現している。スキャン型検索は、インデックスが不要な反面、検索速度が遅いという欠点がある。
ハイブリッド型検索は、上記のインデックス型検索とスキャン型検索の欠点を補う方式である。まずは、位置情報無しのインデックスを用いて文書の絞込みを行う(1107)。位置情報無しのインデックスとは、各検索ターム1113に対し出現文書リスト1114のみを保持するインデックスである。位置情報が無いため、検索タームの接続条件の検査ができず検索エラーが混入するが、検索漏れは生じない。例の場合、文書1と文書2がヒットするが、文書2(「情報の検索」)は2つの検索ターム「情報」と「検索」が1文字離れて出現するために実際にはヒットすべきではない文書である。ハイブリッド型検索では、位置情報無しのインデックス型検索1107の後、検索結果の文書をスキャンして実際にキーワードが文書に出現するかどうかを調べる(1108)。通常のスキャン型検索と比べると、位置情報無しのインデックス検索によりスキャンすべき文書数が大幅に減り、通常のスキャン型検索における検索速度の問題が軽減される。また、位置情報無しインデックスは、位置情報有りインデックスに比べると格段に小さいため、通常のインデックス検索におけるインデックスサイズの問題が軽減できる。
本発明の実施の形態では、ハイブリッド型検索を採用するが、本発明は検索方式を問わない。以降では、まず、インデックスのデータ構造について説明した後、本発明の実施の形態の主要部である、検索式振り分け処理及び一括検索処理について説明していく。
図12及び図13は、ハイブリッド型検索で用いるインデックスの一例である。インデックスは図1の文書DB103に格納され、検索制御部104及び検索部105から参照される。
まず、図12は検索タームを含む文書数を記録しておくテーブルの一例である。1201に検索タームの番号を、1202にその検索タームを含む文書数を記録し、プログラムにより検索タームの番号から即座にその検索タームを含む文書数を取得することができる。なお、検索ターム文字列を検索タームの番号に変換するためのテーブル(ハッシュ表等で実現)も別途用意されているが、ここでは説明を省く。
図13がインデックスの実体の一例である。1301が検索タームの番号、1302がその検索タームを含む文書数、1303が実際の文書番号のリストである。なお、1303の文書数は図12と重複するので省いても良い。もしくは、図13で定義されるデータを用いて検索タームから文書数が高速に参照できるのであれば、図12で定義したデータは不要である。
図1の文書DB103には、図12や図13のデータの他に文書本体のデータも必要であるが、ここでは説明を省く。
図14は、本発明の実施の形態の検索式振り分け処理のフロー図である。本処理は図1の検索制御部104で実行される。また、本処理は既に説明した図8の82及び図10の1002に相当している。以下、図14をその例である図15と合わせて説明する。
図14のS1401は本処理の入出力定義である。本処理は、n個の検索式を含む検索式集合Q={q_1,q_2,…,q_n}をk個の集合に振り分ける。振り分けた結果の集合がQo={Q_1,Q_2,…,Q_k}である。Nは検索対象の総文書数であり、振り分け処理でパラメータとして用いる。p_1,p_2,…,p_kは振り分けの比率で、これらはユーザもしくはシステム管理者が設定する。なお、各p_jは正の実数(>0)であり昇順に並んでいる(p_j<p_j+1)。ただし、最後のp_kは1である。この比率の決定方法については後述する。
図15の例では、総文書数N=500(1501),比率はp_1=0.1,p_2=1(1502)である。つまり各検索式を2個の集合に振り分けることに相当する。
振り分け処理では、それぞれの検索式からの検索速度を予測して、同程度の予測検索速度を持つ検索式をまとめる。つまり振り分け後には同程度の予測検索速度を持つ検索式のみが同じ集合に入っていることになる。ここでは、検索速度の予測方法が問題となる。本実施の形態では、検索方式としてハイブリッド型を選択した。ハイブリッド型検索では、前段のインデックス型検索の結果の文書数が、検索速度にほぼ比例するパラメータになっている。後段のスキャン型検索でこれらの文書数をスキャンし、全体の検索速度はスキャンする文書のサイズに大きく依存しているからである。よって、検索速度を予測することは、インデックス型検索の結果の文書数を予測することとほぼ等しい。本処理でもインデックス型検索の結果の文書数の予測値により検索式の振り分けを行う。
検索方式としてインデックス型検索を選択する場合は、調べるインデックスの個数が検索速度を予測するパラメータとして使える。また、検索方式としてスキャン型検索を選択する場合は、検索速度はほぼ一定になるが、読み飛ばしを行うスキャン方式の場合は、キーワードの最短長が検索速度を決める。以降ではハイブリッド型検索を選択した場合を詳しく説明する。
まずはS1402で、オリジナルの検索式からインデックス型検索用の検索式に変換する。この処理は、インデックスに登録してある検索タームの種類に依存するが、本発明の実施の形態では、最も一般的な方法として、文字2グラムをインデックスに登録したと仮定する。検索式変換のためには、オリジナルの各検索式q_j中の各キーワードを、そのキーワードを構成する検索ターム(文字2グラム)の論理積で置き換える。
図15の例で説明すると、オリジナルの検索式の「情報検索+情報公開」(1504)の検索キーワード「情報検索」、「情報公開」をそれぞれ文字2グラムに分割して論理積で結合する。なお、ここでは論理和は「+」、論理積は「*」で表現する。変換の結果、オリジナルの検索式は、「(情報*報検*検索)+(情報*報公*公開)」(1505)となる。
次にS1404で、変換後の各検索式q_jからインデックス型検索によるヒット文献数h_j=hit(q_j)を推定する。ここでは、以下の簡単な方式により推定を行うが、この他にも様々な推定法が考えられる。
まずOR結合されている式は、
hit(A+B+…)=min(N,hit(A)+hit(B)+…)
で推定する。OR結合の場合は、式の構成要素の推定値を足した値が式全体の推定値となる。ただし、足した結果が総文書数を上回る場合は、総文書数Nを推定値とする。
AND結合されている式は、
hit(A*B*…)=min(hit(A),hit(B),…)
で推定する。AND結合の場合は、式の構成要素の推定値の中で最小のものが式全体の推定値となる。
上記の規則で推定を再帰的に続けていくと、最終的には検索タームtの推定値hit(t)に到達する。これはtのヒット文書数に等しく、この値は図12のインデックスを用いれば正確な値がわかる。否定〜tの場合は総文書数からhit(t)を引けば良い。
図15の例では、変換後の検索式1505のヒット件数を推定すると35になる(1506)。ここでは、各タームのヒット件数として1503の値を用いている。
ここで、本方式で推定したヒット件数は、実際のヒット件数の上限値になっていることに注意されたい。よって、本方式によって0件と推定された検索式は、実際のインデックス検索でもヒット件数が0件である。更に、ハイブリッド型検索では、インデックス型検索の結果は最終的な検索結果の文書数よりも多いことが保証されているため、最終的なヒット件数も0件になる。従って、本方式により推定ヒット件数が0件になる検索式は、S1405の例外処理により即座に結果が返答できる。
ヒット件数は上記以外にも、確率的な方法により推定することができる。この場合、
hit(A+B)=hit(A)+hit(B)−hit(A*B)
hit(A*B)=hit(A)*hit(B)/N
を同じく再帰的に適用していく。本発明の実施の形態では、確率的な推定ではなく、上記の最小値による推定を用いる。
最後に、S1406で実際の振り分け処理を行う。本発明の実施の形態では、総文書数Nを振り分けの比率p_1,p_2,…,p_kで分割し、ヒット件数の推定値h_jが属する領域に振り分ける。具体的には、h_jがN*p_(x−1)≦h_j<N*p_xとなるxを見つけ(ただしp_0=0とする)、Q_xに振り分け対象のq_jを加える。
図15の例では、p_0=0,p_1=0.1,p_2=1でN=500であるから、振り分けに用いる区間は、[0,50,500]となる。対象の検索式の予測ヒット件数は35であるから、この検索式はQ_1に振り分けられる。
以上が、振り分け処理の詳細であるが、ここで問題となるのは、ユーザもしくはシステム管理者が振り分けの比率を指定しなければならない点である。最適な振り分け比率を決定する方法については後述する。
振り分け処理が終わったら、それぞれの検索式の集合をヒット件数の推定値が小さいものから順番に一括検索する。これは図8の85〜86、及び図10の1006〜1008に相当する。
図16は、本発明の実施の形態の一括検索処理のフロー図である。S1601に本処理の入出力定義を示す。本処理はn個の検索式を含む検索式集合Q={q_1,q_2,…,q_n}から一括検索を行い、n個の検索結果の集合R={R_1,R_2,…,R_n}を得る。ここで、それぞれのR_iは対応するq_iから検索を行った結果(検索結果の文書集合)に相当する。
一括検索では、まずS1602において、キーワードオートマトンAを作成する。キーワードオートマトンは後にスキャン型検索を行う際に用いる。スキャン型検索では、検索対象の文書をスキャンしながらキーワードオートマトンを評価し、キーワードオートマトンに登録されているキーワードの有無を調べる。
図18にキーワードオートマトンの例を示す。なお、キーワードオートマトンの作成方法は公知である。図18の例では、2つの検索式「情報検索+情報公開」(q_1:1801)と「(秘*情報)+情報公開」(q_2:1802)からキーワードオートマトンを作成している。
キーワードオートマトンを作成するには、まず対象の検索式から各検索キーワードを抽出する。例の場合「情報検索」「情報公開」「秘」「情報」の4つのキーワードが抽出できる。キーワード「情報公開」はq_1、q_2いずれにも含まれるが、キーワードオートマトンでは同じものとして扱う。
次に、抽出したキーワード集合の接頭辞木1803を構築する。この接頭辞木がキーワードオートマトンの本体になる。Sで表されたノード1804は開始ノードを表す。二重四角のノードは終端ノードを表し、そこがキーワードの最終文字であることを意味している。つまり、ノード1806はキーワード「情報」に、ノード1808は「情報検索」に、ノード1810は「情報公開」に、1811は「秘」に対応している。キーワードオートマトンは接頭辞木になっているため、重複する接頭辞が同じパスで表現されている点に注意されたい。この性質により、スキャン時に効率の良い検査が可能になる。また、終端ノードからは、キーワードの有無を表すスキャン結果配列1812の対応する要素にポインタが張られている。
スキャン型検索では、検索対象のテキストをスキャンしながら、キーワードオートマトン上で対応する文字のノードをたどる。終端ノードまで到達したら、対応するキーワードが存在したということであるから、対応するスキャン結果配列要素に真偽値の真(T)を入れる。スキャン結果配列はスキャン文書毎に偽(F)で初期化しておく。以上のスキャン型検索は、AC(Aho-Corasick)法と呼ばれる方法(Aho A.V.,Corasick M.J.,"Efficient string matching: an bibliographic search",Communications of theACM,18(6):333-340,1975)を簡略化したものである。
以上で、キーワードオートマトンの作成法の説明を終え、図16の一括検索処理フロー図に戻る。次にS1603で、検索式評価用配列を作成する。キーワードオートマトンからは各キーワードの有無が判るだけである。そこで、検索式評価用配列を用いて各検索式の真偽値(実際に検索式にヒットしているかどうか)を判定する。各検索式q_iに対して一個ずつ対応する検索式評価用配列E_iを作成する。このE_iは検索式q_iの逆ポーランド形式になっている。
中置形式の検索式(例えば「A*(B+C)」)を逆ポーランド形式(「ABC+*」)に変換する方法については公知である。図18に、2つの検索式q_1(1801)とq_2(1802)を逆ポーランド形式の評価用配列E_1(1813)とE_2(1814)に変換した例を示す。例えば、q_1の「情報検索+情報公開」を逆ポーランド形式に変換すると、「情報検索」「情報公開」「OR」という3要素の並びになる。これをそのまま配列表現したものが1813のE_1である。先頭要素1815からは、「情報検索」に対応するスキャン結果配列要素へポインタが飛んでいる。検索式を評価する際は既にスキャンが終了しているため、スキャン結果配列の要素も全て決定しており(つまり、各キーワードの有無がわかっている)、1815のポインタによりキーワード「情報検索」の有無も即座に判定できるようになっている。同様に配列の要素1816からは、キーワード「情報公開」に対応するスキャン結果配列要素へポインタが飛んでいる。最後の要素1817は直前の2つの配列要素の論理和を調べるオペレータである。このE_1を先頭から評価することにより、対応する検索式の真偽値が判定できる。
以上で、一括検索において、スキャン型検索を行うための前処理が終了し、次に実際に検索処理を進める。図16に戻り、まずはS1604のインデックス型検索により、全文書集合Dからスキャン型検索を行うべき文書集合Dsを抽出する。インデックス型検索の詳細については、図17を使って後に説明する。
インデックス型検索の結果のDsは最終的なヒット文書を必ず含むような文書集合になっているため、次にDs内の文書d_kそれぞれに対して、スキャン型検索によりd_kが各検索式を満たしているかどうかを検査する。
スキャン型検索ではまず、S1606のスキャン処理により、既に作成してあるキーワードオートマトンAをたどりながら文書d_kのスキャンを行う。走査の結果、各キーワードの有無がスキャン結果配列(図18の1812)に格納される。
スキャンが終了したら、S1607で検索式の評価を行う。各検索式については1603で既に対応する評価用配列が作成してあるため、後は配列を読みながら逆ポーランド式の評価を行うだけである。逆ポーランド式の評価も公知技術である。評価の結果、真であれば、評価中の文書d_kを検索式q_iに対応する検索結果集合Rの要素R_iに追加する。
以上の処理の結果、検索結果集合Rには、各検索式の検索結果の集合が蓄積されることになる。ここで、検索式が複数個あっても、各文書に対するスキャン処理は1回であることに注意されたい。
次に、先ほど説明を飛ばした、スキャン対象の文書集合Dsを求めるインデックス型検索の詳細について説明する。図17が、本発明の実施の形態のインデックス型検索のフロー図である。S1701が本処理の入出力定義である。本処理は、n個の検索式を含む検索式集合Q={q_1,q_2,…,q_n}から検索を行い、その検索結果の文書集合をDsとして出力する。
まず、S1702で検索式の変換を行う。この処理は、図14のS1402と同じであるため、説明を省略する。次に、S1703で検索式のまとめ上げを行う。インデックス型検索では、いずれかの検索式を満たす可能性のある文書をすべて抽出せねばならないため、各検索式q_iをOR結合したQall=q_1+q_2+…+q_nをまとめ上げた検索式とする。次にS1704でQallから検索を行い、検索結果の文書集合をDsとする。
以上が、本発明の実施の形態の各処理の詳細説明である。残った問題は、検索式振り分け処理(図14)において、検索式の配分比率(S1401のp_1からp_k)をどう決めるかである。ユーザ及びシステム管理者が任意の値を設定してもよいが、設定値次第では十分な性能が出ない場合もある。そこで、本発明の実施の形態では、以下で説明する方式で配分比率を決める。
問題を簡略化して、検索式集合を2分割することを考える。それ以上に分割したい場合は、2分割後のそれぞれを更に本方式により2分割していけばよい。ここでは、分割の比率をp(0≦p≦1)とし、比率pの検索式を高速検索用(一括検索1)に振り分け、比率(1−p)の検索式を低速検索用(一括検索2)に振り分けるとする。また、T1を高速検索の検索時間、T2を低速検索の検索時間とする。よって、全体の検索時間はT1+T2になる。なお、一括検索の検索時間は、一括検索する検索式で一番遅いものの単独検索時間と仮定する。実際は、更に遅い時間となることが多いが、ここでは簡略化する。また、検索式はランダムに到着すると仮定する。
図19は、検索式の到着時間毎にその待ち時間と検索時間を示した図である。検索式到着時間が0≦t<T1の検索式の割合はT1/(T1+T2)であり、その中で高速検索用のものの比率はp、低速検索用のものの比率は(1−p)ある。この区間0≦t<T1では高速検索(一括検索1)が実行されているため、この区間に到着した検索式は次の低速検索(一括検索2)で処理されることになる。図10の方式によれば、高速検索実行中に到着した高速検索用の検索式は、次回の高速検索まで待つのではなく、次の低速検索で処理する。よって、いずれの検索式も、平均待ち時間がT1/2、検索時間がT2となる。
次のT1≦t<T1+T2に到着した検索式を考える。この区間では低速検索が実行されているため、この時間帯に到着した高速検索用の検索式は次の高速検索で処理できる。つまり、平均街時間はT2/2、検索時間はT1である。一方、この時間帯に到着した低速検索用の検索式は、次の高速検索が終了した後の低速検索まで待つことになるため、平均待ち時間はT2/2+T1、検索時間はT2になる。
上記の場合分けをまとめて平均応答時間と最悪応答時間を計算した結果が図20である。通常方式とは、検索式の振り分けをせず全ての検索式を一括処理する図6、図7で説明した従来方式である。また、交互検索方式は本発明の実施の形態の方式である。ここで平均応答時間を比べると、本発明の実施の形態の方式が通常方式を上回る条件は、図中の2001で示された不等式が成立する場合となる。また、不等式2001の左辺の値が大きくなるほど、本発明の実施の形態の方式の効果が大きいことを表している。
図21に、不等式2001が成立する領域を図示している。横軸は検索時間で、T1/T2で正規化している。縦軸は、単独に検索を行った場合、対応する検索時間までに検索が終了する検索式の割合を表している。縦軸は、言い換えると、検索式の分割比率pを表していることになる。
不等式2001の左辺は、図21中で線分2104と線分2105を足した値になっている。ここで、二次曲線2102は二次曲線2101を上下に反転して、かつ対角線2103から引いた曲線である。なお、対角線2103は、検索式が検索時間によらず一様に分布していた場合の分布を表している。不等式2001が成立する条件は、実際の分布が二次曲線2102より上にあればよいことになる。また、二次曲線2102から上に離れていれば離れているほど本発明の実施の形態の方式の効果が大きいことをも意味している。よって、最適の分割比率pを決めるには、検索式の分布を図21上にプロットし、二次曲線2102からの上に最もはなれている点を決めればよい。もし、検索式が一様に分布しているとすると、分布曲線は対角線2103と等しくなるため、最適な点はp=0.5の点となる。つまり、高速検索と低速検索を同じ割合で分ける場合が最適であることを意味している。
図22は実際の検索式の分布を表した図である。この図では、分割比率の最適は約0.9と読み取れる。つまり高速検索に9割の検索式を振り分けることに相当する。分割比率が0.9になるためには、単独検索時間が1.5秒から2秒以下の検索式を高速検索に振り分ければよいことも図から読み取れる。本発明の実施の形態では、既に説明したように、検索時間はインデックス型検索の結果の推定文書数とほぼ等しいため、図22の横軸はインデックス型検索の結果の文書数となる。
実際には、あらかじめある程度の数の検索式から図22のような分布図を作り、最適な分割比率を決定すればよいのだが、検索サービスを運用しながら徐々に最適な分割比率に修正していく方式も考えられる。そのためには、検索が終了する度に、図23のテーブルにデータを蓄積していけばよい。テーブル中で、2301はインデックス型検索の結果の推定文書数を、2302は検索式の数を表している。図23のテーブルは、図22と同等の情報を持つため、図23のテーブルからその時点で最適な分割比率が計算できる。この場合、検索式の蓄積がまだ無い初期状態では、適当な分割比率を初期値として与えておく。その後、検索式が一定数蓄積される度に、それまでに蓄積されている検索式の分布情報を用いて振り分けのためのパラメータを逐次更新すればよい。
本発明による文書検索システムの構成例を示すブロック図。 逐次処理方式(従来方式)のフロー図。 逐次処理方式(従来方式)のタイムチャート。 並列処理方式(従来方式)のフロー図。 並列処理方式(従来方式)のタイムチャート。 一括処理方式(従来方式)のフロー図。 一括処理方式(従来方式)のタイムチャート。 本発明の実施の形態の処理のフロー図。 本発明の実施の形態の処理のタイムチャート。 本発明の実施の形態の処理(スレッド版)のフロー図。 代表的な検索方式(インデックス方式、スキャン方式、ハイブリッド方式)の概念図。 本発明の実施の形態の文書DBに含まれ、ターム番号とそのタームが含む文書数を格納するテーブルの一例を示す図。 本発明の実施の形態の文書DBに含まれ、ターム番号とそのタームが含む文書数と、そのタームが含む文書の文書番号リストを格納するテーブルの一例を示す図。 本発明の実施の形態の検索制御部で実行される検索式振り分け処理のフローチャート。 本発明の実施の形態の検索制御部で実行される検索式振り分け処理の処理例を示す図。 本発明の実施の形態の検索部で実行される一括検索処理のフローチャート。 本発明の実施の形態の検索部で実行されるインデックス型検索のフローチャート。 本発明の実施の形態の検索部で実行される一括検索処理の処理例を示す図。 検索式の到着時間別にその待ち時間と検索時間を列挙した説明図。 本発明の実施の形態の方式と通常の一括検索方式とを、平均応答時間、最悪応答時間により比較した説明図。 本発明の実施の形態において、検索式の最適な分割比率を決定するための検索式分布図。 図21の検索式分布図の実際の一例を示す図。 本発明の実施の形態において、検索式の最適な分割比率を動的に決定するために必要なテーブルの一例を示す図。
符号の説明
10 検索サーバ
101 CPU
102 メモリ
103 文書DB
104 検索制御部
105 検索部
11 ネットワーク
121,112,113 検索クライアント

Claims (6)

  1. プロセッサと、前記プロセッサによって実行されるプログラムを格納するメモリと、検索対象の文書及び前記文書を検索するためのインデックス情報を格納する文書DBとを用い、キーワードの論理式から成る検索式から文書を検索する文書検索装置において、
    複数の検索式を、それぞれの予測検索速度に基づいて複数の検索式集合に振り分ける検索式制御部と、
    振り分けられた前記複数の検索式集合を予測検索速度の速い集合から順次検索を行い、かつ、それぞれの検索処理では、対応する検索式集合内の検索式をまとめて一括検索する検索部と
    を備えることを特徴とする文書検索装置。
  2. 請求項1記載の文書検索装置において、前記検索部は、ある検索式集合1を一括検索している途中に到着した検索式の予測検索速度が検索式集合1の次に一括検索される検索式集合2の予測検索速度より速いとき、当該検索式を前記検索式集合2に含めて一括検索することを特徴とする文書検索装置。
  3. 請求項1記載の文書検索装置において、一定長の連続文字列が出現する検索対象の文書リストを前記インデックス情報として前記文書DBに格納し、前記一括検索では、前記インデックス情報を用い前記検索式内の各キーワードを構成する連続文字列の接続条件を考慮しないインデックス検索を行い、前記インデックス検索によって得られた各文書を、先頭の文字から走査しながら前記検索式内の各キーワードを構成する連続文字列の接続条件を検査し、前記検査に合格した文書を最終的な検索結果として出力することを特徴とする文書検索装置。
  4. 請求項3記載の文書検索装置において、前記検索制御部は前記インデックス情報を用いて、前記検索式内の各キーワードを構成する各連続文字列に対してその連続文字列が出現する文書数を取得し、前記文書数の組み合わせから前記検索式のインデックス検索の結果の文書数を予測し、前記予測文書数を前記予測検索速度とすることを特徴とする文書検索装置。
  5. 請求項3記載の文書検索装置において、過去に処理した検索式のインデックス検索の結果の文書数をデータとして蓄積し、前記検索制御部において検索式の振り分けを行う際に、振り分けのためのパラメータを前記蓄積したデータから計算することを特徴とする文書検索装置。
  6. 請求項5記載の文書検索装置において、過去に処理した検索式の情報が無い初期状態ではあらかじめ指定したパラメータを振り分けに使い、検索式が一定個数蓄積される度に、それまでに蓄積したデータを用いて振り分けのためのパラメータを更新することを特徴とする文書検索装置。
JP2008095462A 2008-04-01 2008-04-01 文書検索装置 Expired - Fee Related JP5155001B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008095462A JP5155001B2 (ja) 2008-04-01 2008-04-01 文書検索装置
US12/342,166 US7984044B2 (en) 2008-04-01 2008-12-23 System or program for searching documents

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008095462A JP5155001B2 (ja) 2008-04-01 2008-04-01 文書検索装置

Publications (3)

Publication Number Publication Date
JP2009251686A JP2009251686A (ja) 2009-10-29
JP2009251686A5 JP2009251686A5 (ja) 2011-03-03
JP5155001B2 true JP5155001B2 (ja) 2013-02-27

Family

ID=41118641

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008095462A Expired - Fee Related JP5155001B2 (ja) 2008-04-01 2008-04-01 文書検索装置

Country Status (2)

Country Link
US (1) US7984044B2 (ja)
JP (1) JP5155001B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110029985A1 (en) * 2009-07-31 2011-02-03 Nokia Corporation Method and apparatus for coordinating resource access
CN104933669A (zh) * 2009-10-16 2015-09-23 日本电气株式会社 人物服装特征提取装置及方法
JP5552448B2 (ja) * 2011-01-28 2014-07-16 株式会社日立製作所 検索式生成装置、検索システム、検索式生成方法
JP5678691B2 (ja) 2011-01-28 2015-03-04 富士通株式会社 検索制御装置、検索制御プログラムおよび検索制御方法
DE212011100098U1 (de) 2011-04-28 2013-01-10 Google Inc. Präsentieren von Suchergebnissen für Galerie-Webseiten
JP5799706B2 (ja) * 2011-09-26 2015-10-28 富士通株式会社 検索要求処理装置
US9002772B2 (en) 2011-11-18 2015-04-07 International Business Machines Corporation Scalable rule-based processing system with trigger rules and rule evaluator
US8990070B2 (en) 2011-11-18 2015-03-24 International Business Machines Corporation Computer-based construction of arbitrarily complex formal grammar expressions
US9069882B2 (en) * 2013-01-22 2015-06-30 International Business Machines Corporation Mapping and boosting of terms in a format independent data retrieval query
US20150112976A1 (en) * 2013-10-17 2015-04-23 Nicole Lang Beebe Relevancy ranking information retrieval system and method of using the same
DE112015002839T5 (de) * 2014-06-16 2017-03-09 Nec Corporation Kriterienerzeugungsvorrichtung, Kriterienerzeugungsverfahren, Speichermedium, das ein Kriterienerzeugungsprogramm speichert, Datenbanksuchsystem und Speichermedium, das ein Datenbanksuchprogramm aufweist
US10282448B2 (en) * 2014-11-18 2019-05-07 Huawei International Pte. Ltd. System and method for searching a symmetrically encrypted database for conjunctive keywords
JP6737117B2 (ja) * 2016-10-07 2020-08-05 富士通株式会社 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置
US10956416B2 (en) * 2019-03-12 2021-03-23 International Business Machines Corporation Data schema discovery with query optimization

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5454105A (en) 1989-06-14 1995-09-26 Hitachi, Ltd. Document information search method and system
JPH0561919A (ja) * 1991-04-25 1993-03-12 Hitachi Ltd 多重データ検索方法および装置
JP3343989B2 (ja) * 1993-05-17 2002-11-11 株式会社日立製作所 文書検索方法
US20050278368A1 (en) * 2004-06-08 2005-12-15 Benedikt Michael A System and method for XML data integration

Also Published As

Publication number Publication date
JP2009251686A (ja) 2009-10-29
US7984044B2 (en) 2011-07-19
US20090248652A1 (en) 2009-10-01

Similar Documents

Publication Publication Date Title
JP5155001B2 (ja) 文書検索装置
JP4980148B2 (ja) 文書検索方法
US11775501B2 (en) Trace and span sampling and analysis for instrumented software
US6820121B1 (en) Methods systems and computer program products for processing an event based on policy rules using hashing
JP4981221B2 (ja) メディア・セグメント化システムおよび関連する方法
US10289717B2 (en) Semantic search apparatus and method using mobile terminal
WO2021052177A1 (zh) 日志解析方法、装置、服务器和存储介质
US9164980B2 (en) Name identification rule generating apparatus and name identification rule generating method
JPH11203294A (ja) 情報検索システム、装置、方法及び記録媒体
CN113015970A (zh) 划分知识图
CN111104511A (zh) 一种提取热点话题的方法、装置及存储介质
US11281645B2 (en) Data management system, data management method, and computer program product
US20160342652A1 (en) Database query cursor management
WO2020181820A1 (zh) 数据缓存方法、装置、计算机设备和存储介质
US10884865B2 (en) Identifying redundant nodes in a knowledge graph data structure
JPH10240766A (ja) 情報検索方法および情報検索装置
US20150106376A1 (en) Document tagging and retrieval using entity specifiers
JP2004326480A (ja) 大量データの分散並列分析方法
US20230267033A1 (en) Recommending remediation actions for incidents identified by performance management systems
US11922222B1 (en) Generating a modified component for a data intake and query system using an isolated execution environment image
JP4952309B2 (ja) 負荷分析システム、方法、及び、プログラム
RU2757592C1 (ru) Способ и система для кластеризации документов
JP5652282B2 (ja) 検索制御プログラム、検索制御方法、検索システム
RU2490702C1 (ru) Способ ускорения обработки множественных запросов типа select к rdf базе данных с помощью графического процессора
US11720591B1 (en) Virtual metrics

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121206

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5155001

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees