简体   繁体   English

你会如何设计一个好的搜索UI?

[英]How would you design a good search UI?

I want to provide my users with an 'advanced' search engine. 我想为我的用户提供一个“高级”搜索引擎。 I basically have a lot of search criteria to chose from : 我基本上有很多搜索条件可供选择:

  • some are very simple/common and will be largely use (ie time period, item id) 一些非常简单/常见,并将在很大程度上使用(即时间段,项目ID)
  • some are a bit less mainstream 有些人不那么主流
  • and some won't be used a lot, but I still want to provide them 有些不会被大量使用,但我仍然想提供它们

Overall, I have around 30+ criteria to chose from 总的来说,我有大约30多个标准可供选择

The result is a dataset which I display in a grid. 结果是我在网格中显示的数据集。

I've search for inspiration on internet, and even google doesn't seem to have a nice solution for advanced search. 我在互联网上寻找灵感,甚至谷歌似乎也没有一个很好的高级搜索解决方案。

I've designed this kind of tools in the past, and I wasn't really pleased by the result, although the user were eventually able to use it quite effectively. 我过去曾设计过这种工具,虽然用户最终能够非常有效地使用它,但我对结果并不满意。

  • Do you think the search panel should be visible all the time (ie displayed on top of my result grid) or available in a separate form (which would let me use more place for all the controls) 您是否认为搜索面板应始终可见(即显示在我的结果网格顶部)或以单独的形式提供(这样可以让我为所有控件使用更多位置)

  • Do you think it's better to display all the search criteria, or to let the user click on 'advanced' if he wants to see/use more criteria 您是否认为最好显示所有搜索条件,或者如果用户希望查看/使用更多条件,则让用户点击“高级”

  • How would you organize the criteria? 你会如何组织标准? by usage frequency, or rather by area (ie. criteria related to user, to location, to time, etc.) 按使用频率,或者更确切地说按区域(即与用户,地点,时间等有关的标准)

  • Where should I put the 'Search' button? 我应该在哪里放置“搜索”按钮? next to the more common search controls, or at the bottom, or both? 旁边是更常见的搜索控件,还是底部或两者?

And more generally, do you have tips you want to share on how to design a nice search UI ? 更一般地说,您是否有关于如何设计一个漂亮的搜索UI的技巧? What kind of functionalities do you usually miss in this kind of 'advanced' search engines? 在这种“高级”搜索引擎中,您通常会错过哪些功能?

Not an expert on UI, but I have seen a lot of bad UI. 不是UI的专家,但我看到了很多糟糕的UI。

  • KISS is a good start. KISS是一个好的开始。
  • Make it intuitive. 让它直观。
  • Keep the search both at the top and at the bottom. 将搜索保持在顶部和底部。 I'd be loathe to use something that forces me to move up the page to type (see Flex documentation, their pagination control is only at the top -- a miserable pain you know where). 我不愿意使用某些东西迫使我向上移动页面进行打字(参见Flex文档,他们的分页控制仅在顶部 - 你知道哪里是一个痛苦的痛苦)。
  • Organization of criteria should be two-fold: 标准的组织应该是双重的:
    • basic operators (20%) which 80% will use up-front 基本运营商(20%),80%将提前使用
    • dynamically edit the set of criteria available at any time. 随时动态编辑可用的标准集。
  • Get the users started with least ramp-up time and allow them to add/remove criteria on a as needed basis. 以最少的加速时间启动用户,并允许他们根据需要添加/删除标准。 The idea is to make him use something he needs and not clutter his thought or workflow with the brilliance of your feature set. 这个想法是让他使用他需要的东西,而不是用他的功能集的光彩来混淆他的思想或工作流程。
  • As others have mentioned and is the trend nowadays with UI in general, use controls that are hidden until and unless the user explicitly wants advanced/fine-tuning (on-demand UI). 正如其他人所提到的,并且现在是UI的趋势,使用隐藏的控件直到并且除非用户明确想要高级/微调(按需UI)。
  • A good rule of thumb is to have a maximum of 5-7 features on a page. 一个好的经验法则是在页面上最多有5-7个功能。
  • It'd be great if you can arrange the criteria in such a way so as to make a story out of it ie the user can read his query and your operators make some meaning out of it. 如果您能够以这样的方式安排标准以便从中创建故事,即用户可以阅读他的查询并且您的操作员从中获得一些意义,那就太棒了。
  • I'm a big fan of little text and easy to comprehend icons but such a setup depends on your installation environment. 我是小文本的忠实粉丝,易于理解图标,但这样的设置取决于您的安装环境。 Can your grandkid use that mighty workhorse? 你的孙子可以使用那个强大的主力吗?
  • Good design also necessiates that you make your UI accessible. 良好的设计还需要您可以访问UI。 That's a tough nut to crack and I have absolutely no idea how you'd do that. 这是一个难以破解的坚果,我完全不知道你是怎么做到的。

