Search augmentation system

A method, apparatus, system, and computer program product for processing a query received through a network. A computer system identifies a topic in the query. The computer system identifies a set of friends of a user from a set of social media networks in which the set of the friends have an expertise in the topic identified in the query. The computer system ranks the set of the friends based on a level of the expertise of the set of the friends for the topic and an availability of the set of the friends to form a ranked set of the friends. The computer system returns results that contain the ranked set of the friends for the topic.

BACKGROUND

The present disclosure relates generally to an improved computer system and, more specifically, to a method, an apparatus, a system, and a computer program product for processing a query received in a network data processing system to augment search results with experts.

2. Description of the Related Art

With the Internet, vast amounts of information is available to users from hardware devices such as computers, tablets, mobile phones, and other types of data processing systems. Users may search for information with these devices by sending queries to search engines. A search engine is a software system designed to search for information on the Internet, such as on the World Wide Web.

When a user desires information about a topic, the user may enter a query in a browser running on a data processing system in which the query is sent to a search engine. The search engine returns search results that are displayed on the browser. The search results for the topic may include links to a mix of webpages, images, documents, videos, or other types of files.

Depending on the topic and the manner in which the query is phrased, the search results may include thousands or hundreds of thousands of results. Many of these results may contain information that is irrelevant or less relevant than desired for the topic of interest to the user. Attempting to review all or a large portion of the results returned may be infeasible or too time-consuming for the user. The user may revise the query in an attempt to reduce the number of results and return more relevant results. In some cases, the user may be unable to revise the query in a manner that returns a small enough number of results containing relevant information for review.

Therefore, it would be desirable to have a method and apparatus that take into account at least some of the issues discussed above, as well as other possible issues. For example, it would be desirable to have a method and apparatus that overcome a technical problem with obtaining manageable amounts of relevant information about a topic of interest when searching for information on a network such as the Internet.

SUMMARY

According to one embodiment of the present invention, a method processes a query received through a network. A computer system identifies a topic in the query. The computer system identifies a set of friends of a user from a set of social media networks in which the set of the friends have an expertise in the topic identified in the query. The computer system ranks the set of the friends based on a level of the expertise of the set of the friends for the topic and an availability of the set of the friends to form a ranked set of the friends. The computer system returns results that contain the ranked set of the friends for the topic.

According to another embodiment of the present invention, a search augmentation system comprises a computer system and an expert identifier. The expert identifier runs on the computer system and identifies a topic in a query. The expert identifier identifies a set of friends of a user from a set of social media networks in which the set of the friends have an expertise in the topic identified in the query and ranks the set of the friends based on a level of the expertise of the set of the friends for the topic and an availability of the set of the friends to form a ranked set of the friends. The expert identifier returns results that contain the ranked set of the friends for the topic.

According to yet another embodiment of the present invention, a computer program product for processing a query received through a network is present. The computer program product comprises a computer-readable storage media with first program code, second program code, third program code, and fourth program code stored on the computer readable storage media. The first program code is for identifying a topic in the query. The second program code is for identifying a set of friends of a user from a set of social media networks in which the set of the friends have an expertise in the topic identified in the query. The third program code is for ranking the set of the friends based on a level of the expertise of the set of the friends for the topic and an availability of the set of the friends to form a ranked set of the friends. The fourth program code is for returning results that contain the ranked set of the friends for the topic.

DETAILED DESCRIPTION

The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to carry out aspects of the present invention.

The illustrative embodiments recognize and take into account a number of different considerations. For example, the illustrative embodiments recognize and take into account that current techniques for processing queries often return search results that are much larger in number than may be feasible for a user to review. The illustrative embodiments recognize and take into account that many of the search results may address the topic about which the user desires information. The illustrative embodiments recognize and take into account that it would be desirable to reduce at least one of the number of results or the number of irrelevant results.

Thus, the illustrative embodiments provide a method, an apparatus, a system, and a computer program product for processing a query received through a network. In one illustrative example, a computer system identifies a topic in the query. The computer system identifies a set of friends of a user from a set of social media networks in which the set of the friends have an expertise in the topic identified in the query. The computer system ranks the set of the friends based on a level of the expertise of the set of the friends for the topic and an availability of the set of the friends. The computer system returns results that contain a ranked set of the friends for the topic. As used herein, a “set of,” when used with reference to items, means one or more items. For example, a set of friends is one or more friends.

With reference now to the figures and, in particular, with reference toFIG. 1, a pictorial representation of a network of data processing systems is depicted in which illustrative embodiments may be implemented. Network data processing system100is a network of computers in which the illustrative embodiments may be implemented. Network data processing system100contains network102, which is the medium used to provide communications links between various devices and computers connected together within network data processing system100. Network102may include connections, such as wire, wireless communication links, or fiber optic cables.

In the depicted example, server computer104and server computer106connect to network102along with storage unit108. In addition, client devices110connect to network102. As depicted, client devices110include client computer112, client computer114, and client computer116. Client devices110may be, for example, computers, workstations, or network computers. In the depicted example, server computer104provides information, such as boot files, operating system images, and applications to client devices110. Further, client devices110can also include other types of client devices such as mobile phone118, tablet computer120, and smart glasses122. In this illustrative example, some or all of client devices110may form an Internet of things (IOT) in which these physical devices can connect and exchange data.

Client devices110are clients to server computer104in this example. Network data processing system100may include additional server computers, client computers, and other devices not shown. Client devices110connect to network102utilizing at least one of wired, optical fiber, or wireless connections.

Program code located in network data processing system100may be stored on a computer recordable storage medium and downloaded to a data processing system or other device for use. For example, program code may be stored on a computer recordable storage medium on server computer104and downloaded to client devices110over network102for use on client devices110.

In one illustrative example, user124operates a client device in client devices110to obtain information on a topic. For example, user124may operate client computer116and generate a query for a topic using browser126running on client computer116. Browser126is a software application used to access information within network data processing system100, which may include the World Wide Web.

In this example, browser126sends the query to search engine128running on server computer104. Search engine128returns results to browser126, which are displayed to user124. In this illustrative example, search engine128operates to identify a set of friends of user124that have an expertise in the topic of interest to user124in the query.

For example, user124may enter a query searching for information about hiking in the mountains. In this example, the topic is mountain hiking. Search engine128returns results containing information about this topic. These results include webpages, images, videos, or other types of information. Additionally, search engine128also may include a set of friends of user124that have an expertise in mountain hiking.

In this illustrative example, the set of friends of user124are ranked based on a level of expertise. The ranking also may be based on an availability of the set of friends. In this manner, user124may consult with one or more of the set of friends to obtain information about mountain hiking in a more efficient manner in contrast to reviewing websites, documents, images, or other information returned in the search results. Although shown running on server computer104, search engine128may be distributed and run on other data processing systems, such as server computer106or other data processing systems that are not shown in network data processing system100.

With reference now toFIG. 2, a block diagram of a search environment is depicted in accordance with an illustrative embodiment. In this illustrative example, search environment200includes components that can be implemented in hardware, such as the hardware shown in network data processing system100inFIG. 1.

In this illustrative example, search environment200is an environment in which user202can search for information on topics204. As depicted, user202enters query206into browser208running on client device210to obtain information about topic226in topics204.

Query206is at least one of a term or a phrase used to obtain information about topic226. Client device210may take a number of different forms. For example, client device210is a hardware device and may be selected from one of a desktop computer, a workstation, a tablet computer, a mobile phone, smart glasses, a kiosk, a set-top box, or some other suitable device that includes one or more processor units for processing data.

In this illustrative example, query206is sent from client device210to search system212over network214. In this illustrative example, search system212includes a set of search engines218and search augmentation system216. The set of search engines218is configured to search for information on Internet220.

