/// <summary> /// Search, sorting by score, and computing /// drill down and sideways counts. /// </summary> public virtual DrillSidewaysResult Search(ScoreDoc after, DrillDownQuery query, int topN) { int limit = m_searcher.IndexReader.MaxDoc; if (limit == 0) { limit = 1; // the collector does not alow numHits = 0 } topN = Math.Min(topN, limit); TopScoreDocCollector hitCollector = TopScoreDocCollector.Create(topN, after, true); DrillSidewaysResult r = Search(query, hitCollector); return(new DrillSidewaysResult(r.Facets, hitCollector.GetTopDocs())); }
/// <summary> /// Search, sorting by <see cref="Sort"/>, and computing /// drill down and sideways counts. /// </summary> public virtual DrillSidewaysResult Search(DrillDownQuery query, Filter filter, FieldDoc after, int topN, Sort sort, bool doDocScores, bool doMaxScore) { if (filter != null) { query = new DrillDownQuery(m_config, filter, query); } if (sort != null) { int limit = m_searcher.IndexReader.MaxDoc; if (limit == 0) { limit = 1; // the collector does not alow numHits = 0 } topN = Math.Min(topN, limit); TopFieldCollector hitCollector = TopFieldCollector.Create(sort, topN, after, true, doDocScores, doMaxScore, true); DrillSidewaysResult r = Search(query, hitCollector); return(new DrillSidewaysResult(r.Facets, hitCollector.GetTopDocs())); } else { return(Search(after, query, topN)); } }