Best of luck! 祝你好运!

I tend to like the "list of rules" approach. 我倾向于喜欢“规则列表”的方法。 You know the one: 你知道那个:

Find items that match [ All |v] of these conditions:

[Name            |v]  [Contains   |v] [_____________] (-) (+)
[Start date      |v]  [Is before  |v] [_____________]     (+)

                                            (Cancel) (Search)

This keeps the dialog from getting too cluttered but still gives users all the options they might need. 这使得对话框不会变得太杂乱,但仍然为用户提供了他们可能需要的所有选项。

But that assumes you need things to be that advanced! 但这假设您需要先进的东西! You might find that an intelligently-designed keyword list approach will work fine. 您可能会发现智能设计的关键字列表方法可以正常工作。

Keep the advanced controls hidden by default. 默认情况下保持高级控件隐藏。 Your search input and action button should always be visible and given prominence, regardless of whether or not your advanced controls are visible. 无论您的高级控件是否可见,您的搜索输入和操作按钮应始终可见且突出显示。 Make sure that showing/hiding the advanced controls does not change the location of either the primary input or button - those need to remain static so the user's spatial memory is not affected. 确保显示/隐藏高级控件不会更改主输入或按钮的位置 - 这些位置需要保持静态,以便用户的空间内存不受影响。

As for the advanced controls, without knowing exactly what type of data you need to show, I can only give an overview of potential organization methods. 至于高级控件,在不知道您需要显示什么类型的数据的情况下,我只能概述潜在的组织方法。 Personally, I like LATCH: 就个人而言,我喜欢LATCH:

  • Location 位置
  • Alphabet 字母
  • Time (timeline or chronology - think of a history museum) 时间(时间表或年表 - 想想历史博物馆)
  • Category (think department stores) 类别(想想百货商店)
  • Heirarchy (biggest to smallest, lightest to darkest, etc. Heirarchy(从最大到最小,从最轻到最黑,等等)

Depending on your controls, one of those will make the most sense. 根据您的控制,其中一个将是最有意义的。 Organize accordingly. 相应地组织。 If you can use a slider or range input (for example, 'lightest', 'lighter', etc.) rather than a list of checkboxes/radios, this is preferable as it reduces the number of visual elements on the page. 如果您可以使用滑块或范围输入(例如,“最亮”,“较轻”等)而不是复选框/无线电列表,则这是优选的,因为它减少了页面上的可视元素的数量。

Forget about the "plus/minus 7" rule - that has been taken completely out of context by folks who did not actually read the study. 忘掉“加/减7”规则 - 这个规则完全脱离了那些没有真正读过这项研究的人。 In short - it's only applicable to the human's response to external stimuli, not options displayed on a screen. 简而言之 - 它仅适用于人类对外部刺激的反应,而不适用于屏幕上显示的选项。 This isn't saying you should go overboard, but even if you have a lot of options, you can visually tweak them. 这并不是说你应该过火,但即使你有很多选择,你也可以在视觉上调整它们。 Clutter is a failure of design - not information. 杂乱是设计的失败 - 而不是信息。

Remember to use plenty of whitespace and <label> elements to give each option a good-sized click target. 请记住使用大量的空格和<label>元素为每个选项提供一个大小合适的点击目标。 This is especially important when dealing with checkboxes or radios. 在处理复选框或无线电时,这一点尤为重要。

Make sure that when the results are returned, there is a clear title ( <h2> or <h3> usually suffices) re-stating the user's query, and how many results were returned. 确保在返回结果时,有一个明确的标题( <h2><h3>通常就足够了)重新说明用户的查询,以及返回了多少结果。 Don't forget about a 0 results page! 不要忘记0结果页面! Offer some advice on broadening the query, if possible. 如果可能的话,提供一些扩展查询的建议。

Just a general advice: keep it simple. 只是一般建议:保持简单。 To much choice confuses the user and increases the chance a certain piece of functionality is not used. 许多选择会使用户感到困惑,并增加了不使用某些功能的可能性。

Try different prototypes on users to findout which options are valuable and which are not. 在用户身上尝试不同的原型,找出哪些选项有价值,哪些选项不有价值。

1) Do you think the search panel should be visible on top of my result grid? 1)您认为搜索面板应该在我的结果网格顶部可见吗?

