Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
With reference to
A number of program modules may be stored on the hard disk, magnetic disk 29, optical disk 31, ROM 24 or RAM 25, including an operating system 35, (including a file system 36 therein and/or associated therewith), one or more application programs 37, other program modules 38 and program data 39. A user may enter commands and information into the personal computer 20 through input devices such as a keyboard 40 and pointing device 42. Other input devices (not shown) may include a microphone, speaker, joystick, game pad, satellite dish, scanner or the like. These and other input devices are often connected to the processing unit 21 through a serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or universal serial bus (USB). A monitor 47 or other type of display device is also connected to the system bus 23 via an interface, such as a video adapter 48. In addition to the monitor 47, personal computers typically include other peripheral output devices (not shown), such as speakers and printers.
The personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 49. The remote computer 49 may be another 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 personal computer 20, although only a memory storage device 50 has been illustrated in
When used in a LAN networking environment, the personal computer 20 is connected to the local network 51 through a network interface or adapter 53. When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establishing communications over the wide area network 52, such as the Internet. The modem 54, which may be internal or external, is connected to the system bus 23 via the serial port interface 46. In a networked environment, program modules depicted relative to the personal computer 20, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
Briefly described, the present invention provides a method and system for allowing merchants that are outside of a given geographical boundary, but who provide service to the geographical boundary, to be included in a result set (e.g., of a bounded query) despite the merchant's actual physical location being located outside the geographical boundary, and despite the search term containing non-obvious information about a placename, whether or not it is inside the given geographic boundary, that serves the purpose of binding that search term to the placename's location. In addition, the system permits the merchant's advertisement to be included in a result set for a proximity query directed to a location in the area. To this end, the present invention provides additional non-obvious location bindings (e.g., neighborhoods) in which the regional service merchant provides services, but in which the regional service merchant does not have a physical address, and in which the exact identifiable binding location is unknown based merely on the contents of the search term. A binding is created between the regional service merchant and each business and each category to which the regional service merchant belongs. The “category” phrase part is one of three parts of the Local Name search phrase (the other two being the join word preposition and the placename). The “category” phrase part is typically non-geographic, yet also allows for the proper contextual parsing of “New York pizza near San Francisco”, where “New York pizza” is the category phrase part. The category phrase is also referenced herein as the “Descriptive Word-Phrase”. The system facilitates grammatically-correct linguistic order through the use of the three phrase parts, yet it does not need to require such order. The system also allows for mis-spellings, slang, “L33t speak”, and other derivatives. The join word preposition may be a Null value if entered in the join word field as Null, as in the example “pizza SOMA”. The phrase parts may also be in any order, as in the examples “near SOMA pizza” and “SOMA pizza”.
A tool user machine 208 is similarly coupled to the web server machine 204, via the Internet 206, a Local Area Network, or the like. Alternatively, the functions of the web server machine 204 and the tool user machine 208 may be provided on one machine, or the functions of the client machine 202 and the web server and tool user machines 204, 208 may be provided on one machine or may be distributed over multiple machines.
The client machine 202 includes network access software, such as a browser 210. The web server machine 204 includes web server software 212 for accessing and serving content to the browser upon request. The web server software 212 may be, for example, Apache software. As part of its features, the web server software 212 may include data access software 214. The data access software 214 includes database query software, such as structured query language (SQL) software, for example as is provided with Microsoft Corporation's SQL server software. The web server machine 204 also includes web files 215 that provide web pages for requesting search engine advertisements. The web server machine includes or is associated with at least one database 218.
The tool user machine 208 includes a special application programming interface (API) 220. As is described further below, the data entry tool set 222 accesses the database 218 via the API 220 and data access software 216. The API 220 exists to automatically enforce various business rules that are required to maintain the logical consistency of the data in the database. These rules include restrictions on the type and nature of regional service merchants (e.g., the regional service merchant must have glyphs and/or text, and so forth that match the enduser's natural language phrase query).
The database 218 maintains a schema that includes at least one entry for each business listed with the search engine. The business information may be grouped, referenced and categorized according to a defined taxonomy. The taxonomy may be hierarchical (as is the case with an Internet directory) or flat (as is the case with an Internet search engine) or both (as is the case when the two are combined), where each keyword phrase (also called a “Local Name” herein) is its own category in the hierarchy. For a typical business, the advertisement may include the category (e.g., “pizza delivery”), the location of the business (i.e., address), the ZIP code of the location, a unique identification for the business and the name of the business. An example of such a business entry 300 is shown in
To locate a business, a user first navigates to a search engine website, such as the web page 500 shown in
The web page 500 includes a data entry field 502 for entering search terms or directory categories, such as a category or business name. The user may request either a boundary query, such as by entering a ZIP code, city, or neighborhood, or a proximity query, by entering an address, ZIP code, coordinates, or the like. An additional field (intentionally not shown in
After the user enters the appropriate information, a search is requested (e.g., by clicking on a “GO” button 506). The data entered by the user is forwarded to the web server machine 202, and is received by the web server software 212. The data access software 214 matches the search term and extracts the appropriate business advertisements from the database 218.
It can be understood that the present invention is highly amenable to implementation on the web in a variety of configurations that are typical of internet search engines and internet directories, and a database or any other data store (i.e. a map database) may be utilized for business advertisement retrievals. To this end, retrieval can be accomplished via the most basic access to a computer file for small business sets or through something as complicated as an optimized SQL query for large business sets. An exemplary process that may be used by the data access software 214 to retrieve appropriate businesses and/or name information is described in U.S. application Ser. No. 09/629,275, filed Jul. 31, 2000, entitled “Business Directory Search engine,” and incorporated herein by reference. Briefly described, the data access software 214 matches the location and name or category information entered by a user with entries in the database to return a business advertisements result set. The data access software may need to convert address information to a longitude and latitude point, and may have to use an intelligent inquiry to obtain appropriate matches. The records are extracted by the data access software 214, forwarded to the web server machine, which in turn serves the records to the client machine 202 so that the records may be displayed by the browser 210.
As described in the background section, the entries described above do not permit a business that is servicing an area that is described by non-obvious location—binding words or phrases (aka “placenames”), but is not listed in the area (a “regional service merchant”), to be returned in the result set for a search directed to the area. Using the previous example, Ultimate Pizza may deliver pizza to “Union Square” and “SOMA”, in addition to zip code 94123. If only the advertisements above were available for the business, then a bounded query search directed to “Union Square” and “SOMA” would not return Ultimate Pizza. In fact, “Union Square” might return a New York City result when in this example the San Francisco placename of the same name is what is intended. Furthermore, “SOMA” which is a nickname for “South of Market” might return something else related to “soma”. (Using a more universal example, “Wall Street” may return any number of responses that are not related to the intended street, neighborhood, placename, business name, building, or industry.) In addition, a proximity search directed to a location in one of these ZIP codes would not return Ultimate Pizza, unless 1980 Union Street is coincidentally close enough to the location to be in the result set for the search.
In accordance with one aspect of the invention, separate entries are provided for a regional service merchant that associate the regional service merchant with additional location-infused keyword phrases (aka “Local Name” or the simpler “keyword phrase”), whether obvious or not (e.g., “Union Square” or “SOMA”) in which the regional service merchant provides services. For each business and each category to which a regional service merchant belongs, an entry is written to the database 218 for associating each location-infused keyword phrase that the business services with the regional service merchant.
Again referencing the example above, separate entries are entered in the database 218 for each ZIP code and category to which Ultimate Pizza belongs.
The regional service merchant entries permit regional service merchants to be returned in a search directed to the serviced region, whether obvious or not. For a bounded query (e.g., directed to one or more placenames), the placenames are retrieved for that region and queried against merchants and categories and/or names that meet the search requirements. Because the regional service merchant entries include placename matches for regions serviced by the regional service merchant, the regional service merchant is included in a region search where one or more placenames match. For a proximity search, regional service merchants may be returned against a request made for a location within a placename in which the regional service merchants are registered.
In accordance with another aspect of the present invention, schema is maintained for the regional service merchants that includes lines of text and/or a glyph or glyphs. The text and/or a glyph may be maintained in a schema separate from the regional service merchant entries, or may be maintained as a separate entry and accessed via the SQL software, such as the data access software 214.
When a search is conducted, the text and/or glyphs are returned along with the regional service merchant's business advertisement so as to explain to a user why a business not physically residing in the search area has been included in the result set. The text or glyph may indicate, for example, a link to a map indicating the complete set of locations served by this particular store. The text and or glyph does not need to reference a geographic point or area, although the glyph 704 used in
Entries in the database 218 may be entered or amended via the data entry tool set 222. The application programming interface 220 ensures that, if the business is listed as a regional service merchant, then text and/or glyph indicating that the business is a regional service merchant is stored in association with the business advertisement. This process ensures that text and/or a glyph is available so that the regional service merchant is properly portrayed as such to the user. To do this, the application programming interface 220 may, for example, ensure that information regarding the fact that the business is a regional service merchant is stored with the regional service merchant entries (e.g., the entry “RSM”), and that text and/or glyph is stored in association with a regional service merchant entry.
Turning now to an explanation of the operation of the present invention,
At step 902 the stored regional service merchant (or “RSM”) data about a business is retrieved. Retrieval can be accomplished via the most basic access to a computer file for small business sets or through something as complicated as an optimized SQL query for large business sets. The invention may be effectively practiced using any number of data stores.
At step 904, the data access software accesses an entry, and determines if it matches the entered search term which contains the non-obvious placename. If not, then the data access software determines if all entries have been accessed (step 908). If not, then the process loops back to step 904 and the data access software accesses the next entry. This process continues until the data access software accesses a match for the entire search term, and for its pre-concatenated parts, which are composed of the category word, the join word, and the non-obvious placename, which may be assembled in any order, where step 906 branches to step 910. The data access software then determines if the category word of the entry having the correct join word and the correct placename matches the search term, and if not, step 910 branches to step 908 where a determination is made whether all records have been accessed. If not, then the process loops back to step 904 and the data access software accesses the next record. This process continues until the data access software accesses a match for the entire search term and for its pre-concatenated parts, where step 906 branches to step 910, and step 910 branches to step 912, where the entry matching the category word, the join word, and the non-obvious placename is retrieved. Step 912 then branches to step 908, where a determination is made whether all relevant entries have been accessed. If not, then the process loops back to step 904 where the next entry is accessed.
The foregoing steps describe a simplified approach to retrieving relevant entries. It can be understood that a more sophisticated logic may be used to speed up the process. For example, in a high performance implementation, steps 904 to 912 may be simultaneously executed in one omnibus query to an optimizing SQL access layer. Use of SQL in this fashion is commonplace and providing as much information about the desired result set as possible to the SQL optimizer generally results in the best performance.
In any event, after all entries have been accessed, then step 908 branches to
The present invention is advantageous in that it permits a regional service merchant to be displayed in the result set for a search directed to an area that may be named in a non-obvious manner, and despite the regional service merchant not having a physical location in the area. In addition, the use of the text and/or glyph describes to the user why the regional service merchant is displayed so as to avoid confusion.
While the invention is susceptible to various modifications and alternative constructions, a certain illustrated embodiment thereof is shown in the drawings and has been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention. It is especially noteworthy that this invention is amenable to deployment on a variety of network topologies, and while the exemplary embodiment is described with reference to directory access happening over the Internet and tools use happening on a LAN-based client machine other topologies (such as the reverse of the exemplary embodiment, or either hybrid) are readily practicable.