2

So I have encountered a similar situation described as the one below.

Lets day a sales person from Ford is shipping a new car to one of the thousands of rental car places they do buisiness in the world. They encounter a web page as like the one below.

They want to do the following

  1. Search for the right customer out of thousands of possible customers to ship the car to.

The current thought is to show the user an initial list of customers when they first click the search box. However initially front end developers wanted to send all the customers from the DB to the browser to show that list (that would be over 1 million entries and take 4-10 seconds to load which would be a poor experience, and its not needed).

I figured to either A

  • show a smaller set of customers maybe the first 50-100 ordered by size, or alphabetical order enter image description here

Or I could do B

  • do some sort of a text placeholder, similar to how facebook & google does image placeholders of things of outlines of the images in grey text showing that something will go there but its not there yet. This was a rough idea just let them know that's canned data

enter image description here

Or is there a better way to deal with showing a preview of the data to come after you filter a large amount of data

  • I know that loading the entire dataset (200,000+ entries is not a great idea because they cant search it clientside as well as I can using SQL, and sending all that data over the wire isnt needed)
  • Should I show a subset of the data?
  • This subset is most likely not going to be the customer they were looking for (if i show 50 canned customers out of 200,000 the odds they were looking for them is slim).
  • Should I show some other sort of placeholder text like maybe a sample table with just the columns named?
  • Is there a better way to do this?

Note after you search for a customer you would click on their name to do something else. (mind you this is far from a full picture there will be clues showing a user that they are supposed to select a customer i just threw together this mockup)

5
  • Why is the table there to begin with? What purpose does it serve? Take country selection - a set of 196 countries, yet most interfaces use single field with typeahead.
    – Izhaki
    Jul 2, 2015 at 20:47
  • Pretty much the search bar searches all columns. It's the Union of all the columns. Ie hertz usa would yield anything with hertz in the USA. Jul 2, 2015 at 20:58
  • Allowing users to click from a Tag Cloud ? Where tags can come from brands and locations.
    – rwong
    Jul 2, 2015 at 21:39
  • I think that you can use filters. In this way, they can chunk the data and see only meaningful data. Jul 3, 2015 at 6:15
  • 1
    Sorry but I'm not asking how we can help them filter it down (I have a lot of ideas for That), im asking is it valuable to show some sample data even before they start to search to let them know what type of data they will be searching for. Part of me says yes the other part says no because Google and bing don't show you what your results will look like before you search Jul 3, 2015 at 17:56

4 Answers 4

1

I wouldn't bother showing anything until they have performed some sort of search. it may be possible to grab just the dealer names or some other useful bit of information from the database without taking the whole lot. This would allow an 'autocomplete' type function but wouldn't have the weight (and wait) of the full database download. Then you only need to download the full entries when the user has narrowed the range by adding a few characters in the search box.

If you must show something then it might be a good idea to talk to the people using the system - If they have to deal with a load of repeat orders then it might be useful to show the most recently chosen items, if they only deal with a certain region then you can start to reduce the database according to the region the user serves (probably also based on recently viewed items). There may be even more ways to slice the database up before you start loading it but you'll need to find how the end users want/need to user the system first

1
  • +1 and I chose this answer because grouping the users into personas makes great sense, as in whether to show sample data based on the region they work in or the last couple of places they searched if that's more useful. thanks for your contribution Jul 7, 2015 at 19:15
1

Neither the random nor fake preview seems useful. Content that is not useful should not be developed. It is waste of resources for both developer and user. Development time spent on low value work is not available for high value work. Effort users spend parsing and comprehending low value content is not available for actual work.

Instead you should go back a step and think about the actual reason you wanted to show a preview to the user. Then figure out the simplest possible way to do that. For example if you simply wish to tell the users what kinds of data they can find and what search terms are supported, a short text directly giving that information is just fine. Possibly with links to further advice. Or maybe just a small "How to use?" link under the search box.

1
  • Awesome post . This problem I think is a misunderstanding between the designers and the devs (the devs thinking dump the entire Db). And I'm trying to see a better approach to have it make sense . Jul 5, 2015 at 3:39
1

I definitely do not recommend B. As Ville Niemi states, you should always only show the useful bits. Besides, Facebook's only showing the placeholders when it's loading content (which should take about 1-2 seconds).

Browsing

What I, as a web developer/designer, do is show a fixed number of entries first, 5 to 10, and use a button to trigger the lazy-loading of more entries.

From then on, I like to just load the rest when scrolling down, but that's completely up to you. I think it improves the usability in a way that you can still scroll to the bottom of the page but when you want to lazy load, it doesn't slow you down.

Searching

Same thing with searching for customers, when you type in a user, you show the first 5-10 and lazy-load the other ones.

TL;DR Just lazy load that list

0

But you can have both. You don't have to return 200,000+ rows to have a count. SQL has a count function.

select count(*) from table where ....  
select top 50  * from table where ...

That is 51 rows with a count.

Give them a page count and total count
Give them details and a summary

Page 1 Result 1-50 of 222,147
And then prior page and next page button and maybe even a go to page X button
Detail of 1- 50

Let them sort on various fields so they get the sort they prefer

One use is if you support wild cards. Tom* may return Tom Smith and Tom Johnson so they can use that to refine the search.

At a certain number I like +. Of 100,000+. No one is going to review over 100,000. That number may be 10,000 or 1,000.

I know this is a UX site but I just read the first 10,001 PK and if it get to 10,001 then I report the count as 10,000+. A separate select to get the count(*) is the overhead of a separate statement. For each page I use the PK to get the detail. So only run the actual search once and keep load off the database server.

4
  • Come on down vote. What is the problem with this answer?
    – paparazzo
    Jul 6, 2015 at 13:27
  • +1 here that's what I was thinking regarding the count feature. I dislike down votes with no comment but I would guess it's because what your Doing is just picking the first 51 values. Which why are these 51 values the best to initially show to the users ? Jul 6, 2015 at 14:37
  • Come on - Doing? You are going to take that pseudo code sample as an arbitrary 50 rows. I refer to next and prior page and "Let them sort on various fields so they get the sort they prefer." The point is you don't have to return the detail to get a count.
    – paparazzo
    Jul 6, 2015 at 14:56
  • WTH I have no recollection of downvoting, or even reading this. Retracted.
    – Rotem
    Jul 12, 2015 at 5:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.