A simple search panel like Google's basic search may be on the Results page since it's compact. Google的基本搜索等简单搜索面板可能位于“结果”页面上,因为它非常紧凑。 This allows the user to re-try the search with different criteria without wasting time going to a new page or window. 这允许用户以不同的标准重新尝试搜索,而不会浪费时间去新的页面或窗口。 Advanced search is much more cluttering so there's a more important tradeoff between easy access to the results (in a smaller pane) and easy access to re-search, so you need to appraise the frequency users re-searching versus the work they do with the results. 高级搜索更加混乱,因此在轻松访问结果(在较小的窗格中)和轻松访问重新搜索之间存在更重要的权衡,因此您需要评估用户重新搜索的频率与他们使用结果。 For example, if re-search happens 50% of the time, but including an Advanced Search panel in the Results page requires additional scrolling 75% of the time, your users are better off without an Advanced Search panel on the Results. 例如,如果重新搜索在50%的时间内发生,但在“结果”页面中包含“高级搜索”面板需要75%的时间进行额外滚动,那么在“结果”中没有“高级搜索”面板的情况下,您的用户会更好。 As a general rule, Advanced Search should not be on the Results page unless the task is really cut-and-try exploration of the data. 作为一般规则,高级搜索不应位于“结果”页面上,除非该任务实际上是对数据进行彻底的探索。

Another issue with the Search panel at the top of the results is what to do if the results do not correspond to the criteria (eg, if the user changes a criterion after the results are shown but before clicking Search again). 结果顶部的“搜索”面板的另一个问题是,如果结果与条件不符,该怎么办(例如,如果用户在显示结果后但在再次单击“搜索”之前更改标准)。 With Advanced Search it is much easier for users to forget or miss whether they changed a criterion or not and then be confused about what criteria is in effect for the results. 使用高级搜索,用户更容易忘记或遗漏他们是否更改了标准,然后对结果的有效标准感到困惑。 Putting Advanced Search on a separate page prevents this, although there are other ways to avoid this problem if Advanced Search is on the Results page (eg, using instant-apply “faceted” search). 将高级搜索放在单独的页面上会阻止这种情况,但如果高级搜索位于“结果”页面上,则还有其他方法可以避免此问题(例如,使用即时应用“分面”搜索)。

In any case, the Results page should display the criteria used in making the search. 在任何情况下,“结果”页面都应显示进行搜索时使用的条件。

2) Do you think it's better to let the user click on 'advanced' for more criteria? 2)您认为让用户点击'高级'以获得更多标准更好吗?

For most database apps, users of a particular group (eg, job position) have 2 to 5 specific sets of search criteria that get them through the vast majority of their work, (eg, search for orders made between two user-supplied dates), sometimes including criteria that even have specific criterion values (eg, search for all orders with a pending status). 对于大多数数据库应用程序,特定组的用户(例如,工作职位)具有2到5个特定的搜索条件集,这些搜索条件可以使他们完成大部分工作(例如,搜索两个用户提供的日期之间的订单) ,有时包括甚至具有特定标准值的标准(例如,搜索具有待定状态的所有订单)。 In this situation, users will be fastest and least likely to be confused if you have an Advanced button for ad hoc searching, while the default search has controls tailored for these specific searches. 在这种情况下,如果您有用于临时搜索的“高级”按钮,则用户将是最快且最不可能感到困惑,而默认搜索具有针对这些特定搜索定制的控件。 Default to Advanced Search only if your users will primarily be conducting exploratory ad hoc searches. 仅当您的用户主要进行探索性临时搜索时,默认为高级搜索。

