public ActionResult PagedResult(int? id)
        {
            if (!id.HasValue)
            {
                return RedirectToAction("PagedResult", new { id = 0 }); 
            }

            var searchResultModel = new Models.SearchResultModel<SearchResultItem>();

            var index = ContentSearchManager.GetIndex("sitecore_master_index");

            using (var context = index.CreateSearchContext())
            {
                var queryable = context.GetQueryable<SearchResultItem>();

                // Event though we apply Paging - we still get a TotalSearchResults 
                // for the search result without the limit
                var result = queryable
                    .Where(i => (i.Name.Contains("Media") || i.Name.Contains("FDA")))
                    .Page(id.Value, 10)
                    .GetResults();

                searchResultModel.Hits = result.Hits.ToList();
                searchResultModel.TotalSearchResults = result.TotalSearchResults;
                searchResultModel.Facets = result.Facets;

                return View(searchResultModel);
            }
        }
        public ActionResult QueryAndFilter()
        {
            var searchResultModel = new Models.SearchResultModel<SearchResultItem>();

            var index = ContentSearchManager.GetIndex("sitecore_master_index");

            using (var context = index.CreateSearchContext())
            {
                var queryable = context.GetQueryable<SearchResultItem>();

                // No query or filter restriction for "folder" in name 
                var result = queryable
                    .Where(i => (i.Name.Contains("Media") || i.Name.Contains("FDA")))
                    .GetResults();

                // Filtered to only show items with "folder" in the name
                //var result = queryable
                //    .Where(i => (i.Name.Contains("Media") || i.Name.Contains("FDA")))
                //    .Filter(i => i.Name.Contains("Folder"))
                //    .GetResults();

                // Query restriction to only show items - This will impact ranking!
                //var result = queryable
                //    .Where(i => (i.Name.Contains("Media") || i.Name.Contains("FDA")) && i.Name.Contains("Folder"))
                //    .GetResults(); 

                searchResultModel.Hits = result.Hits.ToList();
                searchResultModel.TotalSearchResults = result.TotalSearchResults;
                searchResultModel.Facets = result.Facets;

                return View(searchResultModel);
            }
        }
        public ActionResult Fuzzy(string id)
        {
            id = id ?? "";
            var searchResultModel = new Models.SearchResultModel<SearchResultItem>();

            var index = ContentSearchManager.GetIndex("sitecore_master_index");


            using (var context = index.CreateSearchContext())
            {
                var queryable = context.GetQueryable<SearchResultItem>();

                var result = queryable
                    .Where(i => i.Name.Like(id, 0.5f))
                    .GetResults();

                searchResultModel.Hits = result.Hits.ToList();
                searchResultModel.TotalSearchResults = result.TotalSearchResults;
                searchResultModel.Facets = result.Facets;

                return View(searchResultModel);
            }

            return new EmptyResult();
        }
        public ActionResult Facets()
        {
            var searchResultModel = new Models.SearchResultModel<SearchResultItem>();

            var index = ContentSearchManager.GetIndex("sitecore_master_index");

            using (var context = index.CreateSearchContext())
            {
                var queryable = context.GetQueryable<SearchResultItem>()
                    .Where(i => (i.Name.Contains("Media") || i.Name.Contains("FDA")))
                    .FacetOn(i => i.Language)
                    .FacetOn(i => i.TemplateName);

                var facets = GetFacetsFromQueryString(Request.QueryString);
                foreach (var facet in facets)
                {
                    queryable = queryable.Filter(i => i[facet.Key].Equals(facet.Value));
                }
                ViewBag.Facets = facets;


                var result = queryable.GetResults();

                searchResultModel.Hits = result.Hits.ToList();
                searchResultModel.TotalSearchResults = result.TotalSearchResults;
                searchResultModel.Facets = result.Facets;

                return View(searchResultModel);
            }
        }