Unified search with categories




I'm trying to use unified search to filter the results based on category. I've got so far

var results = SearchClient.Instance.UnifiedSearchFor(searchDefinition.SearchTerm, Language.English)
                                                                    .Filter(x => x.MatchTypeHierarchy(typeof(ContentPageBase)))
                                                                    .Filter(y => y.SearchCategories.Match("5"))
                                                                    .Skip(searchDefinition.Page - 1)

And the SeachCategories method is implemented on ContentBasePage as

        public virtual IEnumerable<string> SearchCategories 
                return this.Category.Select(x => x.ToString());


Bu tfind doesn't return any results even though I know that there is a page in category "5" (filter hardcoded for demo purposes). Can anyone spot what is going on. Also - I would like to peek into Searchcategories in the search results (in VS debug mode) to see what is there - but the property seems to be unavailable.

Really appreciate any help






May 08, 2014 11:45

Think you need to change the:

.Filter(y => y.SearchCategories.Match("5"))

As the SearchCategories are a list over categories you can't use match.

In my solution I created my own filter and then added that to the query.

 var catalogBuilder = SearchClient.Instance.BuildFilter<PageData>();

                foreach (int category in input.Categories)
                    catalogBuilder = catalogBuilder.Or(x => x.Category.Match(category));

                query = query.Filter(catalogBuilder)




May 08, 2014 11:57

Thanks Petter.

But it turns out that SearchCategories has the category name not the id. Sooo



I found this out by looking in the find index in the admin view of the CMS (click the find tab)




May 08, 2014 17:19
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.