JP2008242749A - 検索装置およびプログラム - Google Patents

検索装置およびプログラム Download PDF

Info

Publication number
JP2008242749A
JP2008242749A JP2007081691A JP2007081691A JP2008242749A JP 2008242749 A JP2008242749 A JP 2008242749A JP 2007081691 A JP2007081691 A JP 2007081691A JP 2007081691 A JP2007081691 A JP 2007081691A JP 2008242749 A JP2008242749 A JP 2008242749A
Authority
JP
Japan
Prior art keywords
character string
file
information
search
list
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
JP2007081691A
Other languages
English (en)
Other versions
JP5151206B2 (ja
JP2008242749A5 (ja
Inventor
Tetsuaki Daihi
哲明 大朏
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2007081691A priority Critical patent/JP5151206B2/ja
Priority to US12/079,432 priority patent/US7840583B2/en
Publication of JP2008242749A publication Critical patent/JP2008242749A/ja
Publication of JP2008242749A5 publication Critical patent/JP2008242749A5/ja
Application granted granted Critical
Publication of JP5151206B2 publication Critical patent/JP5151206B2/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/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques

Landscapes

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

Abstract

【課題】情報の検索を限られたリソースでも好適に実行可能にする。
【解決手段】本発明に係る検索装置は、複数の文書ファイル(ファイル)に少なくとも1つ含まれる単語(文字列)を抽出した単語リストを記憶する。単語リストに含まれる単語には、それぞれを一意的に特定可能な識別番号(単語識別番号)が付与される。また、本発明に係る検索装置は、単語リストに含まれる単語の有無を各文書ファイルについて「1」または「0」の値で記述した有無情報リストを記憶する。有無情報リストは、それぞれの文書ファイルの有無情報をブロック単位で記述している。本発明に係る検索装置は、検索文字列を含む単語の識別番号を特定し、その識別番号に対応する有無情報を参照することにより、検索文字列を含む文書ファイルを特定する。
【選択図】図11

Description

本発明は、情報を検索する技術に係り、いわゆる組み込みシステム等において特に好適な検索技術に関する。
Web等で情報を検索するときには、いわゆる検索エンジンを用いると便利である。検索エンジンを実現する技術としては、いわゆるインデックスを用いた検索技術が知られており、かかる技術の一例として、「Apache Lucene」などがある。この種の技術は、リソース(資源)に比較的余裕のあるサーバやパーソナルコンピュータ等の汎用的なシステムにおいて好適に動作するように設計されているのが一般的である。
Erik Hatcher、Otis Gospodnetic著、「Lucene in Action」、(米国)、マニング・パブリケーションズ(Manning Publications)
ところで、近年、電子ペーパや携帯電話機のような、小型で持ち運び可能な電子機器で情報を検索する機会が増えている。また、情報検索の需要は、このような機器に限らずとも、特定用途のための組み込みシステム全般において増大することが予想される。
しかし、組み込みシステムは、特定用途に特化した構成であり、演算処理能力やメモリ容量において汎用的なシステムよりも余裕がないことが多い。そのため、組み込みシステムにおいては、上述したような従来の検索技術をそのまま適用してもうまく動作しないことが多かった。
本発明は、かかる事情に鑑みてなされたものであり、その目的は、情報の検索を限られたリソースでも好適に実行可能な技術を提供することにある。
本発明に係る検索装置は、文字列を含む複数のファイルのそれぞれを識別する複数のファイル情報と、前記複数のファイルの少なくとも1つに含まれる文字列と、前記文字列を一意的に特定する識別番号とを有する文字列リストと、前記文字列リストに含まれる各文字列の有無を表す有無情報を前記識別番号に応じた順序で表す有無情報ブロックを前記複数のファイルのそれぞれについて有する有無情報リストとを記憶する記憶手段と、検索対象の文字列である検索文字列を取得する取得手段と、前記取得手段により取得された検索文字列を含む文字列が前記文字列リストに含まれる場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する識別番号特定手段と、前記有無情報リストの有無情報に基づき、前記識別番号特定手段により特定された識別番号により表される文字列を含むファイルを特定するファイル特定手段と、前記ファイル特定手段により特定されたファイルを示す前記ファイル情報を出力する出力手段とを備える。
この検索装置によれば、各ファイルにおける文字列の有無は、単一のファイルである有無情報リストにより特定される。ゆえに、この検索装置によれば、有無情報の読み出しを高速にするとともに、有無情報リストのデータ容量を少なくすることが可能である。
なお、検索文字列を含む文字列は、特定の意味や職能を有する単語であることが一般的であるが、必ずしも単語である必要はない。
本発明に係る検索装置において、前記記憶手段は、前記複数のファイルの少なくとも一つに含まれる文字列の位置をそれぞれ表す複数の位置情報を記憶し、前記ファイル特定手段により特定されたファイルにおける前記検索文字列を含む文字列の位置を表す位置情報を前記複数の位置情報の中から特定する位置情報特定手段を備え、前記出力手段は、前記ファイル特定手段により特定されたファイルを示す前記ファイル情報と、当該ファイルについて前記位置情報特定手段により特定された位置情報とを出力する構成であってもよい。このようにすれば、検索文字列を含むファイルを特定するとともに、そのファイルにおける検索文字列を含む文字列の位置を特定することができる。
本発明に係る検索装置において、前記記憶手段は、前記文字列リストを複数の部分に区切るパーティション情報を記憶し、前記識別番号特定手段は、前記取得手段により取得された検索文字列を含む文字列が前記パーティション情報により区切られる複数の部分のいずれに含まれ得るかを特定するパーティション特定手段と、前記パーティション特定手段により特定された部分に前記検索文字列を含む文字列が存在するか否かを判断する判断手段とを備え、前記パーティション特定手段により特定された部分に前記検索文字列を含む文字列が存在すると前記判断手段が判断する場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する構成であってもよい。このようにすれば、文字列リストの全体について検索文字列を含むか判断する必要がなくなるため、その分処理を高速にすることができる。また、必要とするメモリの容量も低減させることができる。
本発明に係る検索装置において、前記識別番号特定手段は、前記文字列リストから前記取得手段により取得された検索文字列を含む文字列を二分探索により検索する検索手段を備える構成であってもよい。このようにすれば、検索文字列を含む文字列を文字列リストの先頭から逐一検索せずとも、検索文字列を含む文字列を検索することができる。
本発明に係る検索装置において、前記有無情報は、前記文字列リストに含まれる各文字列の有無を1ビット単位で表す構成であってもよい。このようにすれば、文字列の有無をを1ビット(1または0)で記述することが可能であるため、有無情報リストの容量をより小さくすることができる。
本発明に係る検索装置において、前記識別番号は、前記複数のファイルのうち、当該ファイルに少なくとも1つ含まれる文字列の総数が少ないファイルに含まれる文字列から先に付与され、前記有無情報ブロックに含まれる前記有無情報の数は、少なくとも1つ含まれる文字列の総数が少ないファイルについての有無情報ブロックほど少ない構成であってもよい。このようにすれば、有無情報ブロックに含まれる有無情報の数を異ならせることが可能であり、結果として、有無情報ブロックの記憶に要する容量を低減させることが可能である。
本発明に係る検索装置において、前記記憶手段は、あるファイルについての前記有無情報ブロックと他のファイルについての前記有無情報ブロックとの区切りを示すアドレス情報を記憶し、前記ファイル特定手段は、前記アドレス情報に基づいて各々の前記有無情報ブロックを特定し、当該有無情報ブロックから前記識別番号特定手段により特定された識別番号により表される文字列を含むファイルを特定する構成であってもよい。このようにすれば、必要な有無情報ブロックのみを特定することができるとともに、有無情報リストに有無情報ブロックの区切りとなるデータを設ける必要がない。
また、本発明は、上述した検索装置の機能を実現するプログラムとしても特定され得る。かかるプログラムは。例えば、コンピュータに、文字列を含む複数のファイルのそれぞれを識別する複数のファイル情報と、前記複数のファイルの少なくとも1つに含まれる文字列と、前記文字列を一意的に特定する識別番号とを有する文字列リストと、前記文字列リストに含まれる各文字列の有無を表す有無情報を前記識別番号に応じた順序で表す有無情報ブロックを前記複数のファイルのそれぞれについて有する有無情報リストと、検索対象の文字列である検索文字列とを取得する機能と、前記検索文字列を含む文字列が前記文字列リストに含まれる場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する機能と、前記有無情報リストの有無情報に基づき、前記特定された識別番号により表される文字列を含むファイルを特定する機能と、前記特定されたファイルを示す前記ファイル情報を出力する機能とを実現させるプログラムである。
なお、本発明は、このようなプログラムをネットワークを介してダウンロードさせ、種々の電子機器にインストールして検索装置としての機能を実現させたり、あるいは、プログラムを記録媒体に記録させた形態で提供したりすることも可能である。
以下、図面を参照し、本発明の実施の形態を説明する。
なお、以下に示す実施形態においては、説明の便宜上、文字列としてローマ字を用い、文章や単語には英語を用いる。しかしながら、本発明は、日本語等のローマ字以外の文字を用いる言語に適用することも可能であるし、数字や記号を文字列に含んでもよい。
[実施形態の構成]
図1は、本発明の一実施形態である情報処理システムを示すブロック図である。同図に示すように、この情報処理システム100は、検索装置10と、データ管理装置20とを備える。検索装置10は、携帯可能な表示装置であり、本実施形態においては、いわゆる電子ペーパである。データ管理装置20は、パーソナルコンピュータ等の情報処理装置であり、検索装置10において利用される各種のデータを管理し、これを必要に応じて検索装置10に供給する。
検索装置10は、制御部11と、記憶部12と、通信部13と、入力部14と、表示部15とを備える。制御部11は、CPU(Central Processing Unit)等の演算装置や、演算装置のワークエリアとして利用されるメモリ(メインメモリおよびバッファメモリ)などを備え、検索装置10の各部の動作を制御する。また、制御部11は、記憶部12に記憶されたプログラムを実行することで、後述する検索機能を実現する。
記憶部12は、検索装置10において利用される各種のデータを記憶する。記憶部12は、例えば、フラッシュメモリ等の書き換え可能な記憶媒体を備える。なお、この記憶媒体は、いわゆるメモリカードのような着脱可能な構成としてもよい。記憶部12に記憶されるデータには、制御部11が実行するプログラムと、文書を表す文書ファイルと、文字列を検索する際に用いられるインデックスとがある。文書ファイルは、複数記憶されており、それぞれを一意的に特定する名称(ファイル名)が各々に付与されている。つまり、記憶部12は、ファイル名を識別可能に記憶している。また、文書ファイルは、抽出可能な文字列を複数含んでいる。インデックスは、検索用の種々のデータの集合であり、データ管理装置20によって生成および供給される。
通信部13は、データ管理装置20との間でデータの送受信を行うためのインタフェースである。このインタフェースは、USB(Universal Serial Bus)規格のような有線のインタフェースであってもよいし、赤外線通信のような無線のインタフェースであってもよい。
入力部14は、ユーザが指示を入力するためのインタフェースである。なお、ここにおける指示には、検索対象である文字列を指定する指示と、表示部15による表示を制御する指示(文書の指定、ページの指定、スクロールなど)とを含む。入力部14は、キーボードのようなキー型の入力装置であってもよいし、表示部15の表示面に設けられたタッチスクリーン型の入力装置であってもよい。タッチスクリーン型の入力装置である場合には、ユーザが文字列を入力するときに専用の画面を表示面に表示させてもよいし、ユーザによる接触の軌跡に基づいて筆跡を認識してもよい。ユーザによる入力は、ペン型の器具(いわゆるスタイラス、タッチペンなど)を用いて行われてもよい。
表示部15は、制御部11からの指示に応じて、文書データが表す文書等を表示する。表示部15は、例えば、複数の画素により構成される表示面を有する。この表示面は、例えば、コレステリック液晶等の記憶性表示体により構成されると望ましい。ここにおいて、記憶性表示体とは、電圧を印加しなくても表示状態(すなわち階調)を維持することが可能な表示体のことである。かかる表示体を用いると、表示を書き換えるとき以外の電力消費を抑制することが可能となる。
データ管理装置20は、制御部21と、記憶部22と、通信部23とを備える。制御部21は、演算装置やメモリなどを備え、データ管理装置20の各部の動作を制御する。また、制御部21は、検索装置10が検索に用いるデータを生成または編集するための演算処理を実行する。記憶部22は、データ管理装置20において利用される各種のデータを記憶する。記憶部22は、制御部21が実行するプログラムや制御部21により生成されたデータなどを記憶する。通信部23は、検索装置10の通信部13に対応するインタフェースであり、検索装置10との間でデータの送受信を行う。
なお、データ管理装置20は、検索装置10に記憶された文書データを削除したり、あるいは、検索装置10に新たな文書データを追加したりすることが可能である。
[実施形態の動作]
情報処理システム100の構成は、以上のとおりである。かかる構成のもと、検索装置10は、文書を表示する表示機能と、文書に含まれる単語を検索する検索機能とを実現する。また、データ管理装置20は、検索装置10が検索機能を実現するために必要なデータ、すなわちインデックスを生成する。
以下においては、まず、データ管理装置20がインデックスを生成する動作を説明し、次いで、検索装置10がそのインデックスを用いて実現する検索機能の動作を説明する。
(1)インデックスの生成
図2は、データ管理装置20の動作を示すフローチャートである。なお、データ管理装置20は、検索装置10が接続されたとき、すなわち、通信部23と通信部13とで通信が可能となったときに、この動作を実行する。同図に示すように、まず、データ管理装置20の制御部21は、検索装置10の記憶部12に記憶された文書ファイルを全て取得する(ステップSa1)。このとき、制御部21は、記憶部12においてそれぞれの文書ファイルが記憶されている位置を特定する情報を併せて取得する。なお、本実施形態においては、この情報としてファイルパスを用いるが、全ての文書ファイルが同一のディレクトリに記憶されている場合であれば、ファイル名のみであってもよい。また、制御部21は、記憶部12から文書ファイルをコピーすればよく、文書ファイルを記憶部12から移動させる必要はない。
続いて、制御部21は、それぞれの文書ファイルから単語を抽出し、各文書ファイルについて単語数を特定する(ステップSa2)。ここにおいて、「単語」とは、1または複数の文字により構成され、特定の意味や職能を有する文字列である。また、「単語数」とは、文書ファイルに少なくとも1つ含まれる単語の総数であり、文書ファイルに含まれる単語の延べ数ではない。各文書ファイルの単語数を特定したら、制御部21は、特定した単語数の大小に応じて文書ファイルをソート(並べ替え)する(ステップSa3)。これは、単語数の少ない文書ファイルから順に後述の処理の対象とするためである。このとき、制御部21は、それぞれの文書ファイルに一意的な識別番号を付与する。この識別番号のことを、以下では「ファイル識別番号」という。ここにおいて、ファイル識別番号は、単語数の少ない文書ファイルほど小さい値となるように付与される。
次に、制御部21は、文書ファイルを参照してインデックスを生成する。本実施形態において、インデックスは、「単語リスト」、「位置情報リスト」、「位置アドレスリスト」、「有無情報リスト」、「ファイル情報リスト」、「パーティション情報」および「インデックス情報」により構成されるデータの集合である。
制御部21は、ある文書ファイルに基づいて単語リスト、位置情報リスト、位置アドレスリスト、有無情報リストおよびファイル情報リストを生成し、その後、別の文書ファイルに基づいてこれらのリストを更新する。制御部21は、異なる文書ファイルを順次処理対象とすることによって更新を繰り返し、取得した全ての文書ファイルを処理したところで更新を終える。その動作は、具体的には以下のとおりである。
制御部21は、はじめに単語リストを生成する(ステップSa4)。単語リストは、文書ファイルに少なくとも1つ含まれる単語のリストであり、文書ファイルに少なくとも1つ含まれる単語をアルファベット順に並べたリストである。このとき、制御部21は、それぞれの単語に一意的な識別番号を付与する。この識別番号のことを、以下では「単語識別番号」という。単語識別番号は、それぞれの単語を一意的に特定可能であればいかなる態様で付与されてもよいが、本実施形態においては、より早く抽出された単語ほど小さい値となるように付与される。
ここで、単語リストについて具体例を挙げて説明する。ここでは、ある文書ファイル(以下「文書ファイルF1」という。)を処理対象として単語リストを生成する場合を想定する。また、文書ファイルF1には、「The cat is big and black.」という文のみが含まれているものとし、この文が文頭から順に抽出されるものとする。
この例の場合、制御部21は、単語「the」に単語識別番号「1」、単語「cat」に単語識別番号「2」、単語「is」に単語識別番号「3」、といった具合で単語識別番号を付与する。その結果、制御部21が生成する単語リストは、図3のようになる。
なお、図3においては、単語と単語識別番号の対応関係を示すために、これを上下に記載しているが、実際のデータにおいては、これらが連続している。すなわち、単語リストは、「the」、「1」、「cat」、「2」、「is」、「3」、といった並びで記憶されている。
次に、制御部21は、位置情報リストを生成する(ステップSa5)。位置情報リストは、文書ファイルに含まれる単語がその文書ファイル内のどの位置にあるかを示す情報(以下「位置情報」という。)のリストである。また、位置情報リストは、位置情報に加え、文書ファイルに含まれる単語のその文書ファイルにおける出現頻度を示す情報(以下「頻度情報」という。)を含んでいる。1つの文書ファイルの位置情報と頻度情報とをまとめたものを、以下では「位置情報ブロック」という。すなわち、位置情報ブロックを一覧で記述した集合が、位置情報リストである。
図4は、位置情報ブロックのデータ形式を例示する図である。同図に示すように、位置情報ブロックは、頻度情報と、その頻度情報が表す頻度の値と同数の位置情報とからなるデータの組である。例えば、ある文書ファイルについて、単語w1の出現頻度が「m(回)」であった場合、単語w1の位置情報は、合わせてm個のデータとなり、また、単語w2の出現頻度が「n(回)」であった場合、単語w2の位置情報は、合わせてn個のデータとなる。なお、位置情報のそれぞれは、文書ファイルにおける位置を特定可能な情報であれば、いかなるものであってもよい。例えば、文書ファイルが表す文書の文頭からの文字数やバイト数であってもよいし、文書ファイルが表す文書におけるページ数と座標との組み合わせであってもよい。
制御部21は、文書ファイルに含まれる単語の全てについて、このように頻度情報と位置情報とを求め、位置情報ブロックを生成する。
次に、制御部21は、位置アドレスリストを生成する(ステップSa6)。位置アドレスリストは、位置情報リストに記述されている頻度情報について、それぞれの位置情報リストにおける相対位置(以下「位置アドレス」という。)を記述したデータのリストである。なお、以下においては、1の位置情報ブロックに対応する位置アドレスをまとめたものを「位置アドレスブロック」という。
なお、位置情報ブロックと位置アドレスブロックとは、単語に関する情報をともに単語識別番号に応じた順序で並べてなるものである。本実施形態においては、位置情報ブロックおよび位置アドレスブロックには、単語識別番号の小さい順にデータが並べられているとする。
次に、制御部21は、有無情報リストを生成する(ステップSa7)。有無情報リストは、単語リストに含まれる単語について、その単語の有無を文書ファイル毎に表したリストである。本実施形態においては、文書ファイルに含まれる単語を「1」として表し、文書ファイルに含まれない単語を「0」として表すものとする。この、「1」または「0」で表される情報を、以下では「有無情報」といい、1の文書ファイルの有無情報をまとめたものを「有無情報ブロック」という。なお、有無情報ブロックにおいて、有無情報は、上述した単語識別番号順に記述される。
ここで、有無情報ブロックについて、単語リストを説明した例を用いて説明する。例えば、単語リストを生成する対象となった文書ファイルが文書ファイルF1のみであれば、その時点での単語リストは、図3に示したとおりである。このとき作成される有無情報ブロックは、図5に示すように、値が全て「1」となる。これは、有無情報リストが最初に生成される時点においては、単語リストに含まれる単語が文書ファイルF1に含まれる単語のみだからである。
次に、制御部21は、ファイル情報リストを生成する(ステップSa8)。ファイル情報リストは、ファイルパスと、各種のアドレス(リストにおける相対位置)とを含むデータの集合である。
図6は、ファイル情報リストのデータ形式を例示する図である。同図に示すように、ファイル情報リストは、それぞれの文書ファイルについて、「ファイルパス」と、「有無情報ブロック開始アドレス」と、「有無情報ブロック終了アドレス」と、「位置アドレスブロック開始アドレス」と、「位置アドレスブロック終了アドレス」と、「位置情報ブロック開始アドレス」と、「位置情報ブロック終了アドレス」とを記述したものである。なお、これらのデータをまとめたものを、以下では「ファイル情報」という。ファイル情報は、ファイル識別番号に応じた順序で記述される。つまり、ファイル情報リストには、ファイル識別番号が対応付けられるようにファイル情報が記述される。
「ファイルパス」には、当該文書ファイルのファイルパスが記述される。このファイルパスは、ステップSa1において取得されるファイルパスに基づく。
「有無情報ブロック開始アドレス」および「有無情報ブロック終了アドレス」には、有無情報リストにおける当該文書ファイルに対応する有無情報ブロックの範囲が記述される。すなわち、「有無情報ブロック開始アドレス」には、当該文書ファイルに対応する有無情報ブロックの最初の有無情報のアドレス(位置)が記述され、「有無情報ブロック終了アドレス」には、当該文書ファイルに対応する有無情報ブロックの最後の有無情報のアドレス(位置)が記述される。
「位置アドレスブロック開始アドレス」および「位置アドレスブロック終了アドレス」には、位置情報リストにおける当該文書ファイルに対応する位置情報ブロックの範囲が記述される。すなわち、「位置アドレスブロック開始アドレス」には、当該文書ファイルに対応する位置情報ブロックの最初の頻度情報の位置アドレスが記述され、「位置アドレスブロック終了アドレス」には、当該文書ファイルに対応する位置情報ブロックの最後の頻度情報の位置アドレスが記述される。
「位置情報ブロック開始アドレス」および「位置情報ブロック終了アドレス」には、位置情報リストにおける当該文書ファイルに対応する位置情報ブロックの範囲が記述される。すなわち、「位置情報ブロック開始アドレス」には、当該文書ファイルに対応する位置情報ブロックの最初の位置アドレスが記述され、「位置情報ブロック終了アドレス」には、当該文書ファイルに対応する位置情報ブロックの最後の位置アドレスが記述される。
なお、「位置アドレスブロック開始アドレス」と「位置情報ブロック開始アドレス」は、同一の位置アドレスとなる一方、「位置アドレスブロック終了アドレス」と「位置情報ブロック終了アドレス」は、異なる位置アドレスとなる。
図7は、位置情報ブロックとこれらの位置アドレスの関係を例示する図である。位置情報ブロックは、上述したように、1の頻度情報と1または複数の位置情報からなるデータの組である。同図に示すように、「位置情報ブロック終了アドレス」は、位置情報ブロックの末尾の位置情報の位置アドレスを表しているのに対して、「位置アドレスブロック終了アドレス」は、位置情報ブロックの最後に記述された頻度情報の位置アドレスを表している。
制御部21は、上述したステップSa4〜Sa8の処理をある文書ファイルについて実行したら、当該文書ファイルを対象とした処理を終了する。そして、制御部21は、処理対象となる文書ファイルが他に存在するか否かを判断する(ステップSa9)。すなわち、これは、制御部21が全ての文書ファイルについてステップSa4〜Sa8の処理を実行するということである。
処理対象となる文書ファイルが存在する場合(ステップSa9:YES)、制御部21は、その文書ファイルに対して上述したステップSa4〜Sa8の処理を実行する。ただし、ステップSa4〜Sa8の処理を実行するのが2回目以降である場合、位置情報リスト、位置アドレスリスト、単語リスト、有無情報リストおよびファイル情報リストは、既に生成されている。そのため、制御部21は、生成されたこれらのリストを更新する処理を行う。なお、図2のフローチャートについては、2回目以降の処理の場合は「生成」を「更新」に読み替えるものとする。また、上述した説明についても同様である。
位置情報リストを更新するとき、制御部21は、既に生成されている位置情報リストの末尾に新たな位置情報ブロックを追加する。このとき、制御部21は、既存の位置情報ブロックと新たな位置情報ブロックとの間に、これらの区切りを示す何らかのデータを挿入してもよい。また制御部21は、位置アドレスリストおよびファイル情報リストの更新も、同様の要領で行う。すなわち、位置情報ブロックやファイル情報は、単語数の少ない文書ファイルから生成され、追加される。
単語リストを更新するとき、制御部21は、単語の並びがアルファベット順となるようにする。すなわち、制御部21は、既存の単語リストの末尾に新たな単語を追加するのではなく、既存の単語リストの適当な位置に新たな単語を挿入する処理を行う。
ここで、この更新処理について具体例を挙げて説明する。ここにおいて、既存の単語リストは、図3に示した単語リストであるとする。また、このとき処理対象である文書ファイルを「文書ファイルF2」とし、この文書ファイルF2には、「The dog is small and white.」という文のみが含まれているものとし、この文が文頭から順に抽出されるものとする。
この場合、制御部21は、既に単語識別番号が付与されている単語については、新たな単語識別番号を付与しない。すなわち、この例でいえば、単語「the」、「is」および「and」には新たな単語識別番号が付与されない。その結果、制御部21は、単語「dog」に単語識別番号「7」、単語「small」に単語識別番号「8」、単語「white」に単語識別番号「9」を付与する。なお、単語「dog」は、アルファベット順に並べたとき、単語「cat」より後であり、単語「is」より前である。同様に、単語「small」は、単語「is」より後であり、単語「the」より前であり、単語「white」は、単語「the」より後である。そのため、制御部21による更新後の単語リストは、図8のようになる。
続いて、有無情報リストを更新する動作について、図8に示した例を用いて説明する。制御部21は、文書ファイルF2に対応する有無情報ブロックとして、図9に示す有無情報ブロックを生成する。同図に示すように、この有無情報ブロックは、図5に示した有無情報ブロックよりも有無情報の数が多い。これは、新たに出現した単語(「dog」、「small」および「white」)の数だけ単語識別番号が増加したからである。なお、新たに出現した単語に対応する有無情報は、当然、いずれも「1」となる。
制御部21は、このようにして新たに生成した有無情報ブロックを既存の有無情報リストの末尾に追加することにより、有無情報リストの更新を行う。すなわち、制御部21による更新後の有無情報リストは、図10のようになる。なお、同図においては、有無情報ブロックの区切りを容易に理解せしめるために、有無情報ブロックのそれぞれを改行して示しているが、実際のデータにおいては、この改行の位置に何らかのデータが挿入されていなくてもよい。以下においては、説明の便宜上、有無情報ブロックどうしの区切りを示す位置のことを「区切り位置」という。
図11は、このような更新が繰り返された場合の有無情報リストを例示する図である。このように、有無情報リストは、それぞれの文書ファイルについての有無情報ブロックをファイル識別番号順に並べたデータとなる。また、それぞれの有無情報ブロックについていえば、有無情報は全て単語識別番号順に並べられている。
制御部21は、取得した全ての文書ファイルに対して、ステップSa4〜Sa8の処理を実行する。そして、処理対象となる文書ファイルがなくなると(ステップSa9:NO)、制御部21は、単語リストを区切るパーティション情報を算出して生成する(ステップSa10)。パーティション情報は、単語リストの区切り位置を示す情報である。パーティション情報により区切られる単語リストの一部を、以下では「パーティション」という。なお、パーティションの数は、2以上の任意の数でよい。制御部21は、算出したパーティション情報を記憶部22に記憶する。
図12は、パーティションの一例を示す図である。なお、同図においては、図8に示した単語リストを用いた場合を例示している。パーティションは、それぞれに含まれる単語の数がほぼ等しくなるように設定されるのが望ましい。
図13は、パーティション情報のデータ形式を例示する図である。このように、パーティション情報は、パーティションの数と、それぞれのパーティションの最初にある単語とその位置アドレスとを記述した情報である。例えば、図12に示したようなパーティションを設定した場合であれば、パーティションの数は「3」である。また、1番目のパーティションの最初の単語は「and」であり、2番目のパーティションの最初の単語は「cat」であり、3番目のパーティションの最初の単語は「small」である。
以上のデータを生成したら、最後に制御部21は、インデックスに関する一般的な情報を記述したインデックス情報を生成する(ステップSa11)。インデックス情報には、単語リストに含まれる単語の総数や、取得した文書ファイルの総数が含まれる。また、インデックス情報は、インデックスのサイズ(データ容量)やチェックサム(MD5等)を含んでもよい。そして、制御部21は、通信部23を介してこれらのインデックスを出力し、検索装置10の記憶部12に記憶させる(ステップSa12)。
データ管理装置20における処理は、以上のとおりである。このようにして、インデックスが生成され、検索装置10に供給される。検索装置10は、インデックスを取得した後に、ユーザから検索対象である文字列(以下「検索文字列」という。)を入力されると、データ管理装置20から供給されたインデックスを用いて、文字列の検索を行う。
(2)文字列の検索
図14および15は、検索装置10の動作を示すフローチャートである。図14は、検索文字列を含む文書ファイルを特定するための第1の検索処理であり、図15は、特定された文書ファイルから該当する単語の位置を特定するための第2の検索処理である。本実施形態の検索装置10は、これらの2段階の検索処理によって検索機能を実現している。なお、本実施形態においては、これらの検索処理が別個のプログラムにより実現されるが、単一のプログラムで実現されてもよい。
図14に示すように、はじめに検索装置10の制御部11は、入力部14を介して検索文字列を取得し、メインメモリにロードする(ステップSb1)。続いて、制御部11は、インデックス情報を読み出し、単語リストに含まれる単語の総数と記憶された文書ファイルの総数とをメインメモリにロードする(ステップSb2)。そして、制御部11は、文書ファイルの総数が「0」であるか否かを判断することにより、検索対象となる文書ファイルが存在するか否かを判断する(ステップSb3)。このとき、文書ファイルの総数が「0」であれば(ステップSb3:NO)、制御部11は、該当する文書ファイルが存在しない旨の情報を出力し(ステップSb14)、検索処理を終える。制御11は、該当する文書ファイルが存在しない旨の情報を出力して処理を終えた場合には、その旨を表示部15に表示させるなどして、ユーザに通知する。
一方、制御部11は、文書ファイルの総数が「0」でない場合(ステップSb3:YES)、すなわち文書ファイルが存在する場合には、パーティション情報を参照し、検索文字列が含まれる可能性のあるパーティションを特定する(ステップSb4)。制御部11は、パーティション情報に記述された単語と検索文字列とのアルファベットを先頭から比較することにより、検索文字列が含まれる可能性のあるパーティションを特定する。このようにしてパーティションを特定したら、制御部11は、単語リストからこのパーティションのみを読み出し、メインメモリにロードする(ステップSb5)。
続いて、制御部11は、ファイル情報リストを読み出し、メインメモリにロードする(ステップSb6)。そして、制御部11は、メインメモリにロードされたパーティション(すなわち単語リストの一部)から検索文字列を含む単語を検索する(ステップSb7)。制御部11は、この検索を、いわゆる二分探索により行う。すなわち、制御部11は、パーティションの中心に位置する単語を特定し、検索文字列が中心より先頭側(「a」に近い側)と末尾側(「z」に近い側)のいずれに相当するかを判断し、同様の動作を繰り返すことによって絞り込みを行う。これにより、制御部11は、メインメモリにロードされたパーティションに検索文字列を含む単語が存在するか否かを特定できる。また、制御部11は、検索文字列を含む単語を特定した場合には、その単語に対応付けられた単語識別番号を特定することができる。
続いて、制御部11は、この検索の結果により、検索文字列を含む単語がパーティションに存在するか否かを判断する(ステップSb8)。検索文字列を含む単語が存在しない場合(ステップSb8:NO)、制御部11は、該当する文書ファイルが存在しない旨の情報を出力し(ステップSb14)、検索処理を終える。一方、検索文字列を含む単語が存在する場合(ステップSb8:YES)、制御部11は、有無情報リストを用いてその単語を含む文書ファイルを特定する処理(ステップSb9〜Sb12)を行う。なお、ステップSb9〜Sb12の処理は、それぞれの文書ファイル単位で実行されるループ処理である。
制御部11は、文書ファイルのそれぞれについて、有無情報リストを参照して検索文字列を含む単語の有無を判断する(ステップSb9)。制御部11は、この判断をマスク処理によって行う。具体的には、例えば、判断対象である文書ファイルのファイル識別番号を「y」、検索文字列を含む単語の単語識別番号を「x」と特定した場合、制御部11は、有無情報リストの先頭から(y−1)個目の区切り位置から数えてx番目の有無情報のみを取り出すマスクパターンを算出し、このマスクパターンを用いてマスク処理を行えばよい。
次に、制御部11は、この判断結果に応じてその後の処理を切り替える(ステップSb10)。すなわち、制御部11は、対象の文書ファイルに検索文字列を含む単語が含まれている場合には(ステップSb10:YES)、メインメモリにロードされたファイル情報リストに基づいて、当該文書ファイルのファイル識別番号を特定し、これをバッファメモリに記憶する(ステップSb11)。一方、対象の文書ファイルに検索文字列を含む単語が含まれていない場合には(ステップSb10:NO)、制御部11はステップSb11の処理をスキップする。
ステップSb9〜Sb11の処理を実行したら、制御部11は、処理対象の文書ファイルが存在するか否かを判断することにより、全ての文書ファイルについてステップSb9〜Sb11の処理を実行したか否かを判断する(ステップSb12)。この判断は、例えば、処理対象の文書ファイルのファイル識別番号が最大値(最終値)であるか否かによって行うことができる。
制御部11は、処理対象の文書ファイルが存在する場合(ステップSb12:NO)、新たな文書ファイルを処理対象とし、ステップSb9〜Sb11の処理を繰り返す。すなわち、このとき制御部11は、直前に処理をした文書ファイルよりもファイル識別番号が「1」大きい文書ファイルを新たな処理対象とする。一方、制御部11は、処理対象の文書ファイルが存在しない場合には(ステップSb12:YES)、第1の検索処理を終了する。このとき、制御部11は、第2の検索処理に受け渡す引数として、検索文字列を含む単語の単語識別番号と、当該単語を含む文書ファイルのファイル識別番号とを出力する(ステップSb13)。なお、このとき出力されるファイル識別番号は、ステップSb11においてバッファメモリに記憶されたファイル識別番号の全てである。
続いて、図15を参照して第2の検索処理を説明する。なお、この処理は、第1の検索処理において出力されたファイル識別番号が複数である場合には、その数だけ実行される処理である。同様に、第1の検索処理において出力された単語識別番号が複数である場合にも、その数だけ実行される。
第2の検索処理において、はじめに制御部11は、第1の検索処理において出力されたファイル識別番号と単語識別番号とを取得し、メインメモリにロードする(ステップSc1)。次に、制御部11は、ファイル情報リストを読み出し、これをメインメモリにロードする(ステップSc2)。そして、制御部11は、ステップSc1において取得したファイル識別番号により特定される文書ファイルに対応した有無情報リスト開始アドレスと有無情報リスト終了アドレスとを、ファイル情報リストから読み出して取得する(ステップSc3)。これにより、制御部11は、当該文書ファイルに対応する有無情報ブロックを特定できる。そして、制御部11は、この特定した有無情報ブロックをメインメモリにロードする(ステップSc4)。
次に、制御部11は、ロードした有無情報ブロックの先頭の有無情報からステップSc1において取得した単語識別番号により表される単語の有無情報までのうち、その値が「1」となる有無情報の数を特定する(ステップSc5)。このとき特定される数のことを、以下では「オフセット」という。オフセットは、目的の単語(すなわち、ステップSc1において取得した単語識別番号により表される単語)の位置アドレスが位置アドレスブロックの何番目に記述されているかを表す値である。
ここで、ステップSc5の処理を具体例を挙げて説明する。いま、ある文書ファイルに対応する有無情報ブロックが図16のようになっている場合を想定する。ここにおいて、目的の単語は、単語識別番号が「38」の単語であるとする。制御部11は、図17に示すルックアップテーブルを用いて、有無情報ブロックの先頭から目的の単語までにある「1」の総数を算出する。具体的には、有無情報を先頭から8桁ずつに区切り、これらの8桁の有無情報のそれぞれを2進数の値とみなしてルックアップテーブルと比較する。なお、このルックアップテーブルは、ある値が入力されたとき、その値が2進数で表記したときにいくつの「1」を含むかを出力するテーブルとなっている。
いま、有無情報ブロックの最初の8桁を入力値としてルックアップテーブルを適用すると、この8桁に「1」は含まれていないため、その出力値は「0」である。続いて、有無情報ブロックの次の8桁を入力値としてルックアップテーブルを適用すると、この8桁には「1」が1つ含まれているため、その出力値は「1」である。このようにして、8桁の有無情報に順次ルックアップテーブルを適用していくと、これを5回繰り返したところで目的の単語に到達する。この5回の出力値は、それぞれ、「0」、「1」、「1」、「2」、「1」となり、これを加算すると「5」である。ゆえに、制御部11は、この場合のオフセットを「5」であると特定する。これはつまり、この文書ファイルに含まれる単語を単語識別番号順に小さい方から並べたとき、目的の単語はその「5」番目の「1」である、ということを意味している。
ここで図15の説明に戻る。制御部11は、オフセットを特定したら、位置アドレスリストを参照し、このオフセットにより特定される位置アドレスを取得する(ステップSc6)。具体的には、制御部11は、位置アドレスリストからステップSc1において取得したファイル識別番号に対応する位置アドレスブロックを特定し、その先頭からオフセットの分だけ移動させた位置にある位置アドレスを取得する。つまり、図16および17を挙げて説明した場合でいえば、取得される位置アドレスは、特定した位置アドレスブロックの先頭の位置アドレスより「5」個先にある位置アドレスである。
位置アドレスを取得したら、制御部11は、位置情報リストを参照し、その位置アドレスが示す位置の頻度情報と、この頻度情報と組になる位置情報とを読み出して取得する(ステップSc7)。そして、制御部11は、読み出した位置情報(および頻度情報)と、ステップSc1において取得したファイル識別番号に対応するファイルパスとを出力し(ステップSc8)、検索処理を終える。
制御部11は、出力したデータを用いて、検索結果を表示部15に表示させる。例えば、制御部11は、ファイルパスと位置情報とを用いて、検索文字列を含む文書ファイルを表示させるとともに、その検索文字列の具体的な位置を認識させることができる。なお、検索文字列の認識の態様は任意であるが、例えば、他の文字と異なる色で表示させたり、あるいは、検索文字列に下線を付して表示させたりしてもよい。
また、制御部11は、ファイルパスと頻度情報とを用いて、検索文字列を含む文書ファイルを表示させるとともに、その文書ファイルに含まれる検索文字列の個数を表示させることもできる。
[実施形態の効果]
本実施形態の検索装置10は、このような検索処理を行うことにより、組み込みシステムのようなリソースが制限される構成においても好適に動作することを可能にしている。本実施形態の検索装置10は、複数の文書ファイルにおける単語の有無を単一のファイル(有無情報リスト)として記憶することにより、これらが複数に分かれている場合よりもデータの入出力を高速にすることを可能にしている。加えて、本実施形態の有無情報リストは、単語の有無を「1」と「0」の情報のみで表しているため、データ容量を小さくすることもできる。
また、本実施形態の検索装置10は、有無情報リストのみならず、その他の位置情報リストや位置アドレスリストについても、単一のファイル(すなわち、1の集合)として記憶しており、リンク構造を採用していない点にも特徴がある。本実施形態の検索装置10は、このように職能が共通するデータ群を1のファイルとすることで、ファイルアクセスをより高速にすることを可能にしている。
なお、本実施形態の検索装置10は、種々のアドレスをインデックス情報として記憶することにより、有無情報や位置情報などが単一のファイルとして記憶されている場合であっても、目的の文書ファイルのブロックへのアクセスを容易にすることを可能にしている。
また、本実施形態の検索装置10は、単語のそれぞれに単語識別番号を付与するとともに、単語リストによって単語と単語識別番号との対応付けを記述することによって、有無情報リストを単語識別番号に応じた順序で記述することを可能にしている。また、単語識別番号は、単語数の少ない文書ファイルに含まれる単語から順に付与されるようになっている。これらによって、本実施形態の検索装置10においては、有無情報の数を単語識別番号の最大値とファイル識別番号の最大値の積よりも少なくすることが可能となっている(図11参照)。
また、本実施形態の検索装置10は、目的の単語の位置アドレスを特定するために、図17に示したようなルックアップテーブルを用いている。これにより、例えば、有無情報ブロックの有無情報を先頭からカウントする場合に比べ、位置アドレスの特定をより高速に行うことを可能にしている。なお、このような特定が可能なのは、有無情報リストが「1」または「0」のデータにより記述されているためである。
また、本実施形態の検索装置10は、単語リストを区切ったパーティションを用いることにより、読み出すべき単語リストのデータ容量を半分以下にすることを可能にしている。これにより、データの読み出しを高速にするとともに、検索対象とする単語の数を減らすことができる。なお、このようなパーティションを定義することが可能なのは、単語リストがアルファベット順に記述されているためである。
また、本実施形態の検索装置10は、位置情報と頻度情報を同一のファイル(位置情報リスト)に記憶することによって、これらを別個のファイルに記憶した場合よりも高速にデータを読み出すことを可能にしている。これにより、例えば、文書ファイルに検索文字列を含む同一の単語が複数ある場合に、それぞれの位置を高速に特定することが可能となる。
図18は、本実施形態の効果を説明するための図である。図18(a)および(b)は、それぞれ、文書ファイルのサイズ(データ容量)に比したインデックスとテキストファイル(文書ファイルをテキスト形式にしたファイル)のサイズを示しており、図18(a)が本実施形態の有無情報リストを用いた場合であり、図18(b)が有無情報リストを用いない場合である。ここにおいて、有無情報リストを用いない場合には、有無情報リストに代えて、各単語の有無を位置アドレスにより示した。なお、単語が存在しないことを示すデータとしては、位置アドレスと同一のデータ長である所定のデータ(例えば、値が全て「1」のデータ)を用いた。また、文書ファイルとしては、PDF(Portable Document Format)ファイルを用いた。
図18に示すように、本実施形態の有無情報リストを用いた場合には、インデックスのサイズ(三角の点で示す)をテキストファイルのサイズ(四角の点で示す)よりも小さくすることが可能となった。特に、この効果は、文書ファイルのサイズが大きくなるほど顕著となることが明らかになった。
また、本発明の発明者による実験によると、本実施形態の検索機能とUNIX(登録商標)系のgrepコマンドとによる処理時間(実時間)を同一の条件で比較した場合、grepコマンドでは14秒程度要した検索が、本実施形態の検索機能では0.46秒程度で行えることが確認された。これにより、本実施形態の検索機能は、実用上十分な速度で検索を実行できるということができる。
なお、本実施形態の検索機能は、ディスクキャッシュが有効である場合よりも、ディスクキャッシュが有効でない場合においてより効果が顕著であることも確認された。
[変形例]
本発明は、上述した実施形態のみならず、その他の形態でも実施が可能である。例えば、パーティション情報やファイル情報リストは、必須のデータではない。しかしながら、もちろん、このようなデータを用いて読み出したり参照したりするデータの範囲を限定した方が、より高速に処理が実行できることはいうまでもない。また、上述した実施形態においては、単語の探索を二分探索により行うとしたが、二分探索を用いないでもよい。
なお、ファイル情報リストを設けない場合、そのままでは、有無情報リストにおける区切り位置、すなわち、有無情報ブロックどうしの区切りを示す位置を特定することが困難となる。そのため、この場合には、例えば、区切り位置を示す何らかのデータを有無情報ブロックの間に挿入するとよい。このデータは、「1」または「0」以外のものを示すデータであれば、いかなるものであってもよい。
あるいは、有無情報ブロックに含まれる有無情報の数を全ての有無情報ブロックについて同じ数にしてもよい。この場合、有無情報の数は、全ての有無情報ブロックにおいて単語識別番号の最大値と同じ数になる。このようにすれば、有無情報ブロックのデータサイズが同一となるため、区切り位置の特定を容易にすることができる。
また、本発明は、いわゆるアンド検索、オア検索、マイナス検索などに適用してもよい。また、上述した実施形態においては、検索文字列が1つの単語に含まれる文字列である場合を説明したが、いわゆるフレーズ検索に本発明を適用してもよい。
なお、本発明をフレーズ検索に適用する場合は、アンド検索を行った後に検索文字列の語順に基づいて絞り込みを行ってもよいが、上述した単語リストにフレーズを記述してもよい。例えば、単語リストに「thank」および「you」が単語として記述される場合に、さらに、「thank you」というフレーズを1の単語であるとみなして追記するようにしてもよい。要するに、上述した実施形態における「単語リスト」は、文書ファイルに少なくとも1つ含まれる単語のリストであったが、これを、文書ファイルに少なくとも1つ含まれる単語またはフレーズのリストとしてもよいということである。
上述した実施形態においては、本発明を表示装置に適用した態様を示したが、本発明に係る検索装置は、その他の種々の装置に適用することができる。また、本発明は、リソースに制限のある組み込みシステム等に適用するに好適な構成であるが、もちろん、リソースに比較的余裕のあるその他の装置に適用してもよい。なお、このような場合であれば、文字列の検索とインデックスの生成とを同一の装置で実行してもよい。
また、上述した実施形態においては、検索対象のファイル(実施形態においては、文書ファイル)が表示されることを前提としていたが、検索対象のファイルは表示されないファイルであってもよい。このような場合であれば、単語が表示されない文字列であってもよく、例えば、メタデータ等を単語として含んでもよい。
また、検索の態様によっては、検索文字列を含むファイルが特定されれば足り、当該ファイルにおける検索文字列を含む単語の位置までは特定しないでもよい場合も考えられる。このような場合には、上述した位置情報の出力は不要であり、上述したファイルパスのようなファイルを特定できる情報のみが出力されればよい。この場合には、もちろん、位置情報を記憶する構成や位置情報を特定する構成は不要となる。
また、上述した実施形態においては、検索装置10とデータ管理装置20との間におけるデータのやりとりは、通信部13および23による通信で実現していたが、検索装置10とデータ管理装置20との間でデータのやりとりが可能であるならば、データの取得または供給の態様は特に問わない。例えば、記憶部12をメモリカードのような着脱可能な構成にし、データ管理装置20においてこれを読み書きできるようにしてもよい。
本発明の一実施形態である情報処理システムを示すブロック図である。 データ管理装置の動作を示すフローチャートである。 単語リストを例示する図である 位置情報ブロックのデータ形式を例示する図である。 有無情報ブロックを例示する図である。 ファイル情報リストのデータ形式を例示する図である。 位置情報ブロックと位置アドレスの関係を例示する図である。 単語リストを例示する図である。 有無情報ブロックを例示する図である。 有無情報リストを例示する図である。 有無情報リストを例示する図である。 パーティションの一例を示す図である。 パーティション情報のデータ形式を例示する図である。 検索装置の動作を示すフローチャートである。 検索装置の動作を示すフローチャートである。 有無情報ブロックを例示する図である。 ルックアップテーブルを例示する図である。 実施形態の効果を説明するための図である。
符号の説明
100…情報処理システム、10…検索装置、11…制御部、12…記憶部、13…通信部、14…入力部、15…表示部、20…データ管理装置、21…制御部、22…記憶部、23…通信部

Claims (8)

  1. 文字列を含む複数のファイルのそれぞれを識別する複数のファイル情報と、
    前記複数のファイルの少なくとも1つに含まれる文字列と、前記文字列を一意的に特定する識別番号とを有する文字列リストと、
    前記文字列リストに含まれる各文字列の有無を表す有無情報を前記識別番号に応じた順序で表す有無情報ブロックを前記複数のファイルのそれぞれについて有する有無情報リストと
    を記憶する記憶手段と、
    検索対象の文字列である検索文字列を取得する取得手段と、
    前記取得手段により取得された検索文字列を含む文字列が前記文字列リストに含まれる場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する識別番号特定手段と、
    前記有無情報リストの有無情報に基づき、前記識別番号特定手段により特定された識別番号により表される文字列を含むファイルを特定するファイル特定手段と、
    前記ファイル特定手段により特定されたファイルを示す前記ファイル情報を出力する出力手段と
    を備えることを特徴とする検索装置。
  2. 前記記憶手段は、前記複数のファイルの少なくとも1つに含まれる文字列の位置をそれぞれ表す複数の位置情報を記憶し、
    前記ファイル特定手段により特定されたファイルにおける前記検索文字列を含む文字列の位置を表す位置情報を前記複数の位置情報の中から特定する位置情報特定手段を備え、
    前記出力手段は、
    前記ファイル特定手段により特定されたファイルを示す前記ファイル情報と、当該ファイルについて前記位置情報特定手段により特定された位置情報とを出力する
    ことを特徴とする請求項1に記載の検索装置。
  3. 前記記憶手段は、前記文字列リストを複数の部分に区切るパーティション情報を記憶し、
    前記識別番号特定手段は、
    前記取得手段により取得された検索文字列を含む文字列が前記パーティション情報により区切られる複数の部分のいずれに含まれ得るかを特定するパーティション特定手段と、
    前記パーティション特定手段により特定された部分に前記検索文字列を含む文字列が存在するか否かを判断する判断手段とを備え、
    前記パーティション特定手段により特定された部分に前記検索文字列を含む文字列が存在すると前記判断手段が判断する場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する
    ことを特徴とする請求項1に記載の検索装置。
  4. 前記識別番号特定手段は、
    前記文字列リストから前記取得手段により取得された検索文字列を含む文字列を二分探索により検索する検索手段を備える
    ことを特徴とする請求項1に記載の検索装置。
  5. 前記有無情報が、前記文字列リストに含まれる各文字列の有無を1ビット単位で表すことを特徴とする請求項1に記載の検索装置。
  6. 前記識別番号は、前記複数のファイルのうち、当該ファイルに少なくとも1つ含まれる文字列の総数が少ないファイルに含まれる文字列から先に付与され、
    前記有無情報ブロックに含まれる前記有無情報の数は、少なくとも1つ含まれる文字列の総数が少ないファイルについての有無情報ブロックほど少ない
    ことを特徴とする請求項1に記載の検索装置。
  7. 前記記憶手段は、
    前記複数のファイルのうちの各ファイルについての前記有無情報ブロックの位置を示すアドレス情報を記憶し、
    前記ファイル特定手段は、
    前記アドレス情報に基づいて各々の前記有無情報ブロックを特定し、当該有無情報ブロックから前記識別番号特定手段により特定された識別番号により表される文字列を含むファイルを特定する
    ことを特徴とする請求項1に記載の検索装置。
  8. コンピュータに、
    文字列を含む複数のファイルのそれぞれを識別する複数のファイル情報と、
    前記複数のファイルの少なくとも1つに含まれる文字列と、前記文字列を一意的に特定する識別番号とを有する文字列リストと、
    前記文字列リストに含まれる各文字列の有無を表す有無情報を前記識別番号に応じた順序で表す有無情報ブロックを前記複数のファイルのそれぞれについて有する有無情報リストと、
    検索対象の文字列である検索文字列と
    を取得する機能と、
    前記検索文字列を含む文字列が前記文字列リストに含まれる場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する機能と、
    前記有無情報リストの有無情報に基づき、前記特定された識別番号により表される文字列を含むファイルを特定する機能と、
    前記特定されたファイルを示す前記ファイル情報を出力する機能と
    を実現させるためのプログラム。
JP2007081691A 2007-03-27 2007-03-27 検索装置およびプログラム Expired - Fee Related JP5151206B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007081691A JP5151206B2 (ja) 2007-03-27 2007-03-27 検索装置およびプログラム
US12/079,432 US7840583B2 (en) 2007-03-27 2008-03-26 Search device and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007081691A JP5151206B2 (ja) 2007-03-27 2007-03-27 検索装置およびプログラム

Publications (3)

Publication Number Publication Date
JP2008242749A true JP2008242749A (ja) 2008-10-09
JP2008242749A5 JP2008242749A5 (ja) 2010-04-08
JP5151206B2 JP5151206B2 (ja) 2013-02-27

Family

ID=39796056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007081691A Expired - Fee Related JP5151206B2 (ja) 2007-03-27 2007-03-27 検索装置およびプログラム

Country Status (2)

Country Link
US (1) US7840583B2 (ja)
JP (1) JP5151206B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10121177B2 (en) * 2015-05-05 2018-11-06 Partfiniti Inc. Techniques for configurable part generation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08180066A (ja) * 1994-12-26 1996-07-12 Toshiba Corp インデックス作成方法、文書検索方法及び文書検索装置
JP2002041567A (ja) * 2000-07-31 2002-02-08 Hitachi Ltd データベース管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6802059B1 (en) * 1999-08-02 2004-10-05 Ricoh Corporation Transforming character strings that are contained in a unit of computer program code
JP4076078B2 (ja) * 2001-03-30 2008-04-16 キヤノン株式会社 ファイル管理方法
JP3924787B2 (ja) * 2003-02-27 2007-06-06 ソニー株式会社 記録装置、ファイル管理方法、ファイル管理方法のプログラム、ファイル管理方法のプログラムを記録した記録媒体
JP4054989B2 (ja) * 2003-02-27 2008-03-05 ソニー株式会社 記録装置、ファイル管理方法、ファイル管理方法のプログラム、ファイル管理方法のプログラムを記録した記録媒体
JP4140516B2 (ja) * 2003-12-09 2008-08-27 ソニー株式会社 記録制御装置および方法、記録媒体、並びにプログラム
WO2006009023A1 (ja) * 2004-07-21 2006-01-26 Konica Minolta Holdings, Inc. 情報生成装置及び情報生成プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08180066A (ja) * 1994-12-26 1996-07-12 Toshiba Corp インデックス作成方法、文書検索方法及び文書検索装置
JP2002041567A (ja) * 2000-07-31 2002-02-08 Hitachi Ltd データベース管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体

Also Published As

Publication number Publication date
US7840583B2 (en) 2010-11-23
US20080243798A1 (en) 2008-10-02
JP5151206B2 (ja) 2013-02-27

Similar Documents

Publication Publication Date Title
JP5194826B2 (ja) 情報検索装置、情報検索方法及び制御プログラム
JP2005107597A (ja) 類似文検索装置、類似文検索方法、およびプログラム
JP2011076566A (ja) 情報処理装置、端末装置、サーバ装置、通信システム、表示制御方法、プログラム、およびコンピュータ読取り可能な記録媒体
CN114297143A (zh) 一种搜索文件的方法、显示文件的方法、装置及移动终端
US9411784B2 (en) Method and computer readable medium for controlling pagination of dynamic-length presentations
JP2007188440A (ja) データベースの作成方法と装置、及びそのデータベース
JP5151206B2 (ja) 検索装置およびプログラム
US20130326329A1 (en) Method and apparatus for collecting, merging and presenting content
JPWO2008018287A1 (ja) 検索装置及び検索データベース生成装置
JP4487614B2 (ja) 情報表示制御装置、及びプログラム
JP2005258592A (ja) フォーマット変換装置およびファイル検索装置
JP2009048351A (ja) 情報検索装置、情報検索方法および情報検索プログラム
JP2002312401A (ja) 電子ファイリング装置及びその制御方法、記憶媒体並びにプログラム
JP4535186B2 (ja) 辞書機能を備えた電子装置およびプログラム
JP5184987B2 (ja) 索引情報作成装置、索引情報作成方法及びプログラム
JP6753190B2 (ja) 文書検索装置及びプログラム
CN107229349B (zh) 一种输入法的文字显示方法及装置
JP2005267057A (ja) テキストデータ抽出方法、検索用インデックス作成方法、電子ファイリングシステムおよびプログラム
JP2010015515A (ja) 辞書機能を備えた電子装置
JP2016103150A (ja) 文書処理装置および文書処理プログラム
JP5187013B2 (ja) ファイル検索システム、ファイル検索装置及びファイル検索方法
JP4256841B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム
JP2009059138A (ja) 単語検索装置、方法及びプログラム
JP2006309536A (ja) ファイル管理プログラム、及びファイル管理装置
JP2006018392A (ja) 情報処理装置、情報処理システム、検索結果表示方法、プログラム及び記録媒体

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120426

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121119

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

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees