package storm.applications.bolt; import backtype.storm.tuple.Fields; import backtype.storm.tuple.Tuple; import backtype.storm.tuple.Values; import java.util.Map; import java.util.StringTokenizer; import org.apache.commons.lang3.StringUtils; import storm.applications.constants.TrendingTopicsConstants.Field; /** * * @author mayconbordin */ public class TopicExtractorBolt extends AbstractBolt { @Override public void execute(Tuple input) { Map tweet = (Map) input.getValueByField(Field.TWEET); String text = (String) tweet.get("text"); if (text != null) { StringTokenizer st = new StringTokenizer(text); while (st.hasMoreElements()) { String term = (String) st.nextElement(); if (StringUtils.startsWith(term, "#")) { collector.emit(input, new Values(term)); } } } collector.ack(input); } @Override public Fields getDefaultFields() { return new Fields(Field.WORD); } }