ページの先頭行へ戻る
Big Data Integration ServerV1.4.0 検索編アプリケーション開発ガイド
FUJITSU Software

3.2.1 キーワードを含む文書を検索する

XML文書の任意の要素ノードまたはその要素ノードの属性ノードが持つ文字列中に、検索したいキーワードを含む文書を検索することができます。このような検索を部分一致検索といいます。部分一致検索は、パス式、テキスト式または属性式と、検索するキーワードを比較演算子で指定します。比較演算子には、“=”、“!= ”が指定できます。

キーワードにさまざまな指定形式を記述することにより、より詳細な検索条件を指定することができます。より詳細な検索条件を指定する、この形式のことをパターンと呼びます。


3.2.1.1 パス式、テキスト式または属性式の例

パス式、テキスト式または属性式の指定例について、説明します。

パス式の詳細については、“B.2.1 パス式”を参照してください。

テキスト式の詳細については、“B.2.2 テキスト式”を参照してください。

属性式の詳細については、“B.2.3 属性式”を参照してください。

部分一致および比較演算子の詳細については、“B.3.2 キーワード”の“パターン”を参照してください。


例1

出張目的(purpose)に“Shunsaku”というキーワードを含む文書を検索します。

/doc/detail/purpose = 'Shunsaku'

結果:文書Aが返却されます。


パス式中に“//”を指定すると、任意の要素ノード配下のすべての階層の要素ノードを対象にして、検索を行うことができます。また、パス式中に“*”を指定すると、任意の要素ノード直下に位置するすべての要素ノードを対象にして検索を行うことができます。


参考

特定の要素ノードではなく、XML文書全体を対象にして、どこかの要素ノードに検索したいキーワードを含む文書を検索する場合に“//”を指定すると便利です。


例2

詳細情報(detail)配下のどこかに“販売会議”というキーワードを含む文書を検索します。

