В настоящее время я работаю в 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
) присутствует во втором поле (предложение). Вот мой свинья сценарий до сих пор:
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, которое соответствует типу и поиску из второй схемы? Так что искать предложение со всеми словами или только одним словом из любого из кортежей из списка. –
Итак, чтобы привести пример: из каждой строки я хочу извлечь значение (содержащееся в поле «поиск») из предложения (содержащегося в поле «предложение»). Он очень похож на ситуацию, когда вы используете MATCHES, но с заданным шаблоном. Однако в качестве шаблона здесь я хотел бы использовать значение, содержащееся в поле «поиск» вместо заданного шаблона. Так сказать, шаблон динамичен и изменяется для каждой строки. –