3) How would you organize the criteria? 3)您如何组织标准?

If there are certain criteria that are used especially often, then they're handled through Basic Search as described for 2, so there's little advantage to sorting criteria in Advanced Search by frequency. 如果某些标准经常被使用,那么它们将通过基本搜索进行处理,如2所述,因此按频率对高级搜索中的条件进行排序几乎没有什么优势。 It just makes it hard for users to find the criterion they're looking for. 这只会让用户很难找到他们正在寻找的标准。 Generally you can rely on users having a specific named field in mind, so sort the criterion alphabetically, or, if users are familiar with the Results Page and its fields are laid out in a manner consistent with how the users think, use the same order as used for the Results columns. 通常,您可以依赖具有特定命名字段的用户,因此按字母顺序对标准进行排序,或者,如果用户熟悉结果页面并且其字段的布局方式与用户的思考方式一致,请使用相同的顺序用于结果列。

4) Where should I put the 'Search' button? 4)我应该在哪里放“搜索”按钮?

The Search Button ideally should always be visible. 理想情况下,搜索按钮应始终可见。 The best solution is to have all the criteria on a scrollable pane with the button outside the pane. 最佳解决方案是在可滚动窗格上使用窗格外部的按钮具有所有条件。 Putting the button at the top and bottom is a common but kludgey alternative. 将按钮放在顶部和底部是一种常见的但是很常见的选择。 I wouldn't put it by the common criteria because if your users have gone from Basic to Advanced Search, they're probably not using common criteria. 我不会按照通用标准来说明,因为如果您的用户已经从基本搜索转到高级搜索,他们可能不会使用通用标准。 Consider no Search Button if you can keep response time under 500 ms, instead providing instant-apply like seen in Vista. 考虑没有搜索按钮,如果你能保持在500毫秒的响应时间,而不是提供即时申请像Vista中看到。

5) How to design a nice search UI? 5)如何设计一个漂亮的搜索UI?

For field-based multi-criteria Search, there are two basic designs: 对于基于字段的多标准搜索,有两种基本设计:

a. 一种。 A form of all fields with a place to enter criterion values for each field. 所有字段的一种形式,可以为每个字段输入标准值。 The problem with this is fields with set values can scroll out of view and users may have forgotten they've set a value. 这个问题是设置值的字段可以滚动到视图之外,用户可能忘记了他们设置了一个值。 Thus you want to keep this as compact as possible. 因此,您希望尽可能保持紧凑。 See the chapter Improving Data Retrieval in Alan Cooper's About Face 2.0 for one approach. 有关一种方法,请参阅Alan Cooper的About Face 2.0中的“改进数据检索”一章。 You can also provide a summary string of the selected criteria near the Search buttons which the user can check. 您还可以在“搜索”按钮附近提供所选条件的摘要字符串,供用户查看。 Clicking each criteria in the string can even jump the user to the criteria for changing it. 单击字符串中的每个条件甚至可以将用户跳转到更改它的条件。

b. The user selects from a list of fields those to be used in the criteria, then sets the values for the criteria in consolidated location. 用户从标准列表中选择要在标准中使用的字段,然后在合并位置设置标准的值。 The main challenge here is to minimize the number of “overhead” clicks to select a field. 这里的主要挑战是最小化选择字段的“开销”点击次数。 Ideally, the list of fields are always available and one click selects the field, puts it in the consolidated location, and places the cursor in the value control, something like shown in http://www.zuschlogin.com/content/blogimages/37/FindAdvanced.gif , only for Search rather than Find. 理想情况下,字段列表始终可用,只需单击一次,将其放在统一位置,然后将光标放在值控件中,如http://www.zuschlogin.com/content/blogimages/中所示。 37 / FindAdvanced.gif ,仅适用于搜索而不是查找。 (By arbitrary convention “Find” is very different than “Search” for users; Find highlights things within the current page matching a given criteria while Search retrieves things matching a given criteria) (根据任意约定,“查找”与用户的“搜索”非常不同;查找突出显示匹配给定条件的当前页面内的内容,而搜索则检索与给定条件匹配的内容)

