A search rule engine may typically be a component of a search engine for e-commerce websites or other interfaces that might benefit from a rule-supplemented search engine. In general terms, a search rule engine operates a search by receiving inputs in the form of user request parameters and a set of rule specifications and then outputting business data objects. A rule specification may contain a business data object and one or more rule triggers associated with the business data object. Generally, the business data object may be output from a search query if the user request includes parameters that correspond to the rule triggers. Each rule trigger typically contains one or more triggering conditions. Examples of triggering conditions are query keyword, category, and facet/value pairs. Examples of business data objects are merchandizing modules and page redirect instructions. As examples, business data objects may provide functionality to a product search engine by: promoting selected products based on brand, department, or query; helping users navigate to a selectively-tailored webpage relevant to specific search terms; or providing interim solutions to deficiencies in a keyword-based search engine for emergent trending queries.
A typical implementation of a search rule engine iterates query keywords through each rule to determine if the rule is a match for the given user request. As the number of rules increases, the performance of the rule engine may degrade linearly. Linear scalability may be undesirable for rule engines given that a product search engine may have numerous business rules and triggering conditions.
Non-limiting and non-exhaustive embodiments of the present disclosure are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified.
Corresponding reference characters indicate corresponding components throughout the several views of the drawings. Skilled artisans will appreciate that elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions of some of the elements in the figures may be exaggerated relative to other elements to help to improve understanding of various embodiments of the present disclosure. Also, common but well-understood elements that are useful or necessary in a commercially feasible embodiment are often not depicted in order to facilitate a less obstructed view of these various embodiments of the present disclosure.
The present disclosure extends to methods, systems, and computer programs for implementing an online search engine that supports arbitrarily complex rule triggering conditions with near-constant run-time complexity. In the following description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the disclosure may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the concepts disclosed herein, and it is to be understood that modifications to the various disclosed embodiments may be made, and other embodiments may be utilized, without departing from the spirit and scope of the present disclosure. The following detailed description is, therefore, not to be taken in a limiting sense.
Reference throughout this specification to “one embodiment,” “an embodiment,” “one example,” or “an example” means that a particular feature, structure, or characteristic described in connection with the embodiment or example is included in at least one embodiment of the present disclosure. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” “one example,” or “an example” in various places throughout this specification are not necessarily all referring to the same embodiment or example. Furthermore, the particular features, structures, or characteristics may be combined in any suitable combinations and/or sub-combinations in one or more embodiments or examples. In addition, it should be appreciated that the figures provided herewith are for explanation purposes to persons ordinarily skilled in the art and that the drawings are not necessarily drawn to scale.
Embodiments in accordance with the present disclosure may be embodied as an apparatus, method, or computer program product. Accordingly, the present disclosure may take the form of an entirely hardware-comprised embodiment, an entirely software-comprised embodiment (including firmware, resident software, micro-code, etc.), or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module,” or “system.” Furthermore, embodiments of the present disclosure may take the form of a computer program product embodied in any tangible medium of expression having computer-usable program code embodied in the medium.
Any combination of one or more computer-usable or computer-readable media may be utilized. For example, a computer-readable medium may include one or more of a portable computer diskette, a hard disk, a random access memory (RAM) device, a read-only memory (ROM) device, an erasable programmable read-only memory (EPROM or Flash memory) device, a portable compact disc read-only memory (CDROM), an optical storage device, and a magnetic storage device. Computer program code for carrying out operations of the present disclosure may be written in any combination of one or more programming languages. Such code may be compiled from source code to computer-readable assembly language or machine code suitable for the device or computer on which the code will be executed
Embodiments may also be implemented in cloud computing environments. In this description and the following claims, “cloud computing” may be defined as a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned via virtualization and released with minimal management effort or service provider interaction and then scaled accordingly. A cloud model can be composed of various characteristics (e.g., on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service), service models (e.g., Software as a Service (“SaaS”), Platform as a Service (“PaaS”), and Infrastructure as a Service (“IaaS”)), and deployment models (e.g., private cloud, community cloud, public cloud, and hybrid cloud).
The flowchart and block diagrams in the attached figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It will also be noted that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
Embodiments of the present disclosure may provide enhanced processing efficiency to operate computer-implemented search rule engine methods in comparison with efficiencies of traditional search rule engine methods. This enhanced efficiency may be a result of a rule triggering method that reduces run-time complexity for rule processing. In embodiments, the search rule engine methods comprise queries for products and/or services. Such products may include, but are not limited to: groceries, foods, office supplies, clothing wares, any other fungible goods sold by a retailer, commercial products, industrial goods, and the like. Services may include, but are not limited to: professional services, financial services, medical services, business services, educational services, travel, lodging services, repair services, and other types of services. In general, a provider of products and/or services may be referred to herein as a merchant. A merchant may typically operate and manage the systems disclosed and described herein or may enter into service agreements with a third party to operate and manage the systems.
Referring now to
In embodiments, rule database 112 is adapted to store search rule specifications. A search rule specification comprises a business data object and trigger conditions associated with that business data object. In embodiments, a business data object comprises a desired search result for a given trigger condition. Examples of business data objects include a merchandizing module and page redirect instructions. A trigger condition typically comprises a string representation, such as a query keyword, category, or facet/value pairs. Rule database 112 can receive business data objects and corresponding trigger conditions from processing device 120. In embodiments, rule lookup table 114 is adapted to store data related to rule lookup keys comprising trigger conditions and matching business data objects as will be explained in further detail below. Rule lookup table 114 can be populated by rule mapping module 124.
Rule input module 122 is adapted to receive, from users, inputs related to search engine rule triggering conditions and associated business data objects. In response to receiving such user inputs, rule input module 122 can transmit data and computer-readable instructions relating to the user inputs to memory device 110 for storage in rule database 112. Rule input module 112 may transmit outputs and/or receive inputs from users through communication device 130 via network 140.
Rule mapping module 124 is adapted to compute a lookup table that comprises a reverse mapping between business data objects and associated trigger conditions. Rule mapping module 124 is adapted to query rule database 112 for such business data objects and associated trigger conditions. Rule mapping module 124 can operate during search engine startup time prior to processing search engine queries from users. After or during processing by rule mapping module 124, the resultant lookup table can be transmitted to memory device 110 for storage in rule lookup table 114.
Key generation module 126 is adapted to receive a user search query and process the query to generate candidate lookup keys. Candidate lookup keys may typically comprise strings parsed from the search query. The resultant list of candidate lookup keys comprises a set of possible lookup keys for the current user search query. Key generation module 126 can input the list of candidate lookup keys to key lookup module 128.
Key lookup module 128 is adapted to receive previously-generated candidate lookup keys input from key generation module 126 and to perform lookups into the rule lookup table stored in rule lookup table 114 and to receive all matched business data objects. Key lookup module 128 can compare the input candidate lookup keys to trigger conditions stored in the rule lookup table. Key lookup module 128 can transmit business data objects that were returned from the rule lookup operation to communication device 130, which can present the business data object(s) most relevant to the user.
Communication device 130 is adapted to transmit computer-readable instructions and data over network 140 to other computer systems as directed by processing device 120. As used in the present disclosure, “network” 140 can refer to any communication network including, but not limited to, a wireless network, a cellular network, an intranet, the Internet, or combinations thereof. Communication device 130 can communicate with computing devices used by remote users to input data and/or receive outputs from system 100. Such user computing devices may comprise personal computers, handheld devices, tablet devices, or other electronic devices. In embodiments, computing devices store application-specific software installed thereon and adapted to communicate with system 100. In alternative embodiments, operations described herein are effected through user web browsers via graphical user interfaces adapted to collect and disseminate information as directed by processing device 120. In embodiments, communication device 140 is adapted to communicate with other systems operated by the merchant to effect user search queries as set forth herein.
In operation, search rule engine system 100 is generally adapted to: receive business data objects and any associated rule triggering conditions and store the business data objects with the associated rule triggering conditions in a table in rule database 112; compute a reverse lookup table for the rule triggering conditions and business data objects and store the reverse lookup table rule lookup table 114; receive search queries; generate a list of candidate lookup keys; look up the candidate lookup keys in the rule lookup table 114; and return any business data objects associated with matching rule triggering conditions.
Referring now to
Referring now to
Referring now to
As one of ordinary skill in the art having the benefit of this disclosure will understand, an advantage of embodiments of the present disclosure is that search query run-time complexity may be dependent only upon the number of candidate lookup keys and not the number of business data objects. Because candidate lookup key generation logic is independent of the set of rule specifications, search query run-time complexity is only a function of query complexity, but not a function of the size of the set of rule specifications.
Although the present disclosure is described in terms of certain preferred embodiments, other embodiments will be apparent to those of ordinary skill in the art, given the benefit of this disclosure, including embodiments that do not provide all of the benefits and features set forth herein, which are also within the scope of this disclosure. It is to be understood that other embodiments may be utilized, without departing from the spirit and scope of the present disclosure.