{"id":700,"date":"2021-12-15T10:00:00","date_gmt":"2021-12-15T10:00:00","guid":{"rendered":"https:\/\/blogs.york.ac.uk\/marketing\/?p=700"},"modified":"2021-12-10T09:45:30","modified_gmt":"2021-12-10T09:45:30","slug":"getting-a-handle-on-site-search","status":"publish","type":"post","link":"https:\/\/blogs.york.ac.uk\/communications\/2021\/12\/15\/getting-a-handle-on-site-search\/","title":{"rendered":"Getting a handle on site search"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Have you ever visited a website looking for a specific piece of information; maybe a swimming pool timetable, or a specific recipe?&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Have you ever used a search function within the website in order to do this?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If so, you have been a \u2018user\u2019 engaging with \u2018site search\u2019.&nbsp;<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">We get a significant number of searches every month across <a href=\"https:\/\/www.york.ac.uk\" data-type=\"URL\" data-id=\"https:\/\/www.york.ac.uk\">york.ac.uk<\/a> for information ranging from accommodation to fees, timetables to departments.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"71\" src=\"https:\/\/i0.wp.com\/blogs.york.ac.uk\/marketing\/wp-content\/uploads\/sites\/4\/2021\/11\/Site-search-sreenshot.png?resize=512%2C71\" alt=\"Website search function\" class=\"wp-image-701\" srcset=\"https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/11\/Site-search-sreenshot.png?w=512&amp;ssl=1 512w, https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/11\/Site-search-sreenshot.png?resize=300%2C42&amp;ssl=1 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption>Site search bar on york.ac.uk<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">We use <a href=\"https:\/\/www.squiz.net\/products\/funnelback\" data-type=\"URL\" data-id=\"https:\/\/www.squiz.net\/products\/funnelback\">Funnelback<\/a> to facilitate site search which contains our web content in collections and, through both manual and automated configuration, presents the most appropriate results to search terms.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Getting irrelevant results from these searches can result in a negative user experience, something we\u2019re keen to avoid.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So, why do we need to get a handle on this?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Over time additions or changes to our collections result in \u2018experience rot\u2019.&nbsp;This is a slow deterioration of user experience as our search function increasingly fails to meet their needs.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most of the changes we make in Funnelback are reactive, responding to requests such as adding or modifying promoted results (best bets), or removing results that are no longer relevant. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The reactive nature of this work meant that we had no strategy or process in place to optimise our search function and improve results.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How can we optimise our site search?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Preventing the deterioration of results was at the heart of getting a handle on search results; shifting the focus away from problem solving to problem prevention.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first step of this was to properly understand the current state of our site search.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1 &#8211; Quantifying our search experience<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Quantifying an experience is typically a challenging undertaking. A majority of our site search feedback is both anecdotal and emotive with specific failures in search results causing user frustration which sometimes gets fed back to the relevant team.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, successful searches are rarely commented on and we had no process in place of assessing search performance outside of user experience case studies.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Utilising Louis Rosenfeld\u2019s methodology for \u2018Measuring the Unmeasurable\u2019 as outlined in his book, \u2018<em>Search analytics for your Site<\/em>\u2019, I undertook a process of quantifying and measuring site search performance.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Identifying objective \u2018best results\u2019 for our top search terms, provided by Google Analytics, I was able to set benchmarks for our site search relevancy and precision.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Being a niche piece of work, this didn\u2019t provide a metric by which we could compare ourselves to competitor institutions. Instead, we now had a better, more objective, understanding of our site search performance and a means of measuring any improvements resulting from configuration changes.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2 &#8211; Carrying out configuration changes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I focused on the following configuration settings within Funnelback:&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Best bets:<\/h4>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"281\" src=\"https:\/\/i0.wp.com\/blogs.york.ac.uk\/marketing\/wp-content\/uploads\/sites\/4\/2021\/11\/Search-results-screenshot.png?resize=512%2C281&#038;ssl=1\" alt=\"Screenshot of a promoted result appearing when a search for politics is entered into york.ac.uk site search.\" class=\"wp-image-702\" srcset=\"https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/11\/Search-results-screenshot.png?w=512&amp;ssl=1 512w, https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/11\/Search-results-screenshot.png?resize=300%2C165&amp;ssl=1 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption><em>Example of a best bet appearing when \u2018politics\u2019 is searched.<\/em><\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">These are Funnelback\u2019s promoted results and appear highlighted at the top of search results.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Best bets can be created for important content that needs promoting in a timely manner. However, their relevance can expire, or their destination URL may change, and we had no process of determining which best bets needed updating or removing.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Importing a list of our best bet destination URLs into <a rel=\"noreferrer noopener\" href=\"https:\/\/httpstatus.io\/\" target=\"_blank\">https:\/\/httpstatus.io\/<\/a> meant I could identify those with redirects and update them accordingly. It also allowed for a sense check of live URLs meaning specific, outdated ones could be deleted.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Search refinements:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">This is a key site search metric reported in Google Analytics. It\u2019s the rate at which a search term is amended and re-entered. It can indicate that users did not find what they were looking for in their initial search and so had to try again, which isn&#8217;t an ideal user experience.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As search refinements are most commonly the result of a misspelling, the best solution is to input a synonym telling Funnelback to return the results that would have been shown, had the search been entered correctly. For example:&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"353\" src=\"https:\/\/i0.wp.com\/blogs.york.ac.uk\/marketing\/wp-content\/uploads\/sites\/4\/2021\/11\/Screenshot-of-accommodation-synonym-impacting-search-results.png?resize=512%2C353&#038;ssl=1\" alt=\"Screenshot of search results for a misspelling of accommodation. \n\" class=\"wp-image-703\" srcset=\"https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/11\/Screenshot-of-accommodation-synonym-impacting-search-results.png?w=512&amp;ssl=1 512w, https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/11\/Screenshot-of-accommodation-synonym-impacting-search-results.png?resize=300%2C207&amp;ssl=1 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption>Screenshot of &#8216;accommodation&#8217; synonyms impacting search results<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">By adding \u2018acomodation\u2019 as a synonym for \u2018accommodation\u2019 the user experience is preserved and they can more quickly reach relevant information.&nbsp;We did this for all common misspellings appearing in our Google Analytics reports.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Exclude and Include patterns:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The content we include in, or exclude from, our search results is managed via Include and Exclude patterns.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I reviewed what\u2019s included in these lists to ensure any new domains are included in search if necessary, and removing legacy exclusions of sites which no longer exist.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, we no longer needed to include <a href=\"http:\/\/www.capanina.org\/\">www.capanina.org\/<\/a> so this was removed from the Include list, I also added utm_campaign parameters to the Exclude patterns to ensure campaign pages were kept out of search results.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This update helps to keep Funnelback up to date with relevant content as well as streamlining results by removing legacy domains.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It was important to record the number of documents crawled by Funnelback so as to investigate any sudden increases which may slow site search down.&nbsp;I also listed everything excluded along with a brief description of its purpose to future-proof our exclusion rules.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tuning:<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Funnelback tuning is \u201c&#8230;a process that can be used to determine which attributes of a document are indicative of relevance and adjust the ranking algorithm to match these attributes\u2026\u201d (<a href=\"https:\/\/docs.squiz.net\/funnelback\/archive\/15.24\/customise\/advanced-options\/ranking\/automated-tuning.html#:~:text=Tuning%20is%20a%20process%20that,algorithm%20to%20match%20these%20attributes.&amp;text=Funnelback%20uses%20a%20ranking%20algorithm,when%20a%20search%20is%20run.\" data-type=\"URL\" data-id=\"https:\/\/docs.squiz.net\/funnelback\/archive\/15.24\/customise\/advanced-options\/ranking\/automated-tuning.html#:~:text=Tuning%20is%20a%20process%20that,algorithm%20to%20match%20these%20attributes.&amp;text=Funnelback%20uses%20a%20ranking%20algorithm,when%20a%20search%20is%20run.\" target=\"_blank\" rel=\"noreferrer noopener\">Tuning search ranking docs &#8211; Squiz<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adjusting tuning configuration requires search terms to be added with their best result. Funnelback then uses this information to adjust search result rankings accordingly, providing more accurate search results.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I took the top search terms with the best result as identified in the benchmarking stage (step 1) and entered them into our tuning configuration. Funnelback predicted that this would have a positive impact on our results so the config changes were published.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogs.york.ac.uk\/marketing\/wp-content\/uploads\/sites\/4\/2021\/11\/Funnelbacks-improvement-prediction-post-tuning-run.png?resize=512%2C82&#038;ssl=1\" alt=\"Predicted improvement score provided by Funnelback after updating tuning data.\" class=\"wp-image-704\" width=\"512\" height=\"82\" srcset=\"https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/11\/Funnelbacks-improvement-prediction-post-tuning-run.png?w=512&amp;ssl=1 512w, https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/11\/Funnelbacks-improvement-prediction-post-tuning-run.png?resize=300%2C48&amp;ssl=1 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><figcaption>Funnelback&#8217;s predicted improvement based on tuning data update.<\/figcaption><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3 &#8211; Test that configuration changes have helped<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Checking it\u2019s worked! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After updating best bets, adding to our synonym collection, reviewing Include and Exclude patterns and tuning our results, I undertook another round of precision analysis to determine if these changes had led to any measurable improvements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I saw that our search precision increased across the three main definitions of precision.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Strict<\/strong> = only very relevant results are deemed acceptable&nbsp;<\/li><li><strong>Loose<\/strong> = very relevant and relevant results are deemed acceptable&nbsp;<\/li><li><strong>Permissive<\/strong> = very relevant, relevant and nearly relevant results are deemed acceptable<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><\/td><td>Search precision (by strict definition)<\/td><td>Search precision (by loose definition)<\/td><td>Search precision (permissive definition)<\/td><\/tr><tr><td>Benchmark score<\/td><td>58%<\/td><td>76%<\/td><td>91%<\/td><\/tr><tr><td>Post config changes score<\/td><td><strong>66%<\/strong><\/td><td><strong>85%<\/strong><\/td><td><strong>95%<\/strong><\/td><\/tr><\/tbody><\/table><figcaption>Comparison of precision scores before and after Funnelback configuration changes<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4 &#8211; Document and put processes in place to maintain search quality<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">As I saw a positive impact from our changes,&nbsp;I created processes for maintaining the improvements, adding recurring tasks for updating configurations to our work management tool, <a href=\"https:\/\/app.asana.com\/\" data-type=\"URL\" data-id=\"https:\/\/app.asana.com\/\">Asana<\/a>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Some config changes (best bets and refinements) are done on an individual or term-by-term basis and can be time consuming. I scheduled these to repeat more frequently so lots of work doesn&#8217;t build up too much between updates.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Changes such as the amends to inclusion and exclusion patterns and the tuning runs are scheduled less frequently as they have a longer-lasting impact on search results.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In our internal wiki documentation I included instructions on how to conduct each config review or update to future proof these processes and ensure consistency.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So, what are the outcomes?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We now have a benchmark from which we can measure improvements. Most importantly, we have already seen an improvement in search precision; one we hope to build on! \ud83c\udf89<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We have processes in place to prevent experience rot, and preserve and improve site search quality. This is supported by relevant and up to date documentation to future proof these processes.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Have you ever visited a website looking for a specific piece of information; maybe a swimming pool timetable, or a specific recipe?&nbsp; Have you ever used a search function within the website in order to do this? If so, you have been a \u2018user\u2019 engaging with \u2018site search\u2019.&nbsp;<\/p>\n","protected":false},"author":179,"featured_media":721,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[15,48],"class_list":["post-700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-digital","tag-web"],"acf":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blogs.york.ac.uk\/communications\/wp-content\/uploads\/sites\/4\/2021\/12\/Search-results-page.png?fit=917%2C913&ssl=1","uoy_author":{"name":"Katie Shearston","bio":"Search, Analytics and Digital Advertising Specialist at the University of York. I get to dive into data analytics, SEO and our digital marketing campaigns.","image":{"src":"https:\/\/secure.gravatar.com\/avatar\/?s=200&d=mm&r=g","width":200,"height":200,"alt":""}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/posts\/700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/users\/179"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/comments?post=700"}],"version-history":[{"count":0,"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/posts\/700\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/media\/721"}],"wp:attachment":[{"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/media?parent=700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/categories?post=700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.york.ac.uk\/communications\/wp-json\/wp\/v2\/tags?post=700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}