JP5200762B2 - 検索方法および検索プログラム - Google Patents

検索方法および検索プログラム

Info

Publication number
JP5200762B2
JP5200762B2 JP2008215645A JP2008215645A JP5200762B2 JP 5200762 B2 JP5200762 B2 JP 5200762B2 JP 2008215645 A JP2008215645 A JP 2008215645A JP 2008215645 A JP2008215645 A JP 2008215645A JP 5200762 B2 JP5200762 B2 JP 5200762B2
Authority
JP
Japan
Prior art keywords
character string
search condition
search
text
node
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.)
Active
Application number
JP2008215645A
Other languages
English (en)
Other versions
JP2010049650A (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 JP2008215645A priority Critical patent/JP5200762B2/ja
Priority to US12/479,133 priority patent/US8195686B2/en
Publication of JP2010049650A publication Critical patent/JP2010049650A/ja
Application granted granted Critical
Publication of JP5200762B2 publication Critical patent/JP5200762B2/ja
Active 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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

この発明は、テキストを検索する検索方法および検索プログラムに関し、特に、検索対象となる文の構造を解析せず、かつ、アドレスを保持しない形でテキスト検索を高速に実施することができる検索方法および検索プログラムに関するものである。
検索条件となるキーワード(以下、検索条件文字列)を指定して全文テキスト検索を行う場合に、検索条件文字列に類似したキーワードのみが含まれるテキストを誤って検索してしまうという問題を解消する必要があった。例えば、検索条件文字列を「京都」として検索すると、「東京都で実施されている」等のテキストが検索されてしまう場合があった(東京都と京都は別物であるため、「東京都で実施されている」は検索されるべきではない)。
従来、テキスト検索技術として、形態素解析方式およびNgram方式が有名だが、各技術について以下に示す欠点がある。まず、形態素解析方式では、「京都」で検索しても「東京都」でヒットすることはない。しかし、形態素解析方式では、検索辞書を予め定義する必要があり、新しい語句・マイナーな語句・検索としては一般的でない変った検索語句等は辞書定義から漏れてしまい、頻繁に再定義しても完全な定義は不可能であり、また、定義作業にかかる負担が大きかった。
これに対して、Ngram方式では、入力された文章を「N文字の文字列として区切る」方式で、文章に含まれる単語を無視し、N文字単位を単語として認識されるため、形態素解析方式のような辞書は不要となる。しかし、「京都」で検索すると、「東京都」を含むテキストが出力される一方で、「東京都」を除外条件に指定した検索(除外条件文字列に検索条件文字列が包含された場合の検索)をすると、「京都」と「東京都」との両方を含むテキスト(例えば、「京都と東京都で実施されている」等のテキスト)まで出力されなくなってしまう。
上記したNgram方式の欠点を補うものとして、ヒットしたキーワードの存在場所(アドレス)を保持しておき、ヒットしたキーワード前後の文字列を取り出して除外条件文字列であるか否かを確認することで、例えば、検索条件文字列「京都」、除外条件文字列「東京都」を指定した場合でも、検索条件文字列を含むテキスト(例えば、「京都と東京都で実施されている」等のテキスト)を検索することができる(例えば、特許文献1参照)。
特開2003−203093号公報
しかしながら、Ngram方式の欠点を補う従来の検索方式を用いたとしても、アドレスを保持するためのメモリ消費量が多くなると共に、再度、除外条件文字列であるか否かを確認する必要があるため、高速に検索処理を実行することができないという問題があった。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、検索対象となる文の構造を解析せず、かつ、アドレスを保持しない形でテキスト検索を高速に実施することができる検索方法および検索プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、この検索方法は、検索装置が、テキストの検索条件となるキーワードを示す検索条件文字列と、前記検索条件の対象外となるキーワードを示す検索条件外文字列とを取得するステップと、複数のテキストを記憶した記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を記憶部に登録し、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記記憶部に登録された該当を非該当に変更するステップと、前記記憶部に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力するステップと、を有することを要件とする。
この検索方法によれば、検索対象となるテキストの構造を解析せず、かつ、テキスト中に含まれる文字のアドレスを保持することなく、テキスト中の文字列と、検索条件文字列および検索条件外文字列とを順次照合し、照合結果に応じて記憶部に該当を登録、または登録した該当を非該当に変更し、最終的に、記憶部に該当が残っている場合に、記憶装置から抽出したテキストを検索結果として出力するので、ハードウェア資源を節約でき、高速にテキスト検索を実行することができる。
以下に添付図面を参照して、この発明に係る検索方法および検索プログラムの好適な実施の形態を詳細に説明する。
まず、本実施例1にかかる検索装置の概要および特徴について説明する。図1および図2は、本実施例1にかかる検索装置の概要および特徴を説明するための図である。本実施例1にかかる検索装置は、テキストの検索条件となるキーワードと、検索条件の対象外となるキーワードとを取得する(以下の説明において、テキストの検索条件となるキーワードを検索条件文字列と表記し、検索条件の対象外となるキーワードを検索条件外文字列と表記する)。
そして、検索装置は、検索条件外文字列に包含される検索条件文字列の数に1を加算した数のスタック枠を作成し、記憶装置からテキストを抽出して、抽出したテキスト中の文字列と検索条件文字列および検索条件外文字列とを順次照合し、テキスト中の文字列が検索条件文字列にヒットした場合には、該当をスタック枠にプッシュする。
一方、テキスト中の文字列が検索対象外文字列にヒットした場合には、検索条件外文字列中に含まれる検索条件文字列の数だけ、スタック枠に最後に登録された該当から順に該当を非該当に変更する。検索装置は、スタック枠に該当が残っている場合には、記憶装置から抽出したテキストを検索結果として出力する。
あるいは、検索装置は、スタック枠に含まれる各スタック領域の内、最後にプッシュされるべきスタック領域に該当がプッシュされた場合には、記憶装置から抽出したテキストを検索結果として出力する。
ここで、具体的な例をあげて、検索装置の概要を説明する。一例として、検索条件文字列を「タン」、検索条件外文字列を「タンタン麺」とし、記憶装置から抽出したテキストを「タンタン麺とロースとタンを頼んで、タンタン麺を食べた。」とする。
まず、検索装置は、検索条件外文字列に包含される検索条件文字列の数に1を加算した数のスタック枠を作成する。検索条件外文字列「タンタン麺」は、検索条件文字列「タン」を2個包含しているので、検索装置は、2に1を加算した3個のスタック枠を作成する(ステップS10)。
続いて、検索装置は、テキスト中の文字列「タンタン麺とロースとタンを頼んで、タンタン麺を食べた。」と検索条件文字列「タン」および検索条件外文字列「タンタン麺」とを順次照合し、テキスト中の文字列が検索条件文字列にヒットした場合には、該当(○)をスタック枠にプッシュし、テキスト中の文字列が検索条件外文字列にヒットした場合には、検索条件外文字列中に含まれる検索条件文字列の数だけ、スタック枠に最後に登録された該当(○)から順に、該当(○)を非該当(×)に変更する。
図1に示す例では、まず、テキスト中の文字列2文字目で、「タン」にヒットするので、検索装置は、スタックに該当(○)をプッシュする(ステップS11)。そして、テキスト中の文字列4文字目で、「タン」にヒットするので、検索装置は、スタックに該当(○)をプッシュする(ステップS12)。
図2の説明に移ると、テキスト中の文字列5文字目で、「タンタン麺」にヒットするので、検索装置は、「タンタン麺」中に含まれる「タン」の数「2」だけ、スタック枠に最後に登録された該当(○)から順に該当(○)を非該当(×)に変更する(ステップS13)。
続いて、テキスト中の文字列12文字目で、「タン」にヒットするので、検索装置は、スタックに該当(○)をプッシュする(ステップS14)。また、テキスト中の文字列19文字目で、「タン」にヒットするので、スタックに該当(○)をプッシュする(ステップS15)。
また、テキスト中の文字列21文字目で、「タン」にヒットするので、検索装置は、スタックに該当(○)をプッシュする(ステップS16)。ステップS16において、スタック枠に含まれる各スタック領域の内、最後にプッシュされるべきスタック領域に該当(○)がプッシュされるので、記憶装置から抽出したテキスト「タンタン麺とロースとタンを頼んで、タンタン麺を食べた。」を検出結果として出力する。
このように、本実施例1にかかる検索装置は、テキストと検索条件文字列および検索条件外文字列とを順次照合して、スタックに該当(○)をプッシュ、あるいは、スタックにプッシュした該当(○)を非該当(×)に変更することにより、検索対象となるテキストを検出するので、検索対象となる文の構造を解析することや、各キーワードのアドレスを保持しなくても検索対象となるテキストを高速に検索でき、メモリ使用量を抑えることができる。
次に、本実施例1にかかる検索装置を備えた検索システムの構成について説明する。図3は、本実施例1にかかる検索装置を備えた検索システムの構成を示す図である。同図に示すように、この検索システムは、クライアント端末50と検索装置100とを有し、クライアント端末50および検索装置100は、ネットワーク10によって接続されている。
クライアント端末50は、入力装置(図示略)を介して利用者から検索クエリを入力された場合に、検索クエリを検索装置100に送信し、検索装置100からの検索結果を出力装置(図示略)に出力する装置である。なお、クライアント端末50から送信される検索クエリには、検索条件文字列および検索条件外文字列の情報が含まれている。
検索装置100は、クライアント端末50から検索クエリを受信した場合に、検索クエリに含まれる検索条件文字列および検索条件外文字列を基にして該当するテキストを検索し、検索結果をクライアント端末50に出力する装置である。
図4は、本実施例1にかかる検索装置100の構成を示す機能ブロック図である。同図に示すように、この検索装置100は、入力部110と、出力部120と、通信制御IF部130と、通信制御IF部130と、入出力制御IF部140と、記憶部150と制御部160とを有する。
このうち、入力部110は、各種の情報を入力する入力手段であり、例えば、キーボードやマウス、マイクなどによって構成される。なお、後述するモニタ(出力部120)も、マウスと協働してポインティングデバイス機能を実現する。
出力部120は、各種の情報を出力する手段であり、モニタ(若しくはディスプレイ、タッチパネル)やスピーカなどによって構成される。通信制御IF部130は、主にクライアント端末50との間における通信を制御する手段である。なお、入出力制御IF部140は、入力部110、出力部120、通信制御IF部130、記憶部150、制御部160によるデータの入出力を制御する手段である。
記憶部150は、制御部160による各種処理に必要なデータおよびプログラムを記憶する記憶手段である。特に本発明に密接に関連するものとして、記憶部150は、テキスト管理テーブル150aと、オートマトンデータ150bと、スタック150cと、受理状態管理テーブル150dと、判定結果テーブル150eとを有する。
テキスト管理テーブル150aは、検索対象となる複数のテキストを記憶するテーブルである。図5は、本実施例1にかかるテキスト管理テーブル150aのデータ構造の一例を示す図である。同図に示すように、このテキスト管理テーブル150aは、テキスト識別番号と、テキストとを対応付けて記憶している。例えば、テキスト識別番号「1001」に対応するテキストは「タンタン麺とロースとタンを頼んで、タンタン麺を食べた。」となる。
オートマトンデータ150bは、検索条件文字列を受理するノードおよび検索条件外文字列を受理するノードを有するAC(Aho,Alfred V.,MargaretJ.Corasick)オートマトン(エイホ−コラシック法に基づくオートマトン)のデータである。
図6は、本実施例1にかかるオートマトンデータ150bのデータ構造の一例を示す図である。ここでは説明の便宜上、図6に示すオートマトンデータ150bは、一例として、検索条件文字列「A」を受理するノードと、検索条件外文字列「BA」、「ABA」を受理するノードとを含んでいるものとする。
具体的には、オートマトンデータ150bは、ノード1〜6を有しており、ノード1が初期ノードとなっている。また、検索条件文字列「A」を受理するノードは、ノード3,4,6となり、検索条件外文字列「BA」を受理するノードは、ノード3,6となり、検索条件外文字列「ABA」を受理するノードは、ノード6となる。
なお、図6では、表記簡略のため、ノード1(ini)への遷移およびノード1の遷移先への遷移は省略して記述している。対応する文字の遷移がない場合には、ノード1あるいはノード1の対応する文字の遷移先に戻る。例えば、現在のノードがノード4で、次に入力される文字が「B」、「A」以外の場合には、ノード1に遷移する。現在のノードがノード4で、次に入力される文字が「A」の場合には、ノード1からAへの遷移先である、ノード4に遷移する。
検索装置100は、初期ノード(ノード1)を起点として、テキストに含まれる文字列中の各文字をオートマトンデータ150bに順次代入していき、検索条件文字列を受理するノードあるいは検索条件外文字列を受理するノードに遷移したか否かによって、検索条件文字列、検索条件外文字列にヒットしたか否かを判定することができる。
スタック150cは、該当(○)または非該当(×)を格納するスタックである。スタック150cのスタック枠の数は、検索条件外文字列に包含される検索条件文字列の数に1を加算した数となる。また、テキスト中の文字列が検索条件文字列にヒットした場合には、該当(○)がスタック150cにプッシュされ、検索条件外文字列にヒットした場合には、所定条件に応じて該当(○)が非該当(×)に変更される(図1〜2参照)。
受理状態管理テーブル150dは、オートマトンデータ150dにおいて、検索条件文字列を受理するノードあるいは検索条件外文字列を受理するノードに遷移した場合の処理内容を管理するテーブルである。図7は、本実施例1にかかる受理状態管理テーブル150dのデータ構造の一例を示す図である。
図7に示すように、この受理状態管理テーブル150dは、ノードIDと、スタック処理指示欄とを対応付けて記憶している。ノードIDは、オートマトンデータ150bの各ノードを識別する情報であり、ノードID「1〜6」は、図6のノード1〜6にそれぞれ対応している。
処理指示欄は、各ノードに遷移した場合のスタック150cに対する処理内容を示す情報である。処理指示欄の1列目は、スタック150cに該当(○)をプッシュする回数を定義している。処理指示欄の1列目が「1」の場合には、スタック150cに該当(○)を1回プッシュする。例えば、テキストの文字列をオートマトン(図6参照)に入力し、ノード3(ノードID「3」に対応する)に遷移した場合には、スタック150cに該当(○)が1回プッシュされる。なお、処理指示欄の1列目が「0」の場合には、スタック150cに対する該当(○)のプッシュは実行されない。
処理指示欄の2列目は、スタック150cに格納された該当(○)を非該当(×)に変更する個数を定義している。処理指示欄の2列目が「−1」の場合には、スタック150cに格納された該当(○)のうち、最後にプッシュされた該当(○)を非該当(×)に変更する。例えば、テキストの文字列をオートマトン(図6参照)に入力し、ノード3に遷移した場合には、最後にプッシュされた該当(○)を非該当(×)に変更する。
ところで、ノードID「3」等のように、処理指示欄の1列目および2列目に「0」以外の数値が入力されている場合には、1列目の数に従って、該当(○)をスタック150cにプッシュした後に、2列目の数に従って、該当(○)を非該当(×)に変更する。
判定結果テーブル150eは、検索条件外文字列を除く、検索条件文字列にヒットしたか否かを管理するテーブルである。図8は、本実施例1にかかる判定結果テーブル150eのデータ構造の一例を示す図である。図8に示すように、この判定結果テーブル150eは、テキスト識別番号と、判定結果とを対応付けて記憶している。
判定結果テーブル150eにおいて、判定結果が「0」となっているテキストは、検索条件文字列にヒットしていない旨を示し、判定結果が「1」となっているテキストは、検索条件文字列にヒットしている旨を示す。
図4の説明に戻ると、制御部160は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する制御手段である。特に本発明に密接に関連するものとして、制御部160は、検索クエリ解析部160aと、オートマトン生成部160bと、照合処理部160cと、検索結果出力部160dとを有する。
検索クエリ解析部160aは、クライアント端末50から検索クエリを受信した場合に、検索クエリに含まれる検索条件文字列と検索条件外文字列とを抽出し、抽出した検索条件文字列と検索条件外文字列をオートマトン生成部160bに出力する手段である。
また、検索クエリ解析部160aは、検索条件文字列と検索条件外文字列とを基にして、スタック150cのスタック枠の数を設定する。具体的に、検索クエリ解析部160aは、検索条件文字列と検索条件外文字列とを比較して、検索条件外文字列に包含される検索条件文字列の数に1を加算した数を判定し、判定した数のスタック枠をスタック150cに作成する。
なお、検索クエリ解析部160aは、複数の検索条件外文字列が存在する場合には、各検索条件外文字列と検索条件文字列とを比較して、スタック枠の数をそれぞれ判定し、判定結果から得られる複数種類の数の内、最大の数をスタック枠の数に設定する。スタック枠の数を設定する処理は、後述するオートマトン生成部160bが実行しても良い。
オートマトン生成部160bは、検索条件文字列を受理するノードおよび検索条件外文字列を受理するノードを有するオートマトンデータ(ACオートマトン)150bを生成する手段である。
オートマトン生成部160bがオートマトンデータ150bを作成する場合には、例えば、従来技術となるエイホ−コラシック法や、技術文献(Aho,Alfred V.,Margaret J.Corasick(1975年6月)."Efficient string matching:An aid to bibliographic search".Communications of the ACM18(6):333-340.DOI10.1145/360825.360855)に基づいてオートマトンデータ150b(図6参照)を作成することができる。図6に示すオートマトンデータ150bは、検索条件文字列「A」、検索条件外文字列「BA」、「ABA」を受理するオートマトンデータ150bである。
一方、オートマトン生成部160bは、オートマトンデータ150b、検索条件文字列、検索条件外文字列に基づいて、受理状態管理テーブル150d(図7参照)を作成する。図6に示すオートマトンデータ150bでは、ノード3,4,6が、検索条件文字列「A」を受理する。従って、オートマトン生成部160bは、受理状態管理テーブル150d中のノードID「3,4,6」に対応するスタック処理指示欄の1列目に「1」を設定する。
また、オートマトンデータ150bでは、ノード3が、検索条件外文字列「BA」を受理する。従って、オートマトン生成部160bは、受理状態管理テーブル150d中のノードID「3」に対応するスタック処理指示欄の2列目に「−1」を設定する(検索条件外文字列「BA」に検索条件文字列「A」が1つ含まれるため、−1を設定する)。
また、オートマトンデータ150bでは、ノード6が、検索条件外文字列「BA」、「ABA」を受理する。従って、オートマトン生成部160bは、受理状態管理テーブル150d中のノードID「6」に対応するスタック処理指示欄の2列目に「−2」を設定する(検索条件外文字列「BA」に検索条件文字列「A」が1つ含まれ、検索条件外文字列「ABA」に検索条件文字列「A」が2つ含まれるため、大きいほうの数2に「−」を付加した−2を設定する)。
照合処理部160cは、テキスト管理テーブル150aからテキストを抽出し、抽出したテキスト中の文字列をオートマトンデータ150bに順次入力して照合することにより、検索対象となるテキストであるか否かを判定する手段である。照合処理部160cは、検索対象となるテキストであると判定した場合には、判定結果テーブル150eの判定結果に「1」を設定し、検索対象となるテキストでないと判定した場合には、判定結果テーブル150eの判定結果に「0」を設定する。
具体的に、照合処理部160cは、テキスト中の文字列をオートマトンデータ150bに順次入力してオートマトンデータ150b中の各ノードを遷移し、遷移先のノードと、受信状態管理テーブル150dとを比較して、スタック150cに該当をプッシュ、またはプッシュした該当を非該当に変更する。
例えば、照合処理部160cは、テキストの文字列をオートマトン(図6参照)に入力し、ノード3(ノードID「3」に対応する)に遷移した場合には、ノードID「3」に対応するスタック処理指示欄の1列目が「1」となっているので、スタック150cに該当(○)が1回プッシュする。また、照合処理部160cは、ノードID「3」に対応するスタック処理指示欄の2列目が「−1」となっているので、スタック150cに最後にプッシュされた該当(○)を非該当(×)に変更する。
そして、照合処理部160cは、テキスト中の文字列を全てオートマトンデータ150bに入力した段階で、スタックに1つでも該当が格納されている場合には、抽出したテキストを検索対象のテキストとして判定する。一方、照合処理部160cは、テキスト中の文字列を全てオートマトンデータ150bに入力した段階で、スタックに該当が1つも格納されていない場合には、抽出したテキストを検索対象のテキストではないと判定する。
また、照合処理部160cは、テキスト中の文字列を全てオートマトンデータ150bに入力していない段階であっても、スタック枠に含まれる各スタック領域の内、最後にプッシュされるべきスタック領域に該当がプッシュされた場合には、抽出したテキストを検索対象のテキストとして判定する。
検索結果出力部160dは、検索結果となるテキストをクライアント端末50に送信する手段である。具体的に、検索結果出力部160dは、判定結果テーブル150eを参照し、判定結果が「1」となっているテキスト識別番号のテキストをテキスト管理テーブル150aから抽出し、抽出したテキストをクライアント端末50に出力する。
次に、具体例を用いて、検索装置100の処理を説明する。ここでは、説明の便宜上、検索条件文字列を「A」とし、検索条件外文字列を「AABAABCX」、「AABCAC」、「BAAB」とする。
まず、検索クエリ解析部160aは、検索条件文字列「A」と、検索条件外文字列「AABAABCX」、「AABCAC」、「BAAB」とを比較し、各検索条件外文字列が検索条件文字列を包含する数を判定する。そして、検索クエリ解析部160aは、各数の内、最大の数に1を加算した数のスタック枠をスタック150cに設定する。
検索条件外文字列「AABAABCX」には、検索条件文字列「A」が4つ含まれ、検索条件外文字列「AABCAC」には、検索条件文字列「A」が3つ含まれ、検索条件外文字列「BAAB」には、検索条件文字列「A」が2つ含まれるので、最大の数「4」に1を加算した数「5」のスタック枠をスタック150cに設定する。
続いて、オートマトン生成部160cは、検索条件文字列「A」を受理するノードおよび検索条件外文字列「AABAABCX」、「AABCAC」、「BAAB」を受理するノードを有するオートマトンデータ(ACオートマトン)150bを作成する。図9は、A、AABAABCX、AABCAC、BAABを受理するオートマトンデータを示す図である。
図9に示すオートマトンデータ150bは、ノード20〜35を有しており、ノード20が初期ノードとなっている。また、検索条件文字列「A」を受理するノードは、ノード21,22,25,27,28,33,34となる。検索条件外文字列「AABAABCX」を受理するノードは、ノード31となる。検索条件外文字列「AABCAC」を受理するノードは、ノード26となる。検索条件外文字列「BAAB」を受理するノードは、ノード29、35となる。
なお、図9では、表記簡略のため、ノード1(ini)への遷移およびノード1の遷移先への遷移は省略して記述している。対応する文字の遷移がない場合には、ノード1あるいはノード1の対応する文字の遷移先に戻る。例えば、ノード35で「B」が入力された場合には、ノード20(ini)からBへの遷移先であるノード32に遷移し、ノード35で、「C」が入力された場合には、ノード20に遷移する。
続いて、オートマトン生成部160cは、オートマトンデータ150b(図9参照)、検索条件文字列「A」、検索条件外文字列「AABAABCX」、「AABCAC」、「BAAB」に基づいて、受理状態管理テーブル150dを作成する。図9に示すオートマトンデータ150bでは、ノード21,22,25,26,27,28,33,34が、検索条件文字列「A」を受理する。従って、オートマトン生成部160bは、受理状態管理テーブル150dのノードID「21,22,25,26,27,28,33,34」に対応するスタック処理指示欄の1列目に「1」を設定する。
また、オートマトンデータ150b(図9参照)では、ノード31が、検索条件外文字列「AABAABCX」を受理する。従って、オートマトン生成部160bは、受理状態管理テーブル150d中のノードID「31」に対応するスタック処理指示欄の2列目に「−4」を設定する(検索条件外文字列「AABAABCX」に検索条件文字列「A」が4つ含まれるため、−4を設定する)。
また、オートマトンデータ150b(図9参照)では、ノード26が、検索条件外文字列「AABCAC」を受理する。従って、オートマトン生成部160bは、受理状態管理テーブル150d中のノードID「26」に対応するスタック処理指示欄の2列目に「−3」を設定する(検索条件外文字列「AABCAC」に検索条件文字列「A」が3つ含まれるため、−3を設定する)。
また、オートマトンデータ150b(図9参照)では、ノード29、35が、検索条件外文字列「BAAB」を受理する。従って、オートマトン生成部160bは、受理状態管理テーブル150d中のノードID「29,35」に対応するスタック処理指示欄の2列目に「−2」を設定する(検索条件外文字列「BAAB」に検索条件文字列「A」が2つ含まれるため、−2を設定する)。図10は、図9に示したオートマトンデータ150bに対応する受理状態管理テーブル150dの一例を示す図である。
続いて、照合処理部160cは、オートマトンデータ150bにテキスト中の文字列を順次入力して照合することにより、検索対象となるテキストであるか否かを判定する。まず、照合処理部160cが、テキスト「AABAABCAC」をオートマトンデータ150b(図9参照)に入力して、検索対象となるテキストであるか否かを判定する処理について説明する。図11〜図19は、テキスト「AABAABCAC」の照合処理を示す図であり、図20〜図22は、テキスト「AB」の照合処理を示す図であり、図23〜図27は、テキスト「BAAB」の照合処理を示す図である。なお、ここでは説明の便宜上、スタックにプッシュされる該当を「1」とし、非該当を「0」とする。
まず、照合処理部160cは、起点を、オートマトンデータ150bの初期ノードとなるノード20に設定し(図11参照)、テキストの1文字目となる「A」をオートマトンデータ150bに入力すると、ノード20からノード21に遷移する。ノード21は、検索条件文字列「A」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「21」に対応するスタック処理指示欄の1列目が1であるため)、スタックに該当(1)をプッシュする(図12参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの2文字目となる「A」を入力すると、ノード21からノード22に遷移する。ノード22は、検索条件文字列「A」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「22」に対応するスタック処理指示欄の1列目が1であるため)、スタックに該当(1)をプッシュする(図13参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの3文字目となる「B」を入力すると、ノード22からノード23に遷移する(図14参照)。また、テキストの4文字目となる「A」を入力すると、ノード23からノード27に遷移する。ノード27は、検索条件文字列「A」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「27」に対応するスタック処理指示欄の1列目が1であるため)、スタックに該当(1)をプッシュする(図15参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの5文字目となる「A」を入力すると、ノード27からノード28に遷移する。ノード28は、検索条件文字列「A」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「27」に対応するスタック処理指示欄の1列目が1であるため)、スタックに該当(1)をプッシュする(図16参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの6文字目となる「B」を入力すると、ノード28からノード29に遷移する。ノード29は、検索条件外文字列「BAAB」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「29」に対応するスタック処理指示欄の2列目が−2であるため)、スタックに最後にプッシュされた該当(1)とその前の該当(1)を非該当(0)に変更する(図17参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの7文字目となる「C」を入力すると、ノード29からノード30に遷移する(図18参照)。また、テキストの8文字目となる「A」を入力すると、ノード30からノード25に遷移する。ノード25は、検索条件文字列「A」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「25」に対応するスタック処理指示欄の1列目が1であるため)、スタックに該当(1)をプッシュする(図19参照)。
ここで、照合処理部160cは、スタック枠に含まれる各スタック領域の内、最後にプッシュされるべきスタック領域(位置)に該当(1)がプッシュされたので、テキスト「AABAABCAC」を検索対象のテキストであると判定する。照合処理部160cは、判定結果テーブル150eにおいて、テキスト「AABAABCAC」に対応する判定結果を「1」に設定する。
次に、図20の説明に移ると、まず、照合処理部160cは、起点を、オートマトンデータ150bの初期ノードとなるノード20に設定し(図20参照)、テキストの1文字目となる「A」をオートマトンデータ150bに入力すると、ノード20からノード21に遷移する。ノード21は、検索条件文字列「A」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「21」に対応するスタック処理指示欄の1列目が1であるため)、スタックに該当(1)をプッシュする(図21参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの2文字目となる「B」を入力すると、ノード21からノード20に遷移する(図22参照)。照合処理部160cは、テキスト中の文字列「AB」を全てオートマトンデータ150bに入力した段階で、スタックに該当(1)が格納されているので、テキスト「AB」を検索対象のテキストであると判定する。
次に、図23の説明に移ると、まず、照合処理部160cは、起点を、オートマトンデータ150bの初期ノードとなるノード20に設定し(図23参照)、テキストの1文字目となる「B」をオートマトンデータ150bに入力すると、ノード20からノード32に遷移する(図24参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの2文字目となる「A」を入力すると、ノード32からノード33に遷移する。ノード33は、検索条件文字列「A」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「33」に対応するスタック処理指示欄の1列目が1であるため)、スタックに該当(1)をプッシュする(図25参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの3文字目となる「A」を入力すると、ノード33からノード34に遷移する。ノード34は、検索条件文字列「A」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「34」に対応するスタック処理指示欄の1列目が1であるため)、スタックに該当(1)をプッシュする(図26参照)。
照合処理部160cは、オートマトンデータ150bに、テキストの4文字目となる「B」を入力すると、ノード34からノード35に移行する。ノード35は、検索条件外文字列「BAAB」を受理するノードであるため(受理状態管理テーブル150d(図10)において、ノードID「34」に対応するスタック処理指示欄の2列目が−2であるため)、スタックに最後にプッシュされた該当(1)とその前の該当(1)を非該当(0)に変更する(図27参照)。
照合処理部160cは、テキスト中の文字列「BAAB」を全てオートアントンデータ150bに入力した段階で、スタックに該当(1)が1つも格納されていないので、テキスト「BAAB」を検索対象のテキストではないと判定する。
次に、本実施例1にかかる検索装置100の処理手順について説明する。図28は、本実施例1にかかる検索装置100の処理手順を示すフローチャートである。図28に示すように、検索装置100は、検索クエリ解析部160aが、クライアント端末50から検索クエリを受信する(ステップS101)。
そして、オートマトン生成部160bが、オートマトン作成処理を実行し(ステップS102)、照合処理部160cが照合処理を実行し(ステップS103)、検索結果出力部160dが検索結果を出力する(ステップS104)。
次に、図28のステップS102に示したオートマトン作成処理を具体的に説明する。図29は、本実施例1にかかるオートマトン作成処理の処理手順を示すフローチャートである。図29によるオートマトン作成処理を実行することにより、オートマトンデータ150b、スタック150c、受信状態管理テーブル150dが作成される。
図29に示すように、オートマトン生成部160bは、検索条件文字列と、検索条件外文字列とを受理するACオートマトン(オートマトンデータ150b)を作成し(ステップS201)、検索条件文字列がヒットした場合のスタック処理指示欄(受理状態管理テーブル150d中のスタック処理指示欄1列目)に「1」を登録する(ステップS202)。
そして、オートマトン生成部160bは、検索条件外文字列がヒットした場合のスタック指示欄(受理状態管理テーブル150d中のスタック処理指示欄2列目)に、各検索条件外文字列に含まれる検索条件文字列数の最大値の符号を反転させて登録する(ステップS203)。
続いて、オートマト制御部160bは、検索条件外文字列の中で検索条件文字列が出現する最大数に1を加算した長さ(スタック枠の数)のスタック150cを用意する(ステップS204)。
次に、図28のステップS103に示した照合処理を具体的に説明する。図30および図31は、本実施例1にかかるオートマトン作成処理の処理手順を示すフローチャートである。図30、図31による照合処理を実行することにより、検索対象となるテキストを特定することができる。
図30に示すように、照合処理部160cは、テキスト管理テーブル150aからテキストを読み出し(ステップS301)、テキストの先頭の文字を読み出して、オートマトンデータ150bに入力し(ステップS302)、受理状態か否かを判定する(ステップS303)。
照合処理部160cは、受理状態でない場合には(ステップS304,No)、ステップS312に移行する。一方、受理状態の場合には(ステップS304,Yes)、受理状態管理テーブルのスタック処理指示欄(スタック処理指示欄の1列目)を参照する(ステップS305)。
照合処理部160cは、スタック処理指示欄が1か否かを判定し(ステップS306)、スタック処理指示欄が1である場合には(ステップS307,Yes)、スタックに1(該当)をプッシュし(ステップS308)、最古のスタック(最後にプッシュされるべきスタック領域)が1であるか否かを判定する(ステップS309)。
照合処理部160cは、最古のスタックが1(該当)でない場合には(ステップS310,No)、ステップS311に移行する。一方、最古のスタックが1(該当)の場合には(ステップS310,Yes)、ステップS317に移行する。
ところで、照合処理部160cは、スタック処理指示欄(1列目)が1でない場合には(ステップS307,No)、最新のスタック値からスタック処理指示欄(2列目)の−値分のスタック値を全て0に変更する(ステップS311)。
照合処理部160cは、読み出した文字がテキスト中の最後の文字であるか否かを判定し(ステップS312)、最後の文字でない場合には(ステップS313,No)、次の文字を読み出して、オートマトンデータ150bに入力し(ステップS314)、ステップS303に移行する。
一方、照合処理部160cは、読み出した文字がテキスト中の最後の文字である場合には(ステップS313,Yes)、スタック150cに1(該当)が残っているか否かを判定し(ステップS315)、残っている場合には(ステップS316,Yes)、テキストに対応する判定結果に1(真)を登録し(ステップS317)、ステップS319に移行する。
一方、照合処理部160cは、スタック150cに1(該当)が残っていない場合には(ステップS316,No)、テキストに対応する判定結果に0(偽)を登録し(ステップS318)、最後のテキストデータであるか否かを判定する(ステップS319)。
照合処理部160cは、最後のテキストデータでない場合には(ステップS320,No)、次のテキストデータをテキスト管理テーブル150aから取り出し(ステップS321)、ステップS302に移行する。一方、最後のテキストデータの場合には(ステップS320,Yes)、照合処理を終了する。
上述してきたように、本実施例1にかかる検索装置100は、検索条件外文字列に包含される検索条件文字列の数に1を加算した数のスタック枠をスタック150cに作成し、テキスト中の文字列をオートマトンデータ150bに順次入力し、テキスト中の文字列が検索条件文字または検索条件外文字列にヒットするか否かを判断して、スタック150cに該当をプッシュ、あるいは該当を非該当に変更する(検索条件外文字列中に含まれる検索条件文字列の数だけ、スタック枠に最後に登録された該当から順に該当を非該当に変更する)ことにより、検索対象のテキストであるか否かを判定するので、検索対象となるテキストの構造を解析することや、各文字のアドレスを保持しなくても検索対象となるテキストを高速に検索でき、メモリ使用量を抑えることができる。
また、本実施例1にかかる検索装置100は、スタック150c中の各スタック領域のうち、最後にプッシュされるべきスタック領域に該当がプッシュされた場合には、テキスト中の全ての文字列をオートマトンデータ150bに入力していなくても、検索対象のテキストとして判定するので、不要な処理を省くことができ、テキスト検索にかかる処理を高速化することができる。
さて、これまで本発明の実施例について説明してきたが、本発明は上述した実施例1以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例2として、本発明に含まれる他の実施例を説明する。
(1)照合処理について
例えば、上記の実施例1では、検索装置が、検索条件外文字列に包含される検索条件文字列の数に1を加算した数のスタック枠を作成し、検索対象となるテキストを判定していたが、これに限定されるものではなく、スタックの代わりに配列を利用して、検索対象となるテキストを判定することもできる。
図32および図33は、本実施例2にかかる検索装置の処理を説明するための図である。ここでは一例として、検索文字列を「タン」、検索条件外文字列を「タンタン麺」とし、記憶装置から抽出したテキストを「タンタン麺とロースとタンを頼んで、タンタン麺を食べた。」とする。
まず、検索装置は、記憶装置中に、配列を作成する(ステップS20)。そして、検索装置は、テキスト中の文字列「タンタン麺とロースとタンを頼んで、タンタン麺を食べた。」と検索条件文字列「タン」および検索条件外文字列「タンタン麺」とを順次照合し、テキスト中の文字列が検索条件文字列にヒットした場合には、該当(○)を配列に登録する。
一方、テキスト中の文字列が検索条件外文字列にヒットした場合には、検索条件外文字列中に含まれる検索条件文字列の数だけ、配列中の該当(○)を非該当(×)に変更する。検索装置は、テキストを全て読み終わった後に、配列に1つでも該当(○)が格納されていれば、読み込んだテキストを、検索対象のテキストであると判定する。なお、検索装置が、検索条件文字列または検索条件外文字列にヒットしたか否かを判定する場合には、例えば、実施例1に示したACオートマトンを利用して判定することができる。
図32に示す例では、まず、テキスト中の文字列2文字目で、「タン」にヒットするので、検索装置は、配列に該当(○)を登録する(ステップS21)。そして、テキスト中の文字列4文字目で、「タン」にヒットするので、検索装置は、配列に該当(○)を登録する(ステップS22)。
図33の説明に移ると、テキスト中の文字列5文字目で、「タンタン麺」にヒットするので、検索装置は、「タンタン麺」に含まれる「タン」の数「2」だけ、配列に含まれる該当(○)を非該当(×)に変更する(ステップS23)。
続いて、テキスト中の文字列12文字目で、「タン」にヒットするので、検索装置は、配列に該当(○)を登録する(ステップS24)。また、テキスト中の文字列19文字目で、「タン」にヒットするので、配列に該当(○)を登録する(ステップS25)。
また、テキスト中の文字列21文字目で、「タン」にヒットするので、検索装置は、配列に該当(○)を登録する(ステップS26)。また、テキスト中の文字列22文字目で、「タンタン麺」にヒットするので、検索装置は、「タンタン麺」に含まれる「タン」の数「2」だけ、配列に含まれる該当(○)を非該当(×)に変更する。
テキストを全て読み終わった時点において、配列内に該当(○)が1つ以上残っているので、検索装置は、テキスト「タンタン麺とロースとタンを頼んで、タンタン麺を食べた。」を検索対象のテキストとして判定する。
上述してきたように、本実施例2にかかる検索装置は、スタック枠を算出することなく、記憶装置中に配列を用意し、テキスト中の文字列と、検索条件文字列および検索条件外文字列とを順次照合し、照合結果に基づいて該当を配列に格納、または格納された該当を非該当に変更することで検索対象となるテキストを判定するので、スタック枠を算出する処理を省略することができ、検索処理を単純化することができる。
(2)システムの構成など
ところで、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部あるいは一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図4に示した検索装置100の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部がCPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
図34は、本実施例1にかかる検索装置100を構成するコンピュータのハードウェア構成を示す図である。図34に示すように、このコンピュータ(検索装置)200は、入力装置201、モニタ202、RAM(Random Access Memory)203、ROM(Read Only Memory)204、記憶媒体からデータを読み取る媒体読取装置205、他の装置(クライアント端末50)との間でデータの送受信を行う通信装置206、CPU(Central Processing Unit)207、HDD(Hard Disk Drive)208をバス209で接続している。
そして、HDD208は、上述した検索装置100の機能と同様の機能を発揮する検索プログラム208bが記憶されている。CPU207が、検索プログラム208bを読み出して実行することにより、検索プロセス207aが起動される。
ここで、検索プロセス207aは、図4の検索クエリ解析部160a、オートマトン生成部160b、照合処理部160c、検索結果出力部160dに対応する。また、HDD208は、検索装置100の記憶部150に記憶される情報に対応する各種データ208aを記憶する。CPU207は、HDD208に格納された各種データ208aを読み出して、RAM203に格納し、RAM203に格納された各種データ203aを利用して、検索対象となるテキストを判定し、判定結果をクライアント端末50に出力する。
ところで、図34に示した検索プログラム208bは、必ずしも最初からHDD208に記憶させておく必要はない。たとえば、コンピュータに挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、または、コンピュータの内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」、さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータに接続される「他のコンピュータ(またはサーバ)」などに検索プログラム208bを記憶しておき、コンピュータがこれらから検索プログラム208bを読み出して実行するようにしてもよい。
上記の実施例1,2を含む実施形態に関し、以下の付記を開示する。
(付記1)検索装置が、
テキストの検索条件となるキーワードを示す検索条件文字列と、前記検索条件の対象外となるキーワードを示す検索条件外文字列とを取得するステップと、
複数のテキストを記憶した記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を記憶部に登録し、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記記憶部に登録された該当を非該当に変更するステップと、
前記記憶部に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力するステップと、
を有することを特徴とする検索方法。
(付記2)前記検索条件文字列と前記検索条件外文字列とを取得した場合に、前記検索条件外文字列に包含される前記検索条件文字列の数に1を加算した数のスタック枠を前記記憶部に作成し、前記記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を前記スタック枠にプッシュし、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記スタック枠に最後に登録された該当から順に該当を非該当に変更し、前記スタック枠に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする付記1に記載の検索方法。
(付記3)前記スタック枠に含まれる各スタック領域の内、最後にプッシュされるべきスタック領域に該当がプッシュされた場合には、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする付記2に記載の検索方法。
(付記4)前記検索条件文字列と前記検索条件外文字列とを取得した場合に、前記検索条件文字列を受理するノードと前記検索条件外文字列を受理するノードとを有するACオートマトンを作成し、前記記憶装置から抽出したテキストの文字列を前記ACオートマトンに入力し、前記検索条件文字列を受理するノードに遷移した場合には、該当を前記スタック枠にプッシュし、前記検索条件外文字列を受理するノードに遷移した場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記スタック枠に最後に登録された該当から順に該当を非該当に変更し、前記スタック枠に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする付記2または3に記載の検索方法。
(付記5)コンピュータに、
テキストの検索条件となるキーワードを示す検索条件文字列と、前記検索条件の対象外となるキーワードを示す検索条件外文字列とを取得する取得手順と、
複数のテキストを記憶した記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を記憶部に登録し、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記記憶部に登録された該当を非該当に変更する変更手順と、
前記記憶部に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力する出力手順と、
を実行させることを特徴とする検索プログラム。
(付記6)前記変更手順は、前記検索条件外文字列に包含される前記検索条件文字列の数に1を加算した数のスタック枠を前記記憶部に作成し、前記記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を前記スタック枠にプッシュし、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記スタック枠に最後に登録された該当から順に該当を非該当に変更し、前記出力手順は、前記スタック枠に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする付記5に記載の検索プログラム。
(付記7)前記出力手順は、前記スタック枠に含まれる各スタック領域の内、最後にプッシュされるべきスタック領域に該当がプッシュされた場合には、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする付記6に記載の検索プログラム。
(付記8)前記検索条件文字列と前記検索条件外文字列とを取得した場合に、前記検索条件文字列を受理するノードと前記検索条件外文字列を受理するノードとを有するACオートマトンを作成する作成手段を更にコンピュータに実行させ、前記変更手順は、前記記憶装置から抽出したテキストの文字列を前記ACオートマトンに入力し、前記検索条件文字列を受理するノードに遷移した場合には、該当を前記スタック枠にプッシュし、前記検索条件外文字列を受理するノードに遷移した場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記スタック枠に最後に登録された該当から順に該当を非該当に変更し、前記出力手順は、前記スタック枠に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする付記6または7に記載の検索プログラム。
本実施例1にかかる検索装置の概要および特徴を説明するための図(1)である。 本実施例1にかかる検索装置の概要および特徴を説明するための図(2)である。 本実施例1にかかる検索装置を備えた検索システムの構成を示す図である。 本実施例1にかかる検索装置の構成を示す機能ブロック図である。 本実施例1にかかるテキスト管理テーブルのデータ構造の一例を示す図である。 本実施例1にかかるオートマトンデータのデータ構造の一例を示す図である。 本実施例1にかかる受理状態管理テーブルのデータ構造の一例を示す図である。 本実施例1にかかる判定結果テーブルのデータ構造の一例を示す図である。 A、AABAABCX、AABCAC、BAABを受理するオートマトンデータを示す図である。 図9に示したオートマトンデータ150bに対応する受理状態管理テーブルの一例を示す図である。 テキスト「AABAABCAC」の照合処理を示す図(1)である。 テキスト「AABAABCAC」の照合処理を示す図(2)である。 テキスト「AABAABCAC」の照合処理を示す図(3)である。 テキスト「AABAABCAC」の照合処理を示す図(4)である。 テキスト「AABAABCAC」の照合処理を示す図(5)である。 テキスト「AABAABCAC」の照合処理を示す図(6)である。 テキスト「AABAABCAC」の照合処理を示す図(7)である。 テキスト「AABAABCAC」の照合処理を示す図(8)である。 テキスト「AABAABCAC」の照合処理を示す図(9)である。 テキスト「AB」の照合処理を示す図(1)である。 テキスト「AB」の照合処理を示す図(2)である。 テキスト「AB」の照合処理を示す図(3)である。 テキスト「BAAB」の照合処理を示す図(1)である。 テキスト「BAAB」の照合処理を示す図(2)である。 テキスト「BAAB」の照合処理を示す図(3)である。 テキスト「BAAB」の照合処理を示す図(4)である。 テキスト「BAAB」の照合処理を示す図(5)である。 本実施例1にかかる検索装置の処理手順を示すフローチャートである。 本実施例1にかかるオートマトン作成処理の処理手順を示すフローチャートである。 本実施例1にかかるオートマトン作成処理の処理手順を示すフローチャート(1)である。 本実施例1にかかるオートマトン作成処理の処理手順を示すフローチャート(2)である。 本実施例2にかかる検索装置の処理を説明するための図(1)である。 本実施例2にかかる検索装置の処理を説明するための図(2)である。 本実施例1にかかる検索装置を構成するコンピュータのハードウェア構成を示す図である。
符号の説明
10 ネットワーク
50 クライアント端末
100 検索装置
110 入力部
120 出力部
130 通信制御IF部
140 入出力制御IF部
150 記憶部
150a テキスト管理テーブル
150b オートマトンデータ
150c スタック
150d 受理状態管理テーブル
150e 判定結果テーブル
160 制御部
160a 検索クエリ解析部
160b オートマトン生成部
160c 照合処理部
160d 検索結果出力部
200 コンピュータ
201 入力装置
202 モニタ
203 RAM
203a 各種データ
204 ROM
205 媒体読取装置
206 通信装置
207 CPU
207a 検索プロセス
208 HDD
208a 各種データ
208b 検索プログラム
209 バス

Claims (8)

  1. 検索装置が、
    テキストの検索条件となるキーワードを示す検索条件文字列と、前記検索条件の対象外となるキーワードを示す検索条件外文字列とを取得するステップと、
    複数のテキストを記憶した記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を記憶部に登録し、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記記憶部に登録された該当を非該当に変更するステップと、
    前記記憶部に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力するステップと、
    を有することを特徴とする検索方法。
  2. 前記検索条件文字列と前記検索条件外文字列とを取得した場合に、前記検索条件外文字列に包含される前記検索条件文字列の数に1を加算した数のスタック枠を前記記憶部に作成し、前記記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を前記スタック枠にプッシュし、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記スタック枠に最後に登録された該当から順に該当を非該当に変更し、前記スタック枠に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする請求項1に記載の検索方法。
  3. 前記スタック枠に含まれる各スタック領域の内、最後にプッシュされるべきスタック領域に該当がプッシュされた場合には、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする請求項2に記載の検索方法。
  4. 前記検索条件文字列と前記検索条件外文字列とを取得した場合に、前記検索条件文字列を受理するノードと前記検索条件外文字列を受理するノードとを有するACオートマトンを作成し、前記記憶装置から抽出したテキストの文字列を前記ACオートマトンに入力し、前記検索条件文字列を受理するノードに遷移した場合には、該当を前記スタック枠にプッシュし、前記検索条件外文字列を受理するノードに遷移した場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記スタック枠に最後に登録された該当から順に該当を非該当に変更し、前記スタック枠に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする請求項2または3に記載の検索方法。
  5. コンピュータに、
    テキストの検索条件となるキーワードを示す検索条件文字列と、前記検索条件の対象外となるキーワードを示す検索条件外文字列とを取得する取得手順と、
    複数のテキストを記憶した記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を記憶部に登録し、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記記憶部に登録された該当を非該当に変更する変更手順と、
    前記記憶部に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力する出力手順と、
    を実行させることを特徴とする検索プログラム。
  6. 前記変更手順は、前記検索条件外文字列に包含される前記検索条件文字列の数に1を加算した数のスタック枠を前記記憶部に作成し、前記記憶装置からテキストを抽出して、当該テキスト中の文字列と前記検索条件文字列および検索条件外文字列とを順次照合し、前記テキスト中の文字列が前記検索条件文字列にヒットした場合には、該当を前記スタック枠にプッシュし、前記テキスト中の文字列が前記検索条件外文字列にヒットした場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記スタック枠に最後に登録された該当から順に該当を非該当に変更し、前記出力手順は、前記スタック枠に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする請求項5に記載の検索プログラム。
  7. 前記出力手順は、前記スタック枠に含まれる各スタック領域の内、最後にプッシュされるべきスタック領域に該当がプッシュされた場合には、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする請求項6に記載の検索プログラム。
  8. 前記検索条件文字列と前記検索条件外文字列とを取得した場合に、前記検索条件文字列を受理するノードと前記検索条件外文字列を受理するノードとを有するACオートマトンを作成する作成手段を更にコンピュータに実行させ、前記変更手順は、前記記憶装置から抽出したテキストの文字列を前記ACオートマトンに入力し、前記検索条件文字列を受理するノードに遷移した場合には、該当を前記スタック枠にプッシュし、前記検索条件外文字列を受理するノードに遷移した場合には、当該検索条件外文字列中に含まれる前記検索条件文字列の数だけ、前記スタック枠に最後に登録された該当から順に該当を非該当に変更し、前記出力手順は、前記スタック枠に該当が残っている場合に、前記記憶装置から抽出したテキストを検索結果として出力することを特徴とする請求項6または7に記載の検索プログラム。
JP2008215645A 2008-08-25 2008-08-25 検索方法および検索プログラム Active JP5200762B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008215645A JP5200762B2 (ja) 2008-08-25 2008-08-25 検索方法および検索プログラム
US12/479,133 US8195686B2 (en) 2008-08-25 2009-06-05 Search method and search program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008215645A JP5200762B2 (ja) 2008-08-25 2008-08-25 検索方法および検索プログラム

Publications (2)

Publication Number Publication Date
JP2010049650A JP2010049650A (ja) 2010-03-04
JP5200762B2 true JP5200762B2 (ja) 2013-06-05

Family

ID=41697288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008215645A Active JP5200762B2 (ja) 2008-08-25 2008-08-25 検索方法および検索プログラム

Country Status (2)

Country Link
US (1) US8195686B2 (ja)
JP (1) JP5200762B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107547905B (zh) * 2017-05-10 2020-07-24 新华三信息安全技术有限公司 一种解码方法及装置
CN110222143B (zh) * 2019-05-31 2022-11-04 北京小米移动软件有限公司 字符串匹配方法,装置,存储介质及电子设备
CN114861216B (zh) * 2022-03-18 2024-05-17 浪潮卓数大数据产业发展有限公司 一种基于ac自动机的sql注入检测方法、设备、存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471610A (en) * 1989-06-14 1995-11-28 Hitachi, Ltd. Method for character string collation with filtering function and apparatus
US5452451A (en) * 1989-06-15 1995-09-19 Hitachi, Ltd. System for plural-string search with a parallel collation of a first partition of each string followed by finite automata matching of second partitions
JPH04340166A (ja) * 1990-11-30 1992-11-26 Nec Corp 単語辞書検索装置
JPH05250351A (ja) * 1992-03-06 1993-09-28 Matsushita Electric Ind Co Ltd 人名漢字検索装置
JP3647518B2 (ja) * 1994-10-06 2005-05-11 ゼロックス コーポレイション コード化したワードトークンを使用して文書画像をハイライトで強調する装置
JP2929963B2 (ja) * 1995-03-15 1999-08-03 松下電器産業株式会社 文書検索装置および単語索引作成方法および文書検索方法
JP3465815B2 (ja) * 1998-12-28 2003-11-10 株式会社Quick テキストフィルタリングシステム
US6336117B1 (en) * 1999-04-30 2002-01-01 International Business Machines Corporation Content-indexing search system and method providing search results consistent with content filtering and blocking policies implemented in a blocking engine
JP4155382B2 (ja) * 2001-01-25 2008-09-24 富士通株式会社 パターン検索方法、パターン検索装置、パターン検索プログラムを記録したコンピュータ読み取り可能な記録媒体、パターン検索システムおよびパターン検索プログラム
JP3498798B2 (ja) 2003-01-24 2004-02-16 株式会社Quick テキストフィルタリング方法
JP3881638B2 (ja) * 2003-07-31 2007-02-14 株式会社東芝 文書検索装置、文書検索方法および文書検索プログラム
JP4365162B2 (ja) * 2003-08-20 2009-11-18 富士通株式会社 構造化文書のデータを検索する装置および方法
JP2005275767A (ja) * 2004-03-24 2005-10-06 Seiko Epson Corp 文書情報検索装置および文書情報検索方法ならびにそのプログラム
US7359895B2 (en) * 2004-11-18 2008-04-15 Industrial Technology Research Institute Spiral string matching method
JP4251652B2 (ja) * 2006-06-09 2009-04-08 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索装置、検索プログラムおよび検索方法
US8141035B2 (en) * 2006-07-05 2012-03-20 International Business Machines Corporation Method for accessing internal states of objects in object oriented programming

Also Published As

Publication number Publication date
US20100049712A1 (en) 2010-02-25
US8195686B2 (en) 2012-06-05
JP2010049650A (ja) 2010-03-04

Similar Documents

Publication Publication Date Title
CN106537370B (zh) 在存在来源和翻译错误的情况下对命名实体鲁棒标记的方法和系统
JP5054210B2 (ja) 属性抽出装置および方法
JP2007094775A (ja) 意味解析装置、意味解析方法および意味解析プログラム
WO2014117549A1 (en) Method and device for error correction model training and text error correction
US8583415B2 (en) Phonetic search using normalized string
JP2007334534A (ja) 文字列入力装置、文字列入力方法、および、プログラム
JP5194818B2 (ja) データ分類方法およびデータ処理装置
JP5200762B2 (ja) 検索方法および検索プログラム
US20140358522A1 (en) Information search apparatus and information search method
EP4220474A1 (en) Information processing program, information processing method, and information processing device
JP2009157620A (ja) 情報検索支援装置
KR20110017760A (ko) 멀티미디어 콘텐츠 기술자 추출시스템 및 그 방법
CN114595696A (zh) 实体消歧方法、实体消歧装置、存储介质与电子设备
CN104641367B (zh) 用于格式化电子字符序列的格式化模块、系统和方法
JP7135730B2 (ja) 要約生成方法及び要約生成プログラム
JP6114090B2 (ja) 機械翻訳装置、機械翻訳方法およびプログラム
JP4806997B2 (ja) 文章解析プログラム、および文章解析システム
JP2020091607A (ja) 検索システム、及び検索方法
JP2016153975A (ja) 情報処理装置、侵害検知装置、情報処理方法、およびプログラム
JP2007011892A (ja) 語彙獲得方法及び装置及びプログラム及びプログラムを格納した記憶媒体
JP6425989B2 (ja) 文字認識支援プログラム、文字認識支援方法及び文字認識支援装置
JP2018180808A (ja) 解析プログラム、解析方法および解析装置
JP4765107B2 (ja) 文字列入力装置、および、プログラム
JP2008203997A (ja) 文書検索装置及びプログラム
KR101761175B1 (ko) 빈발 패턴 마이닝 방법, 빈발 패턴 마이닝 서버 및 이를 수행하는 프로그램을 기록하는 기록매체

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110513

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130128

R150 Certificate of patent or registration of utility model

Ref document number: 5200762

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160222

Year of fee payment: 3