public ActionResult ProviderModelFilteredSearch(string keyWord, string group, string facet) { var vmodel = new PMSearchResultViewModel(); vmodel.SearchQueryText = keyWord; CatalogEntrySearchCriteria criteria = new CatalogEntrySearchCriteria { Locale = ContentLanguage.PreferredCulture.TwoLetterISOLanguageName, SearchPhrase = keyWord }; //string _SearchConfigPath = //@"C:\Episerver612\CommerceTraining\CommerceTraining\Configs\Mediachase.Search.Filters.config"; //TextReader reader = new StreamReader(_SearchConfigPath); //XmlSerializer serializer = new XmlSerializer((typeof(SearchConfig))); //var _SearchConfig = (SearchConfig)serializer.Deserialize(reader); //reader.Close(); //foreach (SearchFilter filter in _SearchConfig.SearchFilters) //{ // // Step 1 - use the XML file // criteria.Add(filter); //} CreateFacetsByCode(criteria); foreach (SearchFilter filter in criteria.Filters) { if (filter.field.ToLower() == group.ToLower()) { var svFilter = filter.Values.SimpleValue .FirstOrDefault(x => x.value.Equals(facet, StringComparison.OrdinalIgnoreCase)); if (svFilter != null) { //This overload to Add causes the filter to be applied criteria.Add(filter.field, svFilter); } } } // use the manager for search and for index management SearchManager manager = new SearchManager("ECApplication"); // Do search ISearchResults results = manager.Search(criteria); vmodel.SearchResults = results.Documents.ToList(); vmodel.FacetGroups = results.FacetGroups.ToList(); vmodel.ResultCount = results.Documents.Count.ToString(); return(View("ProviderModelQuery", vmodel)); }
public ActionResult ProviderModelFilteredSearch(string keyWord, string group, string facet) { var vmodel = new PMSearchResultViewModel(); vmodel.SearchQueryText = keyWord; CatalogEntrySearchCriteria criteria = new CatalogEntrySearchCriteria { RecordsToRetrieve = 200, // there is a default of 50 // Locale have to be there… else no hits Locale = ContentLanguage.PreferredCulture.TwoLetterISOLanguageName, SearchPhrase = keyWord }; #region Options //criteria.Sort = CatalogEntrySearchCriteria.DefaultSortOrder; //criteria.CatalogNames.Add("Fashion"); //criteria.ClassTypes.Add(EntryType.Variation); //criteria.MarketId = MarketId.Default; //criteria.IsFuzzySearch = true; //criteria.FuzzyMinSimilarity = 0.7F; //criteria.IncludeInactive = true; //System.Collections.Specialized.StringCollection sc = // new System.Collections.Specialized.StringCollection // { // "Fashion/Clothes_1/Men_1/Shirts_1", // "Fashion/Clothes_1/UniSex_1" // }; //criteria.Outlines = sc; #endregion Options //string _SearchConfigPath = @"C:\Episerver612\CommerceTraining\CommerceTraining\Configs\Mediachase.Search.Filters.config"; //TextReader reader = new StreamReader(_SearchConfigPath); //XmlSerializer serializer = new XmlSerializer((typeof(SearchConfig))); //var _SearchConfig = (SearchConfig)serializer.Deserialize(reader); //reader.Close(); //foreach (SearchFilter filter in _SearchConfig.SearchFilters) //{ // criteria.Add(filter); //} CreateFacetsByCode(criteria); foreach (SearchFilter filter in criteria.Filters) { if (filter.field.ToLower() == group.ToLower()) { var svFilter = filter.Values.SimpleValue .FirstOrDefault(x => x.value.Equals(facet, StringComparison.OrdinalIgnoreCase)); if (svFilter != null) { //This overload to Add causes the filter to be applied criteria.Add(filter.field, svFilter); } } } SearchManager manager = new SearchManager("ECApplication"); // Do search ISearchResults results = manager.Search(criteria); vmodel.SearchResults = results.Documents.ToList(); vmodel.FacetGroups = results.FacetGroups.ToList(); vmodel.ResultCount = results.Documents.Count.ToString(); return(View("ProviderModelQuery", vmodel)); }
public ActionResult ProviderModelQuery(string keyWord) { var vmodel = new PMSearchResultViewModel(); vmodel.SearchQueryText = keyWord; CatalogEntrySearchCriteria criteria = new CatalogEntrySearchCriteria { RecordsToRetrieve = 200, // there is a default of 50 // Locale have to be there… else no hits Locale = ContentLanguage.PreferredCulture.TwoLetterISOLanguageName, SearchPhrase = keyWord }; #region Options //criteria.Sort = CatalogEntrySearchCriteria.DefaultSortOrder; //criteria.CatalogNames.Add("Fashion"); //criteria.ClassTypes.Add(EntryType.Variation); //criteria.MarketId = MarketId.Default; //criteria.IsFuzzySearch = true; //criteria.FuzzyMinSimilarity = 0.7F; //criteria.IncludeInactive = true; //System.Collections.Specialized.StringCollection sc = // new System.Collections.Specialized.StringCollection // { // "Fashion/Clothes_1/Men_1/Shirts_1", // "Fashion/Clothes_1/UniSex_1" // }; //criteria.Outlines = sc; #endregion Options //string _SearchConfigPath = @"C:\Episerver612\CommerceTraining\CommerceTraining\Configs\Mediachase.Search.Filters.config"; //TextReader reader = new StreamReader(_SearchConfigPath); //XmlSerializer serializer = new XmlSerializer((typeof(SearchConfig))); //var _SearchConfig = (SearchConfig)serializer.Deserialize(reader); //reader.Close(); //foreach (SearchFilter filter in _SearchConfig.SearchFilters) //{ // criteria.Add(filter); //} CreateFacetsByCode(criteria); SearchManager manager = new SearchManager("ECApplication"); // Do search ISearchResults results = manager.Search(criteria); int[] ints = results.GetKeyFieldValues <int>(); var _referenceConverter = ServiceLocator.Current.GetInstance <Mediachase.Commerce.Catalog.ReferenceConverter>(); var _contentLoader = ServiceLocator.Current.GetInstance <IContentLoader>(); List <ContentReference> refs = new List <ContentReference>(); ints.ToList().ForEach(i => refs.Add(_referenceConverter .GetContentLink(i, CatalogContentType.CatalogEntry, 0))); var localContent = _contentLoader.GetItems(refs, new LoaderOptions()); vmodel.SearchResults = results.Documents.ToList(); vmodel.FacetGroups = results.FacetGroups.ToList(); vmodel.ResultCount = results.Documents.Count.ToString(); return(View(vmodel)); }