ECMS Site Search
From NewHaven Software Wiki
Contents |
About
Site Search is a way for customers to quickly find products on your site. Some customers prefer to use category navigation and filters to give a subset of products while others have a better idea as to what they are looking for and just want to see that item. You need to make sure your site is as optimized as possible for each group of customers.
Settings Overview
There are a few options in the admin as to how the search is performed. One of the settings is "Choose the type for the site search:", and the available options are "Return partial and whole word matches" and "Return only whole word matches". Whole word matches are exact matches. If a customer searches for "rug" then the search would only return items that have the term "rug". If you have it it set to return partial word matches then any item containing a word that has "rug" anywhere in it will be returned, like drug, drugs, rug, rugs, rugby, rugged, shrug, shrugs, shrugged, frugal, trug, etc. As you can see this can return a lot of results.
The other option that effects the amount of results returned is the "Choose fields to use with the site search" option. If you are currently setup to "Use the fields defined in the search templates", (which are: "keywords,prod_name,sku,desc_header,prod_description,cust_1,cust_2,cust_3,cust_4,cust_5,cust_6,attribute1,attribute2,attribute3,attribute4, then all of those fields are indexed and searchable when a user enters a search term. So for example, if you have 1,000 products indexed by 1,000 words per product then that is 1,000,000 words that need to be indexed. This makes the likelihood of returning the product the customer is searching for less likely.
Additional Settings
I took a recent product export from a customer's site and did a little benchmarking. I searched all the available fields for the term "rug" and returned 2,155 results. I did a whole word match only and came back with 1,905 matches. I then went into the admin and did a count on all the product name that contain the term "rug" and found 590 results. When I did a whole word match it came back with 573. I didn't eliminate inactive items as I'm only using this for reference.
So what happens when a user searches for a term that returns too many results? Rather than slow the system down the search just returns the message "Your search returned too many results. Please refine your search and try again." But there are a number of things you can do to minimize this:
Check your Search Terms Report
(Reporting >> Search Terms) and see what people are searching for. -- This is your best friend. Here you can see the popular searches on your site and test the results. You can also setup 'Search Redirects' (explained below) and View Search Results. If you click the 'View Search Results" link to see what items are returned. Take a look at 'rug' and you will see 313 results, including items like:
Crow's Cabin Sign 6715-S Faux Distressed Leather Cornice 9050-S Iron Wall Sconce 9263 Lariat Stool 9011-S Petroglyph Print Barstool 9014-S Pinecone Prairie Twin Tree Sconce 7669-S Rebel Biker Jacket 9137 Red River Valance 8007-S Sacred Crosses Belt 8885 Spirit of the West Stallion Sculpture 4748 Vintage Leather Belt 9030 Yakima Flat Screen TV Cabinet
Some of these items seemingly have nothing to do with 'rug', for example, the Yakima Flat Screen TV Cabinet has the term rug in the description: "Traditional southwestern rug pattern is hand-painted...." And the Sacred Crosses Belt matched the word 'rugged' in the description:"The swagger of rugged leather...."
You can eliminate a lot of these products by using "Whole Word Matches" and in the "View Search Results" by clicking on the "Exclude Product" checkbox.
Setup 'Search Redirects'
Search Redirects are gold if you have categories that match a search term. For example, if you have a category with nothing but rugs you can setup a redirect to that category when customers search for the term 'rug'. If your rugs are scattered amongst multiple categories this is not really an option, but for some items it may be. You could also setup a hidden category with all of your rugs and redirect 'rug' and 'rugs' to that category.
Limit the fields searched
Currently you may be set to search "keywords,prod_name,sku,desc_header,prod_description,cust_1,cust_2,cust_3,cust_4,cust_5,cust_6,attribute1,attribute2,attribute3,attribute4". This may seem like a good idea because you are matching as many fields as possible, but it's not very targeted. You do not want to overwhelm a customer with too many results. Which fields are important to you? Think about your own searches on the web.
Choose whole word matches
This has some benefits and drawbacks. If a user searches for 'rug' then only products that match on that term are returned, not rugs, drug, shrug, etc. That makes your searches results much more valid to the users search string but has the potential to overlook plurals.
Use Category Filters
Category filters allow the user to narrow down a list of products by filters you set up. For example, you could have a filter named 'rugs' with a yes or no option. Then you could have a filter named 'runner' with a yes or no option, and another filter named 'shape' with oval, round, square, and rectangular as options, and another filter named 'fringes' with a yes or no option. This allows a user to select something like: all rugs that are not runners and are round w/o fringes, thereby returning a lot fewer and far more relevant results. Category filters would require a minor template upgrade and a lot of investment of time on your end though.
I went to Amazon and searched for 'rug' and received 563,090 results. Obviously I cannot look through that many items, I would need to narrow my search. But if I apply the filters: "8 x 10", with a floral pattern and made out of wool I only see 75 results. Those are the only 75 results I care about so I have closer to 100% relevancy on my search now, rather than .00013990188214665447% by just using the term 'rug'.
And/Or Settings
There is another setting in the templates that is not controlled by an admin setting at this time, it is the 'and/or' setting. This setting controls how searches are done when more than one search string is provided. For example, if you search for 'ball cap' and have it set to or, then any item that contains 'ball' or 'cap' will be returned. This could be a lot of items. If you have it set to 'and' then only items that contain both terms will be returned.
This setting requires a template modification to change. In the sitesearch.tpl template there are the two following lines:
And Setting
<input type="hidden" name="category_andor" value="and" /> --> <input type="hidden" name="andor" value="and" />
If you want to modify the settings from and to or (or vice-versa) then you need to change the value in the 'value="and"' field and save the template (make sure you publish it if you want it on your live site).
Or Setting
<input type="hidden" name="category_andor" value="or" /> --> <input type="hidden" name="andor" value="or" />
If you have questions please contact eCMS support at ecms@newhavensoftware.com
--Malcolm