As depicted, search augmentation system216comprises expert identifier222running on computer system224. Computer system224is a physical hardware system and includes one or more data processing systems. When more than one data processing system is present, those data processing systems are in communication with each other using a communications medium. The communications medium may be a network. The data processing systems may be selected from at least one of a computer, a server computer, a tablet, or some other suitable data processing system.

As depicted, expert identifier222operates to identify topic226in query206. Expert identifier222identifies a set of friends228of user202from a set of social media networks230. In this example, the set of friends228of user202that has an expertise for topic226can be identified by expert identifier222using expert database231.

Expert database231contains information identifying friends228of user202from the set of social media networks230, topics of expertise for friends228, and levels of expertise of friends228for topics204. The set of friends228is one or more of friends228that are able to best assist user202on topic226. These friends are experts for topic226because they are identified as able to assist user202in providing information about topic226.

In this illustrative example, expert identifier222ranks the set of friends228based on level of expertise234of the set of friends228for topic226and availability236of the set of friends228. The ranking forms ranked set of friends240.

In this illustrative example, expert identifier222returns results238that contains ranked set of friends240for topic226. In this illustrative example, expert identifier222receives search results242from the set of search engines218for query206. Expert identifier222may return results238that contain ranked set of friends240and search results242.

In the illustrative example, one or more technical solutions are present that overcome a technical problem with obtaining manageable amounts of relevant information about a topic of interest when searching for information on a network, such as the Internet. As a result, one or more technical solutions may provide a technical effect reducing the number of search results that user202may have to review to obtain information on a desired topic. One or more technical solutions provides a technical effect in which a set of friends228are identified for user202that can be consulted by user202on the desired topic.

As depicted, expert identifier222uses multiple sources to identifies friends228of user202who are knowledgeable on topics204. Expert identifier222identifies a set of friends228that are able to best assist user202with respect to topic226. The set of friends228are also identified based on availability236. For example, the set of friends228are able to provide information on topic226within a time frame desired by user202.

As a result, computer system224operates as a special purpose computer system in which expert identifier222in computer system224enables facilitating quicker access to information about topic226. In particular, expert identifier222transforms computer system224into a special purpose computer system as compared to currently available general computer systems that do not have expert identifier222.

With reference now toFIG. 3, a dataflow diagram for identifying friends who are experts on topics is depicted in accordance with an illustrative embodiment. In the illustrative examples, the same reference numeral may be used in more than one figure. This reuse of a reference numeral in different figures represents the same element in the different figures.

In this figure, expert identifier222searches for friends228of user202who are experts for topics204. The identification of friends228and information about their expertise on topics204are stored in expert database231.

During operation, expert identifier222identifies friend300of user202. Friend300can be identified from various sources. Friend300is someone with which user202has a connection through at least one of social media sources306, real life, work, or other organizations or activities.

In this example, friend300is identified from contacts302for user202in social media networks230. User202may give expert identifier222permissions to access contacts of user202. In other illustrative examples, user202may upload contacts for friends228. Friend300can also be identified from contacts302in an email system, an instant messaging system, a mobile phone, or other sources in which contact information may be present for user202.

Expert identifier222is used to determine whether friend300is already present in expert database231for user202. If friend300is not already in expert database231, expert identifier222obtains data304about friend300. For example, expert identifier222obtains data304about friend300from social media sources306on network data processing system308. Data304can be obtained using different mechanisms.

For example, expert identifier222can initiate searches on network data processing system308. Network data processing system308can be, for example, at least one of the Internet, an intranet, a local area network, or some other suitable type of network. Expert identifier222can also use web crawlers or spiders to search for data304about friend300.

As depicted, data304can take different forms. The data can include at least one of a profile of friend300from a social media network, a rating of friend300from a forum, a posting on the social media network, a blog entry by or about friend300, a conversation, an article published by or about friend300, a review of friend300, an indication of whether a comment or review by friend300is useful, a presentation authored by friend300, a message conversation in which friend300is an participant, a resume for friend300, or some other type of data that can be used to identify a set of topics310of expertise for friend300and levels of expertise312for the set of topics310.

