The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Various aspects of the technology described herein are generally directed towards a mechanism that in general consistently and systematically provides a bridge between dynamic content on the web (e.g., online discussion groups, community forum content, knowledge bases like the Microsoft® Knowledge Base and so on), and an installed software installation and experience on a computing device such as a network server. In one example implementation, the mechanism may be provided as part of a suite of server programs, but as will be understood, can be part of another suite of application programs such as Microsoft® Office, can be part of an individual application or operating system program, or can be a standalone program that works to provide dynamic links to content on behalf of some other program, e.g., via an interface between the programs. As such, although the examples herein are described in the context of a mechanism that assists in network administration, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing and/or administration in general.
In the example shown, one of the computing devices (e.g., 1024) is represented as containing a dynamic program support links mechanism 108, which as described below, provides an administrator with a systematic way to locate software support information such as relevant help, information and other assistance. Note that there may be various instances of the dynamic program support links mechanism 108, e.g., the administrator may be able to run the mechanism from any suitable computing device on the network, or even on a remote device 106. Further, as also described below, the dynamic program support links mechanism 108 may be configured as various components, some or all of which may be distributed and/or replicated across multiple computing devices.
In general, the input or inputs from which the search system 212 generates the query includes user input 224, user preference data 226, active context data 228 and/or other data from a data store 230 (which may be local or remote). Such other data may include historical data and/or statistical data (e.g., based on past queries), and/or possibly data downloaded from a remote source. For example, a program developer may discover that many users are experiencing a common problem, and may provide a link to a solution for that problem that is beyond what the user could easily find via the help file. Note that the user preference data may be in its own data location, but may be part of the data store 230.
User preference data 226 generally refers to providing the user of the mechanism 108 to modify the default configuration, including where to look online for support content. For example, if the user has one or more preferred locations for content, the user can add those web sites, e.g., into a preference page hosted as part of the mechanism 108. This preference page will be referenced to search the user-specified website content for related information. Site usage patterns of the administrator may also be used to deduce preferences. The user also may set preferences on the limits of results. For example, if the user wants to see the top twenty results instead of all results, the system will return (or at least only display) the topmost relevant twenty results. This allows the user to better control the amount of detail returned at part of the search.
When a search is complete, the user may also provide effectiveness rating data corresponding to the results of the search. This effectiveness rating data may be maintained as part of the user preference data to help locate relevant results in future searches. For example, a profile may be associated with the user that comprises preferences and ratings that help define and filter search results.
In addition to containing the set of one or more preferred websites that the user wants searched, the user preference data 226 may possibly contain other information, such as the username and password data for websites that require credentials, e.g., subscription sites; (note that this is optional, as many users prefer to manually type in password information). Also, although not specifically shown in
The active context data 228 typically refers to information about the operating environment of a software program 240 (and/or program's task), such as any of the version, operating system version, hardware, other programs and the like, and/or the state of the program/task for which support is being sought. A task engine 242 associated with (e.g., integrated into or otherwise coupled to) the software program 240 provides context related to the task that is (or was) in the process of execution just before or when the user requested support, e.g., by invoking the dynamic program support links mechanism 108. Active context data 228 may include an identifier of the application or workload involved in the task, the type of task (e.g., configuration, maintenance, and so forth) and the current action (e.g., changing a disk quota). Other types of active context data 228 may include one or more error codes that were returned upon task completion, or other debugging-type information.
Thus, the search system 212 may take one or more keywords for a search via user input 224, active context data (e.g., the error message of an error, or the task context), user preference data 226 and other data (represented by the data store 230). For example, a query can be built using common language queries, keywords that map to unique identifiers or context information such as task names, error codes and environment variables, e.g., with the mappings maintained in the data store 230, behavior logs such as regarding a task's relationship to one or more other tasks, and explicit user input.
With this information, the logic query generator 214 runs a search across a specified set of web sources. Also note that
With respect to aggregation of the output results, ranking, grouping and/or filtering of the results may be performed in various ways. For example, likely relevance (e.g., based on matched keywords, direct match of an errorcode and so forth) may be used as one ranking criterion, as may trustworthiness of the source (e.g., according to user preferences, the program developer's rankings and so forth). The administrator's patterns of usage may be another important ranking criterion; the administrator may provide feedback in this regard, including for local pattern usage and/or to the source of the result, or the usage may be deduced, e.g., based on time spent reviewing an article, whether the administrator used a result for a more focused search, and so forth. The date of the resource may be another criterion, as for example, an old article that predates the current operating system's version may seem relevant but may actually be obsolete in view of by a more recent article. Any other ranking criteria that is locally or remotely available to the aggregator may be used, e.g., popularity, previous feedback, and so forth.
The search system 212, using one or more queries generated by the query generator 214 (
Turning to an explanation of the invoking of the dynamic program support link mechanism, in one implementation, support is offered from a number of locations in a software usage experience. These may include providing links to support sites such as online discussion forums that contain posts about an error when displaying an indication of that error. Also, in the context of task completion, links that directly relate to the task or tasks are displayed. Further, links to a variety of Web-based sources are displayed in response to specific search queries.
As can be readily appreciated, dynamic program support links thus are highly valuable to administrators seeking support such as assistance and/or other information about a software program. By using the context of a task when available to drive the dynamic query, more desirable results are quickly and automatically found, and complementary information provided. Further, the user can supply preference data to customize where to look for the content. Still further, the aggregation and display of query results providing a meaningful and useful output to the user.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
With reference to
The computer 710 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 710 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the computer 710. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer-readable media.
The system memory 730 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 731 and random access memory (RAM) 732. A basic input/output system 733 (BIOS), containing the basic routines that help to transfer information between elements within computer 710, such as during start-up, is typically stored in ROM 731. RAM 732 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 720. By way of example, and not limitation,
The computer 710 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, described above and illustrated in
The computer 710 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 780. The remote computer 780 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 710, although only a memory storage device 781 has been illustrated in
When used in a LAN networking environment, the computer 710 is connected to the LAN 771 through a network interface or adapter 770. When used in a WAN networking environment, the computer 710 typically includes a modem 772 or other means for establishing communications over the WAN 773, such as the Internet. The modem 772, which may be internal or external, may be connected to the system bus 721 via the user input interface 760 or other appropriate mechanism. A wireless networking component such as comprising an interface and antenna may be coupled through a suitable device such as an access point or peer computer to a WAN or LAN. In a networked environment, program modules depicted relative to the computer 710, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
An auxiliary subsystem 799 (e.g., for auxiliary display of content) may be connected via the user interface 760 to allow data such as program content, system status and event notifications to be provided to the user, even if the main portions of the computer system are in a low power state. The auxiliary subsystem 799 may be connected to the modem 772 and/or network interface 770 to allow communication between these systems while the main processing unit 720 is in a low power state.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.