People often use search engines to find goods and services in their city or nearby. Sometimes, location information is inaccurate and can lead to problems. For example, when address information is not sufficient, location identifiers on a map may be shown in the wrong location or stacked in a pile in the center of a city. This is confusing and annoying to those using the search engines.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced.
Briefly, aspects of the subject matter described herein relate to geographic searching. In aspects, a search term and a sort indication are received for performing a search. Location information regarding the search is also obtained. If the sort indication indicates that distance is to be used for the search results, a first set of actions is performed that avoids displaying low precision search results; otherwise, a second set of actions is performed that orders search results by a non-distance measure.
As used herein, the term “includes” and its variants are to be read as open-ended terms that mean “includes, but is not limited to.” The term “or” is to be read as “and/or” unless the context clearly dictates otherwise. The term “based on” is to be read as “based at least in part on.” The terms “one embodiment” and “an embodiment” are to be read as “at least one embodiment.” The term “another embodiment” is to be read as “at least one other embodiment.”
As used herein, terms such as “a,” “an,” and “the” are inclusive of one or more of the indicated item or action. In particular, in the claims a reference to an item generally means at least one such item is present and a reference to an action means at least one instance of the action is performed.
Sometimes herein the terms “first”, “second”, “third” and so forth may be used. Without additional context, the use of these terms in the claims is not intended to imply an ordering but is rather used for identification purposes. For example, the phrase “first version” and “second version” does not necessarily mean that the first version is the very first version or was created before the second version or even that the first version is requested or operated on before the second versions. Rather, these phrases are used to identify different versions.
Headings are for convenience only; information on a given topic may be found outside the section whose heading indicates that topic.
Other definitions, explicit and implicit, may be included below.
Aspects of the subject matter described herein are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, or configurations that may be suitable for use with aspects of the subject matter described herein comprise personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microcontroller-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, personal digital assistants (PDAs), gaming devices, printers, appliances including set-top, media center, or other appliances, automobile-embedded or attached computing devices, other mobile devices, distributed computing environments that include any of the above systems or devices, and the like.
Aspects of the subject matter described herein may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. Aspects of the subject matter described herein may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
The computer 110 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 110 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media.
Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile discs (DVDs) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer 110.
Communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, discussed above and illustrated in
A user may enter commands and information into the computer 110 through input devices such as a keyboard 162 and pointing device 161, commonly referred to as a mouse, trackball, or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, a touch-sensitive screen, a writing tablet, or the like. These and other input devices are often connected to the processing unit 120 through a user input interface 160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB).
A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190. In addition to the monitor, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 195.
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 may include a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160 or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
As mentioned previously, users may be confused and annoyed with results returned from search engines.
As used herein, the term component is to be read to include hardware such as all or a portion of a device, a collection of one or more software modules or portions thereof, some combination of one or more software modules or portions thereof and one or more devices or portions thereof, and the like.
Turning to
The client 205, the location server 206, and the search server 207 may comprise or reside on one or more computing devices. Such devices may include, for example, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microcontroller-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, cell phones, personal digital assistants (PDAs), gaming devices, printers, appliances including set-top, media center, or other appliances, automobile-embedded or attached computing devices, other mobile devices, distributed computing environments that include any of the above systems or devices, and the like. An exemplary device that may be configured to act as one of the above comprises the computer 110 of
Although the terms “client” and “server” are sometimes used herein, it is to be understood, that a client may be implemented on a machine that has hardware and/or software that is typically associated with a server and that likewise, a server may be implemented on a machine that has hardware and/or software that is typically associated with a desktop, personal, or mobile computer. Furthermore, a client may at times act as a server and vice versa. At times, two or more entities that more frequently act as a client or server may concurrently be peers, servers, or clients. In an embodiment, a client and server may be implemented on the same physical machine.
Furthermore, as used herein, each of the terms “server” and “client” may refer to one or more physical or virtual entities, one or more processes executing on one or more physical or virtual entities, and the like. Thus, a server may include an actual physical node upon which one or more processes execute, a virtual node upon which one or more processes execute, a service executing on one or more nodes, a group of nodes that together provide a service, and the like. A service may include one or more processes executing on one or more physical or virtual entities. Furthermore, a single process may implement one or more servers.
The term “process” and its variants as used herein may include one or more traditional processes, threads, components, libraries, objects that perform tasks, and the like. A process may be implemented in hardware, software, or a combination of hardware and software. In an embodiment, a process is any mechanism, however called, capable of or used in performing an action. A process may be distributed over multiple devices or located on a single device.
The client 205 may include components for receiving user input, displaying output, interacting with the location server 206 and the search server 207, and the like. Some exemplary components that may be included on the client 205 are described in conjunction with
The location server 206 may receive input such as an address, city, or other address information, and may return location information such as one or more coordinates. These coordinates may include latitude, longitude, altitude, or the like. The location server 206 may also return an indication of the precision of the returned location information. For example, when given a full valid address, the location server 206 may return latitude and longitude coordinates that have high precision. As another example, when given an invalid address, a city name without other address information, or an address for a location for which there is not high precision coordinates, the location server 206 may return coordinates with medium, low, or other precision results. For example, if given a city, the location server 206 may return coordinates of a location (e.g., a “center” point) that represents the city. In some embodiments, any location information that is not high precision may be termed as a low precision result even if the location information has more information than just a coordinate representing a city.
In one embodiment, data that indicates whether a location is high precision or low precision may be provided implicitly by indicating a size. For example, this data may indicate a relatively large size for a location that represents a city and a relatively small size for a location that represents a specific address.
In one embodiment, the location server 206 may be implemented as a geocoding server. A geocoding server receives an address and returns one or more coordinates corresponding to the address.
The client 205 may use the returned location information (e.g., one or more coordinates) to formulate a query to provide to the search server 207. The client 205 may also use other user input to formulate the query. For example, a user may indicate that the user wants the results to be sorted by distance. In this example, the client 205 may formulate a query that excludes low precision results and that orders the results by distance from an indicated location. The client 205 may then provide this query to the search server 207, receive results therefrom, and display a graphical representation (e.g., a map, list, or the like), that represents the results.
In another example, the user may indicate that the user wants the results sorted in a non-distance manner. A non-distance sort order is any sort order that orders the results primarily or completely based on something other than distance. Some exemplary not-distance sort orders include relevance, rating, alphabetic, review score, price, and the like. Other non-distance sort orders may also be used without departing from the spirit or scope of aspects of the subject matter described herein.
The search server 207 comprises any server that is capable of returning search results based on a query. A query may include a search term, location information (e.g., a city name, address, coordinates, or other location information), area information around the coordinates (e.g., a radius that defines a circle that is centered at the coordinates, other information that defines an area around the coordinates, or the like), and the like. A search term may include a string, a sound clip (e.g., representing a speech to text conversion), or the like. A string may include one or more characters and zero or more white spaces. A character may include a symbol, number, letter of an alphabet, punctuation, or the like. White space may include one or more characters that represent horizontal or vertical space in typography.
The search server 207 may employ the database 210 in obtaining search results. The database 210 may store data that represents each coordinate of a location and a precision of the location.
The database 210 may comprise a relational database, an object-oriented database, a hierarchical database, a network database, another type of databases, some combination or extension of the above, and the like. Data stored in a database may be organized in tables, records, objects, other data structures, and the like. The data stored in a database may be stored in dedicated database files, dedicated hard drive partitions, HTML files, XML files, spreadsheets, flat files, document files, configuration files, other files, and the like. A database may reference a set of data that is read-only to the database or may have the ability to read and write to the set of data.
Data in a database may be accessed via a database management system (DBMS). A DBMS may comprise one or more programs that control organization, storage, management, and retrieval of data of a database. A DBMS may receive requests to access data in a database and may perform the operations needed to provide this access. Access as used herein may include reading data, writing data, deleting data, updating data, a combination including two or more of the above, and the like.
In describing aspects of the subject matter described herein, for simplicity, terminology associated with relational databases may be used herein. Although relational database terminology may be used herein, the teachings herein may also be applied to other types of databases including those that have been mentioned previously.
Turning to
The system 300 may include one or more computing devices that host the components mentioned above. Such devices may include, for example, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microcontroller-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, cell phones, personal digital assistants (PDAs), gaming devices, printers, appliances including set-top, media center, or other appliances, automobile-embedded or attached computing devices, other mobile devices, distributed computing environments that include any of the above systems or devices, and the like.
An exemplary device that may be configured host the components of the system 300 comprises the computer 110 of
The application 315 may seek to obtain search results from the search components 305. The application 315 may include one or more processes that are capable of communicating with the interface 312. In one embodiment, the application 315 may be implemented as a Web browser and may have components for accessing resources on the Internet. In another embodiment, the application 315 may be implemented as a proprietary search program that includes facilities for receiving search terms, location information, and sort order indications. The application 315 may then provide this data to the interface 312 and may receive search results that are responsive to the search indicated by the data.
The display 316 may be implemented by any device capable of providing output to a user. The monitor 191 of
The communications mechanism 320 allows the search components 305 to communicate with other entities. For example, the communications mechanism 335 may allow the search components to communicate with the location server 206 and the search server 207 of
The interface 312 may be operable to receive a search term and a sort indication of whether distance is to be used for a sort order for ordering search results responsive to the search term. A sort indication may be represented explicitly or implicitly. For example, a sort indication to sort by distance may be indicated explicitly by the presence of a parameter, implicitly by the absence of a parameter, vice versa, or in some other implicit or explicit manner. The interface 312 may receive the search term and sort indication from the application 315. The interface 312 may provide this data to the location manager 310 and the query manager as needed.
In one example, the interface 312 may include a graphical user interface that allows a user to interact with the search components in a graphical manner (e.g., entering search terms in a text box, entering sort order by a drop down box, receiving output via a graphical element, and the like). In one embodiment, the graphical user interface may include a Web browser.
In another example, the interface 312 may include an application programming interface that allows programs that interact with the search components 305.
The interface 312 may also be operable to display search results on the display 316. The interface 312 may use various graphical user elements such as a map element, a list element, a table element, other elements, or the like in displaying search results on the display. In displaying a list or similar structure, the interface 312 may display the search results in an order indicated by the sort order.
The location manager 310 may be operable to obtain location information that indicates a location associated with the search term. For example, referring to
The query manager 311 may be operable to perform a first set of actions if the sort indication indicates that distance is to be used in a sort order for ordering search results responsive to the search term and to perform a second set of actions if the sort indication indicates that distance is not to be used in a sort order for ordering search results responsive to the search term. The first set of actions may include, for example:
1. Creating a query that indicates that data that is associated with high precision location information is to be returned in the search results and that the sort order is by distance from a location indicated by the query;
2. Providing the query to a search server (e.g., the search server 207 of
3. Receiving, from the search server, a response that includes the search results. The search results included in the response are ordered by the sort order (i.e. distance) indicated by the query.
The second set of actions may include, for example:
1. Creating a query that indicates that data that is associated with any precision is to be returned in the search results. The query may also indicate that the sort order for the search results is an order other than distance from the location. The indications above may be provided implicitly or explicitly in a manner similar to indicating a sort indication as described previously;
2. Providing the query to the search server (e.g., the search server 207 of
3. Receiving a response that includes the search results from the search engine. The search results are ordered by the sort order (i.e., non-distance) indicated by the query.
When providing results on a map, the query manager 311 may be further operable to refrain from providing low precision locations to the interface 312. When results are to be provided to a map, the sort indication may indicate that distance is to be used in the sort order for ordering search results. In this case, low precision locations may be confusing or annoying to a user and can be omitted by the query manager 311 to improve the displayed search results.
In addition, the query manager 311 may be further operable to provide a single result for a company to the interface 312 if the company has multiple locations. This may also help to avoid confusing or annoying a user and to avoid redundancy, for example.
Turning to
At block 412, location information is obtained. For example, referring to
At block 413, a determination is made as to whether the sort indication indicates that a distance is to be used in the sort order. If so, the actions associated with blocks 415-425 may be performed; otherwise, the actions associated with blocks 430-440 may be performed.
At block 415, a distance query is created. For example, referring to
At block 420, the query is provided to the search server. For example, referring to
At block 425, search results are received. For example, referring to
At block 430, a non-distance query is created. For example, referring to
At block 435, the query is provided to the search server. For example, referring to
At block 440, search results are received. For example, referring to
At block 445, the search results may be displayed. For example, referring to
At block 450, other actions, if any, may be performed.
Turning to
At block 515, location data is obtained from the one or more locations indicated in the searchable data. For example, referring to
At block 520, the location data is sent to a location server. For example, referring to
At block 525, coordinates and precision data are received from the location server. For example, referring to
The actions associated with blocks 520-525 may be omitted if the location data obtained at block 515 already contains coordinates or other location information sufficient to perform the actions of blocks 530-535.
At block 530, a database of a search server is populated with the precision data such that each coordinate of a location is associated with a precision of the location. For example, referring to
At block 535, other actions if any, may be performed. Other actions may include grouping coordinates and precision by company. Other actions may also include grouping high precision coordinates together and non-high precision coordinates together.
In one embodiment, the term “company” as used herein means any real-world entity and may include a person, a legal entity including profit and non-profit organizations, an organization, an association, or the like. In another embodiment, the term “company” as used herein means a virtual or other non real-world entity. Software is one example of a virtual entity that may be represented by code on a physical device. In the claims, the term company is to be construed to cover both of the embodiments above unless the context indicates otherwise.
As can be seen from the foregoing detailed description, aspects have been described related to geographic searching. While aspects of the subject matter described herein are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit aspects of the claimed subject matter to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of various aspects of the subject matter described herein.