For more information on past and future Lucene versions, please see: http://s.apache.org/luceneversions
writer.doXYZ() to writer.get().doXYZ()
(it is also advisable to add an assert writer != null; before you
access the wrapped IndexWriter.)
In addition, MergePolicy only exposes a default constructor, and the one that
took IndexWriter as argument has been removed from all MergePolicy extensions.
   TopFieldCollector tfc = TopFieldCollector.create(sort, numHits, fillFields,
                                                    true /* trackDocScores */,
                                                    true /* trackMaxScore */,
                                                    false /* docsInOrder */);
   searcher.search(query, tfc);
   TopDocs results = tfc.topDocs();
 Note that your Sort object cannot use SortField.AUTO when you
 directly instantiate TopFieldCollector.
 Also, the method search(Weight, Filter, Collector) was added to
 the Searchable interface and the Searcher abstract class to
 replace the deprecated HitCollector versions.  If you either
 implement Searchable or extend Searcher, you should change your
 code to implement this method.  If you already extend
 IndexSearcher, no further changes are needed to use Collector.
 Finally, the values Float.NaN and Float.NEGATIVE_INFINITY are not
 valid scores.  Lucene uses these values internally in certain
 places, so if you have hits with such scores, it will cause
 problems.
   TopDocsCollector tdc = new TopScoreDocCollector(10);
   Collector c = new PositiveScoresOnlyCollector(tdc);
   searcher.search(query, c);
   TopDocs hits = tdc.topDocs();
   ...