ページの先頭行へ戻る
Interstage Data Effector V9.3.x 導入・運用ガイド
FUJITSU Software

3.1.1 文字列で抽出する

抽出機能では、抽出したいデータの文字列、数値または日時などをキーワードとして検索式で指定することで、要求するデータを抽出できます。

文字列に対する条件の指定には、以下の3つの方法があります。

ここでは、以下の文書例を使用して説明します。

文書A

"empno","name","namekana","phone","area","class","purpose","report","reportE"
"19980120","鈴木太郎","すずきたろう","2201-1101","東京都千代田区","Area-A","AsIs販売推進会議出席",
"会議において、A社IT部門のシステム担当者は、検索レスポンス10秒以内を要求した。",
"The Systems Manager of the IT Department of Company A requested the search response 
within 10 seconds in the meeting."
  :

文書B

"empno","name","namekana","phone","area","class","purpose","report","reportE"
"20012111","佐藤花子","さとうはなこ","2201-1204","大阪府大阪市阿倍野区","Area-C","進捗会議出席",
"短期間での導入であったため、顧客は要求仕様である検索レスポンス18秒の達成を疑問視していたが、
実際には検索レスポンス14秒を達成できた。",
"Because of short-term introduction, our clients had doubted that we had got 18 seconds which 
had been requested for the search response but the actual search response we could get was 14 seconds."
  :

文書C

"empno","name","namekana","phone","area","class","purpose","report","reportE"
"19980120","鈴木太郎","すずきたろう","2201-1101","神奈川県横浜市港北区","Area-B","AsIs定例会議",
"事前検証は統括部門の承認を得るよう要請された。",
"They were requested to get advance approval from the Sales Coordination 
Department to verify the materials."
  :

文書A

<doc>
    :
  <basic date="2007年01月30日" >
    <classification code="0001">Area-A</classification>
    :
  </basic>
  <detail>
    <destination area="東京都千代田区" >東京営業所</destination>
    <purpose>Interstage Shunsaku販売推進会議出席</purpose>
    <train>7200円</train>
    <taxi></taxi>
    <hotel>8500円</hotel>
    <comment>ホテル宿泊は親睦会に出席したため</comment>
  </detail>
  <report>会議において、A社IT部門のシステム担当者は、検索レスポンス10秒以内を要求した。</report>
  <reportE>The Systems Manager of the IT Department of Company A requested 
  the search response within 10 seconds in the meeting.</reportE>
</doc>

文書B

<doc>
    :
  <basic date="2007年01月31日">
    <classification code="0003">Area-C</classification>
    :
  </basic>
  <detail>
    <destination area="大阪府大阪市阿倍野区">大阪支店</destination>
    <purpose>V8.0L10導入報告</purpose>
    <train>14200円</train>
    <taxi>1820円</taxi>
    <hotel></hotel>
    <comment>自宅に直帰予定</comment>
  </detail>
  <report>短期間での導入であったため、顧客は要求仕様である検索
  レスポンス18秒の達成を疑問視していたが、実際には検索レスポンス14秒を
  達成できた。</report>
  <reportE>Because of short-term introduction, our clients had doubted 
  that we had got 18 seconds which had been requested for the search 
  response but the actual search response we could get was 
  14 seconds.</reportE>
</doc>

文書C

<doc>
    :
  <basic date="2007年03月02日">
    <classification code="0002">Area-B</classification>
    :
  </basic>
  <detail>
    <destination area="神奈川県横浜市港北区">本社</destination>
    <purpose>Interstage定例会議</purpose>
    <train>2400円</train>
    <taxi>2100円</taxi>
    <hotel></hotel>
    <comment>販売会議資料の事前検証</comment>
  </detail>
  <report>事前検証は統括部門の承認を得るよう要請された。</report>
  <reportE>They were requested to get advance approval from the Sales 
  Coordination Department to verify the materials.</reportE>
</doc>


