Smart Search Filters to the Rescue

Kentico 8 introduced a new set of built-in functionality to let developers add filtering and ordering to a set of search results. The Smart search filter web part allows you to do both of these things. You only need to add it to your page template and configure the correct web part properties to connect the Smart search results web part to the Smart search filter web part.

To get started, go to the Design tab of your search results page template that contains either a Smart search results web part or Smart search dialog with results web part. From there choose which web part zone you want to have the filter show up in and click on the Add new web part menu button on the web part zone.

Once the Select web part dialog is open, find the Smart search filter web part and add it to your page template.

You can add as many of these filters as you want to a page template. In my example above I have added a few to get the desired results. Each Smart search filter represents one filter option group. As you can see below I have named the web part title property uniquely to be able to identify which web part holds which filter options (ex. "SmartSearchFilter - Content Type").

To connect the Smart search filter to the Smart Search results you need to configure the Search dialog web part ID property of the Smart search filter web part. In my example the normal Smart search results web part ID was named SmartSearchResults. I have copied that name into the filter’s property value as illustrated below. That is the way the web parts are connected.

Important Things to Know

Now that the filter is connected to the results. All that is left is to configure the Filter properties property group fields. And here is where the work comes in. Each filter has its own set of configuration that you can either statically provide a set of filter choices, or dynamically provide them.

The best place to get started on learning how to configure these properties is the Kentico documentation on Using search filters.The documentation tells us that Kentico uses the Lucene.NET syntax to create the filtering functionality. It takes a bit to get used to it, but the syntax is:

+Index field name;Value of the field;Displayed text

The first character must always be a plus or minus character. The plus character means the result must match the value of the field to come back in the results, while the minus character means exclude any matches.

The Index field name is what field of the index you are searching, the value of the field is what you are filtering for in the Index field, and the Displayed text is what text that the user sees on the results page. Again refer to the documentation for all the details, this is just the base pattern and there are more complex examples that it shows. No need to recreate those here.

As I mentioned you can statically type these in the Values field, or you can write a query to dynamically populate them.

Static Example

Dynamic Example

Once you have the filter choices worked out, you can choose how you want the filter to appear from a set of form elements. Your choices in the Filter mode property are checkboxes, radio buttons, drop down, or text.

The last two remaining properties of note are the Filter clause and Filter is conditional properties. The Filter clause is a dropdown choice that lets you choose from None, Must, or Must not. Again check out the documentation. Must will be the most common choice here.

The Filter is conditional property defines whether the web part will act as a true filter to narrow results, or act as a way to control the sequencing or order of results that appear. Setting it to true will filter, while false tells the system to use the web part as a way to control the sequence. One note on the sort expression and direction. By default the Kentico Smart search results web parts always sort on score of the match, and that is always in descending order.

The results of adding the Smart search filter to the page template for the above screen shot is a nice looking filter. When a user clicks on one of the checkboxes in the filter, the page will automatically post back (refresh) and your search results will be narrowed down to matching results for that filter.

Smart Search Filter – Page Type Example

Now on to some examples to illustrate the different types of filters you can create. The example below would be classified as a Static Conditional filter. I recommend using this method when you have a very few static types of filters. It also works well when you want to use the Text or Date Range types of filters. The example below shows how to manually enter in a set of Page types as a way to narrow down the search results that matches the chosen filter. The matches would be defined as any result items that are of a certain Page type or class name as the Kentico API is concerned.

The Filter clause is set to Must, and the Filter is conditional bit is checked. The end result is a nice set of checkboxes that filter down the search results to just the Locations page type for the Dancing Goat demo site as you have seen above where Chicago, New York, and LA are show on the page. Filtering instead fo Articles gives you a result set of:

Be the first to know about my latest Kentico Tips & Tricks!

About Brian McKeiver

I have over 15 years of experience in web development, mainly at BizStream. I'm passionate about software platforms and technologies that can help solve real world problems. I specialize in architecting solutions that use Kentico CMS, Kentico EMS, and ASP.NET Content Management Systems.

I enjoy hanging out with my wife, chasing around my three children and vigorously rooting for the Michigan State Spartans and Detroit Lions.