[HN Gopher] Reasons to replace advanced search with filters ___________________________________________________________________ Reasons to replace advanced search with filters Author : tagawa Score : 101 points Date : 2023-08-26 05:10 UTC (1 days ago) (HTM) web link (adamsilver.io) (TXT) w3m dump (adamsilver.io) | ctrlGsysop wrote: | I agree with the author's notion. In ecomm your goal is zero | clicks to purchase. Search is used differently by your site's | differing cohorts let alone wildly different search demands | depending on your product. Anyone doing advanced search is not at | the bottom of your funnel yet; they're still deciding between | products let alone ready to click buy on one. | | Search bar tech is really good these days and solves a lot as it | tries to drag out inferencing with suggestions and autocomplete. | | See also: https://baymard.com/research/ecommerce-search | simonw wrote: | I like the term "faceted search", which I first experienced | working with Solr. | | Faceted search is effectively what this person is calling | "filters", but often comes with an amazing bonus feature: each | filter shows a count of how many results will be returned if you | click it. | | This turns them into a powerful way to summarize your data. | | My https://datasette.io has faceted search as a core feature - | demo here: https://global-power-plants.datasettes.com/global- | power-plan... | | One challenge I've found with both filters and filters-with- | counts is the best way to design them for mobile screens, since | they can take up a lot of valuable real estate. | | It can be done though: e-commerce sites in particular often come | up with neat UIs for tucking the filters away in an easily | accessible tray - though that can hurt discoverability of the | feature in the same way this author complains about the advanced | search pattern. | goodoldneon wrote: | How do you calculate the count for each filter without running | a separate query for each filter? | bryanrasmussen wrote: | Indexing technologies tend to have support for facets | https://en.wikipedia.org/wiki/Faceted_search | | generally what you have is lightweight searches that you can | query and get just the count of documents you would receive, | in the case of facets you can generally get a list of facets | or even a list of facets relating to a particular search and | a count for each of these facets. | bakugo wrote: | In elasticsearch, you can do this with filter aggregations. | nelsondev wrote: | Counts per filter can be stored pre-computed, using the same | inverted index structure the search uses. | | Keyword -> (num_docs, doc1,doc3,doc4,...) | | So you can quite quickly look up the number of matches. | simonw wrote: | That only works for the simplest case though - showing a | count where the starting point was the entire corpus. | | With faceted search you usually need to do things like "the | user searched for 'x' and filtered for 'price less than | $Y', now show counts for each of the different categories" | - where pre-calculated counts won't help you. | | Search indexes still help here, because they are really | good at fast set intersections - so you take the set of | document IDs matching your filters so far, then intersect | them against the set of IDs that are listed for each of | those categories and count the size of that intersection. | mrkeen wrote: | I worked in a search engine :D | | In short, we needed to approximate the count. | | We had some kind of hard limit for matching documents during | a regular keyword search (80k maybe? It's been years since I | worked there). The ranking was done after this, as well as | the aggregation of data for the facets. So if your query of | "cute bunnies" (faceted on file type) filled up all 80k | results by the time the query processor made it through 25% | of the data, and those 80k results contained 5k gifs, then | we'd display '20k' next to the 'gifs' check box. | simonw wrote: | Search indexes like Solr and Elasticsearch have the ability | to calculate multiple facet counts efficiently in a single | operation. | | My application Datasette runs a separate SQL query for each | one, which works fine if you are using SQLite and only have a | few hundred thousand rows of data. | masklinn wrote: | Afaik faceted search just means the system provides filtering | through predefined categories (taxonomies). In TFA both | "advanced search" and "filters" are faceted. | canadiantim wrote: | I'd argue the beauty of faceted search is that it doesn't | require predefined categories, which (eg if using something | like datasette) helps to explore the data even if it's a new | dataset | hermanradtke wrote: | Last time I used solr the facets were defined in the schema | so Lucene could create and index on that field. | psadri wrote: | The facets need to be defined but their possible values | are computed from the data and don't need to be | predefined. These are also recomputed based on existing | filters. | simonw wrote: | This is the single biggest problem I've been having with the | term "faceted search": I can't find a single, universally | agreed upon definition of exactly what it means! | | But I really need it to have one, because it's a key feature | of the software I am building. | | If there's a more widely accepted term for my version of it - | filters with displayed counts - I'd love to know about it. | | As it is, most people have never heard the term anyway. | bryanrasmussen wrote: | Daniel Tunkelang wrote a book on Faceted Search that is | pretty good, turns out he's also on Medium | https://dtunkelang.medium.com/facets-of-faceted- | search-38c3e... not sure if he's on HN. | joedevon wrote: | I saw him give a great keynote and have been a fan of | faceted search for years but did not know that. Learn | something new every day | aidos wrote: | I also think of faceted search of having the counts and | narrowing the options as you drill down. | | Ironically enough that was through Endeca which was | introduced to my company (at great expense) as I was | pushing for solr. Eventually solr became the tool of choice | because it was more flexible and less cumbersome. | eviks wrote: | None of these are good since they involve way too many clicks on | tiny square/round buttons with a lot of scrolling and | expanding/collapsing various filter categories, so users can't | "easily find" what they need | donaldbough wrote: | Not helpful. I was hoping to hear more on alternatives. I've also | never seen advance filters that show on a separate page. | sp332 wrote: | Twitter and Google image search do this. | teach wrote: | GitHub too, iirc | NoZebra120vClip wrote: | Can you please give us "grep -v" or inverse search: allow us to | enable filters which find everything that _doesn 't_ contain such | a property. This is a horrible omission in so many search/filter | interfaces. | adrianmonk wrote: | Also, give me the ability to find nulls. Call it "other" or | "unknown" if that's more accessible to normal people. In an | ideal world, every product listing would have all relevant | fields populated (and with correct values). In the real world, | practically all databases have errors. | | For example, my grocery store's soda category: | https://www.heb.com/category/shop/beverages/soda/490015/4900... | | There are 419 results. On the left, the Package filter has | Bottle (168 results) and Can (139 results), which totals 307. | All 419 products actually are bottles or cans, so 112 products | just don't have the data. If you filter, they will be missing. | Phelinofist wrote: | Access Denied Error 16 www.heb.com | 2023-08-27 20:42:09 UTC What happened? This | request was blocked by our security service Incident | ID: 1309001730138387928-244354802817772362 | ovao wrote: | Getting the UI for that right seems like the real trick. We | have checkboxes and radio buttons that are well-understood to | give us the thing(s) that are selected or checked, but we don't | have _anti-_ checkboxes. | NoZebra120vClip wrote: | In truth, it's something that the majority of people will | never feel the need to use. So it could realistically be | hidden/unlocked upon request. In fact, it would probably be | better UX/UI to have it as a directive in an Advanced Search | interface. | kjkjadksj wrote: | Just have boolean operators and a little tooltip how to write | them. Abstraction here isn't needed. You have to learn the ux | anyhow, may as well have the users learn boolean operators so | you don't have to bother with a ux that might end up not | being that optimal in the end. | SpaghettiCthulu wrote: | We actually do. Thanks to the "indeterminate" state on HTML | checkboxes (that one where it's sort of filled in instead of | checked), you can use unchecked for "exclude" or "must not | have", indeterminate for "don't care" or "both" and checked | for "include" or "must have". | | Unfortunately, in typical browsers there is no way for the | user to set them back to indeterminate unless the developer | implements that using javascript. | [deleted] | talkingtab wrote: | For those like me who will be initially perplexed: | | Context filters take the results of a search and allow you to | filter them by things like "five stars" or labels. There is much | discussion about why advanced search is bad, but the case for | filters is a one liner - filters solve all the problems. And the | "how to use filters" part is the last drawing in the article. | | Once I got that it is an interesting thought, but I'm left trying | to understand if there are downsides to filters? | chiefalchemist wrote: | For the sake of discussion, downsides: | | A) Added overhead to the backend | | B) UX - if you some filters but not the one(s) I want or need, | then I'll get frustrated. No filters at all won't set me up for | that. For example, eBay's filters are good for some types of | products but not others. | | C) A and B combined. I've noticed that some filtering UX - Home | Depot, I believe is an example - will update the count of the # | of products matching your filters. Check a box...wait. Check | another box...wait. Fat finger the wrong | box...wait...uncheck...wait. | | I'm not saying these are reasons to not use filters, only | pointing out some friction. | masklinn wrote: | Filters are also slow as fuck because they almost always need | to apply before you can go on. So you are on a results page, | you want 4-5 starts with attributes x and y, that's not just | 4 clicks that's 4 clicks and waiting for the entire thing to | reload every time before you can continue. | | An other issue more intrinsic to filters is their | inconsistency: because only applicable filters are shown | entire categories can be missing and you need to hunt through | every time. | hutzlibu wrote: | But that is just bad programming and not something | inheritently wrong with filters. | masklinn wrote: | Neither are half the complaints in TFA inherent to the | "advanced search paradigm". | | And this issue is extremely common IME. | jfengel wrote: | If you make users click a Go button, they won't notice it, | and get frustrated. | | It's one of very few times I'll allow an animation. If the | go button has been available but not clicked for some | seconds, it will call attention to itself. I hate that but | the only users who see it are the confused ones who need | it. (Hopefully.) | CrazyPyroLinux wrote: | Funny, I was _just_ experiencing the exact same thing with | Home Depot in another tab. Left in frustration for a HN break | and saw this! | internet101010 wrote: | I'll add that eBay's search is really good if you know how to | use it. By use it I mean encapsulating every important phrase | that you want to include or exclude within parenthesis and | using commas as "or" statements within the parenthesis, such | that "(phrase 1) -(phrase 2, phrase 3)" will return results | for phrase 1 and exclude any listings that contain phrase 2 | or phrase 3. It also pays attention to spacing so that only | exact matches are returned. | bick_nyers wrote: | It relies on things being correctly tagged. Over or under | tagging will reduce discoverability. If you have a product (or | tag) that is loosely defined or changes over time, this can | cause issues as well. It's easy to do this for something rigid | like technical specs. but if you have ever looked for something | hyperspecific (e.g. multiple tags) on a site such as Newegg | you've no doubt had some run-ins here and there with incorrect | tagging. This is further exacerbated if you allow individual | vendors to do the tagging of their own products, who will have | a perverse incentive to do "SEO", or may not spend enough | time/effort resulting in undertagging. | | Often times what you are left with are only a handful of "high- | level" tags/filters that don't actually filter much, forcing | you to spend more time looking at and evaluating multiple | products (which marketing/sales teams of companies probably | view as a net positive). | | TL;DR: Filtering is an absolute boon when there is proper tag | curation. | | Edit: I should clarify that I think Newegg is really solid as | far as tagging is concerned, but the fact that this | occasionally happens even in that environment just goes to show | that it requires effort to do right and you may not get 100% | discoverability. | talkingtab wrote: | I'm working on how to implement search (and filters) for | classified ads and this was helpful. | | For ad entry, it seems you can either constrain user's input | (essentially forcing them to choose from a list of options - | ad type, the thing, category, etc. Or let them do a more free | form entry (just title, description, price) and _then_ add | tags to help people find their ad. | | Which raises the issue of how to curate tags. After reading | your comment, I am thinking of building a list of what tags | people search for "jobs, tractors, ..." make that into a | suggestion list after people have entered their free form ad. | | The world is messy. For sale, resumes, wanted, car parts, | used cars, car repair, cars for parts. Oh my. | ysavir wrote: | Doesn't Advanced Search have the same problems? Ultimately, | every input on an advanced search page can be a filter. The | tagging issue, while incredibly valid, doesn't seem to be an | inherent part of either approach. | johnnyworker wrote: | (this comment probably isn't that interesting to anyone here, but | it's an expression of how this article was useful for me, take it | as a thank you :) | | That's kinda what the sidebar is in my CMS is, which I settled on | 11 years ago. I just skip the search part, or you could say I | treat everything as a search (of either all nodes or the subnodes | of the node currently viewed). Think wordpress tag clouds with | taxonomies, and authors; If you click a tag, you'll all nodes | with that tag, and the sidebar now shows only the tags and | authors of nodes that have the currently tag. "Drilling down" | would be too big a word here, because you can only have one tag | and one author selected, but that's the basic idea. All | author/tag is put into the URL parameters of relevant links, so | you can e.g. use pagination or click an author and not lose the | tag you initially selected. | | I was kinda proud of it, but the code is horrible so I'm working | on the successor, and this article got me thinking: I already | plan on having more complex filters with AND, OR and nesting | ("show all nodes that have author A and either tag X or tag Y, | but not both tags, with tag Z" etc), but I probably totally | generalize this, instead of implementing it for the stuff where | it "makes sense" (tags, authors) to me _now_. | | Because in some spots it might make sense to allow grouping nodes | by title, or if they're a link, by the domain they point to, etc. | images could be grouped by width, and it would be great to not | _have_ to care about that now, if I can just make it work with | any metadata a node can have, be it "on" the node or in other | tables that need to be joined, and make it configurable which | properties are displayed and can be filtered for by default, plus | a way for users to look at and filter by all the properties any | of the nodes currently displayed have. Keep it simple, right? | unnouinceput wrote: | It depends on the situation. I absolutely believe the article's | author would choose advanced search over filters when the list is | long and the load is slow. In that case is best to give the user | an advanced search possibility first, and maybe filter after | that. Think Amazon's style, do you really want to wait 2 minutes | to get all video cards when entering that category and only after | that to filter after 4090 ones? | layer8 wrote: | They don't really explain how filters differ from advanced search | in their mind, other than apparently assuming that advanced | search must be on a separate page. IMO it's a continuum. | masklinn wrote: | The only thing I can infer is that filters are contextually pre | filtered, from #2: | | > [with] Advanced search [...] every possible option is | displayed even if they don't have results. | | Which dovetails into #3: it's relatively easy to create queries | with no results. | Exuma wrote: | I would suspect advanced search boils down to advancifying your | search term with specific properties about that term, or even | the term itself with specifying logic operators. | | A filter would be not targeting a specific term, and would take | no search terms, but would allow them to find the specific item | they're wanting. | | Intuitively, filters seem far superior to advanced search, as | long as your search is good for one off items. I haven't ever | really thought about this explicitly but now that I do, I | always reach for: | | 1. very solid search for single items 2. very good filters | PaulHoule wrote: | Where I work we have advanced search _and_ filters. | plaidfuji wrote: | I recently spent a few months buying a new sectional sofa. Boy is | the interface for that process terrible. The experience went | something like this: | | 1. Pick the overall style | | 2. Find vendors that make that style | | 3. Physically drive to far-away stores to get a sense for what | our "comfort" KPIs are in terms of seat depth/height, back | height, cushion fill, etc. | | 4. Go back online, manually compile a table of the above | parameters across vendors, mainly pulling from PDF brochures with | incomplete or incompatible information. Down filter to a few main | candidates that satisfy major comfort and aesthetic objectives. | | 5. Take room measurements to understand constraints on | configuration | | 6. With narrowed candidates, again manually compile available | sectional piece options to determine the configuration that best | fits our room. | | 7. Down to 2-3 options, go _back_ to physical stores to test | comfort (if they weren't part of first round) and evaluate | fabrics and finishes. | | 8. Final discussions, including considerations about price comp | and lead times (varied from 2-6 months!). Finally make purchase. | | Maybe this is a little off-topic. But the point is this process | was ultimately a couple of nested Sort/Filter operations, once | the data was structured in a format relevant to our decision. | That's the biggest problem with online shopping - most of the | data relevant to decisions is unstructured or unmeasurable. Once | you get through that, then yes, filters are almost always the | goal. I don't really care about your fancy UI - I just want the | information relevant to me in a spreadsheet so I can do a nested | Sort. | purpleflame1257 wrote: | Wouldn't you have saved time by starting with point 5? | plaidfuji wrote: | Ha, realized this when writing it out. We actually did start | with measuring the room, but that only narrows it to a pretty | wide range of configurations. This step was more about | getting precise measurements to think about how different | layouts would look and feel. We also just didn't know what | options there were until exploring some of the top candidates | in detail. Definitely not as linear as I described it. The | config is more like a layer of nuance on top of the hard | constraints of style and comfort.. although I'm sure others | would consider those soft constraints. | keenmaster wrote: | LLMs with access to real-time data and reviews should be able | to simplify this process a lot. "Show me a white and gold | sectional in the art deco style for under $2500." "Actually | none of these look comfortable but I like the vertical lines on | this one. Also make sure that any option you present does not | contain toxic fire retardants or otherwise contains materials | that result in the California prop whatever warning" "this | looks great but can you find one with power reclining" | Etc...buying something linked from the LLM will count as a | referral and generate revenue for its developer. | mrkeen wrote: | "I'm sorry, you are correct in pointing out that I returned | couches containing toxic fire retardants. Here is the correct | list:" | | [... same list ...] | marcosdumay wrote: | I recently brought a computer chair. I guess I did everything | on your list, for months, and couldn't find anything actually | good anywhere, mostly because the dimensions that I cared for | were never listed as filters. | | Then I came to a nearby manufacturer's store, just tried all | the models and found an ok one. | | I also had to change a light-switch. No store would both let me | filter the assembly, switches and finishing by model line and | the complete trio. So I came into a physical store and got a | preassembled set from the display. | | Webstores have became completely incompetent pieces of garbage | since they all consolidated into an oligopoly. | twic wrote: | I recently bought some new bike hubs. There are many ways hubs | can vary, many of which are critical for compatibility, so you | have to get them right. Good faceted search makes this very | easy, and its absence makes it agony. This is good: | | https://www.bike24.com/cycling/parts/bike-hubs?menu=1000,186... | | The worst sites would just have a "size" filter, with options | like "135 mm", "quick release" and "32H", all describing | different aspects of the hub! | tshaddox wrote: | Which sectionals were your top picks, and what did you end up | buying? | plaidfuji wrote: | Had to pull up the old spreadsheet... brands were Norwalk, | Huntington House, Arhaus and Crate and Barrel. Went with C&B. | Very happy with it so far | stees wrote: | One of the best implementations for an advanced search I know is | the price comparison platform geizhals. They allow you to quickly | drill down to a subset of relevant products, the filters give you | a quick overview of the options you have. | | Check out the desktop version, the mobile version doesn't give | the same feeling. | | https://geizhals.eu/?cat=cpuamdam4&mobile=0 | engcoach wrote: | You need both search and filtering. Search to find hits (with | context) and filtering to narrow down what's displayed. ___________________________________________________________________ (page generated 2023-08-27 23:00 UTC)