抽出機能では、抽出したいデータのキーワードや数値に関する条件を検索式で指定することで、要求するデータを抽出できます。文字列に対する条件の指定には、以下の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つがあります。
ある文字列を含む文書を抽出します。文字列検索では、改行などの検索対象ではない文字は無視して検索できます。
なお、検索対象外として取り扱う文字は、SkipCharパラメタで変更できます。
SkipCharの詳細については、以下を参照してください。
コマンド利用時は、“B.1.1 select用動作環境ファイル”
C API利用時は、“C.1.2 AsisInitSelect”
英文のデータを対象として抽出します。単語の区切り文字を意識して検索できます。
なお、単語の区切り文字は、SeparateCharパラメタで変更できます。
SeparateCharの詳細については、以下を参照してください。
コマンド利用時は、“B.1.1 select用動作環境ファイル”
C API利用時は、“C.1.2 AsisInitSelect”
ポイント
キーワードに、より詳細な検索条件を指定する形式のことをパターンと呼びます。パターンを使った検索をパターン検索と呼びます。パターンによる検索の詳細については、“A.1.8 パターン(文字列検索)”、“A.1.9 パターン(論理積・論理和・否定)”および“A.1.10 パターン(ワード検索)”を参照してください。
キーワードの指定形式と検索方法について以下の表に示します。
指定形式 | 検索方法 |
---|---|
文字列検索 | |
ワード検索 | |
論理演算検索 | |
抽出したいキーワードを含む文書を抽出できます。
文字列一致指定検索の詳細については、“A.1.8 パターン(文字列検索)”の文字列一致指定を参照してください。
例
出張目的(purpose)の中に“販売”というキーワードを含む文書を抽出します。
検索式 | $purpose = '販売' |
結果:文書Aが返却されます。
注意
抽出したい文字列に“.”や“$”などを含む場合には、エスケープ文字を付加します。
例えば、出張レポート(purpose)の中の“V9.0”というキーワードを含む文書を検索する場合、以下と指定します。
検索式 | $report = 'V9¥.0' |
“¥”は“.”を抽出するためのエスケープ文字です。
エスケープ文字の詳細については、“A.1.2 条件式”を参照してください。
抽出したいキーワードから始まる文書を抽出できます。
前方一致指定検索の詳細については、“A.1.8 パターン(文字列検索)”の前方一致指定を参照してください。
例
出張目的(purpose)が“Interstage”というキーワードから始まる文書を抽出します。
検索式 | /doc/detail/purpose = '^Interstage' |
結果:文書Aと文書Cが返却されます。
抽出したいキーワードで終わる文書を抽出できます。
後方一致指定検索の詳細については、“A.1.8 パターン(文字列検索)”の後方一致指定を参照してください。
例
出張目的(purpose)が“出席”というキーワードで終わる文書を抽出します。
検索式 | $purpose = '出席$' |
結果:文書Aと文書Bが返却されます。
ポイント
“前方一致指定検索”および“後方一致指定検索”を組み合わせることによって、指定したキーワードと完全に一致する文書を抽出できます。
例
宿泊費(hotel)が空文字“”の文書を抽出します。
検索式 | /doc/detail/hotel = '^$' |
結果:文書Bと文書Cが返却されます。
抽出したい2つのキーワードが、任意の文字の前後に存在する文書を抽出できます。
任意文字指定検索の詳細については、“A.1.8 パターン(文字列検索)”の任意文字指定を参照してください。
例
詳細情報(detail)配下のどこかに、“販売”と“会議”の間に2文字の文字が存在するキーワードを含む文書を抽出します。
検索式 | /doc/detail/* = '販売..会議' |
結果:文書Aが返却されます。文書Cのコメント(comment)中の“販売会議”はキーワード間の文字数が2文字ではないため、文書Cは返却されません。
抽出したい2つのキーワードの間に、指定した文字数以内の文字が存在する文書を抽出できます。
文字間隔指定検索の詳細については、“A.1.8 パターン(文字列検索)”の文字間隔指定を参照してください。
例
出張目的(purpose)の中に“AsIs”と“会議”の間の文字数が2文字以内のキーワードを含む文書を抽出します。
検索式 | $purpose = 'AsIs,2C,会議' |
結果:文書Cが返却されます。文書Aはキーワード間の文字数が3文字以上であるため返却されません。
抽出したい2つのキーワードの間に、指定した文字列のいずれかを含む文書を抽出できます。
部分文字指定検索の詳細については、“A.1.8 パターン(文字列検索)”の部分文字指定を参照してください。
例
出張エリア(area)に“東京都千代田区”または“東京都港区”というキーワードを含む文書を抽出します。
検索式 | /doc/detail/destination/@area = '東京都(千代田|港)区' |
結果:文書Aが返却されます。
抽出したいキーワードの一部の文字が、指定した範囲の文字である文字列を含む文書を抽出できます。
文字範囲指定検索の詳細については、“A.1.8 パターン(文字列検索)”の文字範囲指定を参照してください。
例
分類(class)に“Area-A”、“Area-B”または“Area-C”というキーワードを含む文書を抽出します。
検索式 | $class = 'Area¥-[A-C]' |
結果:文書A、文書Bおよび文書Cが返却されます。
ポイント
この例では、“部分文字指定検索”で、“Area¥-(A|B|C)”と記述するのと同じです。
抽出したいキーワードの一部の文字が、指定した範囲の数値である文字列のいずれかを含む文書を抽出できます。
数値範囲指定検索の詳細については、“A.1.8 パターン(文字列検索)”の数値範囲指定を参照してください。
例
出張レポート(report)に“検索レスポンス1秒”、“検索レスポンス2秒”、“検索レスポンス3秒”、…、“検索レスポンス11秒”または“検索レスポンス12秒” というキーワードを含む文書を抽出します。
検索式 | /doc/report = '検索レスポンス[1,12]秒' |
結果:文書Aが返却されます。
ポイント
この例では、“部分文字指定検索”で、“検索レスポンス(1|2|3|…|11|12)秒”と記述するのと同じです。
注意
数値範囲指定検索を行う場合は、数値の前後に文字を指定してください。例えば、“検索レスポンス[1,12]”で抽出すると、文書Bの“検索レスポンス18秒”に1が含まれるため返却されます。
抽出したい単語を含む文書を抽出できます。
ワード検索の場合は、空白などの区切り文字で区切られた文字列を、キーワードと識別して、単語単位の抽出をします。
ワード一致指定検索の詳細については、“A.1.10 パターン(ワード検索)”のワード一致指定を参照してください。
例
英文レポート(reportE)に“Manager”というキーワードを含む文書を抽出します。
検索式 | $reportE = '¥<Manager¥>' |
結果:文書Aが返却されます。
ポイント
キーワードを連続して記述することで、連続した単語(フレーズ)を含む文書を抽出できます。
例
英文レポート(reportE)に“IT Department of Company A”というキーワードを含む文書を抽出します。
検索式 | $reportE = '¥<IT¥>¥<Department¥>¥<of¥>¥<Company¥>¥<A¥>' |
結果:文書Aが返却されます。
抽出したい2つのキーワードの間に、指定した単語数以内の任意の単語が入ったフレーズを含む文書を抽出できます。
ワード間隔指定検索の詳細については、“A.1.10 パターン(ワード検索)”のワード間隔指定を参照してください。
例
英文レポート(reportE)に“response”という単語で始まり、“seconds”という単語で終わる、途中に5つ以内の単語が入ったフレーズを含む文書を抽出します。
検索式 | /doc/reportE = '¥<response¥>,5W,¥<seconds¥>' |
結果:文書Aと文書Bが返却されます。
パス式で指定した要素ノードの文字列が、複数指定したすべての条件と一致する文書を抽出できます。
論理積指定検索の詳細については、“A.1.9 パターン(論理積・論理和・否定)”の論理積を参照してください。
例
出張目的(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が返却されます。
項目式で指定した文字列が、指定したいずれかの条件と一致する文書を抽出できます。
論理和指定検索の詳細については、“A.1.9 パターン(論理積・論理和・否定)”の論理和を参照してください。
例
出張エリア(area)に“東京都”または“神奈川県”というキーワードを含む文書を抽出します。
検索式 | $area = '東京都|神奈川県' |
結果:文書Aと文書Cが返却されます。
指定した条件に一致しない文書を抽出できます。
否定指定検索の詳細については、“A.1.9 パターン(論理積・論理和・否定)”の否定を参照してください。
例
出張エリア(area)に“東京都”を含み、“港区”を含まない文書を抽出します。
検索式 | /doc/detail/destination/@area = '東京都&~(港区)' |
結果:文書Aが返却されます。
入力ファイル内のデータと、任意のキーワードとの大小関係を比較して、条件を満たす文書を抽出できます。文字列の大小関係とは、文字列の文字コード値の大小関係です。このような検索を大小比較検索といいます。大小比較検索は、パス式、項目式または属性式と、抽出するキーワードを比較演算子で指定します。比較演算子には、“<”、“<=”、“>”、“>=”が指定できます。
例
氏名ひらがな(namekana)が“さとう”よりも後の従業員を抽出します。
検索式 | $namekana > 'さとう' |
結果:文書AとCが返却されます。
ポイント
日時データの大小比較には、日時関数を使います。
検索式での日時関数の記載例については、“4.1.5 日時関数の使用例”参照してください。