JP2009157765A - 検索装置 - Google Patents

検索装置 Download PDF

Info

Publication number
JP2009157765A
JP2009157765A JP2007336921A JP2007336921A JP2009157765A JP 2009157765 A JP2009157765 A JP 2009157765A JP 2007336921 A JP2007336921 A JP 2007336921A JP 2007336921 A JP2007336921 A JP 2007336921A JP 2009157765 A JP2009157765 A JP 2009157765A
Authority
JP
Japan
Prior art keywords
search
search word
document
character string
word
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.)
Granted
Application number
JP2007336921A
Other languages
English (en)
Other versions
JP5083612B2 (ja
Inventor
Kazuya Takeda
和也 武田
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.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co 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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2007336921A priority Critical patent/JP5083612B2/ja
Publication of JP2009157765A publication Critical patent/JP2009157765A/ja
Application granted granted Critical
Publication of JP5083612B2 publication Critical patent/JP5083612B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】 N−グラムの手法を用いた場合に、インデックスサイズを小さくすることができるとともに、検索速度を速くすることが可能な検索装置を提供する。
【解決手段】 2つの文書01、02を検索対象として検索を行う際、これらの文書から先頭から1文字ずつづらして、2文字の検索語を生成し、重複した文字列を除外した検索語を検索語1ファイルに記録するとともに、全ての検索語を検索語2ファイルに記録する。検索文字列が入力された場合には、検索文字列から先頭から1文字ずつづらして、2文字の検索語を生成し、先頭の検索語で検索語1ファイルを探索し、見つかった場合には、検索語2ファイル内で後続の検索語を探索する。
【選択図】 図1

Description

本発明は、目的とする文字列を有する文書の検索を行うための技術に関する。
従来より、コンピュータを利用してデータベースに記録された文書の検索を行うことが行われている。検索の手法としては、検索対象のテキストに対し、単語単位で区切って検索に利用する手法と、文字列の長さ単位で区切って検索に利用する手法がある。
一般に、前者の単語単位で区切って検索に利用する手法では、単語の区切りを誤ると検索漏れを生じてしまうという問題がある。そのため、漏れを防ぐ検索を行う場合には、後者の文字列の長さ単位で区切って検索に利用する手法が用いられている。このような手法は、一般にN−グラムと呼ばれている。また、このようなN−グラムを応用した検索方法も提案されている(例えば、特許文献1参照)。
ここで、従来のN−グラムを応用した検索手法における検索について説明する。例えば、図7(a)(b)に示すような2つの文書(文字列)が存在し、これらを2つの文書を検索対象とする場合について説明する。なお、この例では、N−グラムのN=2とする。まず、文書を2文字ずつの文字列であるN文字列に区切る。このN文字列を検索語とする。このとき、各検索語の先頭は1文字ずつ移動させる。そして、検索語ファイルに検索語を登録する際、検索語ファイルに既に同じN文字列の検索語が登録されているか確認する。検索語ファイルに同じN文字列の検索語が登録されていない場合、検索語ファイルに検索語を登録し、文書IDファイルの文書IDに文書ID、文書IDポインタ(検索語の出現位置を探すための文書IDファイル内の位置を示すポインタ。以下、文書IDPという。)に空(NULL)、出現位置ファイルの出現位置に出現位置、出現位置ポインタ(以下、出現位置P)に空(NULL)を登録する。検索語ファイルに同じN文字列の検索語が登録されている場合、検索語の文書IDPをたどり、文書IDファイルの文書IDPを確認し、文書IDPが空(NULL)になるまでたどっていく。空(NULL)になっている文書IDPに新たに登録する検索語のポインタを追加し、文書IDに文書ID、文書IDPに空(NULL)を登録する。このようにして、図7(c)に示すような検索語ファイルが得られる。
図7(a)の例では、文書01内にN文字列「私は」が2回出現する。このような場合、重複するため、検索語ファイルには1つしか登録されないが、同一文書内で重複した場合、図7(c)に示した出現位置ファイル内の出現位置Pが記録される。また、図7(b)に示すように、文書02にも検索語「私は」が出現する。このように別文書で重複した場合、図7(c)に示した文書IDファイル内の文書IDPが記録される。
続いて、従来の検索処理を図8のフローチャートを用いて説明する。ここでは、図7(a)(b)に示した文書から検索文字列「会社員」を検索する場合について説明する。まず、検索文字列を取得し、検索語に分ける(S11)。検索文字列「会社員」の場合、N文字列である検索語「会社」「社員」に分けられる。そして、検索語ファイルから検索語を探索する(S12)。具体的には、検索語「会社」を探索する。図7(c)の例では、検索語ファイルの検索語ポインタ(以下、検索語P)“9”でマッチする。
検索語がマッチした場合は、全ての検索語が終了したかどうかを判断する(S15)。終了していない場合には、検索語Pから次の検索語を探索する(S16)。上記の例の場合、検索語「会社」を探索した時点では、検索語「社員」が残っているので、検索語「社員」の探索を行う。図7(c)の例では、検索語ファイルの検索語P “10”でマッチする。
検索文字列から切り出した全ての検索語が検索語ファイル内でマッチした場合には、文書ID探索のループ処理(L11)に進む。ループ処理L11は、全ての文書IDについての探索が行われるまで続けられる。まず、全ての検索語の文書IDPから文書IDを探索する(S13)。図7(c)の例では、検索語ファイルの「会社」に対応する文書IDP“10”で文書IDファイルから文書ID“2”が探索される。また、検索語ファイルの「社員」に対応する文書IDP“11”で文書IDファイルから文書ID“2”が探索される。
全ての検索語に対して、同じ文書IDがある場合には、出現位置探索のループ処理が行われる(L12)。ループ処理L12内で行われる処理は、出現位置Pから出現位置を探索する処理である(S14)。図7(c)の例では、「会社」に対応する出現位置P“11”が記録されているので、出現位置P“11”で出現位置ファイルを探索し、出現位置“3”が探索される。
また、「社員」に対応する出現位置P“12”が記録されているので、出現位置P“12”で出現位置ファイルを探索し、出現位置“4”が探索される。検索語「会社」「社員」の出現位置の特定は図7(c)に示した矢印の流れに従って行われることになる。検索語「会社」が、文書ID“2”、出現位置“3”、 検索語「社員」が、文書ID“2”、出現位置“4”であり、同一文書IDで出現位置が連続するので、検索文字列「会社員」が、ヒットすることになる。
特許第3095552号
しかしながら、上記従来の手法では、検索漏れを防ぐことはできるが、検索時に文書IDの他に文字列の出現位置情報も利用するため、インデックスサイズが大きい、検索速度が遅い等の問題がある。
そこで、本発明は、N−グラムの手法を用いた場合に、インデックスサイズを小さくすることができるとともに、検索速度を速くすることが可能な検索装置を提供することを課題とする。
上記課題を解決するため、本発明では、検索対象とする文書データを蓄積した文書記憶手段と、前記文書記憶手段に記憶された各文書データについて、文書データ内の文字列から、所定の数Nにより、連続するN文字を、先頭を1文字ずつずらして切り取って作られるN文字列を検索語とし、各検索語を検索語2として登録し、当該各検索語2ごとに文書データを特定する文書IDを記録した検索語2ファイルと、同一N文字列となる検索語については、重複させずに1つだけ検索語1として登録するとともに、当該各検索語1ごとに検索語2ファイル内の同一N文字列の検索語2へのポインタを記録した検索語1ファイルからなるインデックスデータを記録したインデックス記憶手段と、検索キーとなる文字列である検索文字列を入力する検索文字列入力手段と、前記入力された検索文字列から、連続するN文字を、先頭を1文字ずつずらして切り取って作られるN文字列を検索語とし、当該先頭の検索語で前記検索語1ファイルを探索し、見つかった場合に、前記先頭の検索語と同一N文字列の検索語2の後続の検索語2と、前記先頭の検索語の後続の検索語との照合を行い、前記入力された検索文字列から得られた全ての検索語について、前記検索語2と一致した場合に、各検索語2に対応する文書IDを取得する検索手段と、前記取得した文書IDに対応する文書データを出力する文書出力手段を有する検索装置を提供する。
本発明によれば、N−グラムの手法を用いた場合に、インデックスサイズを小さくすることができるとともに、検索速度を速くすることが可能となる。
以下、本発明の実施形態について図面を参照して詳細に説明する。まず、検索用のインデックスの作成について説明する。図1(a)(b)に検索対象とする文書の一例を示す。これは、図7(a)(b)に示した文書01、文書02と同一のものである。インデックスの作成は、コンピュータが専用のプログラムを実行することにより行われる。
なお、本実施形態では、N−グラムのN=2とする。まず、文書を2文字ずつの検索語に区切る。このとき、各検索語の先頭は1文字ずつ移動させる。そして、検索語1ファイルに検索語1を登録する際、検索語1ファイルに既に同じN文字列の検索語1が登録されているか確認する。検索語1ファイルに同じN文字列の検索語が登録されていない場合、検索語1ファイルに検索語を登録し、検索語2ファイルの検索語2に検索語、文書IDに文書IDの値、文書IDPに空(NULL)、検索語1ファイルの検索語2ポインタ(以下、検索語2P)に検索語2ファイルの空きポインタ位置を登録する。検索語1ファイルに同じN文字列の検索語が登録されている場合、検索語1の検索語2Pをたどり、検索語2ファイルの文書IDPを確認し、文書IDPが空(NULL)になるまでたどっていく。空(NULL)になっている文書IDPに新たに登録する検索語2のポインタを追加し、検索語2に検索語、文書IDに文書IDの値、文書IDPに空(NULL)を登録する。さらに、上記従来技術と異なるのは、「。」を区切りとし、検索語の先頭としないことである。本実施形態では、「。」を示す文字コードをあらかじめ区切りとして設定しておき、コンピュータは、「。」を検出した場合には、文書中の次の文字を、次の検索語の先頭とする処理を行う。本実施形態では、「。」を区切りとして検索語の先頭としないようにしているが、これは、「。」が文章の区切りとして用いられる文字であり、「。」を先頭とする文字列を検索語とすると、無駄なインデックスを作成することになるからである。この規則に従ったプログラムをコンピュータが実行し、図1(c)に示すような検索語1ファイル、検索語2ファイルが作成される。文書IDP(ポインタ)は、その検索語の出現位置を探すための文書IDファイル内の位置を示すポインタである。
図1(a)の例では、文書01内に検索語「私は」が2回出現する。このような場合、重複するため、検索語1ファイルには1つしか登録されないが、同一文書内で重複した場合、図1(c)に示した検索語2ファイル内に記録される。また、図1(b)に示すように、文書02にも検索語「私は」が出現する。このように別文書で重複した場合も、図1(c)に示した検索語2ファイル内に記録される。
検索語1ファイルには、各検索語に対応付けて検索語2Pが記録される。また、検索語2ファイルには、各検索語が出現する文書IDと、文書IDPが記録される。
次に、本発明に係る検索装置について説明する。図2は、本発明の検索装置の構成を示す機能ブロック図である。図2において、10は文書記憶手段、20はインデックス記憶手段、30は検索文字列入力手段、40は検索手段、50は文書出力手段である。
文書記憶手段10は、多数の文書データを蓄積したものである。各文書データには、各文書データを特定する文書IDが付されており、この文書IDを特定することにより対応する文書データの抽出が可能となっている。インデックス記憶手段20は、文書記憶手段10に蓄積された文書データのインデックスデータを記録したものである。このインデックスデータは、上述のように図1(c)に示したような形式となっている。文書記憶手段10、インデックス記憶手段20は図2の例では分離して示しているが、物理的には1つの記憶装置に設けられていても、複数の記憶装置に分離して設けられていても良い。現実には、コンピュータに接続されたハードディスク等の外部記憶装置にそれぞれ所定の領域を確保して設けられることになる。
検索文字列入力手段30は、検索キーワードとなる文字列である検索文字列を入力する機能を有しており、キーボード等の入力機器を用いて指定された検索文字列を入力する。検索手段40は、入力された検索文字列を用いて、インデックス記憶手段20内のインデックスを参照し、一致するN文字列が存在するかどうかを照合し、検索文字列から切り出した先頭のN文字列と一致する検索語を検出し、検索文字列から切り出した後続のN文字列と検出した検索語に後続する検索語が一致するかどうかを判断することにより、該当する文書IDを取得する。文書出力手段50は、検索手段40が取得した文書IDに対応する文書データを出力する機能を有している。図2に示した装置は、現実には、コンピュータに専用プログラムを記録しておき、この専用プログラムをコンピュータが実行することにより実現される。
続いて、本発明の検索処理を図3のフローチャートを用いて説明する。ここでは、図1(a)(b)に示した文書から検索文字列「会社員」を検索する場合について説明する。検索文字列入力手段30から検索文字列が入力されると、検索手段40は、入力された検索文字列をN文字列の検索語に分ける(S1)。N=2の場合、検索文字列「会社員」の先頭の検索語は「会社」、次の検索語は「社員」となる。そして、検索手段40は、検索語1ファイルから検索語を探索する(S2)。具体的には、まず、検索語「会社」を探索する。図1(c)の例では、検索語ファイルの検索語P“8”でマッチする。
検索語が検索語1ファイル内でマッチした場合には、検索手段40は、検索語2探索のループ処理(L1)に進む。ループ処理L1は、全ての検索語2についての探索が行われるまで続けられる。具体的には、その検索語の検索語2Pから検索語2を探索する(S3)。図1(c)の例では、検索語1ファイルの「会社」に対応する検索語2P“10”で検索語2ファイルから検索語2 「会社」が探索される。そして、検索語2ファイル内で検索語2Pが存在する間、検索手段40は、検索語2探索のループ処理を行う。
図1(c)の例では、検索語2ファイル内の検索語2「会社」には、文書IDPが記録されていないので、検索手段40は、検索語2「会社」の探索を終了する。並行して、検索手段40は、探索の結果見つかった各検索語2「会社」の次の検索語2が、検索文字列から分けられた検索語「社員」と一致するかどうかの判断を行う。図1(c)の例では、検索語2ファイルにおける位置“10”の次の位置“11”の検索語2が「社員」であり、検索語「社員」と一致するので、検索手段40は、検索語2ファイル内に検索語「会社」「社員」が連続して存在することを確認する。検索語「会社」「社員」の探索は図1(c)に示した矢印の流れに従って行われることになる。検索語と一致する検索語2の文書IDがいずれも“2”で同一であるので、検索手段40は、文書ID“2”を取得する。これにより、検索文字列「会社員」が、ヒットしたことになる。
文書出力手段50は、検索手段40が取得した文書ID“2”で、文書記憶手段10を参照し、文書ID“2”に対応する文書データを出力する。
従来手法と本発明を比較してみる。図4は、従来のインデックスデータと本発明のインデックスデータの構造を示す図である。従来のインデックスデータは、図4(a)に示すように、検索語ファイル、文書IDファイル、出現位置ファイルの3つのファイルを有し、検索語1つの記録に5バイトを要し、他の項目については全て4バイトを要する。本発明のインデックスデータは、図4(b)に示すように、検索語1ファイル、検索語2ファイルの2つのファイルを有し、検索語1、検索語2については検索語1つの記録に5バイトを要し、他の項目については全て4バイトを要する。
図5は、平均1万文字の文書1000万件分でインデックスを作成したときの容量を示す図である。数字の単位は、GB(ギガバイト)である。従来手法と本発明を比べると、検索語の重なる割合に関係なく、従来の文書ファイルと出現位置ファイルの合計と、検索語2ファイルの差分がそのまま容量の差になっていることがわかる。図5の例の場合、本発明を用いることにより、従来より25〜30%程度容量を削減することができる。
図6は、従来手法と本発明の処理回数を示す図である。図6に示すように、従来手法では検索語数に比例してループ数も比例する。これは、図8に示したように、各検索語についてL11、L12の二重のループ処理が繰り返されるからである。これに対して本発明では、検索語数に関係無くループ数は一定である。これは、図3に示したように、検索語が検索語2ファイルでマッチした場合、次の検索語がマッチするかどうかについても連続して確認するので、ループが増えることがないためである。
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、図2に示した検索装置を、検索サーバとし、Webサーバと連携し、ネットワークから送信されてきた検索要求に対して応えるようにしても良い。この場合、ネットワークからWebサーバが受信した検索クエリから検索文字列を抽出して、検索文字列入力手段30が検索文字列を入力する。そして、検索処理後、文書出力手段50が、Webサーバを介して送信元に検索結果である文書データを送信する。
また、上記実施形態では、「。」のような所定の文字コードを区切りとして設定し、これを先頭とする文字列を検索語としないようにしたが、多少のインデックスの増加を許容するのであれば、必ずしも、所定の文字コードを区切りとして設定しておく必要はない。
検索対象とする文書、本発明で用いるインデックスデータの一例を示す図である。 本発明に係る検索装置の一実施形態を示す構成図である。 本発明に係る検索装置の処理概要を示すフローチャートである。 従来のインデックスデータと本発明のインデックスデータの構造を示す図である。 平均1万文字の文書1000万件分でインデックスを作成したときの容量を示す図である。 従来と本発明の処理回数を示す図である。 検索対象とする文書、従来手法で用いるインデックスデータの一例を示す図である。 従来手法の処理概要を示すフローチャートである。
符号の説明
10・・・文書記憶手段
20・・・インデックス記憶手段
30・・・検索文字列入力手段
40・・・検索手段
50・・・文書出力手段

Claims (3)

  1. 検索対象とする文書データを蓄積した文書記憶手段と、
    前記文書記憶手段に記憶された各文書データについて、文書データ内の文字列から、所定の数Nにより、連続するN文字を、先頭を1文字ずつずらして切り取って作られるN文字列を検索語とし、各検索語を検索語2として登録し、当該各検索語2ごとに文書データを特定する文書IDを記録した検索語2ファイルと、同一N文字列となる検索語については、重複させずに1つだけ検索語1として登録するとともに、当該各検索語1ごとに検索語2ファイル内の同一N文字列の検索語2へのポインタを記録した検索語1ファイルからなるインデックスデータを記録したインデックス記憶手段と、
    検索キーとなる文字列である検索文字列を入力する検索文字列入力手段と、
    前記入力された検索文字列から、連続するN文字を、先頭を1文字ずつずらして切り取って作られるN文字列を検索語とし、当該先頭の検索語で前記検索語1ファイルを探索し、見つかった場合に、前記先頭の検索語と同一N文字列の検索語2の後続の検索語2と、前記先頭の検索語の後続の検索語との照合を行い、前記入力された検索文字列から得られた全ての検索語について、前記検索語2と一致した場合に、各検索語2に対応する文書IDを取得する検索手段と、
    前記取得した文書IDに対応する文書データを出力する文書出力手段と、
    を有することを特徴とする検索装置。
  2. 前記検索語1、検索語2は、文章の区切りと判断される所定の文字を先頭とするN文字列を除外したものとすることを特徴とする請求項1に記載の検索装置。
  3. コンピュータを、請求項1に記載の検索手段として機能させるためのプログラム。
JP2007336921A 2007-12-27 2007-12-27 検索装置 Expired - Fee Related JP5083612B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007336921A JP5083612B2 (ja) 2007-12-27 2007-12-27 検索装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007336921A JP5083612B2 (ja) 2007-12-27 2007-12-27 検索装置

Publications (2)

Publication Number Publication Date
JP2009157765A true JP2009157765A (ja) 2009-07-16
JP5083612B2 JP5083612B2 (ja) 2012-11-28

Family

ID=40961701

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007336921A Expired - Fee Related JP5083612B2 (ja) 2007-12-27 2007-12-27 検索装置

Country Status (1)

Country Link
JP (1) JP5083612B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06162092A (ja) * 1992-11-18 1994-06-10 Fujitsu Ltd 情報検索装置
JP2006172363A (ja) * 2004-12-20 2006-06-29 Hitachi Ltd 文書検索装置、インデクス再構成方法及びプログラム
JP2006209399A (ja) * 2005-01-27 2006-08-10 Fuji Xerox Co Ltd 文書検索装置および方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06162092A (ja) * 1992-11-18 1994-06-10 Fujitsu Ltd 情報検索装置
JP2006172363A (ja) * 2004-12-20 2006-06-29 Hitachi Ltd 文書検索装置、インデクス再構成方法及びプログラム
JP2006209399A (ja) * 2005-01-27 2006-08-10 Fuji Xerox Co Ltd 文書検索装置および方法

Also Published As

Publication number Publication date
JP5083612B2 (ja) 2012-11-28

Similar Documents

Publication Publication Date Title
US10169354B2 (en) Indexing and search query processing
US8886617B2 (en) Query-based searching using a virtual table
JP2896634B2 (ja) 全文登録語検索装置および全文登録語検索方法
KR100638695B1 (ko) 구조화 문서의 데이터를 검색하는 장치 및 방법
CN112231321B (zh) 一种Oracle二级索引及索引实时同步方法
US9715525B2 (en) Method and system for searching and storing data
JP4247108B2 (ja) 構造化文書検索方法、構造化文書検索装置、及びプログラム
JPWO2014174599A1 (ja) 計算機、記録媒体及びデータ検索方法
JP4237813B2 (ja) 構造化文書管理システム
JP2007304796A (ja) データベース解析システム及びデータベース解析方法及びプログラム
EP3635580A1 (en) Functional equivalence of tuples and edges in graph databases
US20140324878A1 (en) System and method for search indexing
JPH0869476A (ja) 検索システム
JP2004220176A (ja) データベース検索システム、その検索方法及び検索に用いられるデータファイルの作成方法並びにデータファイルを格納した記録媒体
JP5083612B2 (ja) 検索装置
JP2007133682A (ja) 全文検索システム、及び、その全文検索方法
WO2011099082A1 (ja) データベース管理システム
JP6753190B2 (ja) 文書検索装置及びプログラム
JP2002140218A (ja) データ処理方法、コンピュータ読み取り可能な記録媒体及びデータ処理装置
EP3014482B1 (en) Method and system for searching and storing data
JP5906810B2 (ja) 全文検索装置、プログラム及び記録媒体
JP4304226B2 (ja) 構造化文書管理システム、構造化文書管理方法及びプログラム
JP2001092831A (ja) 文書検索装置及び文書検索方法
JP6627809B2 (ja) データベース処理装置、システム、方法およびプログラム
JP2007156844A (ja) データ登録・検索システムおよびデータ登録・検索方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101028

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120807

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: 20120809

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120822

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees