code: func (ss *IndexSearcher) searchLWSI(leaves []*index.AtomicReaderContext,
  	w Weight, after *ScoreDoc, nDocs int) TopDocs {
  	// single thread
  	limit := ss.reader.MaxDoc()
  	if limit == 0 {
  		limit = 1
  	}
  	if nDocs > limit {
  		nDocs = limit
  	}
  	collector := NewTopScoreDocCollector(nDocs, after, !w.IsScoresDocsOutOfOrder())
  	ss.spi.SearchLWC(leaves, w, collector)
  	return collector.TopDocs()
  }
docs: /** Expert: Low-level search implementation.  Finds the top <code>n</code>
   * hits for <code>query</code>.
   *
   * <p>Applications should usually call {@link IndexSearcher#search(Query,int)} or
   * {@link IndexSearcher#search(Query,Filter,int)} instead.
   * @throws BooleanQuery.TooManyClauses If a query would exceed
   *         {@link BooleanQuery#getMaxClauseCount()} clauses.
   */