The Need
Our application has a chat feature that allows our users to chat with other users within their database.
However, we're adding a feature that allows clients to share data between multiple databases as an "Enterprise" configuration, and we've been asked to update the design of the chat feature to allow users to chat with other users within any of those databases.
We've looked at the numbers of possible users in these scenarios, and the number of chat users in these shared database environments can be as many as 5,000.
Users need to be able find people they need to chat with out of these thousands of contacts. However, up til now, we've had a list of contacts the users can browse. Since that is a user expectation, we were hoping to still maintain a browse-able list of contacts. We have ruled out trying to display a list of 5,000 contacts, as this doesn't seem to be anywhere close to useful or usable.
We've come up with three approaches to solve the problem:
Option One
Show a list of contacts from the local database that user's can browse. Have a second tab that allows users to search the "Full Directory", returning results from multiple databases.
Pros:
- Allows us to show a browse-able list of relevant contacts
- Clearly indicates to users that another source of chat contacts are available
Cons:
- Search would be limited to the current tab, meaning users would have to be in the right tab to return the right result
- Adds a possible source of user confusion: whats the difference between "contacts" and the "full directory"?
- Adds another tab to what should be a simple chat list
Option Two
Show a list of contacts from the user's local database, but if they search for a contact, include results from other databases as well.
Pros:
- Maintains a list of contacts the user can browse
- Avoids adding adding another tab
- One search field searches all sources
Cons:
- Searching a finite contact list and returning results that weren't in the contact list may defy user's mental model of how the search will work.
- Not clear that another source of contacts exist. May need to add explanatory text that says "Search to see contacts from the full directory".
Option Three
Add a dropdown that allows a user to select a what to search in: the local database, or the full directory.
Pros:
- No additional tab required
- Indicates to users that another source of chat contacts are available, though not as clearly as option 1
Cons:
- Search still isn't universal: the right search category must be selected to return the right result
- Users may not notice the dropdown or understand intuitively what its function is. May require explanatory text in search results, reminding the user they can expand the search to the full directory
Thoughts?
Right now I'm leaning towards option two, but is there another option I'm not considering here? Is there another alternative worth considering?
Thanks!