class ContentIndexingColumnBasedHandler extends AbstractColumnBasedHandler<KEYIN> implements TermFrequencyIngestHelperInterface {

    @Override
    public void setup(TaskAttemptContext context) {
        super.setup(context);
        contentHelper = getContentIndexingDataTypeHelper();
        tokenFieldNameSuffix = contentHelper.getTokenFieldNameDesignator();
        Preconditions.checkNotNull(tokenFieldNameSuffix);
        
        listDelimiter = contentHelper.getListDelimiter();
        Preconditions.checkNotNull(listDelimiter);
        
        counters = new ContentIndexCounters();
        
        conf = context.getConfiguration();
        contentHelper.setup(conf);
        helper = contentHelper;
        
        tokenHelper = new TokenizationHelper(helper, conf);
        
        // TODO: refactor explicit DefaultTokenSearch usage here and get class from config
        searchUtil = TokenSearch.Factory.newInstance(DefaultTokenSearch.class.getCanonicalName(), tokenHelper.getStopWords(), false);
        tokenHelper.configureSearchUtil(searchUtil);
        
        // TODO: refactor explicit DefaultTokenSearch usage here and get class from config
        searchUtilReverse = TokenSearch.Factory.newInstance(DefaultTokenSearch.class.getCanonicalName(), tokenHelper.getStopWords(), true);
        tokenHelper.configureSearchUtil(searchUtilReverse);
        
        tokenOffsetCache = new BoundedOffsetQueue<>(tokenHelper.getTokenOffsetCacheMaxSize());
        
        // Conditionally create an NGrams factory
        if (this.getBloomFiltersEnabled()) {
            this.bloomFilterUtil = newBloomFilterUtil(this.conf);
        }
    }

}