1. Field
This disclosure relates to facilitating searches in a semi-structured database.
2. Description of the Related Art
Databases can store and index data in accordance with a structured data format (e.g., Relational Databases for normalized data queried by Structured Query Language (SQL), etc.), a semi-structured data format (e.g., XMLDBs for Extensible Markup Language (XML) data, RethinkDB for JavaScript Object Notation (JSON) data, etc.) or an unstructured data format (e.g., Key Value Stores for key-value data, ObjectDBs for object data, Solr for free text indexing, etc.). In structured databases, any new data objects to be added are expected to conform to a fixed or predetermined schema (e.g., a new Company data object may be required to be added with Name, Industry and Headquarters values, a new Bibliography data object may be required to be added with Author, Title, Journal and Date values, and so on). By contrast, in unstructured databases, new data objects can be added verbatim, so similar data objects can be added via different formats which may cause difficulties in establishing semantic relationships between the similar data objects.
Semi-structured databases share some properties with both structured and unstructured databases (e.g., similar data objects can be grouped together as in structured databases, while the various values of the grouped data objects are allowed to differ which is more similar to unstructured databases). Semi-structured database formats use a document structure that includes a plurality of nodes arranged in a tree hierarchy. The document structure includes any number of data objects that are each mapped to a particular node in the tree hierarchy, whereby the data objects are indexed either by the name of their associated node (i.e., flat-indexing) or by their unique path from a root node of the tree hierarchy to their associated node (i.e., label-path indexing). The manner in which the data objects of the document structure are indexed affects how searches (or queries) are conducted.
An example relates to a method of performing a search within a semi-structured database that is storing a set of documents, each document in the set of documents being organized with a tree-structure that contains a plurality of nodes, the plurality of nodes for each document in the set of documents including a root node and at least one non-root node, each of the plurality of nodes including a set of node-specific data entries. The example method may include obtaining a series of search queries directed to a given target node of a given document among the set of documents, categorizing a first set of search parameters in the series of search queries as frequently recurring parameters, generating a partial search query template that is populated with shortcut information related to the first set of search parameters, receiving a new search query that is directed to the given target node of the given document, detecting that the new search query includes the first set of search parameters, loading the partial search query template in response to the detecting and updating the loaded partial search query template to include one or more additional search parameters that are separate from the first set of search parameters and are specified in the new search query.
Another example relates to a server that is configured to perform a search within a semi-structured database that is storing a set of documents, each document in the set of documents being organized with a tree-structure that contains a plurality of nodes, the plurality of nodes for each document in the set of documents including a root node and at least one non-root node, each of the plurality of nodes including a set of node-specific data entries. The example server may include logic configured to obtain a series of search queries directed to a given target node of a given document among the set of documents, logic configured to categorize a first set of search parameters in the series of search queries as frequently recurring parameters, logic configured to generate a partial search query template that is populated with shortcut information related to the first set of search parameters, logic configured to receive a new search query that is directed to the given target node of the given document, logic configured to detect that the new search query includes the first set of search parameters, logic configured to load the partial search query template in response to the detection and logic configured to update the loaded partial search query template to include one or more additional search parameters that are separate from the first set of search parameters and are specified in the new search query.
Another example relates to a method of performing a search within a semi-structured database that is storing a set of documents, each document in the set of documents being organized with a tree-structure that contains a plurality of nodes, the plurality of nodes for each document in the set of documents including a root node and at least one non-root node, each of the plurality of nodes including a set of node-specific data entries. The example method includes beginning execution of a first search among the set of documents in the semi-structured database that is based on a first set of search parameters, obtaining, during the first search, a set of intermediate search result values, detecting that the first search requires execution of a second search that uses the set of intermediate search result values as a second set of search parameters for the second search, executing the second search in the semi-structured database using the set of intermediate search result values to obtain a set of second search result values, returning the set of second search result values as a final result of the first search, determining that the beginning, obtaining, detecting, executing and returning have occurred a threshold number of times and building, in response to the determining, an index that links a given search based on the first set of search parameters directly to the set of second search result values.
Another example relates to method of performing a search within a semi-structured database that is storing a set of documents, each document in the set of documents being organized with a tree-structure that contains a plurality of nodes, the plurality of nodes for each document in the set of documents including a root node and at least one non-root node, each of the plurality of nodes including a set of node-specific data entries. The example method may include inspecting the semi-structured database to detect a first set of values that, when returned as search result values for a first search in a first document among the set of documents, are configured to trigger a second search in the semi-structured database that uses the first set of values as search parameters for obtaining a second set of values that are returned as a final result of the first search and building an index that links a given search directed to the first set of values directly to the second set of values.
A more complete appreciation of embodiments of the disclosure will be readily obtained as the same becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings which are presented solely for illustration and not limitation of the disclosure, and in which:
Aspects of the disclosure are disclosed in the following description and related drawings directed to specific embodiments of the disclosure. Alternate embodiments may be devised without departing from the scope of the disclosure. Additionally, well-known elements of the disclosure will not be described in detail or will be omitted so as not to obscure the relevant details of the disclosure.
The words “exemplary” and/or “example” are used herein to mean “serving as an example, instance, or illustration.” Any embodiment described herein as “exemplary” and/or “example” is not necessarily to be construed as preferred or advantageous over other embodiments. Likewise, the term “embodiments of the disclosure” does not require that all embodiments of the disclosure include the discussed feature, advantage or mode of operation.
Further, many embodiments are described in terms of sequences of actions to be performed by, for example, elements of a computing device. It will be recognized that various actions described herein can be performed by specific circuits (e.g., application specific integrated circuits (ASICs)), by program instructions being executed by one or more processors, or by a combination of both. Additionally, these sequence of actions described herein can be considered to be embodied entirely within any form of computer readable storage medium having stored therein a corresponding set of computer instructions that upon execution would cause an associated processor to perform the functionality described herein. Thus, the various aspects of the disclosure may be embodied in a number of different forms, all of which have been contemplated to be within the scope of the claimed subject matter. In addition, for each of the embodiments described herein, the corresponding form of any such embodiments may be described herein as, for example, “logic configured to” perform the described action.
A client device, referred to herein as a user equipment (UE), may be mobile or stationary, and may communicate with a wired access network and/or a radio access network (RAN). As used herein, the term “UE” may be referred to interchangeably as an “access terminal” or “AT”, a “wireless device”, a “subscriber device”, a “subscriber terminal”, a “subscriber station”, a “user terminal” or UT, a “mobile terminal”, a “mobile station” and variations thereof. In an embodiment, UEs can communicate with a core network via a RAN, and through the core network the UEs can be connected with external networks such as the Internet. Of course, other mechanisms of connecting to the core network and/or the Internet are also possible for the UEs, such as over wired access networks, WiFi networks (e.g., based on IEEE 802.11, etc.) and so on. UEs can be embodied by any of a number of types of devices including but not limited to cellular telephones, personal digital assistants (PDAs), pagers, laptop computers, desktop computers, PC cards, compact flash devices, external or internal modems, wireless or wireline phones, and so on. A communication link through which UEs can send signals to the RAN is called an uplink channel (e.g., a reverse traffic channel, a reverse control channel, an access channel, etc.). A communication link through which the RAN can send signals to UEs is called a downlink or forward link channel (e.g., a paging channel, a control channel, a broadcast channel, a forward traffic channel, etc.). As used herein the term traffic channel (TCH) can refer to either an uplink/reverse or downlink/forward traffic channel.
Referring to
The Internet 175, in some examples, includes a number of routing agents and processing agents (not shown in
Referring to
While internal components of UEs such as UEs 200A and 200B can be embodied with different hardware configurations, a basic high-level UE configuration for internal hardware components is shown as platform 202 in
Accordingly, an embodiment of the disclosure can include a UE (e.g., UE 200A, 200B, etc.) including the ability to perform the functions described herein. As will be appreciated by those skilled in the art, the various logic elements can be embodied in discrete elements, software modules executed on a processor or any combination of software and hardware to achieve the functionality disclosed herein. For example, the ASIC 208, the memory 212, the API 210 and the local database 214 may all be used cooperatively to load, store and execute the various functions disclosed herein and thus the logic to perform these functions may be distributed over various elements. Alternatively, the functionality could be incorporated into one discrete component. Therefore, the features of UEs 200A and 200B in
The wireless communications between UEs 200A and/or 200B and the RAN 120 can be based on different technologies, such as CDMA, W-CDMA, time division multiple access (TDMA), frequency division multiple access (FDMA), Orthogonal Frequency Division Multiplexing (OFDM), GSM, or other protocols that may be used in a wireless communications network or a data communications network. As discussed in the foregoing and known in the art, voice transmission and/or data can be transmitted to the UEs from the RAN using a variety of networks and configurations. Accordingly, the illustrations provided herein are not intended to limit the embodiments of the disclosure and are merely to aid in the description of aspects of embodiments of the disclosure.
Referring to
In a further example, the logic configured to receive and/or transmit information 305 can include sensory or measurement hardware by which the communications device 300 can monitor its local environment (e.g., an accelerometer, a temperature sensor, a light sensor, an antenna for monitoring local RF signals, etc.). The logic configured to receive and/or transmit information 305 can also include software that, when executed, permits the associated hardware of the logic configured to receive and/or transmit information 305 to perform its reception and/or transmission function(s). However, in various implementations, the logic configured to receive and/or transmit information 305 does not correspond to software alone, and the logic configured to receive and/or transmit information 305 relies at least in part upon hardware to achieve its functionality.
The communications device 300 of
The communications device 300 of
The communications device 300 of
The communications device 300 of
Referring to
Generally, unless stated otherwise explicitly, the phrase “logic configured to” as used throughout this disclosure is intended to invoke an embodiment that is at least partially implemented with hardware, and is not intended to map to software-only implementations that are independent of hardware. Also, it will be appreciated that the configured logic or “logic configured to” in the various blocks are not limited to specific logic gates or elements, but generally refer to the ability to perform the functionality described herein (either via hardware or a combination of hardware and software). Thus, the configured logics or “logic configured to” as illustrated in the various blocks are not necessarily implemented as logic gates or logic elements despite sharing the word “logic.” Other interactions or cooperation between the logic in the various blocks will become clear to one of ordinary skill in the art from a review of the embodiments described below in more detail.
The various embodiments may be implemented on any of a variety of commercially available server devices, such as server 400 illustrated in
Databases can store and index data in accordance with a structured data format (e.g., Relation Databases for normalized data queried by Structured Query Language (SQL), etc.), a semi-structured data format (e.g., XMLDBs for Extensible Markup Language (XML) data, RethinkDB for JavaScript Object Notation (JSON) data, etc.) or an unstructured data format (e.g., Key Value Stores for key-value data, ObjectDBs for object data, Solr for free text indexing, etc.). In structured databases, any new data objects to be added are expected to conform to a fixed or predetermined schema (e.g., a new Company data object may be required to be added with “Name”, “Industry” and “Headquarters” values, a new Bibliography data object may be required to be added with “Author”, “Title”, “Journal” and “Date” values, and so on). By contrast, in unstructured databases, new data objects are added verbatim, which permits similar data objects to be added via different formats which causes difficulties in establishing semantic relationships between the similar data objects.
Examples of structured database entries for a set of data objects may be configured as follows:
whereby “Name”, “Industry” and “Headquarters” are predetermined values that are associated with each “Company”-type data object stored in the structured database, or
whereby “Author”, “Title”, “Journal” and “Date” are predetermined values that are associated with each “Bibliography”-type data object stored in the structured database.
Examples of unstructured database entries for the set of data objects may be configured as follows:
As will be appreciated, the structured and unstructured databases in Tables 1 and 3 and in Tables 2 and 4 store substantially the same information, with the structured database having a rigidly defined value format for the respective class of data object while the unstructured database does not have defined values associated for data object classes.
Semi-structured databases share some properties with both structured and unstructured databases (e.g., similar data objects can be grouped together as in structured databases, while the various values of the grouped data objects are allowed to differ which is more similar to unstructured databases). Semi-structured database formats use a document structure that includes a set of one or more documents that each have a plurality of nodes arranged in a tree hierarchy. The plurality of nodes are generally implemented as logical nodes (e.g., the plurality of nodes can reside in a single memory and/or physical device), although it is possible that some of the nodes are deployed on different physical devices (e.g., in a distributed server environment) so as to qualify as both distinct logical and physical nodes. Each document includes any number of data objects that are each mapped to a particular node in the tree hierarchy, whereby the data objects are indexed either by the name of their associated node (i.e., flat-indexing) or by their unique path from a root node of the tree hierarchy to their associated node (i.e., label-path indexing). The manner in which the data objects of the document structure are indexed affects how searches (or queries) are conducted.
To put the document depicted in
The document structure of a particular document in a semi-structured database can be indexed in accordance with a flat-indexing protocol or a label-path protocol. For example, in the flat-indexing protocol (sometimes referred to as a “node indexing” protocol) for an XML database, each node is indexed with a document identifier at which the node is located, a start-point and an end-point that identifies the range of the node, and a depth that indicates the node's depth in the tree hierarchy of the document (e.g., in
whereby each number represents a location of the document structure that can be used to define the respective node range, as shown in Table 8 as follows:
Accordingly, the “Inventor” context path 605A of
When a node stores a value, the value itself can have its own index. Accordingly, the value of “Brown” 650A as shown in
The flat-indexing protocol uses a brute-force approach to resolve paths. In an XML-specific example, an XPath query for /Patent/Inventor/Name/Last would require separate searches to each node in the address (i.e., “Patent”, “Inventor”, “Name” and “Last”), with the results of each query being joined with the results of each other query, as follows:
Label-path indexing is described in a publication by Goldman et al. entitled “DataGuides: Enabling Query Formulation and Optimization in Semistructured Databases”. Generally, label-path indexing is an alternative to flat-indexing, whereby the path to the target node is indexed in place of the node identifier of the flat-indexing protocol, as follows:
whereby each number represents a location of the document structure that can be used to defined the respective node range, and each letter label (A through I) identifies a context path to a particular node or value, as shown in Table 11 as follows:
Accordingly, with respect to Tables 10-11, the “Inventor” node 605A of
More detailed XML descriptions will now be provided. At the outset, certain XML terminology is defined as follows:
In Table 9 with respect to the flat-indexed protocol, it will be appreciated that the XPath query directed to /Patent/Inventor/Name/Last required four separate lookups for each of the nodes “Patent”, “Inventor”, “Name” and “Last”, along with three joins on the respective lookup results. By contrast, a similar XPath query directed to /Patent/Inventor/Name/Last using the label-path indexing depicted in Tables 10-11 would have a compiled query of lookup(E) based on the path /Patent/Inventor/Name/Last being defined as path “E”.
Generally, the label-path indexing protocol is more efficient for databases with a relatively low number of context paths for a given node name (e.g., less than a threshold such as 100), with the flat-indexing protocol overtaking the label-path indexing protocol in terms of query execution time as the number of context paths increases.
A number of different example XML document structures are depicted below in Table 12 including start and end byte offsets:
whereby each number represents a location of the document structure that can be used to defined the respective node range, and each letter label identifies a context path to a particular node or value as depicted in
Next, a flat simple content index for the documents depicted in Table 12 is as follows:
Next, a flat element index for the documents depicted in Table 12 is as follows,
As will be appreciated, the compiled XPath search query depicted in Table 17 requires lookups for both criteria1=valueX (or “Parameter X”) and also for criteria2=valueZ_1.
Referring to
As will be appreciated, the compiled XPath search query depicted in Table 18 requires lookups for both criteria1=valueX (or “Parameter X”) and also for criteria2=valueZ_2. As will be appreciated, Parameter X is a recurring parameter that was also part of the first compiled XPath search query depicted in Table 17 (above), while criteria2 has a different (or varying) value, as valueZ_2 is not the same as valueZ_1.
Referring to
As will be appreciated, the compiled XPath search query depicted in Table 19 requires lookups for both criteria1=valueX (or “Parameter X”) and also for criteria2=valueZ_N. As will be appreciated, Parameter X is a recurring parameter that was also part of the first and second compiled XPath search query depicted in Tables 17 and 18 (above), while criteria2 has a different (or varying) value, as valueZ_N is not the same as valueZ_1 or valueZ_2.
As will be appreciated, the efficiency of the search query executions depicted in
Referring to
After the partial search query template is generated at block 815, the semi-structured database server 170 receives a new search query that is directed to the given target node of the given document among the set of documents and includes the first set of search parameters, in block 820. At block 825, the semi-structured database server 170 detects or recognizes that the new search query includes the first set of search parameters, and the semi-structured database server 170 loads the partial search query template from block 815 in response to the detection, in block 830. Upon loading the partial search query template, the semi-structured database server 170 updates the partial search query template to include one or more search parameters that are separate from the first set of search parameters and are specified in the new search query, in block 835. The semi-structured database server 170 then executes the updated partial search query template to produce search results, which are returned to a requesting client device that initiated the new search query, in block 840.
At block 925, after determining to categorize the one or more parameters of the search query as frequently recurring parameters, the semi-structured database server 170 generates a partial search query template that is populated with shortcut information related to the one or more parameters (e.g., similar to block 815 of
whereby the parameter [*Pre-Calculated Nodes for Parameter X] corresponds to the search results (e.g., a list of qualifying nodes, join results, etc.) for Parameter X from execution of any of the compiled search queries depicted in Tables 17-19, and whereby any infrequently recurring parameters (or varying parameters) are permitted to be inserted into the partial search query template during execution after an actual search query is obtained. As will be appreciated, the partial search query template depicted in Table 20 omits a join operation by virtue of incorporating the previous join results for the Parameter X component of one or more previous search queries, such that execution of the partial search query template depicted in Table 20 (once updated to permit insertion of criteria2 and any other parameters specified in a future search query) can be performed more quickly relative to a comparable search query that required a new lookup operation for Parameter X.
After the partial search query template is generated at block 925, the semi-structured database server 170 receives a new search query that is directed to the given target node of the given document among the set of documents and includes the first set of search parameters, in block 930 (e.g., similar to block 820 of
With respect to block 940 of
In the embodiments of
In a further example, multiple partial search query templates can be generated for different nodes and/or different frequently recurring parameters in other embodiments of the disclosure, such that the processes of
In yet another example, the partial search query templates generated in the embodiments of
In an XML-specific example implementation of the process of
Context paths S, T U from
from which a common search can be refined to:
containing(AB, AC=“% s”)
A context tree element index and a context tree simple content index for the above-noted XPaths based on the context tree depicted in
With the above two new context path index entries, the original query is processed using the steps listed in table 26, as follows:
As will be appreciated, context paths AB and/or BC correspond to the resultant partial search query template in
Further, for each context path (see context paths AB and AC above), every node in the database that matches the context can be identified, with an entry stored in the node index for the dynamic context path/node value pair (otherwise referred to as the partial search query template). The dynamic context path/node value pair (or partial search query template) can be generated using two approaches:
1. When the index is regenerated the XPath queries can be run against elements in all documents and any that hit be also stored in the new dynamic context; or
2. The XPath queries can be run on the existing standard index with any results stored in the dynamic index.
Also, when new documents are placed in the database, the XPath queries can be run against elements in the new documents and any that hit can be stored in the dynamic index.
Structured database tables benefit from explicit user-specified foreign key relationships between tables. This foreign key relationship can be indexed to allow fast joining of data between the tables. By contrast, in semi-structured databases without pre-defined schemes, the generation and maintenance of the references and IDs can be a time consuming and difficult process.
Tables 27A and 27B depict two XML document examples with start and end byte offsets and context paths labeled:
Tables 27A and 27B illustrate a first document A and a second document B. Below are example indexes based on documents in Tables 27A and 27B:
As will be appreciated with respect to
The semi-structured database server 170 thereby executes the second search using the set of intermediate search result values to obtain a set of second search result values, in block 1115, and the set of second search result values (e.g., in place of or in addition to the set of intermediate search result values from block 1105) are returned as part of a final result of the first search, in block 1120. While not illustrated explicitly in
At block 1125, the semi-structured database server 170 evaluates one or more conditions associated with the first search to determine whether to build an index for the first set of search parameters. These conditions may include, in any combination, limiting consideration to successful queries only (i.e., queries that return one or more results at block 1120, with queries that return zero results being excluded from consideration for index generation), a number of times the query is repeated (e.g., blocks 1100-1120 must occur a threshold number of times in a given period for different queries), a cardinality of the set of intermediate search result values (e.g., build an index if cardinality is 1:N whereby a single value in the first search at block 1105 produces N values in the second search at block 1110, or N:1, whereby N values in the first search at block 1105 produce a single value in the second search at block 1110, but not for cardinality N:M, whereby N values in the first search at block 1105 produce M values in the second search at block 1110) or any combination thereof. If the semi-structured database server 170 determines not to build the index at block 1125, the process returns to block 1100. However, if the semi-structured database server 170 determines to build the index at block 1125, the semi-structured database server 170 builds an index that links the first set of search parameters for a given search directly to the set of second search result values obtained at block 1115, in block 1130. For example, the index generated at block 1130 can function as an instruction for future queries containing the first set of search parameters to simply use the index to obtain the final result data obtained at block 1115 without having to obtain the set of intermediate search values at block 1105 as part of the first search execution. In this manner, the unindexed lookups discussed above with respect to block 1010 of
In a further example, the indexes generated at block 1130 can be selectively pruned based on a variety of factors, such as lack of use, reduced memory availability at the semi-structured database server 170 (e.g., in the cache memory, in main memory, etc.) or any combination thereof. For example, the semi-structured database server 170 may, if a threshold amount of time has elapsed without a particular index being used, delete the index. In another example, a low-memory condition at the semi-structured database server 170 (e.g., in the cache memory, in the main memory, etc.) can trigger deletion of some or all of the indexes so as to free up memory at the semi-structured database server 170. In a further example, a combination of memory availability and infrequency of use can be used to selectively delete some or all of the indexes generated at block 1130. For example, the semi-structured database server 170 can detect a low-memory condition and can then attempt to identify the least-used index generated at block 1130 for selective deletion.
Referring to
As shown in Table 29, the index stores the location of the node containing the reference (in this case a <ref> element), as well as the location of the identifier node (in this case the id attribute).
While
Regarding the inspection in block 1300, a set of values can be analyzed in association with the various paths at which each value is located in a set of documents of the semi-structured database, for example:
Referring to Table 31, there is one document that indexes “Brown” at/document/id while there are multiple documents that index “Brown” at/reference/id, which is suggestive that “Brown” is used as a document identifier in document #41, and is otherwise used as a reference (or pointer) to document #41 when “Brown” is indexed to/reference/id in the other documents. From a semantic standpoint, the element or node name of “id” also can be interpreted as suggestive of a link. Rules for forming semantic relationships, or node classifications (e.g., reference node, etc.), are described in more detail below with respect to
In an XML-specific example implementation of the process of
The above-noted XPath query requires a join to be performed on two elements. The database would typically count such joins and dynamically store a join-index based on the citation-to-document-id mapping. By the execution of the above-noted XPath query, the semi-structured database server 170 can detect that the value(s) from one document were looked up and then values in another document were looked up, which can be a trigger to build the index, similar to block 1125 of
While the processes are described as being performed by the semi-structured database server 170, as noted above, the semi-structured database server 170 can be implemented as a client device, a network server, an application that is embedded on a client device and/or network server, and so on. Hence, the apparatus that executes the processes in various example embodiments is intended to be interpreted broadly.
Those of skill in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The methods, sequences and/or algorithms described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal (e.g., UE). In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.
In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.
While the foregoing disclosure shows illustrative embodiments of the disclosure, it should be noted that various changes and modifications could be made herein without departing from the scope of the disclosure as defined by the appended claims. The functions, steps and/or actions of the method claims in accordance with the embodiments of the disclosure described herein need not be performed in any particular order. Furthermore, although elements of the disclosure may be described or claimed in the singular, the plural is contemplated unless limitation to the singular is explicitly stated.
The present Application for Patent claims the benefit of U.S. Provisional Application No. 62/181,011, entitled “FACILITATING SEARCHES IN A SEMI-STRUCTURED DATABASE”, filed Jun. 17, 2015, assigned to the assignee hereof, and expressly incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62181011 | Jun 2015 | US |