JP5695586B2 - Xml文書検索装置及びプログラム - Google Patents
Xml文書検索装置及びプログラム Download PDFInfo
- Publication number
- JP5695586B2 JP5695586B2 JP2012039242A JP2012039242A JP5695586B2 JP 5695586 B2 JP5695586 B2 JP 5695586B2 JP 2012039242 A JP2012039242 A JP 2012039242A JP 2012039242 A JP2012039242 A JP 2012039242A JP 5695586 B2 JP5695586 B2 JP 5695586B2
- Authority
- JP
- Japan
- Prior art keywords
- xml document
- path
- sequence
- search
- select
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本形態例に係るXML文書検索装置は、XML文書集合を前処理して作成した検索用データと検索クエリとを照合し、検索クエリが指定する構造パスに合致する要素を探索結果として出力する。探索結果の出力は、XML文書に出現する全ての要素(XML要素)について割り当てられている要素番号により行う。
図3に、XML文書を構成する各要素(XML要素)に対する要素番号の割り当て例を示す。図3では、要素番号301に対応する数字を四角形の枠内に表している。要素番号301は、検索処理の前処理において、全てのXML要素に割り当てられる、各要素を一意に識別する番号である。要素番号は、XML文書を先頭からスキャンしたとき、それまでに出会った要素数と文書数の合計値とする。i番目のXML文書のj番目の要素の要素番号は、i−1番目のXML文書の要素番号の最大値をE(i−1)とするとき、E(i−1)+1+jとなる。なお、E(0)=0とする。
図4に、本形態例に係るXML文書検索装置400のブロック構成を示す。XML文書検索装置400は、CPU(Central Processing Unit)401、主記憶装置402、補助記憶装置403、リムーバブルドライブ404、ユーザインタフェース406及びネットワークインタフェース407を備える。各構成部は、内部バス等によって互いに接続される。
図5に、本形態例に係るXML文書検索装置100がXML文書を前処理する際の各構成間の連携動作を示す。
図6に、本形態例に係るXML文書検索装置400が検索前に実行する前処理の流れを説明するフローチャートを示す。
図7を参照し、XML文書分析部410が生成する、数列化されたDOM木422の例を説明する。なお、図7には、パストライ421の例も表している。DOM木に出現する各ノードの接続関係(すなわち、DOM木の形状)は、数列Sに記録される。数列Sには、次のルールに従って数値が格納される。
・各文書に対応する情報(部分数列)は、数値0で開始される。
・各文書に対応する情報(部分数列)を構成する数値は、XML文書を先頭から順に読み出す場合に発見される開始タグに対応する要素の深さ位置を表す。なお、テキストについては、前述した通り、タグ名が「#」である開始タグ・終了タグに囲まれている場合と同様の処理を行なう。
図8に、本形態例に係るXML文書分析部410において実行される分析動作の詳細を示す。この分析動作において、数列Sと数列T[d]が作成される。
図9に、本形態例に係るXML文書検索装置400がXML文書を検索する際の各構成間の連携動作を示す。
図10に、本形態例に係るXML文書検索装置400がXML文書を検索する際の処理の流れを示す。なお、CPU401は、検索に用いるパストライ421、数列化されたDOM木422、テキストデータ424を、補助記憶装置403から主記憶装置402に事前に読み出しているものとする。
(1)rank(A,c,i)=数列Aのi番目までの要素にあるcの数
(2)select(A,c,j)=数列Aにj番目に出現するcの位置
図13に、構造パス分析部412が実行する構造パスの分析動作を示す。ここでは、構造パスに含まれる左からd番目のタグ名をP[d],タグの総数を|P|とする。
図14に、要素探索部413において実行される検索動作の詳細を示す。
この後、要素探索部413は、変数kに「1」を加え、ステップS702に戻る(ステップS706)。
前述の処理により構造パスに合致するXML要素の計算を高速化するには、rank演算とselect演算を高速に処理する必要がある。
同様に、select(S,d,k’)の値も、k’について単調に増加する。このため、次の不等式が成立する。
< select(S,d,select(T[d],t,k))
本実施形態で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
本形態例に係るXML文書検索装置400を用いれば、XPathにより記述された検索クエリによるXML文書の検索処理を高速化することができる。
[Wavelet木]
数列をコンパクトに圧縮し、さらにデータを圧縮したままでrank演算及びselect演算を効率よく計算できるデータ構造として、Wavelet木が知られている(例えば、Navarro, G. and Makinen, V., Compressed full-text indexes, ACM Computing Surveys 39(1): Article 2, 2007.)。
本形態例では、第1の形態例において、rank演算及びselect演算を実行していた箇所に、Wavelet木を適用する手段を提供する。
図19に、本形態例に係るXML文書検索装置400が検索前に実行する前処理の流れを説明するフローチャートを示す。
本形態例に係るXML文書検索装置1700は、検索の際、まず、パストライ421およびWavelet木群423を補助記憶装置403から読み出す。前述の通り、数列化されたDOM木422は不要である。
本形態例に係るXML文書検索装置1700を用いれば、数列T[d]に値tが頻出しない場合にも、XPathにより記述された検索クエリによるXML文書の検索処理を高速に実行することができる。
XPathによる検索では、親要素、子要素、兄弟要素等に関する制約条件が検索クエリに盛り込まれる場合がある。そこで、本形態例では、親要素、子要素、兄弟要素等を探索する機能と、任意の2つの要素i、jが、指定された関係にあるか否かを検査するための機能について説明する。以下の説明では、要素i、jの深さをdi、djとし、パス種別をそれぞれti、tjとする。
深さdi≦1の場合、要素iの親要素は存在しない。それ以外の場合、親要素は深さがdi−1で与えられる、i未満でiに最も近い要素番号の要素である。従って、親要素の要素番号は、select(S,di−1,rank(S,di−1,i))を計算することにより取得することができる。
子要素が存在すれば、要素番号はi+1で与えられる。ただし、子要素が存在しない場合があり、その場合、要素番号i+1の要素の深さはdi+1以外である。第1の形態例で述べたように数列化されたDOM木422を使用している場合はS[i+1]=di+1か否かを判定すればよいが、第2の形態例で述べたようにWavelet木群423しか使用できない場合は、rank(S,di+1,i+1)=rank(S,di+1,i)+1か否かを判定すればよい。後者の場合CPU401は、図20に示す処理手順により、子要素の存在を判定し(ステップS1001)、存在する場合にはその要素番号i+1を出力し(ステップS1002)、存在しない場合には「子要素無し」と出力する(ステップS1003)。
要素iよりも前に兄弟要素が存在する場合、1つ前の兄弟要素は、要素iと同じ深さdiであり、i未満でiに最も近い要素番号の要素となる。従って、その要素番号jは、j=select(S,di,rank(S,di,i−1))として与えることができる。
上記(1)の方法で要素jの親要素を計算し、計算された親要素の値が要素iに一致するか否かで判定する。
以下の条件を同時に満たせば先祖であり、そうでなければ先祖でないと判定する。
(5−1) i<j
この条件を満たせば、要素iの開始タグは、要素jの開始タグよりも先に出現する。
(5−2) rank(S,i,di)=rank(S,j,di)
この条件を満たせば、要素iと要素jの間には、深さがdi以下である要素i以外の要素はない。
要素iと要素jの親要素を計算し、一致するか否かを判定する。
XPathに規定されている検索クエリは、複数の構造パスに合致する場合がある。例えば、「/a//text()」という検索クエリは、タグ名が「a」であるルート要素の子孫であるテキストノードの全てに合致する。このような検索クエリが与えられた場合、パストライ上でクエリに合致する構造パスを全て計算し、それらの検索結果の和集合を取ればよい。
XPathに規定されている検索クエリは、テキストに関する条件を含む場合がある。例えば「”/a//text()[contains(.,”abc")]」という検索クエリは、タグ名が「a」であるルート要素の子孫であるテキストで"abc"を含むものに合致する。このような検索クエリが与えられた場合、前述したXML要素に関する検索結果と、テキストデータ424に対するテキスト検索の結果を照合し、両方の条件に合致する箇所を検索結果とすればよい。
前述の形態例は、本発明の適用例を例示したものであり、本発明の技術的範囲を前述した各形態例の具体的構成に限定する趣旨ではない。本発明の要旨を逸脱しない範囲において種々の変更可能である。例えば本発明は、前述した各形態例の全ての構成要素を備える必要はない。また、ホン発明は、ある形態例の一部を他の形態例の構成に置き換えることもでき、ある形態例の構成に他の形態例の構成を加えることもできる。
401 CPU
402 主記憶装置
403 補助記憶装置
404 リムーバブルドライブ
406 ユーザインタフェース
407 ネットワークインタフェース
410 XML文書分析部
411 Wavelet木構築部
412 構造パス分析部
413 ノード探索部
420 XML文書集合
421 パストライ
422 数列化されたDOM木
423 Wavelet木
424 テキストデータ
430 外部記憶装置
440 ネットワーク
1700 XML文書検索装置
Claims (8)
- プロセッサと、主記憶装置と、XML文書を入出力する入出力装置とを有し、検索クエリとして、XML文書の要素及びその要素の祖先要素をルート要素から順にすべて列挙したものである構造パスが与えられたとき、その構造パスに合致する箇所を探索するXML文書検索装置において、
前記入出力装置は、検索対象のXML文書集合の入力を受け付け、
前記XML文書検索装置は、
前記XML文書を分析し、タグの種類および包含関係を認識し数列群に変換するとともにパストライを構築するXML文書分析部と、
前記パストライを用いて、検索クエリである構造パスの深さおよびパス種別を計算する構造パス分析部と、
前記構造パスの深さ及びパス種別に基づき、検索クエリである構造パスに合致する要素が出現する箇所を計算する要素探索部とを有し、
前記XML文書分析部は、
XML文書のDOM木の形状を記録するために、XML文書の出現する要素の出現順に、当該要素の深さを表す数値の列を部分列として含む第一の数列Sと、
前記DOM木の各ノードに対応する構造パスの種類を記録する1つ以上の数列からなる数列群Tとを作成し、数列群Tに含まれる数列T[d]が深さdである構造パスの種類を記録したものであるとき、
前記要素探索部は、
前記数列Sと、前記数列群Tを走査することにより、検索クエリである構造パスに合致する箇所を計算する
ことを特徴とするXML文書検索装置。 - 請求項1に記載のXML文書検索装置において、
前記要素探索部は、
数列Aにおいてj番目に値cが出現する位置をselect(A,c,j)と表記し、この値を計算する処理をselect演算と呼び、前記検索クエリの構造パスの深さをd、パス種別をtとし、当該構造パスの出現総数をnとするとき、1≦k≦nである整数kに対し、式(1)を適用して得られるk”の値を計算することにより、前記検索クエリに合致する箇所を前記XML文書集合から探索する
ことを特徴とするXML文書検索装置。
[数1]
k”=select(S,d,select(T[d],t,k)) …式(1) - 請求項2に記載のXML文書検索装置において、
前記XML文書分析部の処理に引き続き、前記数列S及び前記数列群Tに含まれる各数列をWavelet木に変換するWavelet木構築部を有し、
前記select演算に、前記Wavelet木を用いる
ことを特徴とするXML文書検索装置。 - 請求項1に記載のXML文書検索装置において、
XML文書のDOM木の形状を記録するために、XML文書の出現する要素の出現順に、当該要素の深さを表す数値の列を部分列として含む数列を構築する手段を有し、
前記数列Sにおいてi番目までにある値cの数をrank(S,c,i)と表記し、この値を計算する処理をrank演算と呼び、
数列Sにおいてj番目に値cが出現する位置をselect(S,c,j)と表記し、この値を計算する処理をselect演算と呼び、
前記数列においてi番目の値に対応するXML文書の要素に対し、その要素の構造パスの深さをdとするとき、
前記要素の親である要素の番号を式(2)によって計算し、
前記要素の最初の子である要素の番号を式(3)によって計算し、
前記要素に最も近い先行する兄弟要素の番号を式(4)によって計算し、
前記要素に最も近い後続の兄弟要素の番号を式(5)によって計算する
ことを特徴とするXML文書検索装置。
[数2]
select(S,d−1,rank(S,d−1,i)) …式(2)
[数3]
i+1 …式(3)
[数4]
select(S,d,rank(S,d,i−1)) …式(4)
[数5]
select(S,d,rank(S,d,i)+1) …式(5) - 請求項4に記載のXML文書検索装置において、
前記XML文書分析部の処理に引き続き、前記数列Sおよび前記数列群Tに含まれる各数列をWavelet木に変換するWavelet木構築部を有し、
前記rank演算及び前記select演算に、前記Wavelet木を用いる
ことを特徴とするXML文書検索装置。 - 検索クエリとして、XML文書の要素及びその要素の祖先要素をルート要素から順にすべて列挙したものである構造パスが与えられたときに、その構造パスに合致する箇所を探索する処理をコンピュータに実行させるプログラムにおいて、
前記プログラムは、
前記XML文書を分析し、タグの種類および包含関係を認識し数列群に変換しパストライを構築する第1の処理と、
前記パストライを用いて、検索クエリである構造パスの深さおよびパス種別を計算する第2の処理と、
前記構造パスの深さ及びパス種別に基づき、検索クエリである構造パスに合致する要素が出現する箇所を計算する第3の処理とを前記コンピュータに実行させ、
前記第1の処理は、
XML文書のDOM木の形状を記録するために、XML文書の出現する要素の出現順に、当該要素の深さを表す数値の列を部分列として含む第一の数列Sと、DOM木における各ノードに対応する構造パスの種類を記録する1つ以上の数列からなる数列群Tとを作成し、数列群Tに含まれる数列T[d]が深さdである構造パスの種類を記録したものであるとき、
前記第3の処理は、
前記数列Sと、前記数列群Tを走査することにより、検索クエリである構造パスに合致する箇所を計算する
ことを特徴とするプログラム。 - 請求項6に記載のプログラムにおいて、
前記第3の処理は、
数列Aにおいてj番目に値cが出現する位置をselect(A,c,j)と表記し、この値を計算する処理をselect演算と呼び、前記検索クエリの構造パスの深さをd、パス種別をtとし、当該構造パスの出現総数をnとするとき、1≦k≦nである整数kに対し、式(6)を適用して得られるk”の値を計算することにより、前記検索クエリに合致する箇所を前記XML文書集合から探索する
ことを特徴とするプログラム。
[数6]
k”=select(S,d,select(T[d],t,k)) …式(6) - 請求項7に記載のプログラムにおいて、
前記第1の処理に引き続き、前記数列S及び前記数列群Tに含まれる各数列をWavelet木に変換する第4の処理を有し、
前記select演算に、前記Wavelet木を用いる
ことを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012039242A JP5695586B2 (ja) | 2012-02-24 | 2012-02-24 | Xml文書検索装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012039242A JP5695586B2 (ja) | 2012-02-24 | 2012-02-24 | Xml文書検索装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013175053A JP2013175053A (ja) | 2013-09-05 |
JP5695586B2 true JP5695586B2 (ja) | 2015-04-08 |
Family
ID=49267899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012039242A Expired - Fee Related JP5695586B2 (ja) | 2012-02-24 | 2012-02-24 | Xml文書検索装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5695586B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6893480B2 (ja) | 2018-01-18 | 2021-06-23 | 株式会社日立製作所 | 分析装置および分析方法 |
CN108650250B (zh) * | 2018-04-27 | 2021-07-23 | 奇安信科技集团股份有限公司 | 非法页面检测方法、系统、计算机系统和可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3492246B2 (ja) * | 1999-07-16 | 2004-02-03 | 富士通株式会社 | Xmlデータ検索処理方法および検索処理システム |
JP4562130B2 (ja) * | 2005-02-21 | 2010-10-13 | 日本電信電話株式会社 | Xmlデータ処理装置、xmlデータ処理方法、xmlデータ処理プログラムおよびxmlデータ処理プログラムを記録した記憶媒体 |
JP4314221B2 (ja) * | 2005-07-28 | 2009-08-12 | 株式会社東芝 | 構造化文書記憶装置、構造化文書検索装置、構造化文書システム、方法およびプログラム |
JP4649339B2 (ja) * | 2006-01-20 | 2011-03-09 | 日本電信電話株式会社 | XPath処理装置、XPath処理方法、XPath処理プログラム、および、記憶媒体 |
WO2010106681A1 (ja) * | 2009-03-19 | 2010-09-23 | 富士通株式会社 | データベース検索プログラムを記録するコンピュータ読取可能な記憶媒体、データベース検索装置、および、データベース検索方法 |
-
2012
- 2012-02-24 JP JP2012039242A patent/JP5695586B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2013175053A (ja) | 2013-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5121146B2 (ja) | 構造化文書管理装置、構造化文書管理プログラムおよび構造化文書管理方法 | |
JP5338238B2 (ja) | ワードの類似性を用いたオントロジーの自動生成 | |
CN102033954B (zh) | 关系数据库中可扩展标记语言文档全文检索查询索引方法 | |
CN108280114B (zh) | 一种基于深度学习的用户文献阅读兴趣分析方法 | |
CN107122443A (zh) | 一种基于Spark SQL的分布式全文检索系统及方法 | |
JP5423676B2 (ja) | データ分類システム、データ分類方法、及びデータ分類プログラム | |
US7822788B2 (en) | Method, apparatus, and computer program product for searching structured document | |
CN105335487A (zh) | 基于农业技术信息本体库的农业专家信息检索系统及方法 | |
US20120143847A1 (en) | Database management method and system | |
CN118917305B (zh) | 一种rag系统优化方法、系统、电子设备及存储介质 | |
JP4839195B2 (ja) | Xml文書の適合度の算出方法およびそのプログラムと、情報処理装置 | |
Sunuwar et al. | Comparative analysis of relational and graph databases for data provenance: Performance, queries, and security considerations | |
CN103425719A (zh) | 结构化文档检索装置和程序 | |
JP5695586B2 (ja) | Xml文書検索装置及びプログラム | |
JP5869948B2 (ja) | パッセージ分割方法、装置、及びプログラム | |
Iser et al. | A problem meta-data library for research in SAT | |
KR101476225B1 (ko) | 자연어 및 수식 색인화 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체 | |
JP5321258B2 (ja) | 情報収集システムおよび情報収集方法ならびにそのプログラム | |
JP4649339B2 (ja) | XPath処理装置、XPath処理方法、XPath処理プログラム、および、記憶媒体 | |
JP5954742B2 (ja) | 文書を検索する装置及び方法 | |
US20130246479A1 (en) | Computer-readable recording medium, data model conversion method, and data model conversion apparatus | |
JP2010267081A (ja) | 情報検索方法及び装置及びプログラム | |
JP5764448B2 (ja) | 文書ランキングスコアの動的更新のための方法および装置 | |
JP7363914B2 (ja) | 検索方法、検索プログラム及び検索装置 | |
JP5485856B2 (ja) | 閲覧ログ解析装置及び閲覧ログ解析プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140604 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141126 |
|
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: 20150127 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150206 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5695586 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |