public static SearchResultsWithHighlights <T> GetResultsWithHighlights <T>(this IQueryable <T> source, params string[] fieldNames)
        {
            Assert.ArgumentNotNull(source, "source");

            var queryable = source as GenericQueryable <T, SolrCompositeQuery>;

            Assert.IsNotNull(queryable, queryable.GetType());

            var expression = source.Expression;

            // Build a native query
            var intermidQuery = (SolrCompositeQuery)queryable.GetType().InvokeMember("GetQuery",
                                                                                     BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.NonPublic,
                                                                                     Type.DefaultBinder, queryable, new object[] { expression });

            var linqIndex = (LinqToSolrIndexExtended <T>)queryable.GetType().InvokeMember("Index",
                                                                                          BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
                                                                                          Type.DefaultBinder, queryable, null);

            Assert.IsNotNull(linqIndex, "Can't get an extended linqToSolrIndex...");

            var translatedFieldNames = fieldNames.Select(field => linqIndex.Parameters.FieldNameTranslator.GetIndexFieldName(field)).ToArray();

            GetResultsOptions options         = GetResultsOptions.Default;
            var intermidQueryWithHighlighting = new SolrCompositeQueryWithHighlights(intermidQuery, options)
            {
                HighlightParameters = translatedFieldNames
            };



            // Execute the resulting query
            return(linqIndex.Execute <SearchResultsWithHighlights <T> >(intermidQueryWithHighlighting));
        }
 public SolrCompositeQueryWithHighlights(SolrCompositeQuery query, GetResultsOptions options = GetResultsOptions.Default)
     : base(query.Query, query.Filter, query.Methods, query.VirtualFieldProcessors, query.FacetQueries, query.ExecutionContexts)
 {
     this.Methods.Insert(0, new GetResultsMethod(options));
 }