The invention relates to navigation in user interfaces. More precisely, the invention relates to user navigation in tree structures of data based on past usage.
Hierarchies are commonly used to navigate and organize large volumes of data stored in documents. For example, a file system consists of trees of directories containing files. A source control repository organizes its resources into trees. Email clients may have a tree of folders to hold the individual emails. A business organization arranges its employees into reporting trees. A report groups the data on a number of fields, forming a tree of group instances. While the tree structure enables more efficient navigation of data than a flat structure, it may still be cumbersome to navigate through a number of levels in the tree to access a desired resource. In a large tree structure, a user may frequently access only small portions of the structure on a regular basis. The user may repeatedly navigate level-by-level to the same area of the tree. Users can explicitly create shortcuts to commonly used file system folders. Also, many applications keep track of a sample list of most-recently accessed files.
Various embodiments of computer implemented methods and systems for smart tree navigation based at least in part on previous usage are described herein. In one embodiment, the method includes receiving user input as a node interaction event in a node of a tree structure of user interface components and determining one or more preferred nodes based at least in part on a hit count indicative of a number of times the node has been accessed in the past, and a time of the most recent access of the node. The method also includes navigating the user to the one or more preferred nodes.
In another embodiment of the invention, the system includes a navigation module to navigate a user in tree structures of data and one or more memory devices, the memory devices having stored thereon instructions related to the navigation module. The system also includes a processor in communication with the memory to execute the instructions in the memory related to the navigation module and navigation storage to store data indicative of the tree node interactions by the user.
These and other benefits and features of embodiments of the invention will be apparent upon consideration of the following detailed description of preferred embodiments thereof, presented in connection with the following drawings.
The claims set forth the embodiments of the invention with particularity. The invention is illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. The embodiments of the invention, together with its advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings.
Embodiments of techniques for smart tree navigation are described herein. In the following description, numerous specific details are set forth to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
Reference throughout this specification to “one embodiment”, “this embodiment” and similar phrases, means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of these phrases in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
By keeping track of a user's previous access to items in a given tree, guidance can be given to future navigation in the tree. Several characteristics describing the nature of the past accesses can be used to guide future accesses. For instance, tree structure items that have been accessed more frequently and/or more recently are likely to be of more interest to the user. So, such items could be given more prominence and a user may be guided to such items. This could also allow previous users to guide subsequent users by providing specific clues in the user interface to reduce the burden of navigation. Expiration mechanisms can be used to cull the history of past accesses to capture only the latest or the most relevant tendencies to guide future accesses.
In yet another embodiment, guiding a user navigation based on preference is by suggesting a list of nodes from a sublevel as presented in
Turning back to
In order to determine which nodes in the tree are most likely to be significant for tree navigation, a formula is needed to quantify the preference or significance associated with a given tree node entry in the data. The higher the score for a given tree node, the more significant it is likely to be for navigation. A tree node that was frequently accessed years ago, but not since, should not be given a preference. Similarly, a node that has recently been accessed for the first time should not be given preference over one that has been accessed more frequently. So in one embodiment, the score, which may also be called score of preference, should increase with increasing hit count and should decrease as the most recent access time fades into the past. Different scoring formulae may better fit for certain applications, but a simple exemplary one is:
score=hit_count/age
age=max(1, DiffInDays(CurrentTime, last_access_time))
Turning back to
The most preferred nodes in a tree may be found by scanning the node data items and calculating the scores for each. By sorting the data by the node path names, the items for a given sub-tree may be stored contiguously, and this block of items may be efficiently located using a binary search. As a result, finding the most preferred nodes in a sub-tree may be done by scanning a range of the data items.
In one embodiment, as shown in
subtree_score=SUM(hit_count)/AVG(age)
For example, the subtree score 730 for the subtree 750 is calculated as:
subtree score 730=SUM(17+3+23)/AVG(4,11,8)=43/7.67=5.61
In the example, the current date for the calculation of AVG(age) in days is taken as Jun. 11, 2009.
In one embodiment it is determined which child nodes of a given node, if any, represent a sub-tree that is highly accessed. For example, “C:\Documents” on a file system might have several subdirectories, and it may be useful to know, that nearly all access is under the “C:\Documents\images” directory. For that purpose, the aggregate scores 710, 720, 730, and 740 for all sub-trees starting at each child node are computed and then those nodes which have scores that are dominant of the total of the scores across the child nodes are selected. A suggested criterion is:
child_score>SUM(child_scores)/(Nmax+1),
where Nmax is the maximum number of nodes to select.
In
In one embodiment, stored access data may come from the interaction of multiple users. Thus, the navigation assistance may be based on what all users in a system have done. For example, in a global web site for e-commerce of fruit and vegetables that is accessed 24 hours round-the-clock by customers, the majority of the customers are accessing the web site during their day time. Customers in different time zones have different purchasing preferences, for example, customers from Germany buy a lot of potatoes, while customers from Mexico buy a lot of pineapples. If only German customers are accessing the tree, the guidance will lead to, for example, all→vegetables and vegetables→potatoes nodes. As the number of German customers declines and the number of Mexican customers increases, the guided tree nodes will be all→vegetables, vegetables→potatoes, and fruit→pineapples. Eventually, when the number of Mexican customers dominates, the guided tree nodes will be switched to all→fruit, fruit→pineapples, and vegetables→potatoes.
Some embodiments of the invention may include the above-described methods being written as one or more software components. These components, and the functionality associated with each, may be used by client, server, distributed, or peer computer systems. These components may be written in a computer language corresponding to one or more programming languages such as, functional, declarative, procedural, object-oriented, lower level languages and the like. They may be linked to other components via various application programming interfaces and then compiled into one complete application for a server or a client. Alternatively, the components may be implemented in server and client applications. Further, these components may be linked together via various distributed programming protocols. Some example embodiments of the invention may include remote procedure calls being used to implement one or more of these components across a distributed programming environment. For example, a logic level may reside on a first computer system that is remotely located from a second computer system containing an interface level (e.g., a graphical user interface). These first and second computer systems can be configured in a server-client, peer-to-peer, or some other configuration. The clients can vary in complexity from mobile and handheld devices, to thin clients and on to thick clients or even other servers.
The above-illustrated software components are tangibly stored on a computer readable medium as instructions. The term “computer readable medium” should be taken to include a single medium or multiple media that stores one or more sets of instructions. The term “computer readable medium” should be taken to include any physical article that is capable of undergoing a set of physical changes to physically store, encode, or otherwise carry a set of instructions for execution by a computer system which causes the computer system to perform any of the methods or process steps described, represented, or illustrated herein. Examples of computer-readable media include, but are not limited to: magnetic media, such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer readable instructions include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment of the invention may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment of the invention may be implemented in hard-wired circuitry in place of, or in combination with machine readable software instructions.
A data source is an information resource. Data sources include sources of data that enable data storage and retrieval. Data sources may include databases, such as, relational, transactional, hierarchical, multi-dimensional (e.g., OLAP), object oriented databases, and the like. Further data sources include tabular data (e.g., spreadsheets, delimited text files), data tagged with a markup language (e.g., XML data), transactional data, unstructured data (e.g., text files, screen scrapings), hierarchical data (e.g., data in a file system, XML data), files, a plurality of reports, and any other data source accessible through an established protocol, such as, Open DataBase Connectivity (ODBC) produced by an underlying software system (e.g., ERP system), and the like. Data sources may also include a data source where the data is not tangibly stored or otherwise ephemeral such as data streams, broadcast data, and the like. These data sources can include associated data foundations, semantic layers, management systems, security systems and so on.
The above descriptions and illustrations of embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. These modifications can be made to the invention in light of the above detailed description. Rather, the scope of the invention is to be determined by the following claims, which are to be interpreted in accordance with established doctrines of claim construction.