3.1.1.1 キーワードを含む文書を抽出する

入力ファイルのデータ文字列中から、抽出したいキーワードを含む文書を抽出できます。このような抽出を部分一致検索といいます。
部分一致検索は、パス式、項目式または属性式と、検索するキーワードを比較演算子で指定します。比較演算子には、“=”または“!= ”を指定します。
キーワードにさまざまな指定形式を記述することにより、より詳細な検索条件を指定できます。より詳細な検索条件を指定する、この形式のことをパターン検索と呼びます。


ポイント

キーワードに、より詳細な検索条件を指定する形式のことをパターンと呼びます。パターンを使った検索をパターン検索と呼びます。

参照

  • パターン検索の書式については、“リファレンス集”の“パターン検索”を参照してください。

  • パス式の詳細については、“リファレンス集”の“パス式”を参照してください。

  • 項目式の詳細については、“リファレンス集”の“項目式”を参照してください。

  • 属性式の詳細については、“リファレンス集”の“属性式”を参照してください。

  • 部分一致および比較演算子の詳細については、“リファレンス集”の“比較演算子”を参照してください。

パターン検索には、大きく分けて以下の3つがあります。

パターン検索(文字列)

ある文字列を含む文書を抽出します。文字列検索では、改行などの検索対象ではない文字は無視して検索できます。
なお、検索対象外として取り扱う文字は、SkipCharパラメタで変更できます。
SkipCharの詳細については、“リファレンス集”の以下を参照してください。

  • shunselectコマンド利用時は、 “ select用動作環境ファイル”

  • C API利用時は、 “AsisInitSelect”

  • 統合コマンド利用時は、 “処理条件定義部:Select”の“SkipChar”


パターン検索(ワード)

英文のデータを対象として抽出します。単語の区切り文字を意識して検索できます。
なお、単語の区切り文字は、SeparateCharパラメタで変更できます。
SeparateCharの詳細については、“リファレンス集”の以下を参照してください。

  • shunselectコマンド利用時は、 “ select用動作環境ファイル”

  • C API利用時は、“AsisInitSelect”

  • 統合コマンド利用時は、“処理条件定義部:Select”の“SeparateChar”


パターン検索(論理演算)

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





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

指定形式

検索方法

パターン検索(文字列)

文字列一致指定検索

前方一致指定検索

後方一致指定検索

任意文字指定検索

文字間隔指定検索

部分文字指定検索

文字範囲指定検索

数値範囲指定検索

パターン検索(ワード)

ワード一致指定検索

ワード間隔指定検索

パターン検索(論理演算)

論理積指定検索

論理和指定検索

否定指定検索

文字列一致指定検索

抽出したいキーワードを含む文書を抽出できます。
文字列一致指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


出張目的(purpose)の中に“販売”というキーワードを含む文書を抽出します。

検索式
$purpose = '販売'

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


注意

抽出したい文字列に“.”や“$”などを含む場合には、エスケープ文字を付加します。
例えば、出張レポート(purpose)の中の“V9.0”というキーワードを含む文書を検索する場合、以下と指定します。

検索式
$report = 'V9\.0'

“\”は“.”を抽出するためのエスケープ文字です。
エスケープ文字の詳細については、“リファレンス集”の“ パターン検索”を参照してください。


前方一致指定検索

抽出したいキーワードから始まる文書を抽出できます。

前方一致指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


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

検索式
/doc/detail/purpose = '^Interstage'

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


後方一致指定検索

抽出したいキーワードで終わる文書を抽出できます。
後方一致指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


出張目的(purpose)が“出席”というキーワードで終わる文書を抽出します。

検索式
$purpose = '出席$'

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


ポイント

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


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

検索式
/doc/detail/hotel = '^$'

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


任意文字指定検索

抽出したい2つのキーワードが、任意の文字の前後に存在する文書を抽出できます。
任意文字指定検索の詳細については、“リファレンス集”の“ パターン検索”を参照してください。


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

