The present disclosure relates to the field of data processing, in particular, to apparatuses, methods and storage medium associated with geographic coordinates based content search.
The background description provided herein is for the purpose of generally presenting the context of the disclosure. Unless otherwise indicated herein, the materials described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Advances in computing, networking and related technologies have led to proliferation in the availability of contents through the Internet. Today, users routinely use search services, such as Google®, Bing®, Yahoo®, and so forth, to locate information. Typically, a search service would maintain a collection of indices indexing the contents available on Internet. The indices are typically keywords based, that is based on the presence of keywords in the content and/or the metadata associated with content, such as non-textual audio/video content. For example, an index would be generated and stored to keep track that a web page with the keywords “latitude” may be potentially relevant to user searching for information with search criteria including the keyword “latitude,” and/or its synonyms. In response to a search query, the search service will utilize the keyword based indices or a subset thereof to generate and return an answer set with locators to potential relevant contents to the search query. Certain ranking and/or relevance analysis algorithm may be applied/used to filter and/or order the potential relevant contents included in the answer set.
Embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings. To facilitate this description, like reference numerals designate like structural elements. Embodiments are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings.
Apparatuses, methods and storage medium associated with geographic coordinates based content search are disclosed herein. In embodiments, a search service may be configured to analyze a plurality of contents having non-geographic coordinate content items, e.g., contents available on the Internet having textual keywords. The analysis may include determination of whether the non-geographic coordinate content items are associated with a plurality of locations on Earth's surface. The locations may be identifiable by a plurality of geographic coordinates of a geographic coordinate system, e.g., geodetic latitudes and longitudes. For contents with non-geographic coordinate content items recognized to be associated with a plurality of locations, the search service may generate and store indices that index the geographic coordinates of the locations to the contents with associated non-geographic coordinate content items. The stored indices may be subsequently used to identify the indexed contents as potential relevant contents of an answer set to a search query.
Further, in embodiments, the search service may be configured to receive a search query, and in response to receipt of a search query, process the search query, and generate and return an answer set to the search query based at least in part on the stored indices. The search service may process the search query, including analysis of association of non-geographic coordinate search criteria of the search query with locations of Earth's surface. The search service may further traverse the stored geographic coordinates based indices based at least in part on geographic coordinates of the locations associated with the non-geographic coordinate search criteria.
In the following detailed description, reference is made to the accompanying drawings which form a part hereof wherein like numerals designate like parts throughout, and in which is shown by way of illustration embodiments that may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of embodiments is defined by the appended claims and their equivalents.
Various operations may be described as multiple discrete actions or operations in turn, in a manner that is most helpful in understanding the claimed subject matter. However, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations may not be performed in the order of presentation. Operations described may be performed in a different order than the described embodiment. Various additional operations may be performed and/or described operations may be omitted in additional embodiments.
For the purposes of the present disclosure, the phrase “A and/or B” means (A), (B), or (A and B). For the purposes of the present disclosure, the phrase “A, B, and/or C” means (A), (B), (C), (A and B), (A and C), (B and C), or (A, B and C).
The description may use the phrases “in an embodiment,” or “in embodiments,” which may each refer to one or more of the same or different embodiments. Furthermore, the terms “comprising,” “including,” “having,” and the like, as used with respect to embodiments of the present disclosure, are synonymous.
As used herein, the term “module” may refer to, be part of, or include an Application Specific Integrated Circuit (ASIC), an electronic circuit, a processor (shared, dedicated, or group) and/or memory (shared, dedicated, or group) that execute one or more software or firmware programs, a combinational logic circuit, and/or other suitable components that provide the described functionality.
Referring now
In embodiments, server 104 may include search engine 116, indexing engine 118, and storage 120, coupled with each other as shown. In embodiments, indexing engine 118 may be configured to analyze a plurality of contents available from one or more private or public content repositories, e.g., documents and/or multi-media contents/objects available on the Internet. The analysis may include analysis of association of non-geographic coordinate content items, such as, keywords of the content or of metadata of the content, with locations on Earth's surface. The locations may be identifiable by geographic coordinates of a geographic coordinate system, e.g., geodetic latitude and longitude coordinates. Indexing engine 118 may employ a wide range of private and/or public resources to determine the association, including but not limited to information available on the Internet.
Further, indexing engine 118 may be configured to generate, for locations with associated contents, indices that index the geographic coordinates of the locations to the associated contents, e.g., to the locators of the associated contents. The locators may e.g., be uniform resource locators (URL). In embodiments, indexing engine 118 may store the generated indices 132 in storage 120. The stored indices 132 may then be subsequently accessed to enable the indexed contents to be identified as potential relevant contents in response to a content search.
For example, indexing engine 118 may analyze a web page having the keyword “San Francisco,” or a photograph having the keyword “San Francisco” in the photograph's metadata, and determine that the web page or the photograph is associated with the geodetic latitude and longitude coordinates of {37° 46′ 29.99″ -122° 25′ 5.88″}, which may be considered as the geodetic latitude and longitude coordinates of the City of San Francisco, Calif. Similarly, indexing engine may analyze a web page or metadata of a multi-media content having keywords “Candlestick Park,” “Golden Gate Bridge,” “Lombard Street,” “Coit Tower,” “Castro Street,” “Harvey Milk,” “Dianne Fienstein,” “49 Niners,” “Joe Montana,” “Ansel Adams,” “Haight Ashbury,” “Jerry Garica,” “Grateful Dead,” “Giant Baseball,” and so forth, and determine based on these keywords that the web page or multi-media content is associated with City of San Francisco. In each of these cases, indexing engine 118 may generate an index 132 to index geodetic latitude and longitude coordinates {37° 46′ 29.99″ −122° 25′ 5.88″}of San Francisco to the web page or multi-media content. The index 132 may include the geodetic latitude and longitude coordinates {37° 46′ 29.99″ −122° 25′ 5.88″} and the URL of the web page or multi-media content.
While the above example illustrated the association determination and indexing with geodetic coordinates that are valued in accordance with a mathematical defined reference ellipsoid that approximates the Earth, the present disclosure is not so limited. Other geographic coordinates with other geographic reference systems may also be used, including but are not limited to, e.g., geocentric coordinates that are valued in accordance with a X-Y-Z reference centered at Earth's center, or spherical coordinates that are valued based on the radial distances from Earth's center, along with polar angles measured from the zenith directions of the positions, and azimuth angles of the positions based on orthogonal projections on corresponding reference planes that pass through Earth's center and orthogonal to the zenith directions.
Continuing to refer to
In embodiments, search engine 116 may be configured to analyze, as part of the processing the received search query, non-geographic coordinate search criteria of the search query to determine if there are associations between the non-geographic coordinate search criteria and locations of Earth's surface. Search engine 116 may, on determination of an association, translate or map the non-geographic coordinate search criteria to the geographic coordinates of the associated locations. Thereafter, search engine 116 may traverse the stored geographic coordinates based indices 132, using any explicitly specified geographic coordinate search criteria, and translated/mapped geographic coordinates of the non-geographic coordinate search criteria, to identify potential relevant contents. Search engine 116 may further, on identification of the potential relevant contents, generate the answer set to the search query. Search engine 116 may be configured to apply any one of a number of filtering and/or ranking operations to filter and/or organize the locators of the potentially relevant content of the answer set.
In embodiments, search engine 116 and indexing engine 118 may be implemented in any combination of hardware and/or software. In embodiments, the combination of hardware and/or software may include processor(s), memory and executable instructions implementing the functions described herein. In embodiments, in lieu of being two separate engines, search engine 116 and indexing engine 118 may share some common functions and/or resources. For example, search engine 116 and indexing engine 118 may share common communication functions and components for communicating with client devices 102 and providers of contents. As a further example, search engine 116 and indexing engine 118 may share processor and/or memory resources. In embodiments, some functions of search engine 116 may be moved to indexing engine 118, or vice versa, or be combined. Storage 120 may be implemented using any magnetic, optical, and/or solid state non-volatile storage. The magnetic, optical, and/or solid state non-volatile storage may be disposed on one platform, or coupled/networked. In embodiments, storage 120 may also include volatile and/or non-volatile caches.
Still referring to
Thus, client device 102 represents a broad range of client devices known in the art, including but not limited to personal digital assistants (PDA), smartphones, computing tablets, ultrabook, laptop computers, desktop computers, set-top box, media players, game consoles, and so forth.
Continuing to refer to
Referring now to
Referring now to
At block 304, a determination may be made on whether the non-geographic coordinate content item is of interest, e.g., by indexing engine 118. The determination may be made in accordance with any number of interest policies or rules. On determination that the non-geographic coordinate content item is of interest, process 300 may proceed to block 306, else process 300 may return to block 302.
At block 306, whether proceeded directly from block 302 or via block 304, the non-geographic coordinate content item may be analyzed for association with locations on Earth's surface, e.g., by indexing engine 118. As described earlier, the determination may be made employing any number of resources available privately or publicly, including resources available on the Internet. From block 306, process 300 may proceed to block 308.
At block 308, a determination may be made on whether the non-geographic coordinate content item is associated with one or more locations, e.g., by indexing engine 118. The determination may be made in accordance with results of the analysis of bock 306. On determination that the non-geographic coordinate content item is associated with one or more locations, process 300 may proceed to block 310, else process 300 may return to block 302.
At block 310, one or more geographic coordinates based indices may be generated to index the geographic coordinates of the associated locations to the content having the associated non-geographic coordinate content item, e.g., by indexing engine 118. As described earlier, the generated indices may be stored into storage 120 for subsequent use to identify potentially relevant contents for an answer set to a search query. From block 310, process 300 may proceed to block 312.
At block 312, a determination may be made on whether the all non-geographic coordinate content items of the information page or multi-media object have been processed/analyzed, e.g., by indexing engine 118. On determination that not all non-geographic coordinate content items of the information page or multi-media object have been processed/analyzed, process 300 may return to block 302, else process 300 may end.
Referring now
At block 404, a determination may be made, e.g., by search engine 116, whether a result of the analysis of block 402 identified any geographic coordinate search criteria. From block 404, process 400 may proceed to block 406 if one or more geographic coordinate search criteria were identified, else process 400 may proceed to block 408.
At block 406, the stored geographic coordinates based indices may be traversed, e.g., by search engine 116, using the geographic coordinate search criteria, to identify potentially relevant contents for the search query. From block 406, process 400 may proceed to block 408.
At block 408, the non-geographic coordinate search criteria of the search query, if any, may be analyzed, e.g., by search engine 116, for association with locations. From block 408, process 400 may proceed to block 410.
At block 410, a determination may be made, e.g., by search engine 116, whether a result of the analysis of block 408 identified any association with locations. Similar to indexing engine 118, search engine 116 may use any private and/or public resources available, including resources available on the Internet, to determine association. From block 410, process 400 may proceed to block 412 if one or more associations were identified, else process 400 may proceed to block 414.
At block 412, the stored geographic coordinates based indices may be traversed, e.g., by search engine 116, using the geographic coordinates of the associated locations, to identify potentially relevant contents for the search query. The non-geographic coordinate search criteria may be translated/mapped to the geographic coordinates of the associated locations by, e.g., search engine 116. From block 412, process 400 may proceed to block 414.
At block 414, the traversal results from block 406 and/or block 412 may be used, e.g., by search engine 116, to generate and return an answer set with locators to potential relevant contents to the search query. As described earlier, any number of filtering and/or ranking may be applied to filter and/or organize the locators of the potentially relevant contents. From block 414, on return of the answer set to the search query, process 400 may end.
Referring now briefly back to
For example, in one embodiment, the lowest level 506 may store the geographic coordinates based indices indexing cities, such as San Francisco, Los Angeles, to associated contents. A next immediate intermediate level, e.g., level 504, may store geographic coordinate ranges defining States, such as California, Oregon, indexing the states to the indices of the cities within the States. Further, another intermediate level (not shown) above intermediate level 504 may store geographic coordinate ranges representing Countries, such as United States, Canada, indexing the Countries to the indices of the States or Provinces within the Countries. Still further, yet another intermediate level, such as intermediate level 502 may store geographic coordinate ranges representing Continents, such as North America, Europe and so forth, indexing the Continents to the indices of the Countries.
The above example is not intended to be limiting on the present disclosure. The present disclosure may be practiced with any data organization or structure, depending on the application. In the case of hierarchical organization, the hierarchical organization may have any number of levels, with the nodes of the intermediate levels storing geographic coordinate ranges defining any geographic, political, cultural, social, and/or economic organizations.
For the example applications/embodiments, the subset of geographic coordinates based indices 132 may be stored in a content addressable memory (CAM) 600 on client device 102. CAM 600, in addition to storage locations 612 for storing each 200 of the subset of indices, may be configured with match circuitry 602 and selector 604, coupled with each other as shown. A copy of search engine 116 provided to client device 102, which may have reduced functions, on access of CAM 600 may also provide geographic coordinates based search criteria 606, optionally accompanied with one or more masks 608.
On access, storage locations may output geographic coordinates 202-204 and locators 206 to associated contents to match circuitry 602 and selector 604 respectively. Match circuitry 602 may output one or more select signals 610 to selector 604, based on geographic coordinates 202-204, geographic coordinates based search criteria (GCSC) 606, and mask(s) 608 (if provided). Selector 604 may then select locators 204, and output selected locators 614, based on select signal(s) 610. Accordingly, the ability to select associated content for an area or region may be provided.
For example, consider the geodetic coordinates of San Francisco and San Jose, which in decimal form may be {37.757687, −122.415161} and {37.335224, −121.898804}, respectively. In hexadecimal, these values are {24022F7, −74BE839} and {239B0B8, −7440734}, respectively. Thus, with the geographic coordinates stored in binary form, with appropriate masks, geographic coordinate indices indexing San Francisco and San Jose to associated contents may be selected for a search query searching for relevant contents for the Bay Area.
While for thoroughness, the present disclosure has been described thus far with the lowest level of geographic coordinates based indices indexing Earth positions to associated contents, in embodiments, the “lowest” level of geographic coordinates based indices may be indices of geographic coordinate ranges indexing areas and/or regions instead.
Referring now to
Each of these elements may perform its conventional functions known in the art. In particular, system memory 704 and mass storage devices 706 may be employed to store a working copy and a permanent copy of the programming instructions implementing the various operations earlier described, e.g., the operations associated with search engine 116 and/or indexing engine 118, collectively denoted as computational logic 722. Computational logic 722 may be implemented with assembler instructions supported by processor(s) 702 or high-level languages, such as, for example, C, that can be compiled into such instructions.
The permanent copy of the programming instructions may be placed into permanent storage devices 706 in the factory, or in the field, through, for example, a distribution medium (not shown), such as a compact disc (CD), or through communication interface 710 (from a distribution server (not shown)). That is, one or more distribution media having an implementation of computational logic 722 may be employed to distribute computational logic 722 and program various computing devices.
The number, capability and/or capacity of these elements 710-712 may vary, depending on whether computer 700 is used as a client device 102 or server 104. When use as client device 102, whether client device 102 is a stationary or mobile device, like a smartphone, computing tablet, ultrabook or laptop, with general or specific applications. The constitutions of these elements are otherwise known, and accordingly will not be further described.
Although certain embodiments have been illustrated and described herein for purposes of description, a wide variety of alternate and/or equivalent embodiments or implementations calculated to achieve the same purposes may be substituted for the embodiments shown and described without departing from the scope of the present disclosure. This application is intended to cover any adaptations or variations of the embodiments discussed herein. Therefore, it is manifestly intended that embodiments described herein be limited only by the examples.
Where the disclosure recites “a” or “a first” element or the equivalent thereof, such disclosure includes one or more such elements, neither requiring nor excluding two or more such elements. Further, ordinal indicators (e.g., first, second or third) for identified elements are used to distinguish between the elements, and do not indicate or imply a required or limited number of such elements, nor do they indicate a particular position or order of such elements unless otherwise specifically stated.