From data304, expert identifier222identifies levels of expertise312on which friend300is an expert. Additionally, expert identifier222also identifies a set of levels of expertise312for each of the set of topics310. In this example, a level of expertise in the set of levels of expertise312is assigned to each topic in the set of topics310for friend300.

Further, data304also can be to use to determine availability314of friend300. Expert identifier222updates expert database231to include identification316of friend300, a set of topics310, a set of levels of expertise312, and availability314.

This determination of availability314can be made in a number of different ways. For example, expert identifier222may utilize an artificial intelligence system to determine how soon information is desired on topic226. Expert identifier222can utilize natural language processing to analyze the wording in query206to determine a time frame for when information about topic226is needed.

The artificial intelligence system is a system that is based on a function of the human brain. An artificial intelligence system comprises at least one of a neural network, a cognitive system, a Bayesian network, fuzzy logic, an expert system, a natural language system, a cognitive system, or some other suitable system. A cognitive system is a computing system that mimics the function of a human brain. The cognitive system can be, for example, IBM Watson available from International Business Machines Corporation.

For example, wording of query206can be analyzed to determine the urgency of query206. As another example, an identification of words such as “birthday” and “Sue” can be used to identify a birthday for a friend of user202named Sue. That date can be used to determine the time frame for when the information about topic226is needed. As another example, a phrase such as “how to remove virus” may indicate an urgency in obtaining information on topic226. Thus, expert identifier222can identify how soon information is needed on topic226as at least one of a level of urgency, a timeframe, or some other suitable manner to determine how soon information about topic226is desired by user202.

Thus, expert identifier222provides more than a simple profile for friend300. By using expert database231, expert identifier222can provide results to queries from user202more quickly than having to search for this information when a query is received. Further, the result can be friend300who is an expert on a topic of interest and available within a time frame needed by user202.

Turning toFIG. 4, an illustration of a structure for an expert database is depicted in accordance with an illustrative embodiment. InFIG. 4, an example of one manner in which expert database231inFIG. 2can be implemented is shown. In this example, structure400for expert database231includes person table402, relationship table404, expertise table406, availability table408, and helpfulness table410.

As depicted, person table402stores person identification information about people which are referenced by other tables in expert database231. In this example, person table402contains information about people such as user202and friends228of user202. Friends228are experts for user202for topics204. A person in person table402can be both a user and an expert.

Entry412is an example of an entry in person table402. For example, entry412includes the following fields: person ID414, name416, email address418, phone420, messaging platform422, availability access424, and expertise access426.

Person ID414is a unique identifier identifying entry412for a particular person, which may be a user or a friend. Name416is the name of the person in entry412.

In this example, phone420is the number at which the person may be reached. Email address418is for the person. Messaging platform422identifies a program, service, or other mechanism for sending messages to the person. Messaging platform422can a messaging system such as an instant messaging service used by the person.

Availability access424controls who can see the availability information about the person. Expertise access426controls who can see expertise information about the person. These settings can also be used to control at least one of who can contact a person or what in manner a person can be contacted. The access settings for availability access424and expertise access426can be implemented using various currently available mechanisms.

For example, these access settings can implement concepts used to control at least one of who can see information or who can contact a person. These concepts include defining who can see information based on public, groups, and specific users who the expert will allow to view or contact. The defaults for the settings can be based on a policy that can be set by at least one of the company, a country, a standards committee, or some other suitable organization.

In the illustrative example, relationship table404is used to match users who are looking for information on topics to friends who are experts on the topics. As depicted, entry428is an example of an entry in relationship table404. This table identifies which friends are available to particular users who search for information on different topics. For example, relationship table404stores relationship information about relationships between user202and friends228, as well as for other users and their friends. As depicted, entry428includes the following fields: user ID430, friend ID432, type434, and degree436.

User ID430is an identifier for a person who is a user that performs searches for information on different topics. User ID430can be used to identify an entry in person table402. User ID430may be used to locate the person with person ID414that matches user ID430. Friend ID432is a person identifier used to locate a person in person table402. Friend ID432is a friend of the person identified by user ID430and can be an expert on different topics.

Type434identifies the type of relationship between the person identified by user ID430and the person identified by friend ID432. Type434may include at least one of a friend, a colleague, a co-worker, an acquaintance, or some other type of relationship.

As depicted, degree436indicates the strength of the relationship. Degree436can be calculated based on a number of interactions. Machine learning in an artificial intelligence system can be used to analyze the interactions themselves to identify the closeness of the two people. As another example, degree436can be, for example, user defined and can be based on input on or both of the people identified in entry438.

In this particular example, expertise table406stores the topics and levels of expertise of friends identified for different users. Entry438is an example of an entry in expertise table406. As depicted, entry438includes person ID440, expertise ID442, and level of expertise444.

Person ID440identifies a person who is an expert in person table402. Expertise ID442identifies a topic in which the person is an expert. In this illustrative example, multiple entries may be present for the same person to identify different topics in which the person is an expert. For example, expertise ID442may be a topic such as computer programming, computer malware, semiconductor design, plumbing, woodworking, automotive modifications, aerobic exercise, swimming, pastries, or other suitable topics. Expertise ID442can be a number or key that refers to the topic or can be the name of the topic.

In this illustrative example, level of expertise444can be at least one of expertise or depth of expertise. Depth of expertise may be identified using an artificial intelligence system with a cognitive component that detects depth, which would likely uncover relationships between certain words that are surrounded by the area of expertise. For example, an artificial intelligence system can determine that an expertise in “computer malware” has greater depth if the person uses more varied and domain specific terminology across writings such as “virus,” “trojan,” “adware,” “rootkit,” “ransomware,” or other similar terms as opposed to more commonly used terms like referring to all computer malware as “virus,” “malware,” or any other term that at times have been used as a catchall.

In this illustrative example, availability table408is an example of another table that may be in structure400. Availability table408stores availability information for friends. For example, the availability information can include at least one of a schedule, a calendar, or other suitable types of information. For example, availability table408can store information about when friends may be available to consult on topics of interest to a user.

As depicted, entry446is an example of an entry in availability table408. Entry446includes the following fields: person ID448and availability450. Person ID448is identifier that may be used to locate a person in person table402.

Availability450indicates when the person is available. For example, availability450indicates the date and time ranges when a person is available. Availability450also may indicate how long a person takes to respond to a request for information. Availability450may be derived from various status and schedule sources. In other illustrative examples, available table408may be an option table with availability information being obtained as queries are received and friends of a user are identified as experts.

In another illustrative example, a personality profile from a personality test can be used to determine helpfulness. For example, utilizing a “Type A and Type B personality theory” personality test, a friend with a Type A personality may be more quickly available than a friend with a Type B personality. Machine learning in an artificial intelligence system can be used to analyze the correlation of personality profiles and helpfulness.

As depicted, helpfulness table410provides information about the likelihood that a person will respond or provide help if the person is available. As depicted, entry452is an example of an entry in helpfulness table410. Entry452includes the following fields: person ID454, expertise ID456, and degree458. Multiple entries may be present for the same person ID for different expertise. The same person may be more helpful or willing to respond for some topics as compared to other topics.

Person ID454is an identifier used to identify a person in person table402. Expertise ID456is used identify a topic of expertise and may be used to identify a person in expertise table406with an expertise in the topic of interest.

Degree458indicates the degree of helpfulness that the person will be for the particular topic identified by expertise ID456. The indication of helpfulness in degree458can have different granularity. For example, degree458can be based on at least one of expertise type, relationship type, specific requester, or other factors.

For example, a “friend” identified in expert database231may be very helpful to users who are calling colleagues but not helpful at all to users who are friends. The degree of helpfulness can be based on at least one of feedback from users, parsing interactions between the person and other people in other systems, or using other sources that can indicate the helpfulness of the person identified as an expert. For example, answers on technical forums that are rated as helpful may be used to indicate how helpful the person may be if asked for information about a particular topic.

For example, client device210is depicted as sending query206to search system212over network214. As depicted, network214is shown as a separate component from Internet220. In this illustrative example, network214may be part of or may include Internet220even though these elements are shown as separate components. In yet another example, query206may contain one or more topics in addition to topic226. These topics can be processed in the same manner as topic226.

The set of search engines218is shown to be located outside of computer system224. In another illustrative example, the set of search engines218can be implemented in one or more data processing systems within computer system224.

In some illustrative examples, expert database231can omit one or more tables, include additional tables, or some combination thereof. For example, availability table408and helpfulness table410can be omitted.

For example, the different entries illustrated in structure400may include fields in addition to or in place of the ones depicted. For example, entry412may include one or more email addresses in addition to email address418. In another illustrative example, one or more fields may be omitted from entry412. For example, at least one of availability access424or expertise access426may be omitted. As another example, structure400may include a backing table to provide additional support for information in expertise table406. In other illustrative examples, these backing tables may include information identifying sources of where the expertise is collected from, such as social networks, technical forums, blogs, or other suitable sources that are indicative of expertise for different topics.

Turning next toFIG. 5, a flowchart of a process for processing a query received through a network is depicted in accordance with an illustrative embodiment. The processes inFIG. 5can be implemented in hardware, software, or both. When implemented in software, the processes can take the form of program code that is run by one of more processor units located in one or more hardware devices in one or more computer systems. For example, these processes can be implemented in expert identifier222running on computer system224inFIG. 2.

The process begins by identifying a topic in a query (step500). In one illustrative example, the topic in the query can be identified using an artificial intelligence system that includes natural language processing.

The process identifies a set of friends of a user from a set of social media networks in which the set of the friends has an expertise in the topic identified in the query (step502). The process ranks the set of the friends based on a level of the expertise of the set of the friends for the topic and an availability of the set of the friends to form a ranked set of the friends (step504). The process returns results that contain the ranked set of the friends for the topic (step506). The process terminates thereafter.

With reference now forFIG. 6, a flowchart of a process for identifying a set of friends is depicted in accordance with an illustrative embodiment. The process inFIG. 6is an example of one implementation for step502inFIG. 5.

The process generates a query including a user identifier and a topic identifier (step600). The process sends the query to an expert database (step602). The expert database includes friends of the user, topics of expertise for the friends, and levels of expertise of the friends for the topics. The expert database may also include information identifying friends, topics of expertise for the friends, and the levels of expertise of the friends for other users.

A result is received from the expert database that identifies a set of friends of the user in which the set of the friends has an expertise in the topic identified (step604). The process terminates thereafter.

With reference next toFIG. 7, a flowchart of a process for identifying a friend for addition to an expert database is depicted in accordance with an illustrative embodiment. The process inFIG. 7can be implemented in hardware, software, or both. When implemented in software, the processes can take the form of program code that is run by one of more processor units located in one or more hardware devices in one or more computer systems. For example, these processes can be implemented in expert identifier222running on computer system224inFIG. 2.

The process begins by identifying a friend for a user (step700). In step700, the friend is one that is not already present in the expert database. The friend can be identified in a number of different ways in step700.

For example, the friend can be identified from social media sources used by the user. The social media sources include at least one of an online social networking website, a professional networking website, an instant messaging service, or other types of social media sources. In the illustrative example, the user may provide access to contacts in social media networks to which the user belongs.

The process obtains data for the friend from social media sources on a network data processing system (step702). For example, the process can initiate searches on the Internet. The process can also use web crawlers, spiders, or other mechanisms available to search for data about the friend.

The process determines a set of topics of expertise for the friend using the data for the friend obtained from the social media sources (step704). The process also determines a set of levels of expertise for each topic in the set of topics of expertise by applying a classification to the data (step706). The process updates the expert database to include an identification of the friend, a set of topics of expertise for the friend, and the set of levels of expertise for the set of topics of expertise (step708). The process terminates thereafter.

Turning now toFIG. 8, a block diagram of a data processing system is depicted in accordance with an illustrative embodiment. Data processing system800may be used to implement server computer104, server computer106, and client devices110inFIG. 1, and computer system224inFIG. 2. In this illustrative example, data processing system800includes communications framework802, which provides communications between processor unit804, memory806, persistent storage808, communications unit810, input/output unit812, and display814. In this example, communications framework802may take the form of a bus system.

Processor unit804serves to execute instructions for software that may be loaded into memory806. Processor unit804may be a number of processors, a multi-processor core, or some other type of processor, depending on the particular implementation.

Memory806and persistent storage808are examples of storage devices816. A storage device is any piece of hardware that is capable of storing information, such as, for example, without limitation, at least one of data, program code in functional form, or other suitable information either on a temporary basis, a permanent basis, or both on a temporary basis and a permanent basis. Storage devices816may also be referred to as computer-readable storage devices in these illustrative examples. Memory806, in these examples, may be, for example, a random-access memory or any other suitable volatile or non-volatile storage device. Persistent storage808may take various forms, depending on the particular implementation.

For example, persistent storage808may contain one or more components or devices. For example, persistent storage808may be a hard drive, a solid-state drive (SSD), a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage808also may be removable. For example, a removable hard drive may be used for persistent storage808.

Communications unit810, in these illustrative examples, provides for communications with other data processing systems or devices. In these illustrative examples, communications unit810is a network interface card.

Input/output unit812allows for input and output of data with other devices that may be connected to data processing system800. For example, input/output unit812may provide a connection for user input through at least one of a keyboard, a mouse, or some other suitable input device. Further, input/output unit812may send output to a printer. Display814provides a mechanism to display information to a user.

Instructions for at least one of the operating system, applications, or programs may be located in storage devices816, which are in communication with processor unit804through communications framework802. The processes of the different embodiments may be performed by processor unit804using computer-implemented instructions, which may be located in a memory, such as memory806.

These instructions are referred to as program code, computer usable program code, or computer-readable program code that may be read and executed by a processor in processor unit804. The program code in the different embodiments may be embodied on different physical or computer-readable storage media, such as memory806or persistent storage808.

Program code818is located in a functional form on computer-readable media820that is selectively removable and may be loaded onto or transferred to data processing system800for execution by processor unit804. Program code818and computer-readable media820form computer program product822in these illustrative examples. In the illustrative example, computer-readable media820is computer-readable storage media824. In these illustrative examples, computer-readable storage media824is a physical or tangible storage device used to store program code818rather than a medium that propagates or transmits program code818.

Alternatively, program code818may be transferred to data processing system800using a computer-readable signal media. The computer-readable signal media may be, for example, a propagated data signal containing program code818. For example, the computer-readable signal media may be at least one of an electromagnetic signal, an optical signal, or any other suitable type of signal. These signals may be transmitted over at least one of communications links, such as wireless communications links, optical fiber cable, coaxial cable, a wire, or any other suitable type of communications link.

Thus, the illustrative embodiments provide a method, an apparatus, a system, and a computer program product for processing a query received through a network. In one illustrative example, a computer system identifies a topic in the query. The computer system identifies a set of friends of a user from a set of social media networks in which the set of the friends have an expertise in the topic identified in the query. The computer system ranks the set of the friends based on a level of the expertise of the set of the friends for the topic and an availability of the set of the friends. The computer system returns results that contain a ranked set of the friends for the topic.

One or more illustrative examples provide a solution to a technical problem in which search results may be at least one of more numerous or less relevant than desired when a user sends a query to obtain information on a topic of interest. One or more illustrative examples provide a technical solution in which friends of a user who are experts on the topic can be identified by an expert identifier and returned to the user in response to receiving the query. By providing suggestions of friends who are experts on the topic, the expert identifier enables reducing at least one of a number of search results or less relevant search results that a user may have to review to obtain information on a topic.