JP4319827B2 - 文書検索プログラム - Google Patents

文書検索プログラム Download PDF

Info

Publication number
JP4319827B2
JP4319827B2 JP2002328687A JP2002328687A JP4319827B2 JP 4319827 B2 JP4319827 B2 JP 4319827B2 JP 2002328687 A JP2002328687 A JP 2002328687A JP 2002328687 A JP2002328687 A JP 2002328687A JP 4319827 B2 JP4319827 B2 JP 4319827B2
Authority
JP
Japan
Prior art keywords
character string
document
search
character
data
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
JP2002328687A
Other languages
English (en)
Other versions
JP2004164223A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002328687A priority Critical patent/JP4319827B2/ja
Publication of JP2004164223A publication Critical patent/JP2004164223A/ja
Application granted granted Critical
Publication of JP4319827B2 publication Critical patent/JP4319827B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Description

【0001】
【発明の属する技術分野】
この発明は、文書検索プログラムに関し、特に、検索情報の文字列が効率よく検索できる文書検索プログラムに関する。
【0002】
【従来の技術】
最近のネットワーク技術の進展に伴って、ネットワーク上に存在する大量の文書、場合によってはギガバイトクラスの情報を扱えるようになってきた。これに対し、ある検索キーワードをもとに有用な情報とそうでない情報とを取捨選択する全文検索(すべての文書のすべての文字列を検索すること)の必要性が重要になりつつある。
【0003】
かかる検索において、あるキーワードを含む文書を見つけ出す単純な方法として、蓄積された文書について、文書とキーワードを単純に文字照合するものである。通常、大量に蓄積された文書は磁気ディスク装置や光ディスク装置などの記憶装置に格納されており、全文書を順次、ディスクから読み出し単純文字照合を行っていたのでは、物理的に高速な検索速度は望めない。
【0004】
そこで、蓄積すべき文書の構造化を行い記憶装置に格納することにより、全文検索速度の向上が図られてきた(例えば、構造化の例として特許文献1参照)。従って、ソフトウェアによる検索速度を向上させるために、文書をいかに構造的に格納し、格納の仕方に合わせた検索アルゴリズムをいかに設計するかが焦点とされてきた(例えば、特許文献2参照)。
【0005】
以下、特許文献2において開示されている技術を説明するために必要となる概念を説明する。全文検索方法のひとつにNグラム方式と呼ばれるものがあり、特許文献2では、これを各文書のインデックスの作成に応用する技術を開示している。以下、本発明に関連するNグラム方式について説明する。
【0006】
日本語の文書では分かち書きをしないため、単語の切り出し方が問題となる。自然言語の語句や文を構成する隣接する2文字や3文字の文字列を2グラム、3グラム、一般に隣接する文字からなる長さNの文字列は、Nグラムと呼ばれている。例えば、「図書目録」という語を、先頭から1文字ずつずらして順に2文字ずつ切り出せば、連鎖する2文字の文字列である「図書」、「書目」、「目録」が2グラムとなる。グラムとは、「書かれたもの」を意味する語で、NグラムはN文字と読み返ることができる。
【0007】
Nグラム方式の検索では、Nグラムの連結とそれらに対応する出現位置情報の連結を照合することで、任意の長さの文字列の出現位置を特定する。
【0008】
特許文献2では、データベースにNグラムの文字位置情報をそのNグラムの種類と文脈に分類し、インデックスとして格納することにより、検索時において、検索キーワードのNグラムを種類と文脈に分類し、インデックスを検索することにより該当する検索キーワードの出現位置を読み出す技術を開示している。
【0009】
【特許文献1】
特開平5−120325号公報
【特許文献2】
特開平9−288676号公報
【0010】
【発明が解決しようとする課題】
しかしながら、特許文献2の検索方法では、検索の対象となる文書の数が大きくなれば、検索キーワードと全文書とのNグラム方式による照合において、照合の組み合わせの数が巨大になり、検索処理速度の向上が望めない。また、複数の文書の部分データを書き換える必要性が生じた場合、一旦インデックスが作成されてしまうと、巨大なデータであるインデックス情報のどの部分を書き換え修正すればよいのかという組み合わせ的に困難な問題が生じる。
【0011】
このため、文書が効率よく抽出でき、文書の修正時においてインデックスの作成変更が容易であるように、文書をいかにデータベースに構造化して格納するかという問題と、この構造化された情報を利用して、目的(文書検索、文書更新など)に応じた効率のよいアルゴリズムを設計することが極めて重要な課題となっている。
【0012】
この発明は、上記従来技術による課題を解決するためになされたものであり、全文書内の各文書のNグラムに特別な関係を付与し、この情報をN文字インデックス情報として記憶装置に構造化して格納することにより、全文検索の処理効率の向上大きく寄与することが可能な文書検索プログラムを提供することを目的とする。
【0013】
【課題を解決するための手段】
本発明は、上記目的を達成するためになされたものであり、請求項1の発明に係る文書検索プログラムは、検索対象の文書から、指定された検索文字列を含む文書を検索する文書検索プログラムであって、前記検索文字列からN文字の第1の部分文字列および第2の部分文字列を取得する部分文字列取得手順と、前記検索対象の文書から、1文字ずつずらして切り出されたN文字の文字列毎に作成されたデータであって、各データが、対応する文字列が切り出された文書を識別するための文書番号と、前記文字列の前もしくは後に同一文書から切り出された文字列を識別するための連結関係番号とを含むデータを記憶する記憶手段から、前記第1の部分文字列と同一の文字列に対応する第1の対応データを取得するデータ取得手順と、前記第1の対応データのそれぞれを、前記第1の部分文字列および第2の部分文字列のずれの大きさだけ、それぞれの第1の対応データから前記連結関係番号を辿って得られる他のデータである第2の対応データと組み合わせる組合せ作成手順と、前記組合せ作成手順によって作成された組合せのうち、前記第2の対応データが、前記第2の部分文字列と同一の文字列に対応する組合せを抽出する組合せ抽出手順と、前記抽出手順によって抽出された組合せに含まれるデータが含む文書番号に対応する文書を示す情報を検索結果として出力する出力手順とをコンピュータに実行させることを特徴とする。
【0023】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係る文書検索プログラム(N文字インデックス検索プログラム)の好適な実施の形態を詳細に説明する。なお、以下に示す実施の形態1では、N文字インデックスの作成プログラムとそれに基づくN文字インデックス検索プログラムの概念と、それらを実行するコンピュータシステムについて具体的に説明し、実施の形態2では、全文書中からある特定文書に関する情報を削除する場合、全文書を保持したN文字インデックスを特定文書の情報を削除したN文字インデックスに更新するN文字インデックス更新プログラムについて具体的に説明する。さらに、実施の形態3では、N文字インデックス作成プログラムおよびN文字インデックス検索プログラムを実行するコンピュータシステムについて詳細に説明する。
【0024】
(実施の形態1)
まず、本実施の形態1に係るN文字インデックス作成プログラムおよびN文字インデックス検索プログラムの概念構成について説明する。図1は、本発明の実施の形態1に係るN文字インデックス作成プログラムおよびN文字インデックス検索プログラムの処理概念を示すフローチャートである。図1の説明の前に、図1で必要となるN文字インデックス作成プログラムおよびN文字インデックス検索プログラムを実行するコンピュータシステムについて概略を説明する。
【0025】
図2に示すように、このN文字インデックス作成プログラムおよびN文字インデックス検索プログラムを実行するコンピュータシステムは、モニタ10、入力端末20、サーバ30を備えている。
【0026】
モニタ10、入力端末20、サーバ30はコンピュータシステムを管理する管理者およびコンピュータシステムを利用するユーザによって使用される。入力端末20は、検索時における検索キーワード(以下の説明において、検索文字列と呼ぶことにする)の入力や、文書を変更する場合に使用される。
【0027】
サーバ30は、文書データ記憶部101、検索部102を備える。文書データ記憶部101は、複数の文書が格納されており、各文書には、数値で表される文書番号や非数値、数字や記号列など(例えば、文書番号001、文書番号docなど)で表される文書番号とともに、各文書に文字列または記号列からなる題名が付与されている。なお、全文書のデータがサーバ30の記憶容量を越える場合は文書データ記憶部101の文書データをデータベースに格納してもよい。
【0028】
検索部102は、N文字インデックス作成部201およびN文字インデックス検索部202を備えている。N文字インデックス作成部201は、文書データ記憶部101の文書を、ハッシュテーブル201bを参照しながら、各文書から切り出される部分N文字列の全文書内の位置情報と部分N文字列間のつながりを特定する関係をN文字インデックスとして位置情報リスト201aに書き込む。
【0029】
ここで、N文字インデックス作成部201は、ハッシュテーブル201bを、いろいろなデータに対して、なるべく一様になる数値を発生されるようなハッシュ関数とよばれる一般によく知られた関数を用いて作成する。
【0030】
N文字インデックス検索部202は、N文字インデックス作成部201によって作成されたN文字インデックスを用いて、入力端末20から入力された検索文字列に関連する文書を検索する。
【0031】
ここで、本発明の実施の形態1に係るN文字インデックス作成プログラムおよびN文字インデックス検索プログラムの処理概念を説明する。図1は、本発明の実施の形態1に係るN文字インデックス作成プログラムおよびN文字インデックス検索プログラムの処理概念を示すフローチャートである。処理手順は、N文字インデックス作成処理(ステップS1〜ステップS3)とN文字インデックス検索処理(ステップS10〜ステップS14)の2つの処理手順からなる。
【0032】
N文字インデックス作成処理手順を説明する。文書データ記憶部101に格納されている各文書の文書データ(題名)を検索部102に入力し(ステップS1)、これをもとに検索部102がN文字インデックスを作成する(ステップS2)。その後、検索部102が作成したN文字インデックスは文書データ記憶部101に出力(ステップS3)し、文書データ記憶部101は該N文字インデックスを記憶する。
【0033】
N文字インデックス検索処理手順を説明する。ユーザまたはシステム管理者が入力端末20から検索文字列を入力し(ステップS10)、N文字インデックス検索部202は、この入力された検索文字列を分割し(ステップS11)、その後、検索文字列の文字数とN文字列の数値Nによって決まる各分割文字列間の長さを算出する(ステップS12)。N文字インデックス検索部202は、N文字インデックス作成処理手順において作成され文書データ記憶部101に記憶されているN文字インデックスを用いて、各文書の部分N文字情報をつないだものと、検索文字列の分割文字列をつないだものとを逐次照合しつつ、文字列検索を行い(ステップS13)、全文書内の中から検索文字列に関連する文書を照合結果として出力する(ステップS14)。
【0034】
上述のN文字インデックス作成工程(ステップS2)、検索文字列分割工程(ステップS11)、および文字列検索工程(ステップS13)の詳細な説明は、それを説明するために必要なN文字インデックスについて、図3、4、および5の説明をした後におこなう。また、説明の便宜上、分割文字列長さ算出工程(ステップS12)も併せて後で行う。
【0035】
図3〜6を用いてN文字インデックス作成部201の具体的な作成および構成概念について説明する。図3は、N文字インデックスの概念を説明する説明図である。N文字インデックスは、位置情報リストとハッシュテーブルを有する。
【0036】
位置情報リスト(図3の(b))は、二次元配列となっており、行の要素としては文書番号、同一文字列接続関係、および連結関係が存在する。列毎に各Nグラムに関する情報を記載する。Nグラムは、各文書番号中の題名を一文字ずつずらしてN文字分切り出すことで作成する。
【0037】
行の各要素は以下のようになっている。文書番号は、Nグラムが出現した文書番号である。同一文字列接続関係は、位置情報リストの中で、文字列が同一で前回(または後)に出現したNグラムに関する情報が記載されている列の配列番号である。連結関係は、位置情報リストの中で、同一題名で一回前に切り出されたNグラムに関する情報が記載されている列の配列番号である。
【0038】
あるNグラムを基点とすると、一回前に切り出されたNグラムと、一回後に切り出されたNグラムを考えることができるが、次のNグラムの切り出し方として前あるいは後の何れか1つの連結関係の切り出し方を一方向連結関係と呼ぶことにする。これに対し、前後、両方の連結関係の切り出し方を双方向連結関係と呼ぶことにする。したがって、一方向連結関係を考える場合には、あるNグラムの先頭あるいは末尾がある。
【0039】
なお、図3の位置情報リストの配列番号に、listの隣にlist_beforeがあるがlistの隣にlist_afterであってもよい。
【0040】
ハッシュテーブル(図3の(a))も位置リストと同様に、二元配列となっており、列の要素としては、N文字列、同一文字列接続関係が存在する。行毎に各Nグラムに関する情報を記憶する。行数は、少なくとも出現したNグラムの全種類を格納できるくらい十分であるとする。
【0041】
列の各要素の概要は、以下のようになっている。N文字列は、Nグラムの文字列がバイト配列されている。同一文字接続関係は、位置情報リストの中で、文字列が同一で前回(または後)に出現したNグラムに関する情報が記載されている列の配列番号である。
【0042】
図4は、N文字インデックスの接続関係の概念を説明する説明図である。ハッシュテーブルと位置情報リストは、ハッシュテーブルの中の同一文字列接続関係で繋がっている。位置情報リスト内部では、各Nグラムに関する一方向連結関係が同一文字列接続関係によって形成されている。同一文字列接続関係により各Nグラムのリストが隣り合った形で作成され、ハッシュテーブルの中の同一文字列接続関係が各Nグラムのリストの先頭になっており、同一文字列接続関係を辿りつづけることで、これらのリストすべてを参照することができる。また、同一文字列接続関係および連結関係の最後尾には、つながりの終わりを示す数値「−1」が記憶されている。
【0043】
図5は、図3のN文字インデックス作成の具体例を示す図(その1)である。同図が示すとおり、N文字インデックス作成部201において、ハッシュテーブルが格納されており、文書データは文書データ記憶部101に格納されている。図5の(a)は、文書データであり、この例では、文書番号001は題名「図書目録」、文書番号002は題名「図書情報」、文書番号003は題名「目録情報」をそれぞれ文書データとして持っている。
【0044】
次に、ハッシュテーブルの具体例である図5の(b)を説明する。文書番号001の「図書目録」を2グラムに切り分け「図書」、「書目」、「目録」とし、それぞれに配列番号0、1、2を割り振り、同様に、その他の文書に関しても、それぞれの2グラムに配列番号を割り振る。
【0045】
その結果、文書番号001の「図書」は「0」、「書目」は「1」、「目録」は「2」と配列番号が付与され、文書番号002の「図書」は「3」、「書情」は「4」、「情報」は「5」と配列番号が付き、文書番号003の「目録」は「6」、「録情」は「7」、「情報」は「8」と配列番号が付く。
【0046】
ハッシュ関数は、配列番号「0」と「3」の「図書」の重複、配列番号「2」と「6」の「目録」の重複、配列番号「5」と「8」の「情報」の重複なしで、番号の付け替えを行う。例えば、ハッシュ関数は、「図書」は「0」、「書目」は「1」、「目録」は「2」、「書情」は「3」、「情報」は「4」、「録情」は「5」と新たな番号を付与する。ここで、「0」〜「5」という数字を用いたが、実際はランダムな6個の異なる数字でもよいが、説明の便宜上これを用いる。
【0047】
この新たなハッシュ関数による番号と、各2グラムのもともとの配列番号の中で最初に出現した配列番号からなるテーブルがハッシュテーブルである。例えば、「情報」は文書番号002と文書番号003の中に出現するが、もともとの配列番号の中に最初に出現する配列番号(これを先頭配列番号と呼ぶことにする)「5」であるから、新たなハッシュ関数による番号「4」を持つ「情報」は、テーブルの中に「5」を先頭配列番号として持つ。
【0048】
図6は図3のN文字インデックス作成の具体例を示す図(その2)である。次に、「図書」に関するリストを示す図6の(a)を説明する。図5の(b)のハッシュテーブルに基づいて、最初の列の文書番号は「001」、連結関係の欄は、配列番号0の「図書」が配列番号1の「書目」につながっているので、「1」と記憶される。
【0049】
次に、同一文字列接続関係の欄は、全文書中で、先頭の配列番号である「図書」、すなわち配列番号0の同一文字列接続関係が、配列番号3の「図書」と同一文字列であるから、「3」と記憶される。配列番号3の「図書」は、他に出現しないので、同一文字列接続関係「−1」を記憶し、「図書」に関するリストの2列目は、文書番号は「002」、連結関係は「5」、同一文字列接続関係は「−1」となる。
【0050】
図6の(b)は、位置情報リストであり、その情報はハッシュテーブルに文書番号と連結関係を付加したものになっている。位置情報リストの欄の数値は、上記において説明したので省略する。
【0051】
図1に示したN文字インデックス作成の処理手順について説明する。図7は、図1に示したN文字インデックス作成の処理手順を示したフローチャートである。処理は基本的には各文書番号の題名を一文字ずつずらしてN文字をきりだしてゆき、それらを位置情報リストに格納する。以下に処理の詳細を説明する。
【0052】
同図に示すように、次に入力する位置情報リストの配列番号を示す値「list」(図3参照)に初期値「1」を代入し、文書番号を示す値「doc」(図2参照)に初期値「1」を代入する(ステップS100)。Nグラムの切り出しを開始し始める位置を示す値「pos」に初期値「1」を代入し、前回切り出したNグラムの配列番号を示す値「list_before」(図3参照)に初期値「−1」を代入する(ステップS101)。文書番号doc番の題名中のpos番目から(pos+N)番目を切り出す(ステップS102)。ステップS101で切り出したNグラムをハッシュ関数に入力し、ハッシュ値「hash_val」を算出する(ステップS103)。位置情報リストlist番目の同一文字列接続関係にハッシュテーブルhash_val番目の同一文字列接続関係の値を代入する(ステップS104)。位置情報リストlist番目の連結関係に「list_before」を代入する(ステップS105)。「list_before」に「list」を代入する(ステップS106)。「list」に「1」を加算し、「pos」に「1」を加算する(ステップS107)。文書番号doc番目の題名から全て切り出すまで、ステップS102からステップS107までを繰り返す(ステップS108)。「doc」に1加算する(ステップS109)。全文書が終了するまでステップS101からステップS109)を繰り返す(ステップS110)。
【0053】
次に、図8および9を用いて、図1で示した検索文字列の分割処理の手順について説明する。検索文字列の分割処理では、検索文字列を複数のNグラムに分割し、各分割された文字列をstringiという変数で表し、その文字列間の長さをconnect_nextjという変数で表すことにする。ここで、添え字i=1〜k、j=1〜k−1を走る。kは検索文字列の長さMをNで割った数を小数第一位で繰り上げた数である。connect_nextjの数値は通常Nであるが、検索文字列がNで割り切れない場合は、最後のconnect_nextjはN未満になる場合がある。
【0054】
図8は図1に示した検索文字列分割の一例を示す図である。同図示すとおり、Nが3であり、検索文字列が「検索データベース」である場合、最後のNグラムが「ベース」になるようにするため、検索文字列を「検索デ」、「ータベ」、「ベース」と2番目と3番目の分割文字列に重なりを作る。1番目の分割文字列の長さは3であるが、2番目の分割文字列の長さは2となる。また、分割文字列「ベース」に対応する「connect_next」は存在しない。
【0055】
図9は、図8の検索文字列から分割文字列を作成し、分割文字列間の長さを算出する検索文字列長さ算出のフローチャートである。以下、処理手順を説明する。総文字数を示す値「length」に初期値として検索文字列の文字数を代入する(ステップS200)。「i」に「1」を代入する(ステップS201)。「pos」に「1」を代入する(ステップS202)。lengthがNより大きい場合は、ステップS204に、そうでない場合は、ステップS211に進む(ステップS203)。検索文字列のpos〜(pos+N−1)番目をstringiに代入する(ステップS204)。lengthからNを減算し、減算した値を新たにlengthと定義する(ステップS205)。lengthがN以上の場合はステップS207へ、そうでない場合はステップS209へ進む(ステップS206)。「connect_nexti」に「N」を代入し、ステップS208に進む(ステップS207)。「connect_nexti」に「length」を代入し、ステップS209へ進む(ステップS208)。「pos」に「connect_nexti」を加算する(ステップS209)。「i」に「1」を加算し、ステップS203に進む(ステップS210)。検索文字列のpos〜(pos+N−1)番目をstringiに代入(ステップS211)。
【0056】
図1に示した文字列検索の処理手順を説明する前に、文字列検索の処理手順を、図5および図6を用いて具体的に説明する。図5の(a)に記載の全文書の中から「図書目録」を検索文字列として、N=2の場合のN文字インデックステーブルを作成した場合の具体的な検索の手続きを説明する。
【0057】
入力としての検索文字列「図書情報」は、「図書」と「情報」に分割される。「図書情報」は4文字の長さであり、2グラムで文書を記述するので、「図書」は長さ2と算出される。「情報」は最後の分割文字列なので長さが定義されていない。「図書」と「目録」をハッシュ関数に入力し、「図書」に関する情報が記載されている先頭の配列番号「0」と「目録」に関する情報が記載されている先頭の配列番号「2」が導出される。
【0058】
次に、配列番号「0」から同一文字列接続関係を位置情報リスト(図6の(b))上で辿り「3」を取得、また、配列番号「2」から同一文字列接続関係を位置情報リスト(図6の(b))上で辿り「6」を取得。この例では、「図書」と「目録」はともに全文書内に2回しか出現していないので位置情報リスト(図6の(b))を容易に辿ることが出来る。従って、接続関係により「図書目録」を表現する組み合わせとして「0−2」、「0−6」、「3−2」、「3−6」を考えることが出来る。
【0059】
一方で、検索文字列の先頭である分割文字列「図書」から、長さ2すなわち、2つの連結関係を配列番号「0」から辿り「2」を取得し、同様に「3」から「5」を取得する。従って、連結関係により「図書目録」を表現するつながりは「0−2」と「3−5」の組み合わせであることがわかる。
【0060】
上記接続関係によって得られた組み合わせと上記連結関係によって得られた組み合わせとを比較照合すると共通の検索照合文字列として「0−2」の組み合わせが抽出され、「0−2」に関連する文書番号001の文書が検索結果として出力される。
【0061】
なお、検索文字列が「図書情」であった場合の分割文字列の長さについて説明する。検索文字列「図書情」は「図書」と「書情」の2グラムに分割される。「書情」は最後の分割文字列なので長さが定義されない。この場合の「図書」は見かけ上、長さ2であるが「書情」と「書」を共有しているので、「図書」は長さ「1」と算出される。
【0062】
次に、図1に示した文字列検索の処理手順を説明する。図10は、図1に示した文字列検索の処理手順のフローチャートである。文字列検索では、位置情報リストから各stringiに関する同一文字列接続関係を辿りつつ、前回の連結関係であるconnect1との照合を行う。照合した結果、連結するものはconnect2(中間バッファの役割をする)を連結結果として再度connect1に格納する。stringiに対するハッシュ値hash_valを算出する(ステップS300)。ハッシュテーブルhash_val番目の同一文字列接続関係から辿りつつ、同一文字列接続関係先の示す配列番号とconnect1内部の値を照合して配列番号が同じものを抽出(i=1の時は、ステップS301は行わない。すなわち、初回のループでは行わない。)する(ステップS301)。ステップS301で抽出した配列番号に対して、connect_nexti個分連結関係で辿った先の配列番号をconnect2に格納(iが最大値を取る場合は、ステップS302は行わない。すなわち、最後のループでは行わない。)する(ステップS302)。ステップS301、ステップS302を、同一文字列接続関係の値が「−1」になるまでループを繰り返す(ステップS303)。connect2をconnect1に入力する(ステップS304)。ステップS300〜ステップS304をiが最大値より大きくなるまでループを繰り返す(ステップS305)。connect1のリスト番号に記載されている文書番号を検索結果として出力する(ステップS306)。
【0063】
なお、ここではN文字インデックスからN文字列に関する連結関係を抽出するのにハッシュ関数を使用しているが、例えば木構造による探索を行って、連結関係を抽出してもよい。
【0064】
上述してきたように、本実施の形態1では、複数の文書の文字列および検索情報の文字列から作成したN文字インデックスを作成し、そのN文字インデックス上の部分N文字列の関係を辿ることによって、検索情報の文字列が効率よく検索することが可能となる。
【0065】
(実施の形態2)
PC内にある文書検索データからある文書番号のデータを削除するため、インデックス内部の情報を削除する実施例を示す。削除処理では、実際にはユーザレスポンスを上昇されるために実際には位置情報リスト内の文書番号を削除記号(例えば「−1」)に置き換えている。実施の形態2を実現するコンピュータシステムは、実施の形態1のものと全く同一とする。同様に、インデックス内部の詳細も全く同一とする。
【0066】
特定の文書を全文書の中から削除する処理手順について説明する。図11は、本実施の形態2に特定の文書を全文書の中から削除する処理手順を示すフローチャートである。削除したい文書番号の題名を図1の検索文字列に入力する(ステップS21)と、文字列分割処理において先頭のNグラム(string1)が出力される(ステップS22)。文書番号、string1およびインデックスを文書削除処理に入力する(ステップS23)とインデックスからその文書番号に関する情報が削除された後、新たなインデックスが作成され(ステップS24)、新たなインデックスが出力される(ステップS25)。
【0067】
文字列分割処理手順は、上述した通りなので省略する。以下、文書削除処理手順の詳細を図12に基づいて説明する。位置情報リスト内の、ある文書番号に関する情報を削除する。string1に対するハッシュ値hash_valを算出する(ステップS400)。ハッシュテーブル中の同一文字列接続関係を辿る(ステップS401)。辿った同一文字列接続関係先で削除したい文書番号が見つかったら、ステップS403へ、そうでなかったらステップS401へ行く(ステップS402)。削除したい文書番号に削除記号を入力する(ステップS403)。削除したい文書番号に関する連結関係を辿る(ステップS404)。削除したい文書番号に削除記号を入力する(ステップS405)。連結関係先で終端記号「−1」が見つかるまでステップS404、ステップS405を繰り返す(ステップS406)。
【0068】
上述してきたように、本実施の形態2では、削除後の検索時には、削除記号を有するものが抽出されても検索結果から除外することができる。また、削除記号を有する部分の領域を再利用したい場合や、削除記号を有する部分に張られている連結関係を作成しなおす場合などは、ユーザがシステムを利用していない時などを見計らって位置情報リストに対して処理を行うことができる。また、ユーザレスポンスを重視しない場合は、連結関係を双方向にすると、削除中に連結関係を張りなおすことや、削除された領域の再利用などが可能となる。
【0069】
また、ここではインデックスからN文字に関する連結関係を抽出するのにハッシュ関数を使用しているが、例えば木構造による探索を行って連結関係を抽出しても同様の効果が得られる。
【0070】
(実施の形態3)
本実施の形態3では、上記実施の形態1、2に示したN文字インデックス作成プログラムおよびN文字インデックス検索プログラムを実行するコンピュータシステムの詳細について説明する。
【0071】
図13に示すコンピュータシステム1000は、本体部1010、本体部1010からの指示により表示画面1020aに画像等の情報を表示するディスプレイ1020、このコンピュータシステム1000に種々の情報を入力するためのキーボード1030、ディプレイ1020の表示画面1020a上の任意の位置を指定するマウス1040、ローカルエリアネットワーク(LAN)1060または広域エリアネットワーク(WAN)に接続するLANインターフェース、インターネットなどの公衆回線1070に接続するモデム1050が備えられている。ここで、LAN1060は、ほかのコンピュータシステム(PC)1110、サーバ1120、プリンタ1130等とコンピュータシステム1000とを接続している。また、図14に示すように、本体部1010は、CPU1210、RAM1220、ROM1230、ハードディスクドライブ(HDD)1240、CD−ROMドライブ1250、FDドライブ1260、I/Oインターフェース1270およびLANインターフェース1280を備えている。
【0072】
このコンピュータシステム1000においてモデル構築プログラムを実行する場合、フロッピー(R)ディスク(FD)1080、CD−ROM1090、DVDディスク、光磁気ディスク、ICカード等の可搬型記憶媒体、モデム1050およびLANインターフェースを利用し回線を介して接続されたサーバ1120のデータベース、あるいは、ほかのコンピュータシステム(PC)1110のデータベースに格納等の記憶媒体に記憶されたモデル構築プログラムをコンピュータシステム1000にインストールする。インストールされたモデル構築プログラムは、HDD1240に記憶され、RAM1220、ROM1230などを利用してCPU1210により実行される。ここで、記憶媒体とは、CD−ROM1090、フロッピー(R)ディスク1080、DVDディスク、光磁気ディスク、ICカード等の可搬型記憶媒体やコンピュータシステム1000の内外に備えられたハードディスクドライブHDD1240等の記憶装置のほか、LAN1060を介して接続されたインストール元のモデル構築プログラムを保持するサーバ1120のデータベース、あるいは、ほかのコンピュータシステム1110並びにそのデータベースや、さらに公衆回線1070上の伝送媒体をも含むものである。
【0073】
上述してきたように、本実施の形態3では、実施の形態1、2に示したN文字インデックス作成プログラムおよびN文字インデックス検索プログラムをコンピュータシステム1000上で実行することで、実施の形態1、2に示した実施の形態1、2に示したN文字インデックス作成プログラムおよびN文字インデックス検索プログラムと同様の効果を、一般的なコンピュータシステムを用いて実現することができる。
【0074】
(付記1)複数の文書の文字列から切り出した各部分N文字列の位置関係を指定することによって前記複数の文書を構造化するためのN文字インデックス作成プログラムであって、
前記部分N文字列の全文書内の出現位置を指定する出現位置指定工程と、
前記出現位置指定工程により同一文書内の前記部分N文字列とその隣接部分N文字列との連結関係を指定する連結関係指定工程と、
前記出現位置指定工程により前記部分N文字列と全文書内の他の位置に現れた同一部分N文字列との接続関係を指定する接続関係指定工程と、
をコンピュータに実行させることを特徴とするN文字インデックス作成プログラム。
【0075】
(付記2)複数の文書の文字列から切り出した各部分N文字列の位置関係が指定されたN文字インデックス情報によって、複数の文書から検索文字列を含む文書を検索するN文字インデックス検索プログラムであって、
前記複数の文書の部分N文字列に関する全文書内における出現位置、同一文書内の前記部分N文字列とその隣接部分N文字列との連結関係、および前記部分N文字列と全文書内の他の位置に現れた同一部分N文字列との接続関係が特定されたN文字インデックスを保持するN文字インデックス保持工程と、
分割された検索文字列の各分割文字列間の長さを算出する分割文字列長さ算出工程と、
前記N文字インデックス保持工程により保持された前記接続関係をもとに、前記分割文字列に対応する部分N文字列の前記出現位置毎に、該出現位置から前記分割文字列長さ算出工程により算出された長さを用いて、前記分割文字列に対応する部分N文字列を前記連結関係によって連結して得られた文字列と前期検索文字列とを照合して、検索する文字列検索工程と、
を含んだことを特徴とするN文字インデックス検索プログラム。
【0076】
(付記3)分割文字列長さ算出工程は、前記検索文字列の文字数とN文字列の長さNとを比較し、検索文字列の各分割文字列間の長さを算出することを特徴とする付記2に記載のN文字インデックス検索プログラム。
【0077】
(付記4)前記文字列検索工程は、前記各分割文字列の先頭が前記N文字インデックスによって指定され、指定された各先頭部分N文字列の位置から前記N文字インデックスの前記連結関係を辿ることにより、前記先頭部分N文字列を隣接する部分N文字列と連結し、連結された部分N文字列と検索文字列とを照合して検索することを特徴とする付記2に記載のN文字インデックス検索プログラム。
【0078】
(付記5)全文書の部分N文字列に関する前記出現位置、前記連結関係および前記接続関係を保持したN文字インデックス情報を用いて、全文書の中から、特定文書の文字列を前記検索文字列として検索し、検索結果をもとに特定文書に関連するN文字インデックスを削除する削除工程をさらに含んだことを特徴とする付記2、3、または4に記載のN文字インデックス検索プログラム。
【0079】
(付記6)複数の文書の文字列から切り出した各部分N文字列の位置関係を指定することによって前記複数の文書を構造化するためのN文字インデックス作成システムであって、
前記部分N文字列の全文書内の出現位置を指定する出現位置指定手段と、
前記出現位置指定手段により同一文書内の前記部分N文字列とその隣接部分N文字列との連結関係を指定する連結関係指定手段と、
前記出現位置指定手段により前記部分N文字列と全文書内の他の位置に現れた同一部分N文字列との接続関係を指定する接続関係指定手段と、
を備えたことを特徴とするN文字インデックス作成システム。
【0080】
(付記7)複数の文書の文字列から切り出した各部分N文字列の位置関係が指定されたN文字インデックス情報によって、複数の文書から検索文字列を含む文書を検索するN文字インデックス検索システムであって、
前記複数の文書の部分N文字列に関する全文書内における出現位置、同一文書内の前記部分N文字列とその隣接部分N文字列との連結関係、および前記部分N文字列と全文書内の他の位置に現れた同一部分N文字列との接続関係が特定されたN文字インデックスを保持するN文字インデックス保持手段と、
分割された検索文字列の各分割文字列間の長さを算出する分割文字列長さ算出手段と、
前記N文字インデックス保持手段により保持された前記接続関係をもとに、前記分割文字列に対応する部分N文字列の前記出現位置毎に、該出現位置から前記分割文字列長さ算出手段により算出された長さを用いて、前記分割文字列に対応する部分N文字列を前記連結関係によって連結して得られた文字列と前期検索文字列とを照合して、検索する文字列検索手段と、
を備えたことを特徴とするN文字インデックス検索システム。
【0082】
【発明の効果】
以上説明したように、本願発明によれば、複数の文書の部分N文字列に関する全文書内における出現位置、同一文書内の部分文字列とその隣接部分N文字列との連結関係、および部分文字列と全文書内の他の位置に現れた同一部分N文字列との接続関係が特定されたN文字インデックスを保持し、分割された検索文字列の各分割文字列間の長さを算出し、保持された接続関係をもとに、分割文字列に対応する部分N文字列の出現位置毎に、該出現位置から分割文字列の長さを用いて、分割文字列に対応する部分N文字列を連結関係によって連結して得られた文字列と検索文字列とを照合して、検索することとしたので、N文字インデックスを効率的に辿ることができ、もって効率のよい検索を実行することが可能な文書検索プログラムが得られるという効果を奏する。
【図面の簡単な説明】
【図1】本実施の形態1に係るN文字インデックス作成プログラムおよびN文字インデックス検索プログラムの概念構成を示すフローチャートである。
【図2】本発明をコンピュータ上で実施するためのシステム構成図である。
【図3】N文字インデックスの概念を説明する説明図である。
【図4】N文字インデックスの接続関係の概念を説明する説明図である。
【図5】図3のN文字インデックスの具体例を示す図(その1)である。
【図6】図3のN文字インデックスの具体例を示す図(その2)である。
【図7】N文字インデックス作成の処理手順を示すフローチャートである。
【図8】検索文字列から分割文字列を作成し、分割文字列の長さを説明するための一例を示す図である。
【図9】検索文字列から分割文字列を作成し、分割文字列の長さを算出する処理手順を示すフローチャートである。
【図10】検索文字列照合の処理手順を示すフローチャートである。
【図11】本実施の形態2に係る特定文書の削除処理の手順を示すフローチャートである。
【図12】特定文書情報の削除処理のフローチャートである。
【図13】実施の形態1、2に示したN文字インデックス作成プログラムおよびN文字インデックス検索プログラムを実行するコンピュータシステムの詳細な説明図である。
【図14】実施の形態1、2に係るN文字インデックス作成プログラムおよびN文字インデックス検索プログラムを実行するコンピュータシステムの機能ブロック図である。
【符号の説明】
10 モニタ
20 入力端末
30 サーバ
101 文書データ記憶部
102 検索部
201 N文字インデックス作成部
201a 位置情報リスト
201b ハッシュテーブル
202 N文字インデックス検索部
1000,1110 コンピュータシステム
1010 本体部
1020 ディスプレイ
1020a 表示画面
1030 キーボード
1040 マウス
1050 モデム
1060 LAN
1070 公衆回線
1080 フロッピー(R)ディスク
1090 CD−ROM
1120 サーバ
1130 プリンタ
1210 CPU
1220 RAM
1230 ROM
1240 ハードディスクドライブ(HDD)
1250 CD−ROMドライブ
1260 FDドライブ
1270 I/Oインターフェース
1280 LANインターフェース