Both of these designs link the criterion for each field by logical ANDs and are limited in the joins among the underlying database tables, but that is likely satisfy nearly all your users. 这两个设计都通过逻辑AND链接每个字段的标准,并且在底层数据库表之间的连接中受到限制,但这可能几乎满足所有用户。 If the tasks require more complicated joins and Boolean combinations, look into graphical querying designs (eg, Badre AN, Catarci T, Massari A, & Santucci G 1996. Comparative ease of use of a diagrammatic vs. An iconic query language. In J Kennedy & P Barclay (Eds) Interfaces to Databases (IDS-3): Proceedings of the 3rd International Workshop on Interfaces to Databases, Napier University, Edinburgh, 8-10 July) and Query by Example designs. 如果任务需要更复杂的连接和布尔组合,请查看图形查询设计(例如,Badre AN,Catarci T,Massari A和Santucci G 1996.比较易用性的图解与标志性查询语言。在J Kennedy &P Barclay(Eds)与数据库的接口(IDS-3):第三届数据库接口国际研讨会会议记录,7月8日至10日,爱丁堡纳皮尔大学)和按示例设计查询。

The default design pattern which I use is Filter Table . 我使用的默认设计模式是Filter Table That covers maybe 90% of the use cases. 这涵盖了90%的用例。 For more complex searches, I would need more specific information on the goals and use cases of the users, so that it would be possible to design a more optimal solution for those situations. 对于更复杂的搜索,我需要有关用户目标和用例的更多具体信息,以便为这些情况设计更优化的解决方案。

Simple is good. 简单就是好。 I'd recommend an iterative approach where you slowly build functionality after doing user acceptance testing and watching the logs to see which features that they use (or don't use). 我建议采用迭代方法,在进行用户验收测试并观察日志以查看他们使用(或不使用)的功能后,您可以慢慢构建功能。 The only way you'll know what to improve is to watch your users. 您知道要改进的唯一方法是观看您的用户。

Try to keep the interface as simple as possible. 尽量保持界面尽可能简单。 Most users will only need a text window and a search button. 大多数用户只需要一个文本窗口和一个搜索按钮。 The remaining options can be put inside of an advanced search option. 其余选项可以放在高级搜索选项中。

This setup is friendlier for new users, as well as helping to conserve resources by saving the more expensive advanced searches for people who actually need them. 这种设置对于新用户来说更加友好,并且通过为实际需要它们的人保存更昂贵的高级搜索来帮助节省资源。

my thoughts: 我的想法:

-Only show advanced criteria when it is desired. - 只在需要时显示高级标准。 Search is a great thing when it is made as simple as possible to the people trying to search. 当搜索到的人尽可能简单时,搜索是一件好事。

-If there is some very large set of search criteria for advanced searches: do not clutter the results with it. - 如果高级搜索有一些非常大的搜索条件:不要用它来混淆结果。 Make it very easy and obvious for a user to go back and modify the criteria, but don't try to waste space on the results by giving them their criteria again right off the bat. 让用户返回并修改标准变得非常容易和明显,但是不要试图通过立即再次给予他们标准来浪费结果空间。

-Organization of criteria is hard to say without knowing it all. - 如果不了解标准,很难说标准的组织。 but as others have/will say: make it simple! 但正如其他人已经/将要说的那样:让它变得简单! You might not need to show it all at once: let me expand areas if i want more, hide stuff i don't want to use. 您可能不需要立即显示所有内容:如果我想要更多内容,请让我扩展区域,隐藏我不想使用的内容。 and then put a search button at the bottom of it. 然后在其底部放置一个搜索按钮。 But again, I won't want to scroll through a page of random criteria just to find this button. 但同样,我不想只是为了找到这个按钮而滚动浏览随机标准页面。

  • There should be a search text box as a part of the mast head on every page of the site. 在网站的每个页面上都应该有一个搜索文本框作为桅杆头的一部分。
  • I prefer that the button be labeled "find" instead of "search" because benefits are always more compelling than features. 我更喜欢将按钮标记为“查找”而不是“搜索”,因为优势总是比功能更具吸引力。
  • What should be sophisticated is your search algorithm and not the GUI. 应该复杂的是你的搜索算法,而不是GUI。

