現在、私はPigで作業しており、フィールド値(chararray
)が別のフィールド(またはchararray
)に存在するかどうかを確認しようとしています。 例を示します。Apache Pig - 他の文字列の部分文字列
ファイルt.txt
:上記の例で
1;This is a banana which is yellow.;Fruit;Banana
2;This is not about fruit but about Apple Inc.;Company;Apple
は、私が最後のフィールド(すなわちBanana
とApple
)は、第2フィールド(文)内に存在するかどうかを確認したいです。ここに私の豚のスクリプトはこれまでです:
a = LOAD 't.txt' using PigStorage(';') AS (id:chararray, sentence:chararray, kind:chararray, search:chararray);
b = FOREACH a GENERATE id, LOWER(sentence) as sent:chararray, kind, LOWER(search) as srch:chararray;
c = FILTER b BY sent MATCHES '.* srch .*';
私が達成しようとしている目標は、検索ワードを囲むバイグラムを取得することです。具体的な例を与えるために、これは私が(または別の形で)を探していますものです:
(1,Fruit,{(a, banana),(banana, which})
(2,Company,{(about, apple),(apple, inc.})
だから、私の質問は:私はからフィールド文に一致するようにスキーマからフィールド検索を使用する方法スキーマ?
だから、t.txtからのkindと一致する文と、第2のスキーマの検索が欲しいですか?すべての単語を含む文を探したり、リストのいずれかのタプルから単語を1つだけ探したりすることです。 –
例を挙げましょう:各行から、文(フィールド "sentence"に含まれる)から値(フィールド "search"に含まれています)を抽出します。これは、MATCHESを使用する状況と非常によく似ていますが、パターンはあります。しかし、パターンとして、ここでは、与えられたパターンの代わりにフィールド "検索"に含まれる値を使用したいと思います。つまり、パターンは動的であり、行ごとに変化します。 –