This application relates generally to data processing, and more specifically to systems and methods to generate a search query.
A user may search for one or more items. The one or more items may be listed as item pages to be viewed online. In order to retrieve the item pages of each of the one or more items, the user may submit individual search queries for each of the one or more items.
Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings in which:
A user may provide an input to browse for items online. In some instances, the user would like to search a group of items. Instead of providing a search query for each of the individual items among the group of items, the user may provide an input that includes a description of an abstraction of the group of items. An abstraction machine may then utilize the description of the abstraction of the group of items to access item descriptors and generate a search query based on the item descriptors.
Also shown in
Broadly, the user (e.g., user 132, user 152) may provide a description of an abstraction of items via a device (e.g., device 130, device 150) to the abstraction machine 110. In response, the abstraction machine 110 may access item descriptors based on the description of the abstraction of items. Further, the abstraction machine 110 may generate a search query based on the item descriptors and present the generated search query to the device (e.g., device 130, device 150).
In various embodiments, the receiving module 210 may receive an input that includes a description of an abstraction of items (e.g., category, color, purpose, or context). The input may be received from a device (e.g., device 130) operated by a user (e.g., user 132). The abstraction of the items may represent a group of items. As such, each item among the group may be included in the abstraction of the items. For instance, the description of the abstraction of the items may describe items belonging to a category, items used in a specific context, items sharing an attribute, items used in a specific situation, items that serve a specific purpose, and the like. In various embodiments, the receiving module 210 is further configured to receive an indication of the input as being a description of an abstraction of items. For instance, a hashtag may be used to indicate that the input is being used as the description of the abstraction of items. In various embodiments, the receiving module 210 may be further configured to receive an identification of a further user (e.g., user 152), or a recipient, from the device (e.g., device 130) operated by the user (e.g., user 132). The user may be shopping for items that the user (e.g., user 132) would like to buy for the recipient (e.g., user 152). The identification of the recipient may include a name, a unique identifier of an account belonging to the recipient, and the like. The identification of the recipient may be used by the accessing module 220 to access item preferences of the recipient, as explained in further detail below.
In various embodiments, the receiving module 210 is further configured to receive an indication of an item as being included in the abstraction of the items. The receiving module 210 may receive the indication prior to receiving the description of the abstraction of the items from the device (e.g., device 130) operated by the user (e.g., user 132). In response to receiving the description of the abstraction of items, the accessing module 220 may be further configured to access item descriptors of the item based on the receiving the indication of the item as being included in the abstraction of the items. In various embodiments, the receiving module 210 may receive the indication of the item as being included in the abstraction of the items from a further user (e.g., user 152).
In various embodiments, the accessing module 220 may access item descriptors from a database based on the abstraction of the items described in the input received at the receiving module 210. The item descriptors may respectively describe the items that are included in the abstraction of items. For instance, the abstraction of items may be a category of items and the item descriptors may respectively describe the items belonging to the category. As another example, the abstraction of items may be items used in a specific context. The item descriptors may respectively describe the items used in the specific context. Moreover, the abstraction of items may be items sharing an attribute. As such, the item descriptors may respectively describe the items sharing the attribute. In various example embodiments, an abstraction of items such as “superhero” may be used to describe a category of items. Item descriptors that correspond to the “superhero” abstraction of items may include Batman, Superman, X-men, and the like. As another example, an abstraction of items such as “outdoor” may be used to describe a specific context in which items are being used. Item descriptors corresponding to the “outdoor” abstraction of items may include: waterproof, resistant, durable, and the like. The item descriptors may also include item characteristics (e.g., an item color, an item attribute, an item type, an item price, and the like) of the items that are included in the abstraction of items. Moreover, the item descriptors may be used to distinguish the items included in the abstraction of items from one another. In various embodiments, each item included in the abstraction of the items may be associated with an item page which may be viewed online by a device that is associated with the user. The item page may include a title of the item, a description of the item, an image of the item, and the like. In various embodiments, the item descriptors accessed from the database may also be present in the item pages of the items that are included in the abstraction of the items. In various embodiments, the access module 220 may be further configured to access descriptions that may be used as an abstraction of items in response to the receiving module 210 receiving an indication of the input as being a description of an abstraction of items. For instance, if the description of the abstraction of items is “NBA”, the access module 220 may retrieve suggested descriptions which may also be used as an abstraction of items, such as “NFL” or “NHL”. In various embodiments, the access module 220 may retrieve suggested descriptions “NFL” and “NHL” in response to the receiving module 210 receiving a portion of a description of an abstraction of items, such as
In various embodiments, the database accessed by the accessing module 220 may be indexed according to the abstraction of the items. The accessing module 220 may access the database by referencing the indexed portion of the database that corresponds to the abstraction of the items described by the input received at the receiving module 210. For instance, item descriptors for Batman, Superman, and X-men may be stored in a section of the database corresponding to the “superhero” abstraction of items (e.g., retrievable from the database via a hashing function that maps the item descriptors to the description of the abstraction of items). Whereas item descriptors for waterproof, resistant, and durable may be stored in a section of the database corresponding to the “outdoor” abstraction of items.
In various embodiments, the item descriptors accessed from the database may be absent from the input that includes the description of the abstraction of the items received at the receiving module 210. For example, the item characteristics of the items included in the abstraction of the items may be absent from the input received at the receiving module 210. As such, the item descriptors accessed from the database by the accessing module 220 may describe the items at a more specific level as compared to the abstraction of the items described by the input. In various embodiments, the accessing module 220 may be further configured to access item preferences of the user. Moreover, the accessing module 220 may be further configured to access item preferences of the recipient based on a recipient identifier received at the receiving module 210, as described above. The item preferences may indicate a preference for a specific brand of item, price of item, color of item, popularity of item, and the like.
In various embodiments, the generating module 230 may be configured to generate a search query based on the item descriptors accessed from the database. In various embodiments, the generating module 230 may add the item descriptors to the search query. As stated previously, the item descriptors may respectively describe the items included in the abstraction of the items. For instance, the item descriptors may be the item characteristics of the items included in the abstraction of the items. In various embodiments, the generating module 230 may be further configured to generate the search query based on a determined subset of item descriptors, as further explained below. The generating module 230 may remove item descriptors not included in the subset of item descriptors, thereby retaining the item descriptors included in the subset of item descriptors.
In various embodiments, the presenting module 240 may be configured to present the generated search query to the device operated by the user. The presenting module 240 may be further configured to present the item descriptors added to the search query by the generating module 230. In various embodiments, the presenting module 240 may be further configured to present the generated search query to the device operated by the user prior to the receiving an indication to perform a search. The indication to perform the search may be received at the receiving module 210 from the device operated by the user.
In various embodiments, the receiving module 210 may further be configured to receive an indication from the device operated by the user to perform the search. In various embodiments, the searching module 260 may perform the search based on the search query generated by the generating module 230. In various embodiments, the search performed by the searching module 260 may retrieve the item pages of the items included in the abstraction of the items.
In various embodiments, the accessing module 220 may be further configured to determine a subset of the item descriptors based on the item preferences of the user. In response, the generating module 230 may be further configured to generate the search query based on the determined subset of the item descriptors corresponding to the item preferences of the user. The generating module 230 may be further configured to remove, from the search query, item descriptors not included in the subset of item descriptors, thereby retaining the item descriptors included in the subset of item descriptors. As a result, the presentation module 240 may be further configured to present the search query generated based on the subset of item descriptors to the device operated by the user. In various embodiments, the accessing module 220 may be further configured to determine a further subset of the item descriptors based on the item preferences of the recipient. In response, the generating module 230 may further be configured to generate the search query based on the further subset of the item descriptors corresponding to the item preferences of the recipient. The generating module 230 may remove, from the search query, item descriptors not included in the further subset of item descriptors, thereby retaining the item descriptors included in the further subset of item descriptors. The presentation module 240 may then be further configured to present the generated search query based on the further subset of item descriptors to the device operated by the user.
In various embodiments, the comparing module 250 may Be configured to measure an amount of overlap between the item preferences of the user and the further user. The accessing module 220 may be further configured to access the item preferences of the further user, or the contributor. The amount of overlap may be measured based on a number of common preferences between the user and the contributor with respect to the specific brand of item, the price of item, the color of item, the popularity of item, and the like. The comparison module 250 may determine the user and the contributor as having similar item preferences based on the amount of overlap between the item preferences of the user and the contributor. In various instances, the comparison module 250 may determine the amount of overlap as exceeding a predetermined threshold.
Any one or more of the modules described herein may be implemented using hardware (e.g., a processor of a machine) or a combination of hardware and software. For example, any module described herein may configure a processor to perform the operations described herein for that module. Moreover, any two or more of these modules may be combined into a single module, and the functions described herein for a single module may be subdivided among multiple modules. Furthermore, according to various example embodiments, modules described herein as being implemented within a single machine, database, or device may be distributed across multiple machines, databases, or devices.
More than one search query may be generated by the generating module 230, according to an embodiment. As such, the item descriptors “Hello Kitty iPhone case” may be used to generate a further search query 320 as a result of being part of the abstraction of items “Cartoon” 304 and “iPhone case” 306. In various embodiments, the search query may be presented by the presenting module 240 to the user prior to the user submitting the search query by clicking on search button 322. Moreover, each of the generated search queries (e.g., search query 318 and search query 320) may be selectable by the user to perform a search.
At step 820, the accessing module 220 may access item descriptors from a database based on the abstraction of the items described in the input received at the receiving module 210. The item descriptors may respectively describe the items that are included in the abstraction of items. In various embodiments, the item descriptors may be item characteristics (e.g., an item color, an item attribute, an item type, an item price, and the like). Moreover, item descriptors for each of the items may be used to distinguish each of the items from one another.
At step 830, the generating module 230 may generate a search query based on the item descriptors accessed from the database. In various embodiments, the generating module 230 may generate the search query by adding the item descriptors accessed from the database to the search query.
At step 840, the presenting module 240 may present the generated search query to the device operated by the user. In various embodiments, the presenting module 240 may present the generated search query prior to an indication being received at the receiving module 210. The indication may be to perform a search and may be received from the device operated by the user.
Any of the machines, databases, or devices shown in
The network 190 may be any network that enables communication between or among machines, databases, and devices (e.g., the server machine 110 and the device 130). Accordingly, the network. 190 may be a wired network, a wireless network (e.g., a mobile or cellular network), or any suitable combination thereof. The network 190 may include one or more portions that constitute a private network, a public network (e,g., the Internet), or any suitable combination thereof. Accordingly, the network 190 may include one or more portions that incorporate a local area network (LAN), a wide area network (WAN), the Internet, a mobile telephone network (e.g., a cellular network), a wired telephone network (e.g., a plain old telephone system (POTS) network), a wireless data network (e.g., WiFi network or WiMax network), or any suitable combination thereof. Any one or more portions of the network 190 may communicate information via a transmission medium. As used herein, “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions for execution by a machine, and includes digital or analog communication signals or other intangible media to facilitate communication of such software.
The machine 900 includes a processor 902 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated, circuit (RFIC), or any suitable combination thereof), a main memory 904, and a static memory 906, which are configured to communicate with each other via a bus 908. The processor 902 may contain microcircuits that are configurable, temporarily or permanently, by some or all of the instructions 924 such that the processor 902 is configurable to perform any one or more of the methodologies described herein, in whole or in part. For example, a set of one or more microcircuits of the processor 902 may be configurable to execute one or more modules (e.g., software modules) described herein.
The machine 900 may further include a graphics display 910 (e.g., a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, a cathode ray tube (CRT), or any other display capable of displaying graphics or video). The machine 900 may also include an alphanumeric input device 912 (e,g., a keyboard or keypad), a cursor control device 914 (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, an eye tracking device, or other pointing instrument), a storage unit 916, an audio generation device 918 (e.g., a sound card, an amplifier, a speaker, a headphone jack, or any suitable combination thereof), and a network interface device 920.
The storage unit 916 includes the machine-readable medium 922 (e.g., a tangible and non-transitory machine-readable storage medium) on which are stored the instructions 924 embodying any one or more of the methodologies or functions described herein. The instructions 924 may also reside, completely or at least partially, within the main memory 904, within the processor 902 (e.g., within the processor's cache memory), or both, before or during execution thereof by the machine 900. Accordingly, the main memory 904 and the processor 902 may be considered machine-readable media (e.g., tangible and non-transitory machine-readable media). The instructions 92.4 may be transmitted or received over the network 190 via the network interface device 920. For example, the network interface device 920 may communicate the instructions 924 using any one or more transfer protocols (e.g., hypertext transfer protocol (HTTP)).
In some example embodiments, the machine 900 may be a portable computing device, such as a smart phone or tablet computer, and have one or more additional input components 930 (e.g., sensors or gauges). Examples of such input components 930 include an image input component (e.g., one or more cameras), an audio input component (e.g., a. microphone), a direction input component (e.g., compass), a location input component (e.g., a global positioning system ((GPS) receiver), an orientation component (e.g., a gyroscope), a motion detection component (e.g., one or more accelerometers), an altitude detection component (e.g., an altimeter), and a gas detection component (e.g., a gas sensor). Inputs harvested by any one or more of these input components may be accessible and available for use by any of modules described herein.
As used herein, the term “memory” refers to a machine-readable medium able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium 922 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store instructions. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing the instructions 924 for execution by the machine 900, such that the instructions 924, when executed by one or more processors of the machine 900 (e.g., processor 902), cause the machine 900 to perform any one or more of the methodologies described herein, in whole or in part Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as cloud-based storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, one or more tangible data repositories in the form of a solid-state memory, an optical medium, a magnetic medium, or any suitable combination thereof.
Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A. “hardware module” is a tangible unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software encompassed within a general-purpose processor or other programmable processor. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware modules) at different times. Software may accordingly configure a processor, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e,g., a collection of information).
The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented module” refers to a hardware module implemented using one or more processors.
Similarly, the methods described herein may be at least partially processor-implemented, a processor being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. Moreover, the one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS), For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an application program interface (API)).
The performance of certain operations may be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the one or more processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or processor-implemented modules may be distributed across a number of geographic locations.
Some portions of the subject matter discussed herein may be presented in terms of algorithms or symbolic representations of operations on data stored as bits or binary digital signals within a machine memory (e.g., a computer memory). Such algorithms or symbolic representations are examples of techniques used by those of ordinary skill in the data processing arts to convey the substance of their work to others skilled in the art. As used herein, an “algorithm” is a self-consistent sequence of operations or similar processing leading to a desired result. In this context, algorithms and operations involve physical manipulation of physical quantities. Typically, but not necessarily, such quantities may take the form of electrical, magnetic, or optical signals capable of being stored, accessed, transferred, combined, compared, or otherwise manipulated by a machine. It is convenient at times, principally for reasons of common usage, to refer to such signals using words such as “data,” “content,” “bits,” “values,” “elements,” “symbols,” “characters,” “terms,” “numbers,” “numerals,” or the like. These words, however, are merely convenient labels and are to be associated with appropriate physical quantities.
Unless specifically stated otherwise, discussions herein using words such as “processing,” “computing,” “calculating,” “determining,” “presenting,” “displaying,” or the like may refer to actions or processes of a machine (e.g., a computer) that manipulates or transforms data represented as physical (e.g., electronic, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or any suitable combination thereof), registers, or other machine components that receive, store, transmit, or display information. Furthermore, unless specifically stated otherwise, the terms “a” or “an” are herein used, as is common in patent documents, to include one or more than one instance. Finally, as used herein, the conjunction “or” refers to a non-exclusive “or,” unless specifically stated otherwise.