/doc/detail/* = '販売会議'

結果:文書Cが返却されます。


例3

XML文書のどこかに“導入報告”というキーワードを含む文書を検索します。

/doc// = '導入報告'

結果:文書Bが返却されます。


参考

対象としたい要素ノードを特定するときに、階層構造で表現しなくても一意に決まるような場合は、“//”を指定すると便利です。

例4

出張先(destination)に“大阪”というキーワードを含む文書を検索します。

//destination = '大阪'

結果:文書Bが返却されます。


3.2.1.2 キーワードの指定形式と検索方法

キーワードの指定形式には、大きく分けて以下の3つがあります。


文字列検索

ある文字列を含む文書を検索します。文字列検索では、改行などの検索対象ではない文字は無視して検索することができます。

なお、検索対象外として取り扱う文字は、SkipCharで変更することができます。

SkipCharの詳細については、“導入・運用ガイド”の“システム用動作環境ファイルの実行パラメタ”および“director用動作環境ファイルの実行パラメタ”を参照してください。


ワード検索

英文のXML文書を対象として検索します。単語の区切り文字を意識して検索することができます。

なお、単語の区切り文字は、SeparateCharで変更することができます。

SeparateCharの詳細については、“導入・運用ガイド”の“システム用動作環境ファイルの実行パラメタ”および“director用動作環境ファイルの実行パラメタ”を参照してください。


論理演算検索

“文字列検索”および“ワード検索”を複数組み合わせて検索することができます。

参考

キーワードに、より詳細な検索条件を指定する形式のことをパターンと呼びます。パターンを使った検索をパターン検索と呼びます。パターンによる検索の詳細については、“B.3.4 パターン”を参照してください。


キーワードの指定形式と検索方法について以下の表に示します。

表3.1 キーワードの指定形式と検索方法の一覧

指定形式

検索方法

文字列検索

文字列一致指定検索

前方一致指定検索

後方一致指定検索

任意文字指定検索

文字間隔指定検索

部分文字指定検索

文字範囲指定検索

数値範囲指定検索

ワード検索

ワード一致指定検索

ワード間隔指定検索

論理演算検索

論理積指定検索

論理和指定検索

否定指定検索


文字列一致指定検索

検索したいキーワードを含む文書を検索することができます。

文字列一致指定検索の詳細については、“B.3.4 パターン”の“文字列一致指定”を参照してください。


出張目的(purpose)の中に“V7.0L10”というキーワードを含む文書を検索します。

/doc/detail/purpose = 'V7\.0L10'

結果:文書Bが返却されます。

注意

“\”は“.”を検索するためのエスケープ文字です。

エスケープ文字の詳細については、“B.3.3 エスケープ文字”を参照してください。


前方一致指定検索

検索したいキーワードから始まる文書を検索することができます。

前方一致指定検索の詳細については、“B.3.4 パターン”の“前方一致指定”を参照してください。


出張目的(purpose)が“Interstage”というキーワードから始まる文書を検索します。

/doc/detail/purpose = '^Interstage'

結果:文書Aと文書Cが返却されます。


後方一致指定検索

検索したいキーワードで終わる文書を検索することができます。

後方一致指定検索の詳細については、“B.3.4 パターン”の“後方一致指定”を参照してください。


出張先(destination)が“支店”というキーワードで終わる文書を検索します。

/doc/detail/destination = '支店$'

結果:文書Bが返却されます。

参考

“前方一致指定検索”および“後方一致指定検索”を組み合わせることによって、要素ノードの文字列が、指定したキーワードと完全に一致する文書を検索することができます。


例1

出張先(destination)が“大阪支店”というキーワードのみの文書を検索します。

/doc/detail/destination = '^大阪支店$'

結果:文書Bが返却されます。


例2

宿泊費(hotel)が空文字“”の文書を検索します。

/doc/detail/hotel = '^$'

結果:文書Bと文書Cが返却されます。


任意文字指定検索

検索したい2つのキーワードが、任意の文字の前後に存在する文書を検索することができます。

任意文字指定検索の詳細については、“B.3.4 パターン”の“任意文字指定”を参照してください。


例1

詳細情報(detail)配下のどこかに、“販売”と“会議”の間に0文字以上の文字が存在するキーワードを含む文書を検索します。

/doc/detail/* = '販売.*会議'

結果:文書Aと文書Cが返却されます。


例2

詳細情報(detail)配下のどこかに、“販売”と“会議”の間に2文字の文字が存在するキーワードを含む文書を検索します。

/doc/detail/* = '販売..会議'

結果:文書Aが返却されます。文書Cのコメント(comment)中の“販売会議”はキーワード間の文字数が2文字ではないため、文書Cは返却されません。


文字間隔指定検索

検索したい2つのキーワードの間に、指定した文字数以内の文字が存在する文書を検索することができます。

文字間隔指定検索の詳細については、“B.3.4 パターン”の“文字間隔指定”を参照してください。


出張目的(purpose)の中に“Interstage”と“会議”の間の文字数が2文字以内のキーワードを含む文書を検索します。

/doc/detail/purpose = 'Interstage,2C,会議'

結果:文書Cが返却されます。文書Aはキーワード間の文字数が3文字以上であるため返却されません。


部分文字指定検索

検索したい2つのキーワードの間に、指定した文字列のいずれかを含む文書を検索することができます。

部分文字指定検索の詳細については、“B.3.4 パターン”の“部分文字指定”を参照してください。


出張エリア(area)に“東京都千代田区”または“東京都港区”というキーワードを含む文書を検索します。

/doc/detail/destination/@area = '東京都(千代田|港)区'

結果:文書Aが返却されます。


文字範囲指定検索

検索したいキーワードの一部の文字が、指定した範囲の文字である文字列を含む文書を検索することができます。

文字範囲指定検索の詳細については、“B.3.4 パターン”の“文字範囲指定”を参照してください。


分類(classification)に“Area-A”、“Area-B”または“Area-C”というキーワードを含む文書を検索します。

/doc/basic/classification = 'Area\-[A-C]'

結果:文書A、文書Bおよび文書Cが返却されます。

参考

この例では、“部分文字指定検索”で、“Area\-(A|B|C)”と記述するのと同じです。


数値範囲指定検索

検索したいキーワードの一部の文字が、指定した範囲の数値である文字列のいずれかを含む文書を検索することができます。

数値範囲指定検索の詳細については、“B.3.4 パターン”の“数値範囲指定”を参照してください。


出張レポート(report)に“検索レスポンス1秒”、“検索レスポンス2秒”、“検索レスポンス3秒”、…、“検索レスポンス11秒”または“検索レスポンス12秒” というキーワードを含む文書を検索します。

/doc/report = '検索レスポンス[1,12]秒'

結果:文書Aが返却されます。

参考

この例では、“部分文字指定検索”で、“検索レスポンス(1|2|3|…|11|12)秒”と記述するのと同じです。

注意

数値範囲指定検索を行う場合は、数値の前後に文字を指定してください。たとえば、“検索レスポンス[1,12]”で検索すると、文書Bの“検索レスポンス18秒”に1が含まれるため返却されます。


ワード一致指定検索

検索したい単語を含む文書を検索することができます。

ワード検索の場合は、空白などの区切り文字で区切られた文字列を、キーワードと識別して、単語単位の検索をします。

ワード一致指定検索の詳細については、“B.3.4 パターン”の“ワード一致指定”を参照してください。


英文レポート(reportE)に“Manager”というキーワードを含む文書を検索します。

/doc/reportE = '\<Manager\>'

結果:文書Aが返却されます。

参考

キーワードを連続して記述することで、連続した単語(フレーズ)を含む文書を検索することができます。

英文レポート(reportE)に“IT Department of Company A”というキーワードを含む文書を検索します。

/doc/reportE = '\<IT\>\<Department\>\<of\>\<Company\>\<A\>'

結果:文書Aが返却されます。


ワード間隔指定検索

検索したい2つのキーワードの間に、指定した単語数以内の任意の単語が入ったフレーズを含む文書を検索することができます。

ワード間隔指定検索の詳細については、“B.3.4 パターン”の“ワード間隔指定”を参照してください。


英文レポート(reportE)に“response”という単語で始まり、“seconds”という単語で終わる、途中に5つ以内の単語が入ったフレーズを含む文書を検索します。

/doc/reportE = '\<response\>,5W,\<seconds\>'

結果:文書Aと文書Bが返却されます。


論理積指定検索

パス式で指定した要素ノードの文字列が、複数指定したすべての条件と一致する文書を検索することができます。

論理積指定検索の詳細については、“B.3.4 パターン”の“論理積”を参照してください。


例1

コメント(comment)が“販売会議”というキーワードから始まり、かつ、“検証”というキーワードを含む文書を検索します。

/doc/detail/comment = '^販売会議&検証'

結果:文書Cが返却されます。


例2

詳細情報(detail)配下のどこかに、“Interstage”というキーワードを含み、かつ、“販売”と“会議”の間の文字数が2文字以内のキーワードを含む文書を検索します。

/doc/detail// = 'Interstage&販売,2C,会議'

結果:文書Aと文書Cが返却されます。

参考

下記のように“AND”を使用しても例2と同じ検索をすることができます。


/doc/detail// = 'Interstage' AND /doc/detail// = '販売,2C,会議'

結果:文書Aと文書Cが返却されます。


論理和指定検索

パス式で指定した要素ノードの文字列が、指定したいずれかの条件と一致する文書を検索することができます。

論理和指定検索の詳細については、“B.3.4 パターン”の“論理和”を参照してください。


出張エリア(area)に“大阪府大阪市”、“大阪府堺市”または“神奈川県”というキーワードを含む文書を検索します。

/doc/detail/destination/@area = '大阪府(大阪|堺)市|神奈川県'

結果:文書Bと文書Cが返却されます。


否定指定検索

指定した条件に一致しない文書を検索することができます。

否定指定検索の詳細については、“B.3.4 パターン”の“否定”を参照してください。


例1

出張先(destination)に“本社”を含まない文書を検索します。

/doc/detail/destination = '~(本社)'

結果:文書Aと文書Bが返却されます。


例2

出張エリア(area)に“東京都”を含み、“港区”を含まない文書を検索します。

/doc/detail/destination/@area = '東京都&~(港区)'

結果:文書Aが返却されます。