検索式
/doc/detail/* = '販売..会議'

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


文字間隔指定検索

抽出したい2つのキーワードの間に、指定した文字数以内の文字が存在する文書を抽出できます。
文字間隔指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


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

検索式
$purpose = 'AsIs,2C,会議'

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


部分文字指定検索

抽出したい2つのキーワードの間に、指定した文字列のいずれかを含む文書を抽出できます。
部分文字指定検索の詳細については、“リファレンス集”の“ パターン検索”を参照してください。


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

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

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


文字範囲指定検索

抽出したいキーワードの一部の文字が、指定した範囲の文字である文字列を含む文書を抽出できます。
文字範囲指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


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

検索式
$class = 'Area\-[A-C]'

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


ポイント

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


数値範囲指定検索

抽出したいキーワードの一部の文字が、指定した範囲の数値である文字列のいずれかを含む文書を抽出できます。
数値範囲指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


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

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

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


ポイント

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


注意

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


ワード一致指定検索

抽出したい単語を含む文書を抽出できます。
ワード検索の場合は、空白などの区切り文字で区切られた文字列を、キーワードと識別して、単語単位の抽出をします。
ワード一致指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


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

検索式
$reportE = '\<Manager\>'

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


ポイント

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

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

検索式
$reportE = '\<IT\>\<Department\>\<of\>\<Company\>\<A\>'

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


ワード間隔指定検索

抽出したい2つのキーワードの間に、指定した単語数以内の任意の単語が入ったフレーズを含む文書を抽出できます。
ワード間隔指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


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

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

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


論理積指定検索

パス式で指定した要素ノードの文字列が、複数指定したすべての条件と一致する文書を抽出できます。
論理積指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


出張目的(purpose)が“AsIs”というキーワードから始まり、かつ、“会議”というキーワードを含む文書を抽出します。

検索式
$ purpose = '^AsIs&会議'

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


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

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

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


ポイント

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


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

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


論理和指定検索

項目式で指定した文字列が、指定したいずれかの条件と一致する文書を抽出できます。
論理和指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


出張エリア(area)に“東京都”または“神奈川県”というキーワードを含む文書を抽出します。

検索式
$area = '東京都|神奈川県'

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


否定指定検索

指定した条件に一致しない文書を抽出できます。
否定指定検索の詳細については、“リファレンス集”の“パターン検索”を参照してください。


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

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

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



3.1.1.2 キーワードと完全に一致する文書を抽出する

入力ファイル内のデータが、任意のキーワードと一致している文書を抽出できます。このような検索を完全一致検索といいます。
検索条件式の左辺には対象のデータのパス式、項目式または属性式を指定します。右辺には抽出するキーワードの文字を指定します。比較演算子には、“==”、“!==”が指定できます。


出張エリア(area)が“神奈川県横浜市港北区”である文書を検索します。

検索式
$area == '神奈川県横浜市港北区'

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

参照

文字列検索の完全一致の書式については、“リファレンス集”の“文字列検索”を参照してください。

3.1.1.3 キーワードと大小比較を行う

入力ファイル内のデータと、任意のキーワードとの大小関係を比較して、条件を満たす文書を抽出できます。文字列の大小関係とは、文字列の文字コード値の大小関係です。このような検索を大小比較検索といいます。
検索条件式の左辺には対象のデータのパス式、項目式または属性式を指定し、右辺には抽出するキーワードの文字を指定します。

比較演算子には、“<”、“<=”、“>”、“>=”が指定できます。


氏名ひらがな(namekana)が“さとう”よりも後の従業員を抽出します。

検索式
$namekana > 'さとう'

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


ポイント

日時データの大小比較には、日時関数を使います。
検索式での日時関数の記載例については、“3.1.4 日時データで抽出する”参照してください。

参照

文字列検索の大小比較の書式については、“リファレンス集”の“文字列検索”を参照してください。