JP2013149269A - 検索装置 - Google Patents
検索装置 Download PDFInfo
- Publication number
- JP2013149269A JP2013149269A JP2013068759A JP2013068759A JP2013149269A JP 2013149269 A JP2013149269 A JP 2013149269A JP 2013068759 A JP2013068759 A JP 2013068759A JP 2013068759 A JP2013068759 A JP 2013068759A JP 2013149269 A JP2013149269 A JP 2013149269A
- Authority
- JP
- Japan
- Prior art keywords
- node
- token
- character string
- tree structure
- character
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】複数の文字列それぞれを1または複数のトークンの列に変換し、共通するトークンの列を開始端より併合して構成される木構造データと、該木構造データの末端ノードに関連付けられた識別子とを記憶するインデックスメモリと、検索する文字列を1または複数のトークンの列に変換するトークナイザと、前記トークナイザにより変換されたトークンの列を走査しながら前記インデックスメモリに記憶されている前記木構造データのノードの子ノードを選択して根ノードを始点とする経路を検索することにより、前記検索する文字列が前記複数の文字列の中に存在するかどうかを検出し、存在したときには該文字列を前記経路の末端ノードに関連付けられた識別子に対応づけて出力する検索部とを備える検索装置を提供する。
【選択図】図1
Description
り行なうことが可能となる。
図1は、本発明の一実施形態に係る検索装置の機能ブロック図を示す。検索装置100は、インデックスメモリ101と、トークナイザ102と、検索部103とを有する。
インデックスメモリ101は、1または複数の木構造データを記憶する。インデックスメモリ101が記憶する1または複数の木構造データが表す木構造は次の2つの条件を満たす。
(条件1)複数の文字列それぞれを1または複数のトークンの列に変換して、共通するトークンの列を開始端より併合することにより、構成されている。
(条件2)木構造のノードには、末端ノードまでの長さの最大値および最小値が関連付けられている。
本実施形態において、木構造とは、数学的に定義されるグラフ構造であり、そのグラフ構造は(イ)1または複数のノードを有し、(ロ)始点と終点とをノードして持つエッジによって始点のノードと終点のノードとを接続し、(ハ)単連結であり、かつ、(ニ)ループを構成するエッジが存在しないことを特徴とする。木構造を表すデータを木構造データと定義する。木構造データは、ノードとエッジとを表すデータ構造により表すことができる。このようなデータ構造としては、例えば後に図3を用いて説明されるデータ構造がある。
(定義1)(1)1つのノードは木構造である。(2、3)そのノードは、その木構造の根ノードでありかつ末端ノードである。(4)この木構造において、根ノードから末端ノードまでの長さの最大値および最小値はともに1である。
(定義2)(1)1または複数の木構造T1、…、Tnがある場合、木構造T1、…
、Tnのいずれのノードでもない新たなノードpと木構造T1、…、Tnのそれぞれの根ノードとを、ノードpを始点としそれぞれの根ノードを終点とするn本のエッジそれぞれにより接続した構造は、新たな木構造である。(2)この新たな木構造の根ノードはノードpであり、(3)この新たな木構造の末端ノードは、木構造T1、…、Tnのそれぞれの末端ノードであり、(4)この新たな木構造の根ノードから末端ノードまでの長さの最大値は、{T1の根ノードから末端ノードまでの長さの最大値、…、Tnの根ノードから末端ノードまでの長さの最大値}の最大値に1を加えた値であり、この新たな木構造の根ノードから末端ノードまでの長さの最小値は、{T1の根ノードから末端ノードまでの長さの最小値、…、Tnの根ノードから末端ノードまでの長さの最小値}の最小値に1を加えた値である。
図2は、文字列を1または複数のトークンの列に変換することを説明するための図である。トークンとは文字または文字の並びである単語を表すデータ構造をいう。文字列を1または複数のトークンの列に変換するとは、文字列を、その構成要素である文字または単語を表すデータ構造の並びに変換することをいう。文字列をトークンの列に変換することは、字句解析(Lexical Analysis)と称されることもある。
されている。
上述の(条件1)における、「共通するトークンの列を開始端より併合する」とは、次の処理をいう。第1のトークンの列A1A2…AnB1B2…Bmと第2のトークンの列A1A2…AnC1C2…Ckとが与えられた場合、この2つトークンの列は、開始端A1よりn個のトークンの部分列A1A2…Anが共通している。そこで、A1からAnのそれぞれのトークンに対応するノードを順に直列にエッジで接続し、A1に対応するノードを根ノードとし、Anに対応するノードを末端ノードとする木構造を作る。次に、Anに対応するノードの子ノードを、B1に対応するノードとC1に対応するノードとし、B1からBmそれぞれのトークンに対応するノードを順に直列にエッジで接続し、また、C1からCkのそれぞれに対応するノードを順に直列にエッジで接続することをいう。
なお、以下では、トークンの列D1D2…Dnについて、D1からDnそれぞれに対応するノードを順に直列にエッジで接続して得られる木構造を、トークンの列D1D2…Dnに対応する木構造ということにする。また、木構造の根ノードを開始点として、エッジの始点から終点を順に辿って得られる経路を木構造の部分木ということにする。例えば、
トークンの列E1E2E3E4E5に対応する木構造の部分木として、E1、E1E2、E1E2E3やE1E2E3E4に対応する木構造を挙げることができる。
本実施形態においては、(条件2)として述べたように、木構造を構成するノードそれぞれには、そのノードを根ノードとする木構造の末端ノードまでの長さの最大値および最小値が関連付けられている。そこで、インデックスメモリ101が記憶する木構造データは、例えば、図3に示すデータ構造により、ノードとそのノードを始点とするエッジとを表して記憶される。
図4は、複数のトークンの列と、その複数のトークンの列から共通するトークンの列を開始端より併合して構成される木構造との例を示す。
ータ構造402とデータ構造408とのそれぞれが格納されているアドレスと、アドレスの列の終わりを示す値NULLとが格納されている。データ構造402には、BDECとBCDとに対応して、データ構造402に対応するノードを根ノードとする木構造の末端ノードまでの最大値および最小値として、4および3が格納され、子ノードを表す情報として、CDというトークンの列に対応する木構造の根ノードに対応するデータ構造403とDECというノード列に対応する木構造の根ノードに対応するデータ構造405とのそれぞれが格納されているアドレスが格納されている。以下、データ構造404−414は同様に説明される。
共通するトークンの列を開始端より併合してトークンに対応するノードを用いて構成された木構造の構成方法については、一般的に述べたが、それをフローチャートで具体的に示した例が、図5である。
トークナイザ102は、検索する文字列を1または複数のトークンの列に変換する。変換されたトークンの列は、検索装置100のメモリに格納され、例えば格納されたメモリのアドレスが、検索部103に伝達される。
検索部103は、トークナイザ102により検索する文字列から変換されたトークンの列を走査し、インデックスメモリ101に記憶されている木構造データのノードの子ノードを選択して根ノードを始点とする経路を検索する。すなわち、検索部103は、トークナイザ102により検索する文字列から変換されたトークンの列を開始端から順に走査し、走査中のトークンの情報を取得する。そして、取得されたトークンの情報を用いて、インデックスメモリ101に記憶されている木構造データの表す木構造の走査中のノードの子ノードの中からノードを選択する。これを、「子ノードを選択する」という。
クンの列を保持する。例えば、図2の(a)や図2の(b)に示す配列のアドレスを、レジスタなどを用いて記憶する。トークン個数保持部603は、トークナイザが、検索する文字列を変換したトークンの列のトークンの個数を保持する。例えば、トークンの個数を、レジスタなどを用いて記憶する。トークン番号保持部604は、トークンの列の中で、現在走査しているトークンの番号を保持する。例えば、トークンの番号を、レジスタなどを用いて記憶する。ノード情報保持部605は、木構造データの現在走査しているノードに対応するデータ構造に関する情報を記憶する。例えば、ノードに対応するデータ構造のアドレスを、レジスタなどを用いて記憶する。
図8は、図5と図7とのフローチャートの処理の例を示す。図8の(a)に示すように、登録される文字列が「MR MAINET COLTD」と「MR MAINET SYSTEM COLTD」とであれば、図5のフローチャートの処理により、図8の(b)に示す木構造が生成される。したがって、インデックスメモリ101には、図8の(b)に示す木構造を表す木構造データが記憶される。
処理が戻り、変数L、M、Nの値は行27に示すようになる。ステップS706において、変数Lの値が0になっているので、ステップS707へ分岐し、ノード3は末端ノードなので、ステップS709に分岐する。したがって、ステップS709において、文字列は登録されていると判断される。実際、図8(a)には、第2の文字列に「MR MAINET COLTD」が存在する。このように、登録されている文字列を検索する場合であっても、トークンの列と一致しないノードを走査することがない。
本実施形態に係る検索装置は、例えば振込の宛名人が取引先として登録されているかどうかを検出し、また、振込の宛名人が取引先であれば、その口座番号などを取得するために用いることができる。すなわち、あらかじめ、取引先の口座の名義人の名前を表す文字列それぞれをトークンの列に変換し、共通するトークンの列を開始端より併合して構成される木構造データをインデックスメモリ101に記憶する。このとき、木構造データには末端ノードまでの長さの最大値および最小値を関連づけておく。
本発明の実施形態2として、図3に示したデータ構造の変形例を図9に示す。図9の(a)において、データ構造は、6つのスロットを有し、スロット901、904、905、906は、図3におけるスロット301、302、303、304にそれぞれ対応する。図9においては、スロット902、903が示されている。スロット902には、スロット901に記憶される文字列の先頭の文字列が格納される。また、スロット903には、その文字列の長さが格納される。例えば、スロット901に「MTU」が格納される場合には、スロット902、スロット903にはそれぞれ、M、3が格納される。
数の文字列の中に存在しないことを検出することができる。
Claims (5)
- 複数の文字列それぞれを1または複数のトークンの列に変換し、共通するトークンの列を開始端より併合して構成される木構造データと、該木構造データの末端ノードに関連付けられた識別子とを記憶するインデックスメモリと、
検索する文字列を1または複数のトークンの列に変換するトークナイザと、
前記トークナイザにより変換されたトークンの列を走査しながら前記インデックスメモリに記憶されている前記木構造データのノードの子ノードを選択して根ノードを始点とする経路を検索することにより、前記検索する文字列が前記複数の文字列の中に存在するかどうかを検出し、存在したときには該文字列を前記経路の末端ノードに関連付けられた識別子に対応づけて出力する検索部とを備える検索装置。 - 前記インデックスメモリが記憶する木構造データを構成するノードには、ノードの表すトークンの文字列の長さが関連づけられており、
前記検索部は、ノードの子ノードの中から、次に走査するトークンの文字列の長さが関連付けられている子ノードが存在しなければ、前記検索する文字列が前記複数の文字列の中に存在しないことを検出する請求項1に記載の検索装置。 - 前記トークナイザは、前記検索する文字列を、定められた単語の有無にしたがって単語の列に区切ってトークンの列に変換する請求項1または2に記載の検索装置。
- 前記トークナイザは、前記検索する文字列中の1文字を1トークンとする請求項1または2に記載の検索装置。
- 複数の文字列それぞれを1または複数のトークンの列に変換し、共通するトークンの列を開始端より併合して構成される木構造データと、該木構造データの末端ノードに関連付けられた識別子とを記憶部に記憶している計算機に、
検索する文字列を1または複数のトークンの列に変換させ、
変換されたトークンの列を走査しながら前記記憶部に記憶されている木構造データのノードの子ノードを選択して根ノードを始点とする経路を検索することにより、前記検索する文字列が前記複数の文字列の中に存在するかどうかを検出し、存在したときには該文字列を前記経路の末端ノードに関連付けられた識別子と対応づけて前記計算機に出力させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013068759A JP5628365B2 (ja) | 2013-03-28 | 2013-03-28 | 検索装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013068759A JP5628365B2 (ja) | 2013-03-28 | 2013-03-28 | 検索装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011010528A Division JP5237400B2 (ja) | 2011-01-21 | 2011-01-21 | 検索装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013149269A true JP2013149269A (ja) | 2013-08-01 |
JP5628365B2 JP5628365B2 (ja) | 2014-11-19 |
Family
ID=49046653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013068759A Active JP5628365B2 (ja) | 2013-03-28 | 2013-03-28 | 検索装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5628365B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122222A (zh) * | 2017-04-20 | 2017-09-01 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07200622A (ja) * | 1993-12-28 | 1995-08-04 | Fujitsu Ltd | 情報管理システム |
JP2000339332A (ja) * | 1999-05-28 | 2000-12-08 | Nippon Telegr & Teleph Corp <Ntt> | 検索インデックスを記録した媒体、検索インデックス更新方法、その装置、そのプログラムを記録した媒体 |
JP2009501976A (ja) * | 2005-07-13 | 2009-01-22 | グーグル・インコーポレーテッド | 位置識別方法 |
JP2010086472A (ja) * | 2008-10-02 | 2010-04-15 | Mitsubishi Electric Corp | クエリ候補提示装置 |
WO2010106680A1 (ja) * | 2009-03-19 | 2010-09-23 | 富士通株式会社 | 記憶媒体、トライ木生成方法およびトライ木生成装置 |
JP2011008553A (ja) * | 2009-06-26 | 2011-01-13 | Fuji Xerox Co Ltd | 翻訳装置及び翻訳プログラム |
-
2013
- 2013-03-28 JP JP2013068759A patent/JP5628365B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07200622A (ja) * | 1993-12-28 | 1995-08-04 | Fujitsu Ltd | 情報管理システム |
JP2000339332A (ja) * | 1999-05-28 | 2000-12-08 | Nippon Telegr & Teleph Corp <Ntt> | 検索インデックスを記録した媒体、検索インデックス更新方法、その装置、そのプログラムを記録した媒体 |
JP2009501976A (ja) * | 2005-07-13 | 2009-01-22 | グーグル・インコーポレーテッド | 位置識別方法 |
JP2010086472A (ja) * | 2008-10-02 | 2010-04-15 | Mitsubishi Electric Corp | クエリ候補提示装置 |
WO2010106680A1 (ja) * | 2009-03-19 | 2010-09-23 | 富士通株式会社 | 記憶媒体、トライ木生成方法およびトライ木生成装置 |
JP2011008553A (ja) * | 2009-06-26 | 2011-01-13 | Fuji Xerox Co Ltd | 翻訳装置及び翻訳プログラム |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122222A (zh) * | 2017-04-20 | 2017-09-01 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
CN107122222B (zh) * | 2017-04-20 | 2019-02-19 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5628365B2 (ja) | 2014-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102768681B (zh) | 一种用于搜索输入的推荐系统及方法 | |
JP4805315B2 (ja) | データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法 | |
JP3672242B2 (ja) | パターン検索方法、パターン検索装置、コンピュータプログラム及び記憶媒体 | |
US8095526B2 (en) | Efficient retrieval of variable-length character string data | |
EP2721517A1 (en) | Method and system of extracting web page information | |
US8214405B2 (en) | Longest-match/shortest-match search apparatus, search method, and program | |
WO2015010509A1 (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
JP2017526021A (ja) | データ検索におけるエラー修正装置及びその方法 | |
CN104199954A (zh) | 一种用于搜索输入的推荐系统及方法 | |
CN114491172A (zh) | 树形结构节点的快速检索方法、装置、设备及存储介质 | |
JP6072922B2 (ja) | 文字列検索装置、文字列検索方法および文字列検索プログラム | |
CN113704575B (zh) | 解析XML与Java文件的SQL方法、装置、设备及存储介质 | |
CN104268176A (zh) | 一种基于搜索关键词的推荐方法及系统 | |
US7194405B2 (en) | Method for presenting a natural language comparison of items | |
JP5980520B2 (ja) | 効率的にクエリを処理する方法及び装置 | |
JPWO2013111287A1 (ja) | Sparqlクエリ最適化方法 | |
US7933885B1 (en) | Longest matching prefix search engine with hierarchical decoders | |
US8051060B1 (en) | Automatic detection of separators for compression | |
JP5628365B2 (ja) | 検索装置 | |
US11031092B2 (en) | Taxonomic annotation of variable length metagenomic patterns | |
JP5237400B2 (ja) | 検索装置 | |
JP5022252B2 (ja) | 表現テンプレート生成装置、その方法およびそのプログラム | |
JPH07210569A (ja) | 情報検索方法および情報検索装置 | |
CN110362669B (zh) | 一种适用于关键字快速检索的方法 | |
CN108984780B (zh) | 基于支持重复键值树数据结构管理磁盘数据的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20130509 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20130509 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140128 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140331 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140701 |
|
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: 20140916 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141001 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5628365 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |