This disclosure relates generally to the field of searching, and more specifically, ranking search results of content items provided in response to a search query.
Many traditional tools exist to search for various types of content within different environments. For example, in an online environment, a search engine may employ various algorithms for ranking search results such as websites. However, when searches are initiated in a local (e.g. offline) environment, traditional tools often rely on search capabilities of a file management application (e.g. file explorer). For example, these file management applications often allow a user to search for files often limited to a particular set of file types. Moreover, such file management applications often search through the same information regardless of the type of file, which typically includes the file name, the type of file, the date of creation, and certain other basic parameters that are maintained for the file.
Current devices, however, often store vast amounts of content including content items not typically accessed by users from a file management application. For example, certain types of content items (although saved as a file in some cases) are typically accessed directly from one or more applications, and not organized in directories traditionally navigated by file management applications. Accordingly, current devices often have interfaces that include a system-wide search application (e.g. a “finder” program) that users initiate as a primary source to access contents items. Accordingly, such search applications are often required to search amongst a variety of content item types and provide results in an intuitive manner.
Described is a system and technique for providing search results in response to a query for content items. For example, in one embodiment, a user may provide a search query (e.g. via a search application of a device) for content items, and in response, the system may search for content items based on metadata associated with the content items. The system may rank the search results based on various criteria as further discussed herein to display the search results in an intuitive and relevant manner. For example, in instances where the search application displays sample text (or a snippet) of the content item as part of a search result, the system may prioritize content items that include the search query as part of the sample text. In addition, prioritizing the display of content items may also include grouping and categorizing search results in a particular manner based on weights. Accordingly, the system and technique described herein may allow a search application to display content items in a more relevant manner especially in circumstances where a user is searching across a breadth of content item types.
Embodiments of the disclosure are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements.
Various embodiments and aspects will be described with reference to details discussed below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding of various embodiments. However, in certain instances, well-known or conventional details are not described in order to provide a concise discussion of embodiments. References to “one embodiment” or “an embodiment” or “some embodiments” means that a particular feature, structure, or characteristic described in conjunction with the embodiment can be included in at least one embodiment. The appearances of the phrase “embodiment” in various places in the specification do not necessarily refer to the same embodiment. The processes depicted in the figures that follow are performed by processing logic that comprises hardware (e.g. circuitry, dedicated logic, etc.), software, or a combination of both. Although the processes are described below in terms of some sequential operations, it should be appreciated that some of the operations described may be performed in a different order, or some operations may be performed in parallel rather than sequentially.
As described above, the disclosure relates to providing search results for content items, which may be provided within an operating environment as shown in
The client device 110 may be any type of computing device such as a smartphone, tablet, laptop, desktop, wearable device (e.g. smartwatch), set-top-box, interactive speaker, etc., and the server 120 may be any kind of server (or computing device, or another client device 110), which may be a standalone device, or part of a cluster of servers, and may include a cloud-based server, application server, backend server, or combination thereof.
As shown, the client device 110 may include various components or modules to perform various operations as described herein. The client device 110 may include a metadata processing module 140 that may process and collect various forms of metadata 160. Accordingly, the metadata processing module 140 may access metadata 160, as well as one or more indexes.
As referred to herein, metadata 160 may include any information (e.g. text) that may include characteristics, attributes, and the like, that may be associated with particular content items (local content items 170 and public content items 175). The metadata 160 may be stored as part of a content item, and/or may be stored separately (e.g. within a database or file). The metadata 160 may include information stored in any suitable format (e.g. metadata entries, fields, objects, files, etc.). In one embodiment, metadata 160 may be stored in a flat file format in order to improve the speed of retrieval of information in most circumstances. In one embodiment, metadata (e.g. if a metadata object or file) will itself contain entries or fields. In addition, the metadata may include information from different applications and a specific type of metadata may be created for each of the applications. In one embodiment, metadata may include a persistent identifier that uniquely identifies its associated content item. For example, this identifier remains the same even if the name of the file is changed or the file is modified. This allows for the persistent association between the particular content item and its metadata.
In addition, non-limiting examples of metadata may be found in commonly assigned U.S. Pat. No. 7,437,358, issued Oct. 14, 1998, the entirety of which is incorporated herein by reference.
As shown, the operating environment 100 may include a local index 150 for local content items 170 and/or metadata 160, and a public content items index 155 for public content items 175. As referred to herein, content items may include content items stored on a particular device (e.g. local content items 170) such as documents, emails, messages, pictures, media, applications, contacts, calendar items, reminders, folders, browser history, bookmarks, posts, and the like, as well as content items from public sources (e.g. public content items 175) including websites, webpages, applications, map information, reviews, retail items (e.g. from a particular online retailer), streamed media (e.g. music, videos, eBooks, etc.), pictures, social media content (e.g. posts, pictures, messages, contacts, etc.), and the like. It should be noted that the local and public content items are not mutually exclusive, and accordingly, public content items 175 may be local content items 170 (and vice versa).
The indexes may include identifiers or representations of the content items and these indexes may be designed to allow a user to rapidly locate a wide variety of content items. These indexes may index metadata 160 associated with content items (e.g. local content items 170 and public content items 175), as well as index the contents of these content items. In some embodiments, the local content items index 150 may be updated continuously (e.g. as content items are created, modified, etc.) using a background process (e.g. daemon) executing on a device. Similarly, the public content items index 155 may be updated using a crawler 157 such as an internet crawler. For example, crawler 157 may retrieve (e.g. “crawl”) for information from various websites, as well as from third-party providers. For example, crawler 157 may retrieve metadata relating to, for example, multimedia content items (e.g. music, movies, audio book, etc.) provided by third-party providers that may be accessed via a user account with the third-party provider. For instance, the system (e.g. crawler 157) may coordinate with a third-party provider (via an API) to provide searchable metadata for online content items to which the user may subscribe.
As shown in the embodiment of this figure, the local content items index 150 and public content item index 155 may be stored on separate devices. For example, in one embodiment, the system may distinguish between private data (e.g. local content items 170) stored on the device, and the public content items 175 (e.g. non-local content items) that may be accessed from public sources such as the internet or third-parties. In one embodiment, the system may secure the local content items 170 and metadata 160, by incorporating a firewall or other features to maintain the privacy of user content. In one embodiment, components that are part of a server may also be part of the client device 110, and accordingly, the system may secure these components using various techniques such as “sandboxing.” For example, sandboxing may include compartmentalizing resources (e.g. data, memory addresses, processes, features, etc.) that one or more components (or applications) are allowed to access on the client device 110. In addition, various encryption mechanisms may also be employed to secure content items 170 or metadata 160. It should be noted that although the content items are shown as a local (e.g. private) versus public dichotomy, in some embodiments, metadata (or content items) from public sources may be stored locally on the client device 110, and some local content items 170 may be accessed from a remote source (e.g. another client device 110, or server 120).
The client device 110 may also include a search application 122, which may provide an interface for receiving a search query and may initiate a search for content items as further described herein. The search application (or application) 122 may be provided as part of an operating system of the device, or may be part of an installed application (e.g. third-party application). In addition, the search application 122 may part be of an application that provides built-in search functionality. For example, an application (e.g. email application) may communicate with the components (e.g. modules) described herein via an API (e.g. API 130) to provide an interface for searching for content items.
The search module 124 may work in conjunction with the metadata processing module 140 to search for content items by searching metadata 160, or one or more of the indexes (or content items themselves). The ranking module 126 may also rank relevant search results based on weights as further described herein.
In one embodiment, the system may primarily search for local content items, but may also include a set of predefined (or user defined) public content items. For example, in one embodiment, the system may search a predefined set or type of public contents items (e.g. maps, wiki pages, particular websites, etc.). Accordingly, in one embodiment, the system may search for content items that are stored on a local device, as well as for content items that are from public sources (e.g. internet). It should be noted that the above search functionality may be performed on the client device 110, or in conjunction with the server 120. For example, the search query may be transmitted to a server 120 for processing, and the server may instruct client device 110 to perform a local search.
As described, the client device 110 may also include an API 130, to allow components (e.g. third-party applications) to access the metadata processing module 140 and other components shown. For example, the API 130 may provide a method for transferring data and commands between the metadata processing module 140 and these components. The metadata processing module 140 may also receive data from an importer/exporter via the API 130 that may communicate with various components to provide metadata for certain types of content items. As referred to herein, a third-party refers to a manufacturer or company other than the manufacturer or company providing the operating system for the device or the device itself. For example, a developer may utilize the API 130 to allow the developers to import or provide an indication of extractable metadata for content items specific to a particular application (e.g. third-party application).
It should be noted that configuration described above is an example, and various other configurations may be used without departing from the embodiments described herein. For instance, components may be added, omitted, and may interact in various ways known to an ordinary person skilled in the art.
While or after a search query is received, the system may perform a search for content items in 220. In one embodiment, the search may include searching metadata to identify content items relevant to the search query. Relevant content items may include content items that are associated with metadata that includes one or more terms similar to the search query, or metadata that contains (or includes, or matches) at least a part of the search query. When determining a relevancy, the system may use various search algorithms.
The system may also rank the search results in 230. In order to rank, or to identify the relevant content items, the system may employ a ranking algorithm. For example, ranking of content item may be based on various contextual data, characteristics, attributes, and the like. For example, such as recency (e.g. when the content item was created or last modified), user engagement actions (e.g. when was the content last opened, saved, modified, played, etc.), location, and other factors. In addition, certain metadata fields may be weighted or prioritized. In one embodiment, the system may take into account whether the search query is included in the metadata of a content item. Accordingly, as further discussed herein, the system may rank the content items based on whether the search query is part of metadata that is displayed as part of the sample text that is displayed with, or part of, a search result as shown for example in
In 240, the system may display the ranked search results. For example, in one embodiment, the system may prioritize the display of content items including the search query as part of the sample text as shown for example in
In one embodiment, the sample text 13 may include metadata associated with a search result. For example, as shown, search result 15 includes a map content item, and the sample text includes a location name, and an address of the content item shown as a search result. For search result 15, the sample text 13 includes the search query, which in this case is “desig.” For search result 17, the sample text does not include the search query. In other words, the metadata related to search result 17 that resulted in the content item being included as a search result, relates to metadata that is potentially not visible as sample text. In one embodiment, metadata that is not visible, may include data that is “cutoff” from the sample text preview area (e.g. due to size constraints). In another embodiment, metadata that is not visible may include metadata that is not designed to be displayed as sample text (e.g. hidden or private metadata). In one embodiment, an indicator (or visibility indicator) associated with a metadata entry (e.g. a flag) may indicate the metadata entry is displayed as sample text.
As described herein, in one embodiment, search results that include (or contain) the search query as part of the sample text (e.g. search results 15 and 19) may be prioritized.
However, in other embodiments, only prioritized search results may be displayed within a categorized group as shown in
In one embodiment, displaying the search results may include displaying each of the content items as a selectable item within a list and the sample text may displayed as part of the selectable item as shown in
As described above, the system may display or search metadata associated with a content item.
As described above, the system may weight search results based on whether the search query is contained (or included) within metadata that is displayed as part of the sample text. In one embodiment, the system may determine which metadata entries (or fields) are included as part of the sample text based on an indicator 76. As shown in this example, an indicator 76 is included for each metadata entry. In other embodiments, an indicator 76 may be included for a particular subset of metadata entries. The indicator may include a flag or a bit value, or other form of indicator. As described above, the system may consider which metadata entries are displayed (or visible, provided, etc.) as part of the sample text when ranking content items. For example, in this example, the indicator indicates that the subject line and message body preview are displayed as part of the sample text for a content item. In one embodiment, the message body preview may contain a predefined number of characters of the message body. For example, a search query that appears after a character count threshold (e.g. after the predefined number of characters), would not be displayed as part of the sample text.
In one embodiment, the metadata entries that may be displayed as part of the sample text may be static. For example, the metadata entries displayed as sample text may be predefined and specific to a particular content item. For example, the metadata displayed as sample text for an email content item may be the same for all searches and include the subject line and the message body preview as shown, for example, in
It should be noted that the dynamic metadata fields for the sample text as shown in
As described above, the metadata entries that are displayed as part of the sample text may change based on various factors. For example, these factors may include the value or the presence (or absence) of other metadata fields for the same content item, terms of the search query itself, attributes of a user, device attributes, location of the device, and the like.
In addition, the system may update the displayed metadata entries based on user behavior or history information. For example, the system may include various ranking techniques to incorporate the visibility of sample text. In one embodiment, the system may monitor the hits within the search results (e.g. content item selected in response to a search) and dynamically adapt the metadata displayed as sample text. For example, search results that are selected based on metadata that is not visible within the sample text, may be updated such that they are visible in future searches. This update may include a global update for all devices, or a local update for a particular device.
In addition, in some embodiments, the ranking mechanisms (e.g. prioritizing content items that contain the search query as part of the sample text) may be turned on or off. This may occur on a per device, per user, or per query basis. For example, the user may turn off the ranking or weighting mechanism and search results may be provided based other characteristics.
In addition, it should be noted that embodiments described above, may be performed in response to a text query (e.g. text typed within a search box), or in response to a voice command (e.g. utterance). Accordingly, the search results may be presented in various forms including displayed items within a display area, or as audio output, or combinations thereof. For example, for example as described above the user may provide a voice command and the system may respond with audio indicating a retrieval of search results.
In 901, the system may receive a search query for a search application that displays sample text as part of a search result. In 902, the system may perform a search to identify content items associated with metadata that contain (or include) at least a part of the search query. In one embodiment, the metadata may be associated with an indicator (e.g. indicator 76) indicating whether the metadata is displayed as part of the sample text. In one embodiment, the metadata may include a first metadata entry and a second metadata entry. For example, the indicator may indicate that the first metadata entry is displayed as part of the sample text for a first content item. In one embodiment, the indicator for the first metadata entry may be dynamically updated in response to a determined value of the second metadata entry for the first content item.
In 903, the system may rank the identified content items using one or more weights based at least in part on whether the metadata is displayed as part of the sample text. In 904, the system may display the ranked content items as search results, wherein the displayed content items that contain the search query as part of the sample text are prioritized over the displayed content items that do not contain the search query as part of the sample text. In one embodiment, the ranked content items displayed as search results are updated as characters of the search query are received. In addition, the system may “push down” the display content items that do not contain the sample text.
In one embodiment, the system may display the content items that contain the search query as part of the sample text above content items that do not contain the search query as part of the sample text. In addition, in one embodiment, when displaying the search results in categorized groups, the system may display, within each of the categorized groups, the content items that contain the search query as part of the sample text above content items that do not contain the search query as part of the sample text. The system may also rank groups of content. For example, in one embodiment, the system may display the content items in categorized groups, and display the categorized groups that contain one or more content items that contain the search query as part of the sample text above the categorized groups that do not contain any content items that contain the search query as part of the sample text.
In 951, the system may receive a search query for a search application that displays sample text as part of a search result. In 952, the system may perform a search to identify content items associated with a metadata entry that includes the search query. For example, the identified content items may include a first content item associated with a first metadata entry that includes the search query, and a second content item associated with a second metadata entry that includes the search query.
In 953, the system may rank the identified content items based on whether the metadata or content entry is displayed as part of the sample text. For example, the first metadata or content entry may be displayed as part of the sample text, and the second metadata or content entry may not be displayed as part of the sample text. Accordingly, in such a scenario, the system may rank the first content items higher than the second content item. In 954, the system may display the ranked content items as search results including displaying the first content item above the second content item.
It should be noted that there may be variations to the flow diagrams or operations (or steps) described therein without departing from the embodiments described herein. For example, the operations may be performed in parallel, simultaneously, a differing order, or operations may be added, deleted, or modified.
As shown, the computing system 1200 may include a bus 1205 which may be coupled to a processor 1210, ROM (Read Only Memory) 1220, RAM (or volatile memory) 1225, and storage (or non-volatile memory) 1230. The processor 1210 may retrieve stored instructions from one or more of the memories 1220, 1225, and 1230 and execute the instructions to perform processes, operations, or methods described herein. These memories represent examples of a non-transitory machine-readable medium or storage containing instructions which when executed by a computing system (or a processor), cause the computing system (or processor) to perform operations, processes, or methods described herein. The RAM 1225 may be implemented as, for example, dynamic RAM (DRAM), or other types of memory that require power continually in order to refresh or maintain the data in the memory. Storage 1230 may include, for example, magnetic, semiconductor, tape, optical, removable, non-removable, and other types of storage that maintain data even after power is removed from the system. It should be appreciated that storage 1230 may be remote from the system (e.g. accessible via a network).
A display controller 1250 may be coupled to the bus 1205 in order to receive display data to be displayed on a display device 1255, which can display any one of the user interface features or embodiments described herein and may be a local or a remote display device. The computing system 1200 may also include one or more input/output (I/O) components 1265 including mice, keyboards, touch screen, network interfaces, printers, speakers, and other devices. Typically, the input/output components 1265 are coupled to the system through an input/output controller 1260.
Modules 1270 (or components, units, or logic) may represent any of the modules described above, such as, for example, search application 122, search module 124, ranking module 126, metadata processing module 140, and crawler 157 (and related modules, and sub-modules). Modules 1270 may reside, completely or at least partially, within the memories described above, or within a processor during execution thereof by the computing system. In addition, modules 1270 can be implemented as software, firmware, or functional circuitry within the computing system, or as combinations thereof.
The present disclosure recognizes that the use of personal information data, in the present technology, can be used to the benefit of users. For example, the personal information data can be used to deliver targeted content that is of greater interest to the user. Accordingly, use of such personal information data enables calculated control of the delivered content. Further, other uses for personal information data that benefit the user are also contemplated by the present disclosure.
The present disclosure further contemplates that the entities responsible for the collection, analysis, disclosure, transfer, storage, or other use of such personal information data will comply with well-established privacy policies and/or privacy practices. In particular, such entities should implement and consistently use privacy policies and practices that are generally recognized as meeting or exceeding industry or governmental requirements for maintaining personal information data private and secure. For example, personal information from users should be collected for legitimate and reasonable uses of the entity and not shared or sold outside of those legitimate uses. Further, such collection should occur only after receiving the informed consent of the users. Additionally, such entities would take any needed steps for safeguarding and securing access to such personal information data and ensuring that others with access to the personal information data adhere to their privacy policies and procedures. Further, such entities can subject themselves to evaluation by third parties to certify their adherence to widely accepted privacy policies and practices.
Despite the foregoing, the present disclosure also contemplates embodiments in which users selectively block the use of, or access to, personal information data. That is, the present disclosure contemplates that hardware and/or software elements can be provided to prevent or block access to such personal information data. For example, in the case of advertisement delivery services, the present technology can be configured to allow users to select to “opt in” or “opt out” of participation in the collection of personal information data during registration for services. In another example, users can select not to provide location information for targeted content delivery services. In yet another example, users can select to not provide precise location information, but permit the transfer of location zone information.
In the foregoing specification, example embodiments of the disclosure have been described. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of the disclosure as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
This application claims the benefit of U.S. Provisional Patent Application No. 62/349,106, filed Jun. 12, 2016, the entirety of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62349106 | Jun 2016 | US |