Source:
<code>public EquivalenceUpdater<Container> getUpdater( EquivalenceUpdaterProviderDependencies dependencies, Set<Publisher> targetPublishers ) { return ContentEquivalenceUpdater.<Container>builder() .withExcludedUris(dependencies.getExcludedUris()) .withExcludedIds(dependencies.getExcludedIds()) .withGenerator( TitleSearchGenerator.create( dependencies.getSearchResolver(), Container.class, targetPublishers, 2 ) ) .withScorers( ImmutableSet.of( new TitleMatchingContainerScorer(2), new ContainerHierarchyMatchingScorer( dependencies.getContentResolver(), Score.negativeOne(), new SubscriptionCatchupBrandDetector( dependencies.getContentResolver() <START> ) <END> ) ) ) .withCombiner( new RequiredScoreFilteringCombiner<>( new NullScoreAwareAveragingCombiner<>(), TitleMatchingContainerScorer.NAME, ScoreThreshold.greaterThanOrEqual(2) ) ) .withFilter( ConjunctiveFilter.valueOf(ImmutableList.of( new MinimumScoreFilter<>(0.25), new MediaTypeFilter<>(), new SpecializationFilter<>(), new DummyContainerFilter<>(), new UnpublishedContentFilter<>(), ExclusionListFilter.create( dependencies.getExcludedUris(), dependencies.getExcludedIds() ) )) ) .withExtractors( ImmutableList.of( MultipleCandidateExtractor.create(), PercentThresholdAboveNextBestMatchEquivalenceExtractor .atLeastNTimesGreater(1.5) ) ) .withHandler( new DelegatingEquivalenceResultHandler<>(ImmutableList.of( LookupWritingEquivalenceHandler.create( dependencies.getLookupWriter() ), new EpisodeMatchingEquivalenceHandler( dependencies.getContentResolver(), dependencies.getEquivSummaryStore(), dependencies.getLookupWriter(), targetPublishers ), new ResultWritingEquivalenceHandler<>( dependencies.getEquivalenceResultStore() ), new EquivalenceSummaryWritingHandler<>( dependencies.getEquivSummaryStore() ) )) ) .withMessenger( QueueingEquivalenceResultMessenger.create( dependencies.getMessageSender(), dependencies.getLookupEntryStore() ) ) .build(); }</code><technical_language>This requires testing, I doubt hierarchy matching scorer is (as I doubt rely wikipedia a good hierarchy). I need a "same year" scorer (if exist already)</technical_language>

Target:
public EquivalenceUpdater<Container> getUpdater( EquivalenceUpdaterProviderDependencies dependencies, Set<Publisher> targetPublishers ) { return ContentEquivalenceUpdater.<Container>builder() .withExcludedUris(dependencies.getExcludedUris()) .withExcludedIds(dependencies.getExcludedIds()) .withGenerator( TitleSearchGenerator.create( dependencies.getSearchResolver(), Container.class, targetPublishers, 2 ) ) .withScorers( ImmutableSet.of( new TitleMatchingContainerScorer(2) ) ) .withCombiner( new RequiredScoreFilteringCombiner<>( new NullScoreAwareAveragingCombiner<>(), TitleMatchingContainerScorer.NAME, ScoreThreshold.greaterThanOrEqual(2) ) ) .withFilter( ConjunctiveFilter.valueOf(ImmutableList.of( new MinimumScoreFilter<>(2), new MediaTypeFilter<>(), new SpecializationFilter<>(), new DummyContainerFilter<>(), new UnpublishedContentFilter<>(), ExclusionListFilter.create( dependencies.getExcludedUris(), dependencies.getExcludedIds() ) )) ) .withExtractor( AllOverOrEqThresholdExtractor.create(2) ) .withHandler( new DelegatingEquivalenceResultHandler<>(ImmutableList.of( LookupWritingEquivalenceHandler.create( dependencies.getLookupWriter() ), new EpisodeMatchingEquivalenceHandler( dependencies.getContentResolver(), dependencies.getEquivSummaryStore(), dependencies.getLookupWriter(), targetPublishers ), new ResultWritingEquivalenceHandler<>( dependencies.getEquivalenceResultStore() ), new EquivalenceSummaryWritingHandler<>( dependencies.getEquivSummaryStore() ) )) ) .withMessenger( QueueingEquivalenceResultMessenger.create( dependencies.getMessageSender(), dependencies.getLookupEntryStore() ) ) .build(); }