Please find my answers(in normal text) against each of the questions(in italics) asked. 请查询我的答案(正常文本),针对每个问题(斜体字)询问。

"1) Do you think the search panel should be visible all the time (ie displayed on top of my result grid) or available in a separate form (which would let me use more place for all the controls) " “1) 您是否认为搜索面板应始终可见(即显示在我的结果网格顶部)或以单独的形式提供(这将让我为所有控件使用更多位置)

Display on top of result grid as this leaves extra horizontal space to display search results and thereby to display more columns of search data without scrolling horizontally. 显示在结果网格的顶部,因为这会留下额外的水平空间来显示搜索结果,从而显示更多的搜索数据列而无需水平滚动。

"2) Do you think it's better to display all the search criteria, or to let the user click on 'advanced' if he wants to see/use more criteria " “2) 您是否认为最好显示所有搜索条件,或者如果用户希望查看/使用更多条件,则让用户点击”高级

Display all available criteria but in a tabbed fashion. 以标签方式显示所有可用标准。 ie categorize input search fields into categories and have a tab for each category. 即将输入搜索字段分类为类别,并为每个类别设置一个选项卡。

"3) How would you organize the criteria? by usage frequency, or rather by area (ie. criteria related to user, to location, to time, etc.) " “3) 您将如何根据使用频率,或者更确切地说按区域(即与用户,地点,时间等相关的标准来组织标准。

Organize 'by area' because different people like using different criteria. 按区域组织,因为不同的人喜欢使用不同的标准。 Each criteria would have tab of it's own. 每个标准都有自己的标签。 But organize the tabs in the order of 'more popular' to 'less popular' as you think. 但是,按照您的想法,按照“更受欢迎”的顺序将标签组织为“不太受欢迎”。 In your case tabs may be 'By Name'(containing fields first name, middle name, last name, mother maiden name, nick name, father's name etc), 'By Location' (place name, county name, district name, state name, country name etc) and so on until the advanced tab(where you'd put least used fields). 在您的情况下,选项卡可以是“按名称”(包含字段名字,中间名,姓氏,母亲姓名,昵称,父亲姓名等),“按位置”(地名,县名,地区名称,州名) ,国家名称等),直到高级选项卡(您放置最少使用的字段)。

"4) Where should I put the 'Search' button? next to the more common search controls, or at the bottom, or both? " “4) 我应该在哪里放置”搜索“按钮?在更常见的搜索控件旁边,或在底部,或两者都有?

Put the input fields of search as discussed above in a tabbed fashion categorizing them based on 'type of field'(I'll refer to this area as search grid). 将上面讨论的搜索输入字段放在标签式的方式中,根据“字段类型”对它们进行分类(我将此区域称为搜索网格)。 Then put action buttons such as 'Search', 'Clear/Reset' just below the search grid aligning to the center(I'll refer to this area as button grid).Then put the search result pane below the button grid as more horizontal area is available for display so that maximum columns can be displayed at once. 然后在搜索网格下方放置“搜索”,“清除/重置”等操作按钮,与中心对齐(我将此区域称为按钮网格)。然后将搜索结果窗格置于按钮网格下方更加水平区域可用于显示,以便可以一次显示最大列。

Take a look at quince, the infragistics ui patterns site: http://quince.infragistics.com . 看看quince,infragistics ui patterns网站: http ://quince.infragistics.com。

Personally, I'd look at using a filterable grid, like the xtragrid from DevExpress: http://www.devexpress.com/Products/NET/Controls/WinForms/Grid/datafiltering.xml 就个人而言,我会考虑使用可过滤的网格,例如DevExpress的xtragrid: http//www.devexpress.com/Products/NET/Controls/WinForms/Grid/datafiltering.xml

coupled with a search bar above it to initially populate the grid. 再加上它上方的搜索栏,最初填充网格。

Don't think this has been mentioned yet but dont forget that you will also need to initiate the search when the user presses enter in any of the search fields. 不要以为这已被提及,但不要忘记,当用户在任何搜索字段中按Enter键时,您还需要启动搜索。 Probably aware of this already, but worth mentioning anyway. 可能已经意识到这一点,但无论如何值得一提。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM