CONTEXTUAL SOCIALLY AWARE LOCAL SEARCH

Methods, systems, and computer program products are provided for determining a meeting location. A group of persons to meet is determined. A conjoined interest set is generated that is representative of the group of persons. Locations of persons in the group are determined to determine a plurality of locations. Local search results for the group of persons are received that are generated based on the conjoined interest set and the determined plurality of locations. The local search results include at least one potential meeting location. The local search results are enabled to be presented to at least one person of the group of persons.

DETAILED DESCRIPTION

Numerous exemplary embodiments of the present invention are described as follows. It is noted that any section/subsection headings provided herein are not intended to be limiting. Embodiments are described throughout this document, and any type of embodiment may be included under any section/subsection. Furthermore, embodiments disclosed in any section/subsection may be combined with any other embodiments described in the same section/subsection and/or a different section/subsection in any manner.

One well known type of search engine is a Web search engine that searches for documents, including web pages, image files, video files, and other web objects on the “World Wide Web” (also known as “the Web”). “Local search” refers to the use of search engines that enable users (“users” and “persons” are used interchangeably herein) to submit geographically constrained searches against a structured database of local business listings. Local search is a popular function that is built into or is accessible as a third party application by computing devices such as smart phones and computers. Local search enables a user to search for merchants (e.g., restaurants, coffee shops, etc.), attractions (museums) and further types of destinations based on the user's current location.

A common problem with local search is the plethora of destination options available in a metropolitan setting. There can be literally hundreds (sometimes thousands) of local search results for a relatively small geographic area. Wading through these results by a user can be time consuming and problematic when searching for a destination. Recently, local search has been improved by taking the interests of the user into account, and sorting the local search results based on the user's interests.

However, local search currently does not handle searches performed in the context of a group of people. Embodiments described herein overcome these deficiencies of current local search techniques. Embodiments enable locations to be determined for a group of persons, while taking into account the interests of the persons in the group. Furthermore, such embodiments may enable a meeting location to be determined for a group of persons in a fully automatic or semi-automatic manner (e.g., enabling a user to manually select one more meeting participants, to manually tune meeting characteristics, etc.).

For instance, in one example, a group of users may be defined by context such as by being a part of a virtual “family room,” a custom “group,” a joint messaging thread, or other accessible listing or grouping of persons. After the group is defined, the locations of persons in the group may be queried, and traffic conditions around the persons may be analyzed to determine an approximate “center area” or “center location” for the group to meet, based on distance and/or substantially equivalent travel time. Once this “center area” is defined, preferences of the persons may be polled in any manner (e.g., using a search engine, etc.) to enable a recommended location to meet to be determined that is a destination that the group is likely to enjoy. For instance, a highly rated coffee shop, restaurant, or other location may be recommended, also taking into account the time of day.

In another example, if a user is with a group of young college friends, local search results may be generated that are filtered and/or ordered based on the likelihood that the group will like a particular destination (e.g., a hip bar with karaoke). Alternatively, if the user is with a group of people with young children, local search results may be generated that are filtered/ordered based on destinations that would likely be amenable to that group (e.g., finding a nearby coffee shop with a play area, etc.). In still another example, if a member of a group is an “out of town” guest (e.g., the user has a residence address that is not in the local area), local search results may be generated to emphasize popular tourist attractions or restaurants.

Such embodiments may be implemented in a variety of environments. For instance,FIG. 1shows a block diagram of a communication system100that enables a meeting location to be automatically determined for a group, according to an example embodiment. As shown inFIG. 1, system100includes first-nth computing devices102a-102n(computing devices102a,102b, and102nare explicitly shown inFIG. 1), a first server104, storage106, a second server108, and a network110. As further shown inFIG. 1, computing devices102a,102b, and102nrespectively include an application112, a mobile app124, and a web application116. Still further, first server104includes a meeting system118, and second server108includes a local search service120. These features of communication system100are described as follows.

Computing devices102a-102nmay each be any type of stationary or mobile computing device, including a desktop computer (e.g., a personal computer, etc.), a mobile computer or computing device (e.g., a Microsoft® Surface® device, a Palm® device, a RIM Blackberry® device, a personal digital assistant (PDA), a laptop computer, a notebook computer, a tablet computer such as an Apple iPad™, a netbook, etc.), a mobile phone (e.g., a cell phone, a smart phone such as a Microsoft Windows® phone, an Apple iPhone, a Google Android™ phone, etc.), or other type of mobile device. First server104and second server108may each be implemented in one or more computer systems, including one or more servers which may be any type of computing devices described herein or otherwise known that is/are capable of enabling the corresponding functionality described herein.

Computing devices102a-102n, first server104, and second server108are communicatively coupled by network110. Network110may include one or more communication links and/or communication networks, such as a PAN (personal area network), a LAN (local area network), a WAN (wide area network), or a combination of networks, such as the Internet. Computing devices102a,102b, and102n, and first server104may be communicatively coupled to network110using various links, including wired and/or wireless links, such as IEEE 802.11 wireless LAN (WLAN) wireless links, Worldwide Interoperability for Microwave Access (Wi-MAX) links, cellular network links, wireless personal area network (PAN) links (e.g., Bluetooth™ links), Ethernet links, USB links, etc.

Computing devices102a-102nare each associated with a user that interacts with the respective computing device as described herein. A number “n” of computing devices102a-102nis shown inFIG. 1for purposes of illustration. Any number of two or more computing devices may be present in system100, including tens, hundreds, thousands, and even greater numbers of computing devices. Each computing device may operate one or more corresponding applications.

Note that in an embodiment, meeting system118may be included in a server, such as shown inFIG. 1. In another embodiment, meeting system118may be included in one of computing devices102a-102nof a user of the group.

As shown inFIG. 1, storage106is coupled to server104. Storage106may be directly connected to first server104, or may be coupled to first server104through network110. Storage106stores profile information122. Storage106may have the format of a database or other format, and may include one or more of any type of storage mechanism to store profile information122, including a magnetic disc (e.g., in a hard disk drive), an optical disc (e.g., in an optical disk drive), a magnetic tape (e.g., in a tape drive), a memory device such as a RAM device, a ROM device, etc., and/or any other suitable type of storage medium.

Computing devices102a-102nare computing devices used by associated persons for any number and type of functions. Such persons may be interested in meeting together at a location. For example, a user of one of computing devices102a-102nmay interact with their computing device to request that a meeting place be determined, according to embodiments. The user may interact with a user interface displayed by an application at their computing device (e.g., a web page displayed by a web browser, or a user interface provided by another form of application), such as a user interface displayed by application112at computing device102a, mobile app124at computing device102b, or web application116at computing device102n. As shown inFIG. 1, a meeting request114may be transmitted from one of computing devices102a-102ndue to the user interacting with the corresponding user interface. For example, computing device102amay transmit meeting request114in a communication signal through network110to be received by meeting system118at first server104. The communication signal may be transmitted in any form.

As shown inFIG. 1, meeting system118at server104may receive meeting request114. In response to receiving meeting request114, meeting system118determines a meeting location for a group of persons. Meeting system118may determine the persons to include in the group manually or automatically. For instance, meeting system118may enable a person at one of computing devices102a-102nto manually select the persons to be included in the group, and may enable persons to opt-in or opt-out of the group. Alternatively, meeting system118may automatically select the persons to include in the group based on context. For instance, meeting system118may automatically include persons in the group that were participating together in a meeting (e.g., as indicated by a calendar appointment), were participating together in a messaging thread (e.g., an email chain, a text messaging thread, a chat room, a social network discussion/comment thread, etc.), are associated together in a social network circle (e.g., a friends group, a family group, an online group, etc.), were located at a same geographical location at the time meeting request114was issued, or were associated in another manner.

Meeting system118may access profile information122from a plurality of profiles included in storage106for the persons in the determined group. Meeting system118may analyze profile information122to determine overlaps in demographic information, interests, preferences, and/or other profile information regarding the persons to determine a conjoined interest set for the persons. Furthermore, meeting system118may determine a location for each person in the group, and may analyze the determined locations to generate an approximate geographical center location (e.g., based on distance and/or travel time) for the group.

Meeting system118may provide the conjoined interest set and the determined center location for the group in a local search request126transmitted from first server104to local search service120at second server108. Local search service120is a search engine that enables users to submit geographically constrained searches against a structured database of local business listings. As such, local search request126may include information from the determined conjoined interest set to be used by local search service120as describing “what” is being searched for. The information of the determined conjoined interest set may be in the form of keywords and/or a structured search query that defines interests/preferences such as restaurant types, food preferences, drink preferences, hobbies, other specific interests, etc., as well as demographic information such as average age of the group, whether members of the group have children, etc. Furthermore, local search request126may include the center location to be used by local search service120as the “where” information for selecting a meeting location. The center location may be in any form of location defining information, such as a street address, a city name, a postal code, geographic coordinates (e.g., latitude and longitude), a name of a landmark (e.g., a monument name, a park name, etc.), a name of a business location (e.g., a hotel name, a business name, etc.), or in another form.

Local search service120may process the determined conjoined interest set and the center location to select one or more possible meeting locations for the group. Local search service120may provide the one or more possible meeting locations in a local search response128transmitted from second server108to meeting system118at first server104. Note that in another embodiment, local search service120and meeting system118may be located in a common server.

In response to meeting request114, meeting system118is configured to provide the one or more possible meeting locations in local search results130transmitted from first server104to one or more of computing devices102a-102n. For instance, in one embodiment, local search results130may be transmitted to a single computing device associated with the user that submitted meeting request114(e.g., computing device102a). A single (e.g., highest ranked) possible meeting location may be presented, or a list of possible meeting locations may be presented. In this manner, the user (e.g., a coordinator for the group) may review the one or more possible meeting locations, and select one of the possible meeting locations to be the selected meeting location for the group. The user may distribute the selected meeting location to other users of the group in any manner, including by a message transmitted through network110or in another manner.

In another embodiment, local search results130may be transmitted to all computing devices associated with persons in the group (e.g., two or more of computing devices102a-102n). In this manner, the persons of the group may review the one or more possible meeting locations, and may select one of the possible meeting locations by voting on the possible meeting locations or in another manner. The selected meeting location may be indicated to all users of the group in any manner, including by a message transmitted through network110, by displaying a vote tally for the possible meeting locations, or in another manner.

The elements of communication system100shown inFIG. 1may be configured in various ways, in embodiments. Example embodiments for the elements of communication system100are described in the following subsections.

A. Example Embodiments for Meeting Systems

As described above, in embodiments, meeting systems are enabled to select meeting locations for groups of persons. Such meeting systems may be configured in various ways, and may perform their functions in various ways. For instance,FIG. 2shows a flowchart200providing a process that enables a meeting location to be automatically determined for a group, according to an example embodiment. Meeting system118ofFIG. 1may operate according to flowchart200, in an embodiment. For purposes of illustration, flowchart200ofFIG. 2is described with respect toFIG. 3.FIG. 3shows a block diagram of a meeting system300that enables a meeting location to be determined for a group, according to an example embodiment. Meeting system300is an example of meeting system118ofFIG. 1. As shown inFIG. 3, meeting system300includes a group determiner302, a location determiner304, an interest set generator306, a local search service interface308, and an output interface310. Flowchart200and meeting system300are described as follows. Note that the steps of flowchart200may be performed in orders other than the order shown inFIG. 2. Further structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following description.

Flowchart200begins with step202. In step202, a group of persons to meet is determined. As shown inFIG. 3, group determiner302of meeting system300may receive meeting request114. Group determiner302may be configured to determine persons to include in the group of persons. The determined group of persons includes persons that are to be invited to meet at a location as determined herein. In embodiments, group determiner302may be configured to determine the persons to include in the group manually or automatically. Furthermore, group determiner302may enable persons to opt-in or opt-out of the group.

For example,FIG. 4shows a block diagram of a portion of communication system100ofFIG. 1, in which group determiner302(in server104) determines a group of persons to gather together, according to an example embodiment. As shown inFIG. 4, group determiner302includes a manual input enabler402and an automatic group generator404. Either or both of manual input enabler402and automatic group generator404may be present. Manual input enabler402is configured to receive manually input participants for the group, and automatic group generator404is configured to automatically generate the group of persons. As shown inFIG. 3, group determiner302generates a determined group indication312, which indicates the persons included in the determined group.

As shown inFIG. 4, manual input enabler402may generate a user interface definition406, which is transmitted from first server104through network110to computing device102ain a communication signal. User interface definition406may have any form, including being a textual document, a code file (e.g., JAVA, JavaScript, etc.), a web document (e.g., a web page coded in a least one of HTML, XML (extensible markup language), and/or other code), or other form. User interface definition406defines a user interface that enables a user to manually define participants of the group.

For instance, as shown inFIG. 4, application112at computing device102amay generate a user interface408based on user interface definition406. Application112may include a web browser that renders user interface408based on a web document version of user interface definition406. Alternatively, user interface408may be generated in other ways based on user interface definition406. User interface408may include any number and combination of user interface elements to enable members of a group to be defined. Examples of such user interface elements include graphical icons, visual indicators, menus, radio buttons, check boxes, sliders, etc. A user at computing device102a(e.g., a group coordinator) may be enabled to select persons to include in the group in various ways by interacting with user interface408, such as by entering names in a text box, selecting persons from a contacts list, and/or in other ways.

As shown inFIG. 4, application112may generate a group list410that includes a list of persons included in the group. Group list410is transmitted from computing device102athrough network110to manual input enabler402in first server104.

Alternatively, automatic group generator404may automatically determine the persons to include in the group. For example, automatic group generator404may be configured to analyze one or more data structures to automatically determine persons to include in the group based on context. For instance, automatic group generator404may generate the group to include persons from an eligible persons pool that are determined to be located in a particular geographical area, to generate the group to include persons from an eligible persons pool that are determined to be located within a particular radial distance from a location designated by a coordinator for the group, to generate the group to include persons from an eligible persons pool that are determined to be located within a particular travel time from a location designated by a coordinator for the group, or to generate the group based on a grouping of persons formed online.

For example, an eligible persons pool may include persons listed in a particular contacts list, persons that were participating together in a meeting (e.g., as indicated by a calendar appointment), persons that were participating together in a messaging thread (e.g., an email chain, a text messaging thread, a chat room, a social network discussion/comment thread, etc.), persons that are associated together in a social network circle (e.g., a friends group, a family group, another custom online group, etc.), persons that were located at a same geographical location at the time meeting request114was issued, or persons that were associated in another manner.

Automatic group generator404may access any of these eligible persons pools, such as by accessing a contacts list for a phone or messaging tool, a contact management application or database, a calendar tool for an appointment (e.g., Microsoft® Outlook® developed by Microsoft Corporation of Redmond, Wash., etc.), a message thread (e.g., an email, a text message, a chat thread, a social network discussion thread, etc.), an online social network for a social group, etc. For example, as shown inFIG. 4, automatic group generator404may receive group information412, which may include a contacts list, a calendar appointment, a message thread, a social group indication, etc. Automatic group generator404may analyze group information412to generate a group of persons by including the persons found in the data structure included in group information412(e.g., persons in the contact list, persons listed in an appointment, persons included in a messaging thread, persons included in a social group, etc.).

Additionally, automatic group generator404may receive user location information414, which indicates a location of persons included in group information412. In an embodiment, automatic group generator404may use user location information414to include or filter out one or more persons from the group based on their location. For instance, automatic group generator404may generate the group to include persons of the eligible persons pool that are determined to be located in a particular geographical area (e.g., within a particular room, building, park, town, or other area), to include persons from the eligible persons pool that are determined to be located within a particular radial distance from a location designated by a coordinator for the group (e.g., a location of computing device102a), to include persons from an eligible persons pool that are determined to be located within a particular travel time from a location designated by a coordinator for the group (e.g., as determined based on traffic conditions, time of day, etc.), and/or to include persons based on other location-based constraints.

User location information414may indicate user locations determined in any manner, including by IP (Internet protocol) address of a computing device of a user (e.g., for stationary devices), by location determining techniques such as GPS (global positioning system), cell tower triangulation, or Bluetooth® proximity, by users manually providing position information (e.g., by message), and/or by other techniques.

Accordingly, by manual or automatic techniques, group determiner302may generate determined group indication312to define the persons included in the group. In an embodiment, a user (e.g., a group coordinator) may be enabled to interact with user interface408to be displayed the list of persons included in the group, and to manually modify the group of persons, whether the group was generated manually or automatically.

Referring back toFIG. 2, in step204, a conjoined interest set is generated that is representative of the group of persons. As shown inFIG. 3, interest set generator306of meeting system300may receive determined group indication312. Interest set generator306may be configured to retrieve profile information122for persons of the group indicated by determined group indication312, and to generate a conjoined interest set316for the group. Conjoined interest set316is configured as an intersection of interests of the persons of the group, and therefore represents a combined set of interests for the group.

Interest set generator306may be configured to generate conjoined interest set316in various ways. For instance,FIG. 5shows a flowchart500providing a process for determining a conjoined interest set for a group, according to an example embodiment. Interest set generator306may operate according to flowchart500, in an embodiment. For purposes of illustration, flowchart500ofFIG. 5is described with respect toFIG. 6.FIG. 6shows a block diagram of communication system100ofFIG. 1, in which interest set generator306(in first server104) determines a conjoined interest set for a group, according to an example embodiment. As shown inFIG. 6, interest set generator306includes a profile information retriever602and a profile intersection determiner604. Flowchart500and interest set generator306ofFIG. 6are described as follows. Further structural and operational embodiments will be apparent to persons skilled in the relevant art(s) based on the following description.

Flowchart500begins with step502. In step502, profile information for persons of the group is received. As shown inFIG. 6, profile information retriever602of interest set generator306receives determined group indication312. In an embodiment, profile information retriever602attempts to obtain profile information for each person included in the group indicated by determined group indication312. In some cases, profile information retriever602may retrieve profile information for each person, and in other cases, profile information retriever602may retrieve profile information for fewer than all of the persons in the group (e.g., due to an inability to locate or access such profile information, due to privacy settings of a user enabling them to opt-out of providing access to their profile information, etc.). In any event, as shown inFIG. 6, profile information retriever602outputs the retrieved profile information as retrieved profile information612.

Profile information retriever602may retrieve the profile information from one or more sources. For instance, as shown inFIG. 6, profile information retriever602may be communicatively coupled through network110with one or more of a social network606, a search engine608, and a messaging server610. Profile information retriever602may transmit a profile information request126ato social network606through network110to retrieve social network profile information128afor one or more persons. Profile information retriever602may transmit a profile information request126bto search engine608through network110to retrieve search engine profile information128bfor one or more persons. Profile information retriever602may transmit a profile information request126cto messaging server610through network110to retrieve messaging server profile information128cfor one or more persons. In further embodiments, profile information retriever602may communicate with additional and/or alternative entities to retrieve profile information for persons of the group. For instance, in an embodiment, profile information retriever602may retrieve profile information for a user from a computing device of the user (e.g., from profile information stored therein, from one or more cookies stored on the computing device, etc.).

Each of social network profile information128a, search engine profile information128b, messaging server profile information128c, and profile information received from other source(s) may include any type of profile information for a person, such as preference information (e.g., preferred restaurant types, food preferences, favorite cuisines, drink preferences, favorite places, food requirements due to allergies, accessibility needs due to physical handicaps, etc.), interest information (e.g., hobbies, travel destinations, favorite sports, other specific interests, etc.), demographic information (e.g., age, sex, location of residence, marital status, socio-economic status, whether the person has children, etc.), and any other suitable profile information type.

Some examples of social network606provided for illustrative purposes include Facebook® operated by Facebook, Inc. of Palo Alto, Calif., Google+ operated by Google, Inc. of Mountain View, Calif., etc., LinkedIn® operated by LinkedIn Corporation of Mountain View, Calif., Twitter, Inc. of San Francisco, Calif., and Foursquare provided by Foursquare Labs, Inc. of New York City, New York, as well as social groups (e.g., friends, family, and/or other groups) enabled by online services such as Windows Live™ provided by Microsoft Corporation, and social groups (e.g., friends, family, and/or other groups) enabled on computing devices such as Microsoft Windows® phone. Examples of search engine608include Yahoo! Search™ (at http://www.yahoo.com) provided by Yahoo! Inc. of Sunnyvale, Calif., Microsoft® Bing™ (at http://www.bing.com), and Google™ (at http://www.google.com). Examples of messaging server610include an email server (e.g., outlook.com provided by Microsoft Corporation, gmail.com provided by Google Inc., yahoo.com provided by Yahoo! Inc., etc.), a text messaging server, a chat server, etc.

In an embodiment, profile information retriever602may be configured to analyze received message threads for profile information to include in retrieved profile information612. For instance,FIG. 7shows a block diagram of profile information retriever602, according to an example embodiment. As shown inFIG. 7, profile information retriever602includes a message thread analyzer702. Message thread analyzer702is configured to analyze a message thread of at least one person of the group for at least one of interest information, time information, meeting place suggestions, and/or further relevant information. Message thread analyzer702may be configured to analyze any number and type of messaging thread, such as an email, a text messaging thread, a chat room discussion, a social network discussion, etc. For instance, message thread analyzer702may be configured to parse a messaging thread for names of persons, and any corresponding comments made by the persons regarding their preferences, interests, etc. (e.g., preferences for or dislikes of particular food, restaurants, stores, business locations, tourist destinations, etc.). Message thread analyzer702may include this determined information in retrieved profile information612for the corresponding persons.

Referring back toFIG. 5, in step504of flowchart500, an intersection of the retrieved profile information is determined to generate the conjoined interest set. As shown inFIG. 6, profile intersection determiner604of interest set generator306receives retrieved profile information612. In an embodiment, profile intersection determiner604is configured to analyze retrieved profile information612to determine overlaps in the profile information of the persons of the group to determine conjoined interest set316, which indicates a combined set of interests for the group.

For instance, profile intersection determiner604may analyze retrieved profile information612to identify interest keywords (e.g., keywords associated with interest information, preference information, demographic information, etc.) that occur more often than others in the profile information of the different persons. These identified interest keywords may be used to define the set of interests for the group. Interest keywords that occur more often may be provided with higher weight or higher likelihood of inclusion in the set of interests, while interest keywords that occur less often may be provided with lower weight or less likelihood of inclusion in the set of interests. Some interest keywords that relate to requirements, such as food allergies, the presence of children, and/or physical handicaps, may be provided with higher weight or more likelihood of inclusion in the set of interests, even if their relative occurrence rate of occurrence in retrieved profile information612is low.

As such, profile intersection determiner604may generate conjoined interest set316to include a comprehensive list of weighted interest keywords or other search parameters for the group, to only include interest keywords or search parameters for the group that had the greatest weights (e.g., greater than a predetermined threshold weight value), and/or to include conjoined interest information for the group in another manner.

Furthermore, in an embodiment, profile intersection determiner604may enable the contents of conjoined interest set316to be manually tuned. For example,FIG. 8shows a block diagram of a portion of communication system100ofFIG. 1, in which profile intersection determiner604(in first server104) enables tuning of group meeting preferences, according to an example embodiment. As shown inFIG. 4, profile intersection determiner604includes a preference tuner802. Preference tuner802is configured to generate a user interface806to enable a person (e.g., coordinator for the group) to manually tune at least one preference for the group of persons.

As shown inFIG. 8, preference tuner802may generate a user interface definition804, which is transmitted from first server104through network110to computing device102ain a communication signal. User interface definition804may have any suitable form described elsewhere herein or otherwise known. User interface definition804defines a user interface that enables a user to manually tune preferences for the group.

For instance, as shown inFIG. 8, application112at computing device102amay generate a user interface806based on user interface definition804. For instance, application112may include a web browser that renders user interface806based on a web document version of user interface definition804. Alternatively, user interface806may be generated in other ways based on user interface definition804. User interface806may include any number and combination of user interface elements to enable preferences to be tuned, such as by adding new preferences, deleting preferences, and modifying existing preferences. A user at computing device102a(e.g., a group coordinator) may be enabled to tune preferences in various ways by interacting with user interface806, such as by entering preference values in a text box, selecting preference values from a contacts list, clicking on check buttons to select or deselect preferences, and/or in other ways.

In this manner, preference information in conjoined interest set316may be modified (e.g., modifying preferred restaurants, foods, drink types, stores, business locations, tourist destinations, etc.). As shown inFIG. 8, application112may generate a modified preference list808that indicates the modified preferences configured using user interface806. Modified preference list808is transmitted from computing device102athrough network110to preference tuner802in first server104. Preference tuner802may modify preferences included in conjoined interest set316based on modified preference list808.

Referring back toFIG. 2, in step206, locations of one or more persons in the group is/are determined. As shown inFIG. 3, location determiner304may receive determined group indication312. Location determiner304may be configured to determine a location for one or more persons in the group defined by determined group indication312. Furthermore, location determiner304may be configured to analyze the determined locations to generate an approximate geographical center location for the group. As shown inFIG. 3, location determiner304outputs the determined geographical center location as geographical center location318.

In some cases, location determiner304may determine a location for each person, and in other cases, location determiner304may determine locations for fewer than all of the persons in the group (e.g., due to an inability to determine or access such location information, due to privacy settings of a user enabling them to opt-out of providing their location, etc.). In any event, location determiner304may be configured to determine locations for one or more persons in the group in various ways. For example, in an embodiment, location determiner304may receive an identifier signal324, that includes an identifier such as an IP (Internet protocol) address or other identifier of a computing device of a user (e.g., for stationary devices). The identifier of identifier signal324may correspond to a geographic location for that computing device, and thereby to a geographic location of that user. In another embodiment, location determiner304may receive a location indication signal326from a computing device of a user that indicates the location of the computing device, and thereby indicates the geographic location of that user. The computing device may determine its location indicated in location indication signal326in any manner, including by a location determining technique such as GPS, cell tower triangulation, WLAN (wireless local area network) location determining techniques, by a user manually entering their position information into the computing device, and/or by other techniques. The location may be formatted in any manner, including in the form of an address (e.g., a street address, a city name, a postal code, etc.), in the form of geographic coordinates (e.g., latitude and longitude), etc.

Location determiner304may be configured to generate an approximate geographical center location for the group based on the plurality of determined locations of persons in the group in any manner. For instance, location determiner304may implement a geographic midpoint calculator that calculates a geographic midpoint as a “geographic center” or “center of gravity” (using Cartesian (x,y,z) coordinates; assumes Earth is a perfect sphere), may calculate the geographic center location by calculating a center of minimum distance (e.g., using the spherical law of cosines; assumes Earth is a perfect sphere), may calculate the geographic center location by calculating an average latitude/longitude (assumes Earth is flat; makes a close approximation for shorter distances between locations (e.g., less than 250 miles)), or may calculate the geographic center location in another manner, as would be known to persons skilled in the relevant art(s). In each case, each determined location for a person may be weighted according to the types and numbers of roads and intersections, traffic conditions, speed limits, etc., to take into account differences in travel time based on these conditions.

Referring back toFIG. 2, in step208, local search results are received for the group of persons that are generated based on the conjoined interest set and the determined plurality of locations. As shown inFIG. 3, local search service interface308may receive conjoined interest set316and geographical center location318. As described above, conjoined interest set316indicates a combined set of interests for the group of persons, and geographical center location318is an approximate geographical center location for the group. Local search service interface308is configured to communicate with a local search service, such as local search service120at second server108inFIG. 1, to obtain local search results for the group based on conjoined interest set316and geographical center location318.

For example, as shown inFIG. 3, local search service interface308may transmit local search request126to the local search service. Local search request126may include information of conjoined interest set316(“what” is being searched for) and the determined central location for the group indicated by geographical center location318the (“where” information). The local search service may process the information of local search request126to select one or more possible meeting locations for the group, in a manner as would be known to persons skilled in the relevant art(s) (e.g., by querying an inverted index, etc.). For example, the local search service may determine a list of potential meeting places (e.g., restaurants, taverns, pubs, office buildings, etc.) that have characteristics with high relevance with regard to the information included in conjoined interest set316. The determined potential meeting places may be weighted by the local search service based on how closely they match the information included in conjoined interest set316(closer matches are weighted higher), and based on how closely they are located to the central location for the group indicated by geographical center location318(shorter distances are weighted higher).

Note that the local search service (e.g., local search service120ofFIG. 1) may be a proprietary or commercially available local search service. Examples of network accessible local search services include Bing™ Maps provided by Microsoft Corporation, Google Maps™ provided by Google Inc., and Yahoo!® Local provided by Yahoo! Inc.

The local search service may provide the one or more possible meeting locations in local search response128, which is received by local search service interface308. As shown inFIG. 3, local search service interface308may output local search results322, which includes the possible meeting location(s) indicated in local search response128.

Referring back toFIG. 2, in step210, the local search results are enabled to be presented to at least one person of the group of persons. As shown inFIG. 3, output interface310may receive local search results322. Output interface310is configured to transmit local search results322to one or more of computing devices102a-102n(FIG. 1) as local search results130. Local search results130may be received by the computing devices, and displayed or otherwise presented to the associated user(s).

For instance,FIG. 9shows a block diagram of a portion of communication system100ofFIG. 1, in which output interface308enables local search results and related statistics to be presented, according to an example embodiment. As shown in the example ofFIG. 9, output interface308is configured to generate a user interface806to enable a person (e.g., coordinator for the group or other person) to review the possible meeting locations of local search results130.

As shown inFIG. 9, output interface308may generate a user interface definition904based on local search results322, which is transmitted from first server104through network110to computing device102ain a communication signal. User interface definition904may have any suitable form described elsewhere herein or otherwise known. User interface definition904defines a user interface that enables a user to review (e.g., view and/or hear) the one or more possible meeting locations of local search results130.

For instance, as shown inFIG. 9, application112at computing device102amay generate a user interface906based on user interface definition904. Application112may include a web browser that renders user interface906based on a web document version of user interface definition904. Alternatively, user interface906may be generated in other ways based on user interface definition904. User interface906may include any number and combination of user interface elements to enable meeting locations of local search results130to be presented. For instance, user interface906may display one or more meeting locations, may play voice that recites the one or more meeting locations, or may otherwise present the one or more meeting locations. A user at computing device102a(e.g., a group coordinator) may be enabled to interact with user interface906to select one of the meeting locations to be used by the group. Alternatively, all of the users of the group may be presented with user interface906at their computing devices, so that the users can interact with user interface906to vote on and thereby select one of the meeting locations to be used by the group (e.g., by a displayed vote tally, etc.).

Furthermore, in an embodiment, a statistics generator902may be present in first server104as shown inFIG. 9. Statistics generator902may be present in a meeting system to generate and/or enable display of statistics related to conjoined interest set316. For instance, in an embodiment, statistics generator902may calculate a frequency (e.g., a number of appearances) of each unique keyword in conjoined interest set316, may calculate a percentage of the persons of the group with which each keyword is associated, and/or may calculate other statistics regarding conjoined interest set316.

As shown inFIG. 9, statistics generator902may output statistics908, which includes the statistics calculated based on conjoined interest set316. Statistics908may be transmitted by output interface308through network110to computing device102ato be displayed in user interface906.

In an embodiment, when present, statistics generator902may be a separate element of a meeting system. In another embodiment, statistics generator902may be included in another element of the meeting system, such as being included in interest set generator306(ofFIG. 3).

B. Illustrative Examples of Meeting Place Determination

A meeting place for a group may be determined in various ways according to embodiments described herein. Some example embodiments are described as follows with respect toFIGS. 10-15,16A, and16B to illustrate operation of flowchart200(FIG. 2) and meeting systems118and300(FIGS. 1 and 3). These embodiments are provided for purposes of illustration, and are not intended to be limiting. Persons skilled in the relevant art(s) will recognize numerous variations to the example embodiments ofFIGS. 10-15,16A, and16B based on the teachings herein, and such variations are also within the scope of the present patent application.

In particular,FIGS. 10-15,16A, and16B show block diagrams of user interfaces that enable a meeting location to be determined for a group, according to example embodiments. The user interfaces ofFIGS. 10-15,16A, and16B are shown as having dimensions suitable for a smart phone display screen, but in other embodiments, may have other formats and/or dimensions suitable for display screens of other types of devices described elsewhere herein or otherwise known (e.g., a desktop computer, a laptop, a tablet, glasses having lenses that function as display screens, a wristwatch having a display screen, etc.). Furthermore, alternative types, combinations, and sequences of user interfaces may be presented than shown inFIGS. 10-15,16A, and16B that may be used to enable a meeting location to be determined for the group, as would be apparent to persons skilled in the relevant art(s) from the teachings herein.

In the examples ofFIGS. 10-15,16A, and16B, a first person (“Anna Jones”) interacts with a computing device having a display screen that displays the user interfaces ofFIGS. 10-15,16A, and16B. This first person may be considered a group coordinator for the group. InFIG. 10, the first person is communicating with a second person (“Emily Smith”) in a message thread1004(e.g., by text messaging) displayed in a user interface1002. In message thread1004, the location of the second user (“The Drake Hotel”) is indicated. A user interface element1006is displayed in user interface1002(e.g., a virtual button) displaying the text “Meet Up” that may be interacted with to initiate determining a meeting location for a group.

In this example, the first user decides to interact with user interface element1006(e.g., by touch) to initiate functionality for determining a meeting location for a group. In an embodiment, in response to interaction with user interface element1006, a user interface1102shown inFIG. 11is displayed in the display screen. For instance, user interface1102may be generated by group determiner302(e.g., as shown inFIG. 4). User interface1102displays a “Meet Up” home screen, which includes a listing1106of group members (e.g., determined according to step202ofFIG. 2), a first user interface element1108(e.g., a virtual button) displaying the text “Set Filters,” and a second user interface element1110(e.g., a virtual button) displaying the text “Launch.” In this example, listing1106includes “Anna” and “Emily”, which may have been automatically determined by automatic group generator404ofFIG. 4based on a parsing of message thread1004. At this point, the first user may interact with first user interface element1108to set filters with regard to the determination of the meeting location, or the first user may interact with second user interface element1110to have possible meeting locations generated.

For instance, user interface1202shown inFIG. 12may be displayed if the user opts to launch the meeting place determination by interacting with second user interface element1110inFIG. 11. User interface1202displays a ranked list1204of potential meeting locations. Ranked list1204may have been determined as described above (e.g., with respect to steps204,206, and208shown inFIG. 2), and displayed in user interface1202by output interface308(e.g., as shown inFIG. 9) as described above (e.g., with respect to step210ofFIG. 2). In the example ofFIG. 12, three potential meeting locations are displayed for ranked list1204(shown ranked 1-3), although other numbers of locations may be displayed alternatively. Any information may be displayed that is descriptive of each of the potential meeting locations, including location name, distance from the group central location, rating, address, and/or any other suitable descriptive information.

Note that in another embodiment, when user interface element1006is interacted with inFIG. 10, user interface1202may be directly generated and displayed to the user (without first displaying user interface1102ofFIG. 11). In this manner, each of steps202,204,206,208, and210of flowchart210may be performed in response to a single user interface interaction (e.g., a “one click” meeting location selection).

User interface1302shown inFIG. 13may be displayed if the user opts to set filters with regard to the determination of the meeting location by interacting with second user interface element1110inFIG. 11. User interface1302displays a filter set1304that may be used to tune preferences, modify the group members, and/or tune other parameters. Filter set1304may be generated by preference tuner802shown inFIG. 8. In the example ofFIG. 13, filter set1304includes first-third user interface elements1306,1308, and1310, a first user interface element set1312, and a second user interface element set1314. First user interface element1306is a text entry box that lists the current persons in the group. Second user interface element1308is a virtual button that can be interacted with to be enabled to modify the group members. Third user interface element1310is a pull down menu that enables various selections to be made for sorting search results (e.g., sorting the potential meeting locations by distance, price, etc.). First user interface element set1312is a set of check boxes that enable various categories of potential meeting locations to be displayed or not displayed (e.g., places that are open, places that are offering a deal, etc.). Second user interface element set1314is a set of check boxes that enable various cuisines to be displayed or not displayed (filtered out) (e.g., African cuisine, American cuisine, etc.). Each of sets1312and1314may include any number of selections having corresponding check boxes.

User interface1402shown inFIG. 14may be displayed if the user opts to modify the members of the group by interacting with second user interface element1308inFIG. 13. For instance, user interface1402may display a contact list maintained by the first user's computing device. User interface1402may be interacted with to navigate through the contact list to find one or more additional persons to add to the group. User interface1402displays a user interface element1406(e.g., a virtual button) that may be interacted with when finished adding persons to the group.

User interface1502shown inFIG. 15may be displayed after the first user interacted with user interface1402ofFIG. 14to add a new group member (“Miles White”). User interface1502is the same as user interface1102ofFIG. 11, except that listing1106of group members onFIG. 15includes three persons (“Anna”, “Emily”, and “Miles”) rather than two persons. Note that a user interface element next to each displayed person in listing1106may be interacted with to delete the corresponding person from the group.

User interface1602shown inFIG. 16Amay be displayed if the user opts to launch the meeting place determination by interacting with second user interface element1110inFIG. 15. User interface1602is generally similar to user interface1202shown inFIG. 12, displaying a ranked list1604of potential meeting locations. Ranked list1604may have been determined as described above (e.g., with respect to steps204,206, and208shown inFIG. 2), and displayed in user interface1602by output interface308(e.g., as shown inFIG. 9) as described above (e.g., with respect to step210ofFIG. 2). In the example ofFIG. 16A, three potential meeting locations are displayed for ranked list1604(shown ranked 1-3), although other numbers of locations may be displayed alternatively. The set of potential meeting locations displayed for ranked list1604is different than the set of potential meeting location displayed for ranked list1204inFIG. 12due to the addition of the third person to the group (“Miles”). This may be because the third person's profile information was included in the analysis performed by interest set generator306ofFIG. 3(in addition to the profile information of the first two users), leading to a different conjoined interest set316being generated. For instance, the third person may be intolerant to gluten, which may be indicated in the third person's profile information, and which may have led to a gluten free restaurant being ranked highly in ranked list1204.

FIG. 16Bshows an alternative version of user interface1602. InFIG. 16B, user interface1602displays ranked list1604of potential meeting locations, and further displays statistics1606. Statistics1606may be generated by statistics generator902ofFIG. 9, and may indicate various statistics related to the group. For instance, inFIG. 16B, statistics1606indicate a percentage of the group members that had preferences for vegetables (66%), for wine (33%), and for a highly rated restaurant (100%) in a desired meeting location.

C. Example Application Embodiments

Application112, mobile app124, and web application116, which execute at computing devices102a,102b, and102nofFIG. 1, respectively, encompass many types of applications. For instance, application112may be an office suite application, a desktop application, a mobile application, a web application, or any other type of application capable of being run on computing device102a. Office suite applications include various types of productivity enhancing applications, such as messaging applications, word processing applications, spreadsheet applications, presentation applications, etc. Desktop applications include various types of applications that configured to operate in computer desktops (e.g., of desktop computers), including some office suite applications, desktop widgets or gadgets (interactive tools that typically provide single purpose services, such as news streaming, providing the current weather, showing current stock quotes, etc.), etc.

Mobile app124is an application configured to run on a mobile device, which may be downloaded to computing device102bthrough an application distribution platform or otherwise obtained. Examples of application distribution platforms for mobile apps include the Apple® App Store provided by Apple Inc. of Cupertino, Calif., Google® Play™ provided by Google Inc., the Microsoft® Windows® Phone Store provided by Microsoft Corp., the Microsoft® Store Online, and BlackBerry® App World™ provided by Research in Motion Limited of Waterloo, Ontario, Canada.

Web application116may be an application that may be accessed by over a network (e.g., network110), and/or may be an application that is coded in a browser-supported programming language (e.g., JavaScript, combined with a browser-rendered markup language such as HTML (hypertext markup language)) and executes in a web browser to render the application executable. Examples of suitable web browsers include Internet Explorer®, developed by Microsoft Corp., Mozilla Firefox®, developed by Mozilla Corp. of Mountain View, Calif., Safari®, developed by Apple Inc., and Google® Chrome. Examples of applications that may be run in a browser and/or a mobile app interface include social networking applications, search engines, navigational assistance applications (e.g., mapping applications, restaurant locating applications, traffic applications, etc.), gaming applications, financial planning applications, etc.

D. Example Computing Device and Server Embodiments

Application112, mobile app124, web application116, meeting system118, local search service120, meeting system300, group determiner302, location determiner304, interest set generator306, local search service interface308, output interface310, manual input enabler402, automatic group generator404, profile information retriever602, profile intersection determiner604, social network606, search engine608, messaging server610, message thread analyzer702, preference tuner802, statistics generator902, flowchart200, and flowchart500may be implemented in hardware, or hardware combined with software and/or firmware. For example, application112, mobile app124, web application116, meeting system118, local search service120, meeting system300, group determiner302, location determiner304, interest set generator306, local search service interface308, output interface310, manual input enabler402, automatic group generator404, profile information retriever602, profile intersection determiner604, social network606, search engine608, messaging server610, message thread analyzer702, preference tuner802, statistics generator902, flowchart200, and/or flowchart500may be implemented as computer program code/instructions configured to be executed in one or more processors and stored in a computer readable storage medium. Alternatively, application112, mobile app124, web application116, meeting system118, local search service120, meeting system300, group determiner302, location determiner304, interest set generator306, local search service interface308, output interface310, manual input enabler402, automatic group generator404, profile information retriever602, profile intersection determiner604, social network606, search engine608, messaging server610, message thread analyzer702, preference tuner802, statistics generator902, flowchart200, and/or flowchart500may be implemented as hardware logic/electrical circuitry.

For instance, in an embodiment, one or more of meeting system118, local search service120, meeting system300, group determiner302, location determiner304, interest set generator306, local search service interface308, output interface310, manual input enabler402, automatic group generator404, profile information retriever602, profile intersection determiner604, message thread analyzer702, preference tuner802, statistics generator902, flowchart200, and/or flowchart500may be implemented together in a system-on-chip (SoC). The SoC may include an integrated circuit chip that includes one or more of a processor (e.g., a microcontroller, microprocessor, digital signal processor (DSP), etc.), memory, one or more communication interfaces, and/or further circuits and/or embedded firmware to perform its functions.

FIG. 17depicts an exemplary implementation of a computing device1700in which embodiments of the present invention may be implemented. For example, computing devices102a-102n, first server104, and/or server108may be implemented in one or more computing devices similar to computing device1700, including one or more features of computing device1700and/or alternative features. The description of computing device1700provided herein is provided for purposes of illustration, and is not intended to be limiting. Embodiments of the present invention may be implemented in further types of computer systems, as would be known to persons skilled in the relevant art(s).

As shown inFIG. 17, computing device1700includes one or more processors1702, a system memory1704, and a bus1706that couples various system components including system memory1704to processor1702. Bus1706represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. System memory1704includes read only memory (ROM)1708and random access memory (RAM)1710. A basic input/output system1712(BIOS) is stored in ROM1708.

Computing device1700also has one or more of the following drives: a hard disk drive1714for reading from and writing to a hard disk, a magnetic disk drive1716for reading from or writing to a removable magnetic disk1718, and an optical disk drive1720for reading from or writing to a removable optical disk1722such as a CD ROM, DVD ROM, or other optical media. Hard disk drive1714, magnetic disk drive1716, and optical disk drive1720are connected to bus1706by a hard disk drive interface1724, a magnetic disk drive interface1726, and an optical drive interface1728, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for the computer. Although a hard disk, a removable magnetic disk and a removable optical disk are described, other types of computer-readable storage media can be used to store data, such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like.

A number of program modules may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. These programs include an operating system1730, one or more application programs1732, other program modules1734, and program data1736. Application programs1732or program modules1734may include, for example, computer program logic (e.g., computer program code or instructions) for implementing application112, mobile app124, web application116, meeting system118, local search service120, meeting system300, group determiner302, location determiner304, interest set generator306, local search service interface308, output interface310, manual input enabler402, automatic group generator404, profile information retriever602, profile intersection determiner604, message thread analyzer702, preference tuner802, statistics generator902, flowchart200, and/or flowchart500(including any step of flowcharts200and500), and/or further embodiments described herein.

A user may enter commands and information into the computing device1700through input devices such as keyboard1738and pointing device1740. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, a touch screen and/or touch pad, a voice recognition system to receive voice input, a gesture recognition system to receive gesture input, or the like. These and other input devices are often connected to processor1702through a serial port interface1742that is coupled to bus1706, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB).

A display screen1744is also connected to bus1706via an interface, such as a video adapter1746. Display screen1744may be external to, or incorporated in computing device1700. In addition to display screen1744, computing device1700may include other peripheral output devices (not shown) such as speakers and printers.

Computing device1700is connected to a network1748(e.g., the Internet) through an adaptor or network interface1750, a modem1752, or other means for establishing communications over the network. Modem1752, which may be internal or external, may be connected to bus1706via serial port interface1742, as shown inFIG. 17, or may be connected to bus1706using another interface type, including a parallel interface.

As used herein, the terms “computer program medium,” “computer-readable medium,” and “computer-readable storage medium” are used to generally refer to media such as the hard disk associated with hard disk drive1714, removable magnetic disk1718, removable optical disk1722, as well as other media such as flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like. Such computer-readable storage media are distinguished from and non-overlapping with communication media (do not include communication media). Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave. 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 wireless media such as acoustic, RF, infrared and other wireless media. Embodiments are also directed to such communication media.

As noted above, computer programs and modules (including application programs1732and other program modules1734) may be stored on the hard disk, magnetic disk, optical disk, ROM, or RAM. Such computer programs may also be received via network interface1750, serial port interface1742, or any other interface type. Such computer programs, when executed or loaded by an application, enable computing device1700to implement features of embodiments of the present invention discussed herein. Accordingly, such computer programs represent controllers of the computing device1700.