Claims (1)

  1. 検索対象の文書から、指定された検索文字列を含む文書を検索する文書検索プログラムであって、
    前記検索文字列からN文字の第1の部分文字列と、該第1の文字列に連続するまたは該第1の文字列と一部が重複する第2の部分文字列を取得する部分文字列取得手順と、
    前記検索対象の文書から、1文字ずつずらして切り出されたN文字の文字列毎に作成されたデータであって、各データが、対応する文字列が切り出された文書を識別するための文書番号と、前記文字列の前もしくは後に同一文書から切り出された文字列に対応するデータを識別するための連結関係番号とを含むデータを記憶する記憶手段から、前記データのうち、前記検索対象の文書から切り出されたN文字の文字列と、該文字列に対応するデータの記憶位置とを対応付けて保持する記憶位置管理情報に基づいて、前記第1の部分文字列と同一の文字列に対応する1ないし複数の第1の対応データを取得するデータ取得手順と、
    前記第1の対応データのそれぞれを、前記部分文字列取得手順によって取得された前記第1の部分文字列および第2の部分文字列のずれの大きさだけ、それぞれの第1の対応データから前記連結関係番号を辿って得られる前記記憶手段に記憶された他のデータである第2の対応データと対応付けた情報を生成する組合せ作成手順と、
    前記組合せ作成手順によって対応付けられた前記第1の対応データと前記第2の対応データの組合せのうち、前記第2の対応データが、前記第2の部分文字列と同一の文字列に対応する組合せを、該第2の対応データの記憶位置と、前記記憶位置管理情報に基づいて得られた前記第2の部分文字列と同一の文字列に対応するデータの記憶位置とを比較することにより、抽出する組合せ抽出手順と、
    前記抽出手順によって抽出された組合せに含まれるデータが含む文書番号に対応する文書を示す情報を検索結果として出力する出力手順と
    をコンピュータに実行させることを特徴とする文書検索プログラム。
JP2002328687A 2002-11-12 2002-11-12 文書検索プログラム Expired - Fee Related JP4319827B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002328687A JP4319827B2 (ja) 2002-11-12 2002-11-12 文書検索プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002328687A JP4319827B2 (ja) 2002-11-12 2002-11-12 文書検索プログラム

Publications (2)

Publication Number Publication Date
JP2004164223A JP2004164223A (ja) 2004-06-10
JP4319827B2 true JP4319827B2 (ja) 2009-08-26

Family

ID=32806929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002328687A Expired - Fee Related JP4319827B2 (ja) 2002-11-12 2002-11-12 文書検索プログラム

Country Status (1)

Country Link
JP (1) JP4319827B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4734400B2 (ja) * 2008-12-18 2011-07-27 株式会社東芝 文書検索装置およびプログラム
JP5441791B2 (ja) * 2010-03-30 2014-03-12 株式会社日立ソリューションズ 検索機能付きファイルストレージ装置及びプログラム
JP5906810B2 (ja) * 2012-02-29 2016-04-20 株式会社リコー 全文検索装置、プログラム及び記録媒体

Also Published As

Publication number Publication date
JP2004164223A (ja) 2004-06-10

Similar Documents

Publication Publication Date Title
JP5437557B2 (ja) 検索処理方法及び検索システム
JP3672242B2 (ja) パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体
JP3849279B2 (ja) インデクス作成方法および検索方法
KR100414236B1 (ko) 데이터의 검색을 위한 서치 시스템 및 방법
US9195738B2 (en) Tokenization platform
JP5492187B2 (ja) 編集距離および文書情報を使用する検索結果順位付け
US6801904B2 (en) System for keyword based searching over relational databases
JP3566111B2 (ja) 記号辞書作成方法及び記号辞書検索方法
CN111339042A (zh) 数据的操作处理方法、系统及调度服务器
JP4237813B2 (ja) 構造化文書管理システム
CA2275391C (en) File processing method, data processing device, and storage medium
JP4319827B2 (ja) 文書検索プログラム
JP2011133928A (ja) 記憶装置に記憶してある文書ファイルを検索する検索装置、検索システム、検索方法及びコンピュータプログラム
JP3859044B2 (ja) インデクス作成方法および検索方法
JP2925042B2 (ja) 情報リンク生成方法
JP2000194713A (ja) 文字列検索方法及び装置及び文字列検索プログラムを格納した記憶媒体
JP4304226B2 (ja) 構造化文書管理システム、構造化文書管理方法及びプログラム
JP2006106907A (ja) 構造化文書管理システム、索引構築方法及びプログラム
JP3511724B2 (ja) 文書検索方法
JP5472929B2 (ja) 文書検索装置、文書検索方法及び文書検索プログラム
JP4160627B2 (ja) 構造化文書管理システム及びプログラム
KR20130078594A (ko) 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법
JP6044422B2 (ja) 略称生成方法および略称生成装置
JP4223756B2 (ja) 文書検索方法、文書検索プログラム及び文書検索システム
JP2005063366A (ja) 情報管理装置および情報管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081010

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081028

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090105

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090413

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090422

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

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

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

Free format text: PAYMENT UNTIL: 20120605

Year of fee payment: 3

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130605

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130605

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees