US20180349467A1 - Systems and methods for grouping search results into dynamic categories based on query and result set - Google Patents

Systems and methods for grouping search results into dynamic categories based on query and result set Download PDF

Info

Publication number
US20180349467A1
US20180349467A1 US15/721,197 US201715721197A US2018349467A1 US 20180349467 A1 US20180349467 A1 US 20180349467A1 US 201715721197 A US201715721197 A US 201715721197A US 2018349467 A1 US2018349467 A1 US 2018349467A1
Authority
US
United States
Prior art keywords
search results
application
search
machine
readable medium
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US15/721,197
Inventor
Anubhav Malhotra
John M. Hörnkvist
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Priority to US15/721,197 priority Critical patent/US20180349467A1/en
Assigned to APPLE INC. reassignment APPLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HÖRNKVIST, John M., MALHOTRA, ANUBHAV
Publication of US20180349467A1 publication Critical patent/US20180349467A1/en
Priority to US16/731,977 priority patent/US11669550B2/en
Priority to US18/316,929 priority patent/US20230281226A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • G06F17/30598
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • G06F17/30321
    • G06F17/30554

Definitions

  • This invention relates generally to search technology and more particularly to grouping search results into dynamic categories.
  • a user will often perform a query search to lookup information on the Web or from some other data sources, such as for objects local to the device the user is using.
  • a query search begins with a client receiving the query string, which is sent to a search server and/or a local search service.
  • the search server receives query string and searches a search index for results that match this query string.
  • the search server then returns the results to the client. If the query string is sent to the local search service, the local search service performs the search using a local search index and returns the search results.
  • Each of the results from either source will include a ranking score that is used to rank and present the search results. The search results with a higher ranking are presented higher than results with a lower ranking.
  • search results are presented in the rank order based rankings for each of the search results.
  • sets of search results can be presented in groups, where each of the groups represents search performed in a particular search domain that is known to the device or search server at the time of the search.
  • these different search domains are static and do not change over a period of time or based on the type of content returned in the search results.
  • a method and apparatus of a device that indexes donated content from an application on a device is described.
  • the device receives donated content for an application object from the application.
  • the device further associates a metadata tag for a topic to the donated content.
  • the device indexes the donated content with the metadata tag in a local search index of the device.
  • the device receives a query search for objects indexed in the local search index.
  • the device performs the query search using local search index to obtain a set of search results that includes the donated content.
  • the device categorizes at least some of the set of search results using at least the metadata tag of the donated content.
  • the device additionally, generates the metadata tag for the donated content.
  • the device can generate the metadata tag by performing latent semantic analysis on the object, extracting at least one topic from the latent semantic analysis, and adding the at least one topic to the metadata tag for the object.
  • the device can generate the metadata tag by retrieving an application category for the application and adding the application category to the metadata tag as a topic for the object. This application category can be retrieved from an application store.
  • the device can generate the metadata tag by retrieving a set of tags from the application and the application determines the set of tags based on at least a publicly set of available tags.
  • a method and apparatus of a device that categorizes a plurality of search results receives a plurality of search results.
  • the device determines a category for at least a subset of the search results, where the category is determined using a metadata tag for a corresponding one of the subset of search results and the metadata tag and the corresponding one of the subset of search results is retrieved from a local search index stored on the device.
  • the device presents the subset of the search results to a user of the device.
  • the metadata tag includes topic information.
  • the topic information can be generated from a latent semantic analysis of an object corresponding to the one of the subset of search results.
  • the topic information can be generated from category information of an application that donated an object corresponding to the one of the subset of search results.
  • the topic information can be generated from a tag determined by an application that donated an object corresponding to the one of the subset of search results.
  • the metadata tag is stored in a local search index.
  • the device determines a category by determining overlapping topic information from the subset of search results.
  • the overlapping topic information can be the same topic for each of the subset of search results or can be a set of related topics associated with the subset of search results.
  • the device further presents the subset of the search results with the category.
  • a machine-readable medium having executable instructions to cause one or more processing units to perform a method to index donated content from an application on a device.
  • the machine-readable medium method receives donated content for an application object from the application.
  • the machine-readable medium method further associates a metadata tag for a topic to the donated content.
  • the machine-readable medium method indexes the donated content with the metadata tag in a local search index of the device.
  • the machine-readable medium method receives a query search for objects indexed in the local search index.
  • the machine-readable medium method performs the query search using local search index to obtain a set of search results that includes the donated content.
  • the machine-readable medium method categorizes at least some of the set of search results using at least the metadata tag of the donated content.
  • the machine-readable medium method additionally generates the metadata tag for the donated content.
  • the machine-readable medium method can generate the metadata tag by performing latent semantic analysis on the object, extracting at least one topic from the latent semantic analysis, and adding the at least one topic to the metadata tag for the object.
  • the machine-readable medium method can generate the metadata tag by retrieving an application category for the application and adding the application category to the metadata tag as a topic for the object. This application category can be retrieved from an application store.
  • the machine-readable medium method can generate the metadata tag by retrieving a set of tags from the application and the application determines the set of tags based on at least a publicly set of available tags.
  • a method to index donated content from an application on a device receives donated content for an application object from the application.
  • the method further associates a metadata tag for a topic to the donated content.
  • the method indexes the donated content with the metadata tag in a local search index of the device.
  • a machine-readable medium method having executable instructions to cause one or more processing units to perform a method to categorize a plurality of search results.
  • the machine-readable medium method receives a plurality of search results.
  • the machine-readable medium method determines a category for at least a subset of the search results, where the category is determined using a metadata tag for a corresponding one of the subset of search results and the metadata tag and the corresponding one of the subset of search results are retrieved from a local search index stored on the device.
  • the machine-readable medium method presents the subset of the search results to a user of the device.
  • the metadata tag includes topic information.
  • the topic information can be generated from a latent semantic analysis of an object corresponding to the one of the subset of search results.
  • the topic information can be generated from category information of an application that donated an object corresponding to the one of the subset of search results.
  • the topic information can be generated from a tag determined by an application that donated an object corresponding to the one of the subset of search results.
  • the metadata tag is stored in a local search index.
  • the machine-readable medium method determines a category by determining overlapping topic information from the subset of search results.
  • the overlapping topic information can be the same topic for each of the subset of search results or can be a set of related topics associated with the subset of search results.
  • the machine-readable medium method further presents the subset of the search results with the category.
  • a method to categorize a plurality of search results receives a plurality of search results.
  • the method determines a category for at least a subset of the search results, where the category is determined using a metadata tag for a corresponding one of the subset of search results and the metadata tag and the corresponding one of the subset of search results is retrieved from a local search index stored on the device.
  • the method presents the subset of the search results to a user of the device.
  • FIG. 1 is a block diagram of one embodiment of a client that has applications donating content to a local search index.
  • FIG. 2 is a block diagram of one embodiment of a system that includes a client performing a local and/or remote search.
  • FIG. 3 is a flow diagram of one embodiment of a process to index donated content from locally installed applications.
  • FIG. 4 is flow diagram of one embodiment of a process to process a query request.
  • FIG. 5 is a flow diagram of one embodiment of a process to dynamically categorize search results.
  • FIG. 6 is a block diagram of one embodiment of grouping module that dynamically categorizes search results.
  • FIG. 7 illustrates one example of a typical computer system, which may be used in conjunction with the embodiments described herein.
  • FIG. 8 shows an example of a data processing system, which may be used with one embodiment of the present invention.
  • Coupled is used to indicate that two or more elements, which may or may not be in direct physical or electrical contact with each other, co-operate or interact with each other.
  • Connected is used to indicate the establishment of communication between two or more elements that are coupled with each other.
  • processing logic that comprises hardware (e.g., circuitry, dedicated logic, etc.), software (such as is run on a general-purpose computer system or a dedicated machine), or a combination of both.
  • processing logic comprises hardware (e.g., circuitry, dedicated logic, etc.), software (such as is run on a general-purpose computer system or a dedicated machine), or a combination of both.
  • server client
  • device is intended to refer generally to data processing systems rather than specifically to a particular form factor for the server, client, and/or device.
  • the device includes one or more applications that donate content to a local search index on the device.
  • the donated content can be metadata relating to one or more objects that are created, used, modified, and/or otherwise associated with the corresponding application.
  • the device indexes the donated content in the local search index.
  • the device determines topic information for each of the donated content from the one or more applications.
  • the device can determine topic information by performing latent semantic analysis to determine topic for the donated content, determining topics based on application categories, using application donated tags, another mechanism to tag the donated content, and/or a combination therein.
  • the topic information can be stored in the local search index.
  • the device can use the topic information in the local search index to group, or equivalently categorize, search results from the local search index.
  • the device receives a search query and performs a search using the local search index and the search query.
  • the device receives the search results for the query, which can include topic information for a multiple of received search results.
  • the device determines which of the search results has overlapping topics.
  • the overlapping topics can be the same topic for a subset of the search results.
  • the overlapping topics can be a set of related topics for a subset of the search results.
  • the device can use the overlapping topics to categorize the search results.
  • FIG. 1 is a block diagram of one embodiment of a client 102 that has applications donating content to a local search index.
  • the client 102 includes a browser 104 , local search service 114 , and one or more applications 108 .
  • the local search service 114 includes a local search index 106 , topic module 110 , and local search service 112 .
  • the client 102 can be a personal computer, laptop, server, mobile device (e.g., smartphone, laptop, personal digital assistant, music playing device, gaming device, etc.), and/or any device capable requesting a search and/or displaying search results.
  • the client 102 can be a physical or virtual device.
  • the smartphone can be a cellular telephone that is able to perform many functions of client 102 .
  • browser 104 can be a web browser and/or a file browser. In this embodiment, the browser 104 can be used to request and view various types of documents that accessible from the server. Furthermore, the browser 104 can include a search input field that is used by the user to input the search query. In one embodiment, a web browser is a program that allows a user to search the web and/or other search domains and retrieve for various types of documents. In an alternative embodiment, the browser 104 can be another type of application that allows a user to retrieve one or more documents and/or input a search query, which is used to search on-device and/or off-device search domains. In one embodiment, the browser 104 includes a search input field, where the search input field is used by the user to input a search request string.
  • the client 102 can includes additional applications (including applications 108 and/or other applications not illustrated) that use a local search service 112 to perform a search of objects stored on the client 102 .
  • a search is a search of the objects stored on the client 102 .
  • the objects can be documents, pictures, music, applications, email, calendar entries, and/or other types of objects stored in the client 102 .
  • the search is based on a local search index 106 that is maintained by the client 102 .
  • the index is an index of the metadata stored in objects of the device.
  • each of the metadata stored in the index has a type.
  • the metadata types can include a creation date, modification date, upload date, files size, file type, attachment type (PDF, JPEG, etc.), metadata types within the object (e.g., “To,” “From,” “CC,” “Subject,” ID3 tags with media, “Date,” “Time,” “location,” “name,” “address,” etc.), and/or other data types stored within each of the objects.
  • the metadata contents and types are stored in the local search index 106 .
  • the applications can each capture a query prefix and send this query prefix to the local search service 112 , which in turn, uses the query prefix to perform the search using the local search index 106 .
  • a mail application includes a search field to search for relevant emails or used for a general search using the local search service.
  • the applications calendar, media player, file browser, and/or other applications can use local search service 108 to search for objects stored on the device 100 .
  • the local search service 112 can be used by the applications 108 and/or other components of the client 102 to perform searches of the local search index 106 .
  • the client 102 can include one or more applications.
  • each of the applications 108 is an executing program that progresses through a series of states while that application is running.
  • an application 108 can be a word processing application, spreadsheet, contacts, mail, phone, web browser, media player, review application, classified advertisement application, social networking, productivity, utility, game, real estate, photo, video, e-commerce, storefront, coupon, operating system, and/or any other type of application that can run on the device.
  • one, some, and/or all of the applications 108 can donate content to the local search index.
  • the donated content can be metadata relating to one or more objects that are created, used, modified, and/or otherwise associated with the corresponding application.
  • a word processing application can donate information regarding word processing documents known to the word processing application, such as file name, author, document text, size, number of words, file dates and/or any type of metadata associated with a word processing document.
  • a media program can donate information relating media objects (e.g., music, video, books, podcasts, and/or other types of media objects) known to the media program, such as media content name, performer, album or movie name, duration, genre, recording date, comments, type of encoding, sample rate, bitrate, track or clip number, size, and/or any other type of metadata associated with a media program.
  • a communication application can donate various types of metadata about messages known to this application (e.g., instant messages, texts, emails, and/or other types of messages), such as To, From, Subject, Body, Date, Time, Protocol, and/or any other type of metadata associated with a communication application.
  • a contacts application can donate information regarding various types of contacts, such as type of contact, name, address, type of contact, phone number(s), type of phone number, business name, zip code, image, and/or any other type of metadata associated with the contacts application.
  • an image program can donate metadata about images, such as size, dimensions, encoding type, name, color space, color profile, and/or any other type of metadata associated with an image program.
  • a calendar application can donate information regarding calendar entries, such as date, time, title, entry name, calendar name, entry text, and/or any other type of metadata associated with the calendar application.
  • a reminder application can donate information regarding reminders (e.g., reminders, to-do, and/or any other type of reminder), such as reminder name, due date, date created, alert date, repeat indicator, and/or any other type of metadata associated with the reminder application.
  • reminders e.g., reminders, to-do, and/or any other type of reminder
  • the local search index indexes this donated content, such that these objects can be available to a search service.
  • this topic information remains local to the client 102 and is not exposed outside of the client 102 .
  • each of the applications 108 progresses through a series of states while that application is executing.
  • one of these application states is a snapshot in time of the application.
  • the application state can be indexed locally as described in the co-pending U.S. patent application Ser. No. 14/871,900, entitled “In-Application History Search,” filed on Sep. 30, 2015 and incorporated herein.
  • each of the objects from the different applications 108 can be tagged with metadata.
  • the metadata can include the types of metadata described above (e.g., creation date, modification date, upload date, files size, file type, attachment type (PDF, JPEG, etc.), metadata types within the object (e.g., “To,” “From,” “CC,” “Subject,” ID3 tags with media, “Date,” “Time,” “location,” “name,” “address,” etc.), and/or other data types as described above).
  • the metadata can include information about one or more topics related the donated content.
  • Each of the objects can have a one, none, or multiple topics associated with that object.
  • a topic for an object can be a subject or theme of the content and/or metadata of that object.
  • the topics for an object can be indexed along with any other metadata for that object in the local search index 106 .
  • the topic module 110 determines topics for the content donated by the applications 108 .
  • a topic for the donated content is a subject or theme of the donated content.
  • the topic module 110 is a background daemon that periodically determines topics for content donated to the local search index 106 .
  • the topic module 110 can perform one or more different ways to determine topics for the donated content from an application.
  • a topic module 110 can perform latent semantic analysis on the content being indexed.
  • the latent semantic analysis is a technique that analyzes relationships between a set of objects and the terms they contain by producing a set of concepts related to the content of the objects.
  • the set of concepts related to the objects can be topics for these objects.
  • the topic module 110 performs latent semantic analysis to produce a set of concepts
  • the topic module 110 can perform a different type of analysis to determine the set of concepts (e.g., Explicit semantic analysis, Latent Dirichlet allocation, Hierarchical Dirichlet process, Non-negative matrix factorization, Expectation Maximization and/or another type of analysis to produce a set of concepts related to the content of the objects).
  • a topic for an object can be determined based on the application 108 related to this object.
  • a topic can be determined based on a category for this application, such as a category determined from an application store for this application.
  • an application 108 is retrieved from an application store for this client 102 .
  • this application can be categorized with one or more categories in the application store.
  • type e.g., productivity, games, graphics, etc.
  • use e.g., apps for photographers, apps for designers, explore your creativity, invaluable utilities, etc.
  • timeliness e.g., “What's new?”
  • rating e.g., top apps, top free apps, top grossing apps, etc.
  • another categorization of an application 108 in the application store e.g., by type (e.g., productivity, games, graphics, etc.), use (e.g., apps for photographers, apps for designers, explore your creativity, invaluable utilities, etc.), timeliness (e.g., “What's new?”), rating (e.g., top apps, top free apps, top grossing apps, etc.), and/or another categorization of an application 108 in the application store.
  • Each of the categories for this application 108 can be used as a topic for the application.
  • a topic for the donated content can be determined from application donated tags, where the application generated the donated tags using a set of well-known tags.
  • the well-known tags can be WIKIPEDIA categories, and/or other types of tags accessible to the client 102 .
  • FIG. 2 is a block diagram of one embodiment of a system that includes a client performing a local and/or remote search.
  • the client 202 includes a browser 204 , local search service 220 , and one or more applications 208 .
  • the local search service 218 includes a local search index 206 , topic module 210 , and local search service 218 .
  • browser 204 , local search service 220 , and one or more applications 208 are the same or similar to the browser 104 , local search service 114 , and one or more applications 108 as described in FIG. 1 above.
  • the local search index 206 includes content donated from applications 208 that include topic information determined by the topic module 210 .
  • the client 202 is coupled to a search server 214 .
  • the search server 214 can be a personal computer, laptop, server, mobile device (e.g., smartphone, laptop, personal digital assistant, music playing device, gaming device, etc.), and/or any device capable requesting a search and/or displaying search results.
  • the search server 214 can be a physical or virtual device.
  • the browser 204 can send search requests to the search server 214 , local search index 206 , or both for the same search request.
  • the browser 204 receives a search query from a source (e.g., the user inputs the search query), sends this search query to the search target (e.g., the local search index 206 , search server 214 , or both), and receives the search results.
  • the search results include topic information.
  • the search results can include topic information for one, some, or all of the returned search results.
  • the local search index 206 can return results from financial applications stored on the client 202 .
  • search results from the search server 214 can also include topic information.
  • the search server 214 parses the query and generates a result set that may be annotated with the high-level category using the same set of well-known tags that will be used on-device for categorization. Once this result-set is received on device, results with the same category, be it local or server, can be merged to provide a result set that has dynamic categories listed. For example and in one embodiment, for a query that is includes a United State politician's name, the search server 214 returns a set of news results with the category as United State Politics. In addition, a local news application can also donate news articles that are annotated as United States Politics by the tagger. Both of these result sets will be merged to form a single category of ‘News—US Politics.’
  • the search server 214 includes a query topics module 216 that retrieves topics information and applies this topic information to the search results from the search server 214 .
  • the topic information can be a topic model as described in U.S. patent application Ser. No. 15/356,189, entitled “Client-Side Search Result Re-Ranking” filed on Nov. 18, 2016 and incorporated herein.
  • a grouping module 212 of the browser can group these results using at least the topics associated with each of the search results.
  • the received search results can have overlapping topics, where at least one multiple of search results share a common or same topic, or alternatively the grouped search results can have related topics that can be grouped into one category.
  • the grouping module 212 uses these groupings to dynamically present grouped search results.
  • search results with overlapping topics can be grouped together and presented in a category with the name of the overlapping topic.
  • search results may be surface results grouped under a category “Credit Amount.”
  • search results would be from the local search index 206 , which may be displayed without further identification, such as a password prompt or other form of identification (e.g., touch ID, facial recognition, and/or another form of identification).
  • a search result can be applications 208 that grouped by category.
  • searching for the query “social,” may surface the social network applications that are installed on the client 202 . This can allow for quick navigation to multiple applications of this category without the need to type in each application name or navigate through one or more layers of organization structure (e.g., folders).
  • bundling of event sets on results from different applications can be made much easier and faster for a query such as “holidays,” if each application marks their events with at least one topic tag as holiday.
  • news items may be grouped under categories such as “political,” “sports,” “local,” and/or other types of news categories that may allow a finer granulation for users.
  • which topics are used for the categorization originate from the application-based topics associated and indexed with the search results and not from a static categorization that attempts to fit the search results into this static type of categorization. This allows for a greater breadth of available topics can be used to categorize the search results.
  • these application-originated topics can allow for a finer categorization of topics (e.g., “local,” “breaking,” “politics,” “sports,” “national,” “foreign,” etc., as opposed to a single new category.
  • the grouping module 212 generates groupings at the category level. For example and in one embodiment, the grouping module 212 can find that different collections of applications form clusters of at the category level, such as based on the items these applications index, the items a user interacts with, from App store information, and/or from aggregate user behavior observed in feedback.
  • different email applications can form one cluster of categories
  • messaging applications can form another cluster
  • media applications can another cluster of categories.
  • the grouping module 212 can, in this embodiment, group the categories of each of these clusters for these applications together.
  • the grouping module 212 uses the ranking probabilities to rank grouped search results. For example and in one embodiment, if search results 2 , 5 , 12 , and 34 have the overlapping topic of “politics,” the grouping module 212 can use the ranking probabilities of the search results 2 , 5 , 12 , and 34 to rank these search results within the presented category of “politics.” In this example, by grouping the search results into one or more categories, lower ranked search results may be surfaced via the categorization mechanism.
  • the grouping module 212 can use a machine learning model to refine the dynamic coalescing of the topics.
  • the machine learning model use at least user engagement of search results, where each engagement is an indication that a user has engaged, rendered, or abandoned the URL associated with that engagement.
  • this can be used with a user's browser history to build a user interest model that can reflect which topics are of interest to the user.
  • topics that are favored to the user can be preferentially used to group search results. For example and in one embodiment, if the user topic module shows a preference for news-type topics over shopping-type topics, if there were potential groupings for news-type topics vs. shopping-type topics, the grouping module would preferentially use the news-type topics instead of (or rank the news-type topic groupings higher than a shopping-type topic grouping).
  • the topic model is private to the client and not sent to a server.
  • the client topic model is generated as described in U.S. patent application Ser. No. 15/356,189, entitled “Client-Side Search Result Re-Ranking” filed on Nov. 18, 2016 and incorporated herein.
  • the ranking algorithm uses crowd sourced knowledge to get a generalized interest vector for users. This knowledge helps the client 202 determine what topics might be more relevant to a user given how other users have consumed that info. This approach can be extended to be more personalized by using on-device interaction information (e.g., the private client topic model). In one embodiment, this on-device data can be fed to machine learning approaches for classifying topics as ‘Interested’ and ‘Not Interested’. The topics classified as ‘Interested’ can be shown with higher confidence in a user interface and can even be ranked higher.
  • this grouping is dynamic because the grouping is determined at the time the client 202 receives the search results and not based on static categories, such the domain that a search result resulted from.
  • donated items are annotated with a variety of tags with decreasing probability of each tag.
  • results can be ranked for display in a user interface.
  • This dynamic categorization may result in generating different categories for the same query as on-device data and server result changes. For example and in one embodiment, consider a sample query for ‘shoes.’ If the user has applications for NIKE, ADIDAS, UNDER ARMOUR, and each of these applications donates items that describe shoes of different kinds like (sneakers, running, basketball), the machine learning model may pick sneakers and basketball shoes as two dynamic categories and categorize other results under ‘Other options’ category if is determined that the user is interested in basketball and lifestyle topics.
  • FIG. 3 is a flow diagram of one embodiment of a process 300 to index donated content from locally installed applications.
  • a local search service indexes donated content from locally installed applications, such as the local search service 112 as described in FIG. 1 above.
  • process 300 begins by receiving application donated content at block 302 .
  • the application donated content can be metadata relating to one or more objects that are created, used, modified, and/or otherwise associated with the corresponding application as described in FIG. 1 above.
  • process 300 performs topic modeling to label the donated content.
  • process 300 can perform latent semantic analysis to determine topic for the donated content, determine topics based on application categories, using application donated tags, another mechanism to tag the donated content, and/or a combination therein.
  • process 300 can perform latent semantic analysis to determine topic for the donated content, determine topics based on application categories, and/or using application donated tags as described in FIG. 2 above.
  • Process 300 indexes the content attributes, including any relevant topic information, of the donated content in the local search index at block 306 .
  • process 300 indexes the content attributes (e.g., the application donated contents), including any relevant topic information, of the donated content in the local search index as described in FIG. 1 above.
  • FIG. 4 is flow diagram of one embodiment of a process 400 to process a query request.
  • a local search service processes a query request, such as the local search service 220 as described in FIG. 2 above.
  • process 400 begins by receiving a query request at block 402 .
  • process 400 performs that query using the local search index.
  • Process 400 returns the search results at block 406 .
  • one, some, or all of the search results can include topic information that is retrieved from the local search index.
  • FIG. 5 is a flow diagram of one embodiment of a process 500 to dynamically categorize search results.
  • a grouping module dynamically categorizes the search results, such as the grouping module 212 as described in FIG. 2 above.
  • process 500 begins by receiving the search results at block 502 .
  • the search results are from a local search index.
  • the search results are from a remote search server.
  • the search results can be from both the local search index and a remote search server.
  • process 500 determines overlaps between sets of search results based on the topics for the search results. In one embodiment, process 500 matches topics between search results to determine the overlaps.
  • process 500 groups search results that can similar topics. For example and in one embodiment, if there are two search results with news-related topics (e.g., “local politics” and “foreign politics”), these two search results can be grouped together in a “politics” or “news” category.
  • topics can be related using a set of well-known tags (e.g., WIKIPEDIA categories), an ontology (e.g., WORDNET), and/or another set of well-known tags.
  • process 500 selects likely categories for grouping and presenting the search results.
  • process 500 selects the likely categories based on the ranking of the search results.
  • likely categories can be selected based on a personalized ontology available on device, from the search server, or some other mechanism.
  • the search server gets crowd sourced data about engagements and can use that information to pick relevant categories for a given query. These categories can then be sent along with result set.
  • the machine learning model can pick the most relevant ones from this sub-list provided by search server.
  • process 500 uses a predictive model to determine which of the categories to select and present.
  • the predictive model can be based on a user browser history and search engagement as described in FIG. 2 above.
  • process 500 can determine the relative order of the search results within the selected category using the rank probabilities of the search results.
  • Process 500 groups the search results at block 508 .
  • process 500 groups the search results that match the selected one or more categories using the category name determined from the related topic.
  • the search results that not part of any of the selected categories can be presented outside of one of the selected categories.
  • the search results in the selected category can be presented at the top of the list of search results (with the category name), in the middle of the list of search results, or at the bottom of the list of search results.
  • FIG. 6 is a block diagram of one embodiment of grouping module 212 that dynamically categorizes search results.
  • the grouping module 212 includes receive search results module 602 , overlap module 604 , category module 606 , and group results module 608 .
  • the receive search results module 602 receives the search results as described in FIG. 5 , block 502 above.
  • the overlap module 604 determines topic overlaps as described in FIG. 5 , block 504 above.
  • the category module 606 selects likely categories as described in FIG. 5 , block 506 above.
  • the group results module 608 groups the search results as described in FIG. 5 , block 508 above.
  • the present disclosure recognizes that the use of such personal information data, in the present technology, can be used to the benefit of users.
  • the personal information data can be used to re-rank search results that is of greater interest to the user. Accordingly, use of such personal information data enables calculated control of the search results. 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • users can select not to provide location information for targeted content delivery services.
  • users can select to not provide precise location information, but permit the transfer of location zone information.
  • FIG. 7 shows one example of a data processing system 700 , which may be used with one embodiment of the present invention.
  • the system 700 may be implemented including a client 102 as shown in FIG. 1 or client 202 as shown in FIG. 2 above.
  • FIG. 7 illustrates various components of a computer system, it is not intended to represent any particular architecture or manner of interconnecting the components as such details are not germane to the present invention. It will also be appreciated that network computers and other data processing systems or other consumer electronic devices, which have fewer components or perhaps more components, may also be used with the present invention.
  • the computer system 700 which is a form of a data processing system, includes a bus 703 which is coupled to a microprocessor(s) 705 and a ROM (Read Only Memory) 707 and volatile RAM 709 and a non-volatile memory 711 .
  • the microprocessor 705 may include one or more CPU(s), GPU(s), a specialized processor, and/or a combination thereof.
  • the microprocessor 705 may retrieve the instructions from the memories 707 , 709 , 711 and execute the instructions to perform operations described above.
  • the bus 703 interconnects these various components together and also interconnects these components 705 , 707 , 709 , and 711 to a display controller and display device 717 and to peripheral devices such as input/output (I/O) devices which may be mice, keyboards, modems, network interfaces, printers and other devices which are well known in the art.
  • I/O input/output
  • the input/output devices 715 are coupled to the system through input/output controllers 713 .
  • the volatile RAM (Random Access Memory) 709 is typically implemented as dynamic RAM (DRAM), which requires power continually in order to refresh or maintain the data in the memory.
  • DRAM dynamic RAM
  • the mass storage 711 is typically a magnetic hard drive or a magnetic optical drive or an optical drive or a DVD RAM or a flash memory or other types of memory systems, which maintain data (e.g. large amounts of data) even after power is removed from the system.
  • the mass storage 711 will also be a random access memory although this is not required. While FIG. 7 shows that the mass storage 711 is a local device coupled directly to the rest of the components in the data processing system, it will be appreciated that the present invention may utilize a non-volatile memory which is remote from the system, such as a network storage device which is coupled to the data processing system through a network interface such as a modem, an Ethernet interface or a wireless network.
  • the bus 703 may include one or more buses connected to each other through various bridges, controllers and/or adapters as is well known in the art.
  • FIG. 8 shows an example of another data processing system 800 which may be used with one embodiment of the present invention.
  • system 800 may be implemented as a client 102 as shown in FIG. 1 or a client 202 as shown in FIG. 2 .
  • the data processing system 800 shown in FIG. 8 includes a processing system 811 , which may be one or more microprocessors, or which may be a system on a chip integrated circuit, and the system also includes memory 801 for storing data and programs for execution by the processing system.
  • the system 800 also includes an audio input/output subsystem 805 , which may include a microphone and a speaker for, for example, playing back music or providing telephone functionality through the speaker and microphone.
  • a display controller and display device 809 provide a visual user interface for the user; this digital interface may include a graphical user interface which is similar to that shown on a Macintosh computer when running OS X operating system software, or Apple iPhone when running the iOS operating system, etc.
  • the system 800 also includes one or more wireless transceivers 803 to communicate with another data processing system, such as the system 800 of FIG. 8 .
  • a wireless transceiver may be a WLAN transceiver, an infrared transceiver, a Bluetooth transceiver, and/or a wireless cellular telephony transceiver. It will be appreciated that additional components, not shown, may also be part of the system 800 in certain embodiments, and in certain embodiments fewer components than shown in FIG. 8 may also be used in a data processing system.
  • the system 800 further includes one or more communications ports 817 to communicate with another data processing system, such as the system 700 of FIG. 7 .
  • the communications port may be a USB port, Firewire port, Bluetooth interface
  • the data processing system 800 also includes one or more input devices 813 , which are provided to allow a user to provide input to the system. These input devices may be a keypad or a keyboard or a touch panel or a multi touch panel.
  • the data processing system 800 also includes an optional input/output device 815 which may be a connector for a dock. It will be appreciated that one or more buses, not shown, may be used to interconnect the various components as is well known in the art.
  • the data processing system 800 may be a network computer or an embedded processing device within another device, or other types of data processing systems, which have fewer components or perhaps more components than that shown in FIG. 8 .
  • At least certain embodiments of the inventions may be part of a digital media player, such as a portable music and/or video media player, which may include a media processing system to present the media, a storage device to store the media and may further include a radio frequency (RF) transceiver (e.g., an RF transceiver for a cellular telephone) coupled with an antenna system and the media processing system.
  • RF radio frequency
  • media stored on a remote storage device may be transmitted to the media player through the RF transceiver.
  • the media may be, for example, one or more of music or other audio, still pictures, or motion pictures.
  • the portable media player may include a media selection device, such as a click wheel input device on an iPod® or iPod Nano® media player from Apple, Inc. of Cupertino, Calif., a touch screen input device, pushbutton device, movable pointing input device or other input device.
  • the media selection device may be used to select the media stored on the storage device and/or the remote storage device.
  • the portable media player may, in at least certain embodiments, include a display device which is coupled to the media processing system to display titles or other indicators of media being selected through the input device and being presented, either through a speaker or earphone(s), or on the display device, or on both display device and a speaker or earphone(s). Examples of a portable media player are described in published U.S. Pat. No. 7,345,671 and U.S. published patent number 2004/0224638, both of which are incorporated herein by reference.
  • Portions of what was described above may be implemented with logic circuitry such as a dedicated logic circuit or with a microcontroller or other form of processing core that executes program code instructions.
  • logic circuitry such as a dedicated logic circuit or with a microcontroller or other form of processing core that executes program code instructions.
  • program code such as machine-executable instructions that cause a machine that executes these instructions to perform certain functions.
  • a “machine” may be a machine that converts intermediate form (or “abstract”) instructions into processor specific instructions (e.g., an abstract execution environment such as a “virtual machine” (e.g., a Java Virtual Machine), an interpreter, a Common Language Runtime, a high-level language virtual machine, etc.), and/or, electronic circuitry disposed on a semiconductor chip (e.g., “logic circuitry” implemented with transistors) designed to execute instructions such as a general-purpose processor and/or a special-purpose processor. Processes taught by the discussion above may also be performed by (in the alternative to a machine or in combination with a machine) electronic circuitry designed to perform the processes (or a portion thereof) without the execution of program code.
  • processor specific instructions e.g., an abstract execution environment such as a “virtual machine” (e.g., a Java Virtual Machine), an interpreter, a Common Language Runtime, a high-level language virtual machine, etc.
  • the present invention also relates to an apparatus for performing the operations described herein.
  • This apparatus may be specially constructed for the required purpose, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), RAMs, EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
  • a machine readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer).
  • a machine readable medium includes read only memory (“ROM”); random access memory (“RAM”); magnetic disk storage media; optical storage media; flash memory devices; etc.
  • An article of manufacture may be used to store program code.
  • An article of manufacture that stores program code may be embodied as, but is not limited to, one or more memories (e.g., one or more flash memories, random access memories (static, dynamic or other)), optical disks, CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards or other type of machine-readable media suitable for storing electronic instructions.
  • Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a propagation medium (e.g., via a communication link (e.g., a network connection)).

Abstract

A method and apparatus of a device that indexes donated content from an application on a device is described. In an exemplary embodiment, the device receives donated content for an application object from the application. The device further associates a metadata tag for a topic to the donated content. In addition, the device indexes the donated content with the metadata tag in a local search index of the device.

Description

    RELATED APPLICATIONS
  • Applicant claims the benefit of priority of prior, co-pending provisional application Ser. No. 62/514,717, filed Jun. 2, 2017, the entirety of which is incorporated by reference.
  • FIELD OF INVENTION
  • This invention relates generally to search technology and more particularly to grouping search results into dynamic categories.
  • BACKGROUND OF THE INVENTION
  • A user will often perform a query search to lookup information on the Web or from some other data sources, such as for objects local to the device the user is using. A query search begins with a client receiving the query string, which is sent to a search server and/or a local search service. The search server receives query string and searches a search index for results that match this query string. The search server then returns the results to the client. If the query string is sent to the local search service, the local search service performs the search using a local search index and returns the search results. Each of the results from either source will include a ranking score that is used to rank and present the search results. The search results with a higher ranking are presented higher than results with a lower ranking.
  • Typically, the search results are presented in the rank order based rankings for each of the search results. Alternatively, sets of search results can be presented in groups, where each of the groups represents search performed in a particular search domain that is known to the device or search server at the time of the search. However, these different search domains are static and do not change over a period of time or based on the type of content returned in the search results.
  • SUMMARY OF THE DESCRIPTION
  • A method and apparatus of a device that indexes donated content from an application on a device is described. In an exemplary embodiment, the device receives donated content for an application object from the application. The device further associates a metadata tag for a topic to the donated content. In addition, the device indexes the donated content with the metadata tag in a local search index of the device.
  • In a further embodiment, the device receives a query search for objects indexed in the local search index. In addition, the device performs the query search using local search index to obtain a set of search results that includes the donated content. Furthermore, the device categorizes at least some of the set of search results using at least the metadata tag of the donated content. The device additionally, generates the metadata tag for the donated content. The device can generate the metadata tag by performing latent semantic analysis on the object, extracting at least one topic from the latent semantic analysis, and adding the at least one topic to the metadata tag for the object. Alternatively, the device can generate the metadata tag by retrieving an application category for the application and adding the application category to the metadata tag as a topic for the object. This application category can be retrieved from an application store. As a further embodiment, the device can generate the metadata tag by retrieving a set of tags from the application and the application determines the set of tags based on at least a publicly set of available tags.
  • In another embodiment, a method and apparatus of a device that categorizes a plurality of search results is described. In an exemplary embodiment, the device receives a plurality of search results. In addition, the device determines a category for at least a subset of the search results, where the category is determined using a metadata tag for a corresponding one of the subset of search results and the metadata tag and the corresponding one of the subset of search results is retrieved from a local search index stored on the device. Furthermore, the device presents the subset of the search results to a user of the device.
  • In addition, the metadata tag includes topic information. The topic information can be generated from a latent semantic analysis of an object corresponding to the one of the subset of search results. Alternatively, the topic information can be generated from category information of an application that donated an object corresponding to the one of the subset of search results. In a further embodiment, the topic information can be generated from a tag determined by an application that donated an object corresponding to the one of the subset of search results.
  • Furthermore, the metadata tag is stored in a local search index. In addition, the device determines a category by determining overlapping topic information from the subset of search results. The overlapping topic information can be the same topic for each of the subset of search results or can be a set of related topics associated with the subset of search results. The device further presents the subset of the search results with the category.
  • In one embodiment, a machine-readable medium having executable instructions to cause one or more processing units to perform a method to index donated content from an application on a device is described. In an exemplary embodiment, the machine-readable medium method receives donated content for an application object from the application. The machine-readable medium method further associates a metadata tag for a topic to the donated content. In addition, the machine-readable medium method indexes the donated content with the metadata tag in a local search index of the device.
  • In a further embodiment, the machine-readable medium method receives a query search for objects indexed in the local search index. In addition, the machine-readable medium method performs the query search using local search index to obtain a set of search results that includes the donated content. Furthermore, the machine-readable medium method categorizes at least some of the set of search results using at least the metadata tag of the donated content. The machine-readable medium method additionally generates the metadata tag for the donated content. The machine-readable medium method can generate the metadata tag by performing latent semantic analysis on the object, extracting at least one topic from the latent semantic analysis, and adding the at least one topic to the metadata tag for the object. Alternatively, the machine-readable medium method can generate the metadata tag by retrieving an application category for the application and adding the application category to the metadata tag as a topic for the object. This application category can be retrieved from an application store. As a further embodiment, the machine-readable medium method can generate the metadata tag by retrieving a set of tags from the application and the application determines the set of tags based on at least a publicly set of available tags.
  • In a further embodiment, a method to index donated content from an application on a device is described. In an exemplary embodiment, the method receives donated content for an application object from the application. The method further associates a metadata tag for a topic to the donated content. In addition, the method indexes the donated content with the metadata tag in a local search index of the device.
  • In another embodiment, a machine-readable medium method having executable instructions to cause one or more processing units to perform a method to categorize a plurality of search results is described. In an exemplary embodiment, the machine-readable medium method receives a plurality of search results. In addition, the machine-readable medium method determines a category for at least a subset of the search results, where the category is determined using a metadata tag for a corresponding one of the subset of search results and the metadata tag and the corresponding one of the subset of search results are retrieved from a local search index stored on the device. Furthermore, the machine-readable medium method presents the subset of the search results to a user of the device.
  • In addition, the metadata tag includes topic information. The topic information can be generated from a latent semantic analysis of an object corresponding to the one of the subset of search results. Alternatively, the topic information can be generated from category information of an application that donated an object corresponding to the one of the subset of search results. In a further embodiment, the topic information can be generated from a tag determined by an application that donated an object corresponding to the one of the subset of search results.
  • Furthermore, the metadata tag is stored in a local search index. In addition, the machine-readable medium method determines a category by determining overlapping topic information from the subset of search results. The overlapping topic information can be the same topic for each of the subset of search results or can be a set of related topics associated with the subset of search results. The machine-readable medium method further presents the subset of the search results with the category.
  • In another embodiment, a method to categorize a plurality of search results is described. In an exemplary embodiment, the method receives a plurality of search results. In addition, the method determines a category for at least a subset of the search results, where the category is determined using a metadata tag for a corresponding one of the subset of search results and the metadata tag and the corresponding one of the subset of search results is retrieved from a local search index stored on the device. Furthermore, the method presents the subset of the search results to a user of the device.
  • Other methods and apparatuses are also described.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
  • FIG. 1 is a block diagram of one embodiment of a client that has applications donating content to a local search index.
  • FIG. 2 is a block diagram of one embodiment of a system that includes a client performing a local and/or remote search.
  • FIG. 3 is a flow diagram of one embodiment of a process to index donated content from locally installed applications.
  • FIG. 4 is flow diagram of one embodiment of a process to process a query request.
  • FIG. 5 is a flow diagram of one embodiment of a process to dynamically categorize search results.
  • FIG. 6 is a block diagram of one embodiment of grouping module that dynamically categorizes search results.
  • FIG. 7 illustrates one example of a typical computer system, which may be used in conjunction with the embodiments described herein.
  • FIG. 8 shows an example of a data processing system, which may be used with one embodiment of the present invention.
  • DETAILED DESCRIPTION
  • A method and apparatus of a device that indexes donated content from an application on a device is described. In the following description, numerous specific details are set forth to provide thorough explanation of embodiments of the present invention. It will be apparent, however, to one skilled in the art, that embodiments of the present invention may be practiced without these specific details. In other instances, well-known components, structures, and techniques have not been shown in detail in order not to obscure the understanding of this description.
  • Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment can be included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment.
  • In the following description and claims, the terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. “Coupled” is used to indicate that two or more elements, which may or may not be in direct physical or electrical contact with each other, co-operate or interact with each other. “Connected” is used to indicate the establishment of communication between two or more elements that are coupled with each other.
  • The processes depicted in the figures that follow, are performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, etc.), software (such as is run on a general-purpose computer system or a dedicated machine), 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 different order. Moreover, some operations may be performed in parallel rather than sequentially.
  • The terms “server,” “client,” and “device” are intended to refer generally to data processing systems rather than specifically to a particular form factor for the server, client, and/or device.
  • A method and apparatus of a device that indexes donated content from an application on a device and dynamically categorizes search results is described. In one embodiment, the device includes one or more applications that donate content to a local search index on the device. In this embodiment, the donated content can be metadata relating to one or more objects that are created, used, modified, and/or otherwise associated with the corresponding application. In addition, the device indexes the donated content in the local search index.
  • In one embodiment, the device determines topic information for each of the donated content from the one or more applications. The device can determine topic information by performing latent semantic analysis to determine topic for the donated content, determining topics based on application categories, using application donated tags, another mechanism to tag the donated content, and/or a combination therein. In this embodiment, the topic information can be stored in the local search index.
  • In one embodiment, the device can use the topic information in the local search index to group, or equivalently categorize, search results from the local search index. In this embodiment, the device receives a search query and performs a search using the local search index and the search query. The device receives the search results for the query, which can include topic information for a multiple of received search results. The device determines which of the search results has overlapping topics. In one embodiment, the overlapping topics can be the same topic for a subset of the search results. Alternatively, the overlapping topics can be a set of related topics for a subset of the search results. The device can use the overlapping topics to categorize the search results.
  • FIG. 1 is a block diagram of one embodiment of a client 102 that has applications donating content to a local search index. In FIG. 1, the client 102 includes a browser 104, local search service 114, and one or more applications 108. In one embodiment, the local search service 114 includes a local search index 106, topic module 110, and local search service 112. In one embodiment, the client 102 can be a personal computer, laptop, server, mobile device (e.g., smartphone, laptop, personal digital assistant, music playing device, gaming device, etc.), and/or any device capable requesting a search and/or displaying search results. In one embodiment, the client 102 can be a physical or virtual device. In one embodiment, the smartphone can be a cellular telephone that is able to perform many functions of client 102.
  • In one embodiment, browser 104 can be a web browser and/or a file browser. In this embodiment, the browser 104 can be used to request and view various types of documents that accessible from the server. Furthermore, the browser 104 can include a search input field that is used by the user to input the search query. In one embodiment, a web browser is a program that allows a user to search the web and/or other search domains and retrieve for various types of documents. In an alternative embodiment, the browser 104 can be another type of application that allows a user to retrieve one or more documents and/or input a search query, which is used to search on-device and/or off-device search domains. In one embodiment, the browser 104 includes a search input field, where the search input field is used by the user to input a search request string.
  • In one embodiment, the client 102 can includes additional applications (including applications 108 and/or other applications not illustrated) that use a local search service 112 to perform a search of objects stored on the client 102. In this embodiment, a search is a search of the objects stored on the client 102. For example and in one embodiment, the objects can be documents, pictures, music, applications, email, calendar entries, and/or other types of objects stored in the client 102. In one embodiment, the search is based on a local search index 106 that is maintained by the client 102. In this embodiment, the index is an index of the metadata stored in objects of the device.
  • In one embodiment, each of the metadata stored in the index has a type. For example and in one embodiment, the metadata types can include a creation date, modification date, upload date, files size, file type, attachment type (PDF, JPEG, etc.), metadata types within the object (e.g., “To,” “From,” “CC,” “Subject,” ID3 tags with media, “Date,” “Time,” “location,” “name,” “address,” etc.), and/or other data types stored within each of the objects. The metadata contents and types are stored in the local search index 106. To search this index 106, the applications can each capture a query prefix and send this query prefix to the local search service 112, which in turn, uses the query prefix to perform the search using the local search index 106. For example and in one embodiment, a mail application includes a search field to search for relevant emails or used for a general search using the local search service. Similarly, the applications calendar, media player, file browser, and/or other applications (e.g., contacts) can use local search service 108 to search for objects stored on the device 100. In one embodiment, the local search service 112 can be used by the applications 108 and/or other components of the client 102 to perform searches of the local search index 106.
  • As described above, and in one embodiment, the client 102 can include one or more applications. In one embodiment, each of the applications 108 is an executing program that progresses through a series of states while that application is running. For example and in one embodiment, an application 108 can be a word processing application, spreadsheet, contacts, mail, phone, web browser, media player, review application, classified advertisement application, social networking, productivity, utility, game, real estate, photo, video, e-commerce, storefront, coupon, operating system, and/or any other type of application that can run on the device.
  • In one embodiment, one, some, and/or all of the applications 108 can donate content to the local search index. In this embodiment, the donated content can be metadata relating to one or more objects that are created, used, modified, and/or otherwise associated with the corresponding application. For example and in one embodiment, a word processing application can donate information regarding word processing documents known to the word processing application, such as file name, author, document text, size, number of words, file dates and/or any type of metadata associated with a word processing document. A media program can donate information relating media objects (e.g., music, video, books, podcasts, and/or other types of media objects) known to the media program, such as media content name, performer, album or movie name, duration, genre, recording date, comments, type of encoding, sample rate, bitrate, track or clip number, size, and/or any other type of metadata associated with a media program. A communication application can donate various types of metadata about messages known to this application (e.g., instant messages, texts, emails, and/or other types of messages), such as To, From, Subject, Body, Date, Time, Protocol, and/or any other type of metadata associated with a communication application. In addition, a contacts application can donate information regarding various types of contacts, such as type of contact, name, address, type of contact, phone number(s), type of phone number, business name, zip code, image, and/or any other type of metadata associated with the contacts application. Furthermore, an image program can donate metadata about images, such as size, dimensions, encoding type, name, color space, color profile, and/or any other type of metadata associated with an image program. A calendar application can donate information regarding calendar entries, such as date, time, title, entry name, calendar name, entry text, and/or any other type of metadata associated with the calendar application. A reminder application can donate information regarding reminders (e.g., reminders, to-do, and/or any other type of reminder), such as reminder name, due date, date created, alert date, repeat indicator, and/or any other type of metadata associated with the reminder application. In addition, any other application that wants to donate contents to be searchable. In this embodiment, the local search index indexes this donated content, such that these objects can be available to a search service. In one embodiment, by keeping the topic information in the local search index, this topic information remains local to the client 102 and is not exposed outside of the client 102.
  • In addition, and as described above, each of the applications 108 progresses through a series of states while that application is executing. In one embodiment, one of these application states is a snapshot in time of the application. For example and in one embodiment, the application state can be indexed locally as described in the co-pending U.S. patent application Ser. No. 14/871,900, entitled “In-Application History Search,” filed on Sep. 30, 2015 and incorporated herein.
  • In one embodiment, each of the objects from the different applications 108 can be tagged with metadata. For example and in one embodiment, the metadata can include the types of metadata described above (e.g., creation date, modification date, upload date, files size, file type, attachment type (PDF, JPEG, etc.), metadata types within the object (e.g., “To,” “From,” “CC,” “Subject,” ID3 tags with media, “Date,” “Time,” “location,” “name,” “address,” etc.), and/or other data types as described above).
  • In a further embodiment, the metadata can include information about one or more topics related the donated content. Each of the objects can have a one, none, or multiple topics associated with that object. In one embodiment, a topic for an object can be a subject or theme of the content and/or metadata of that object. In this embodiment, the topics for an object can be indexed along with any other metadata for that object in the local search index 106.
  • In one embodiment, the topic module 110 determines topics for the content donated by the applications 108. In this embodiment, a topic for the donated content is a subject or theme of the donated content. In one embodiment, the topic module 110 is a background daemon that periodically determines topics for content donated to the local search index 106.
  • The topic module 110, in one embodiment, can perform one or more different ways to determine topics for the donated content from an application. For example and in one embodiment, a topic module 110 can perform latent semantic analysis on the content being indexed. In this example, the latent semantic analysis is a technique that analyzes relationships between a set of objects and the terms they contain by producing a set of concepts related to the content of the objects. The set of concepts related to the objects can be topics for these objects. While in one embodiment, the topic module 110 performs latent semantic analysis to produce a set of concepts, in alternate embodiments, the topic module 110 can perform a different type of analysis to determine the set of concepts (e.g., Explicit semantic analysis, Latent Dirichlet allocation, Hierarchical Dirichlet process, Non-negative matrix factorization, Expectation Maximization and/or another type of analysis to produce a set of concepts related to the content of the objects).
  • In another embodiment, a topic for an object can be determined based on the application 108 related to this object. In this embodiment, a topic can be determined based on a category for this application, such as a category determined from an application store for this application. For example and in one embodiment, an application 108 is retrieved from an application store for this client 102. In this example, this application can be categorized with one or more categories in the application store. For example and in one embodiment, by type (e.g., productivity, games, graphics, etc.), use (e.g., apps for photographers, apps for designers, explore your creativity, invaluable utilities, etc.), timeliness (e.g., “What's new?”), rating (e.g., top apps, top free apps, top grossing apps, etc.), and/or another categorization of an application 108 in the application store. Each of the categories for this application 108 can be used as a topic for the application.
  • In a further embodiment, a topic for the donated content can be determined from application donated tags, where the application generated the donated tags using a set of well-known tags. In this embodiment, the well-known tags can be WIKIPEDIA categories, and/or other types of tags accessible to the client 102.
  • With the topic information storied in the local search index, the topic information can be used to group search results for results with similar or overlapping topics. FIG. 2 is a block diagram of one embodiment of a system that includes a client performing a local and/or remote search. In FIG. 2, the client 202 includes a browser 204, local search service 220, and one or more applications 208. In one embodiment, the local search service 218 includes a local search index 206, topic module 210, and local search service 218. In one embodiment, browser 204, local search service 220, and one or more applications 208 are the same or similar to the browser 104, local search service 114, and one or more applications 108 as described in FIG. 1 above. In one embodiment, the local search index 206 includes content donated from applications 208 that include topic information determined by the topic module 210.
  • Furthermore, the client 202 is coupled to a search server 214. In one embodiment, the search server 214 can be a personal computer, laptop, server, mobile device (e.g., smartphone, laptop, personal digital assistant, music playing device, gaming device, etc.), and/or any device capable requesting a search and/or displaying search results. In one embodiment, the search server 214 can be a physical or virtual device.
  • In addition, and in another embodiment, the browser 204 can send search requests to the search server 214, local search index 206, or both for the same search request. In this embodiment, the browser 204 receives a search query from a source (e.g., the user inputs the search query), sends this search query to the search target (e.g., the local search index 206, search server 214, or both), and receives the search results. In one embodiment, the search results include topic information. For search results returned from the local search index 206, the search results can include topic information for one, some, or all of the returned search results. For example and in one embodiment, for a query with the term “credit,” the local search index 206 can return results from financial applications stored on the client 202.
  • In addition, and in one embodiment, search results from the search server 214 can also include topic information. In this embodiment, the search server 214 parses the query and generates a result set that may be annotated with the high-level category using the same set of well-known tags that will be used on-device for categorization. Once this result-set is received on device, results with the same category, be it local or server, can be merged to provide a result set that has dynamic categories listed. For example and in one embodiment, for a query that is includes a United State politician's name, the search server 214 returns a set of news results with the category as United State Politics. In addition, a local news application can also donate news articles that are annotated as United States Politics by the tagger. Both of these result sets will be merged to form a single category of ‘News—US Politics.’
  • In one embodiment, the search server 214 includes a query topics module 216 that retrieves topics information and applies this topic information to the search results from the search server 214. In this embodiment, the topic information can be a topic model as described in U.S. patent application Ser. No. 15/356,189, entitled “Client-Side Search Result Re-Ranking” filed on Nov. 18, 2016 and incorporated herein.
  • With the received search results, a grouping module 212 of the browser can group these results using at least the topics associated with each of the search results. In this embodiment, the received search results can have overlapping topics, where at least one multiple of search results share a common or same topic, or alternatively the grouped search results can have related topics that can be grouped into one category. In one embodiment, the grouping module 212 uses these groupings to dynamically present grouped search results. In this embodiment, search results with overlapping topics can be grouped together and presented in a category with the name of the overlapping topic. For example and in one embodiment, with a search query “credit,” financial applications that index credit information on the client 202 may surface results grouped under a category “Credit Amount.” In this example, because of the sensitive nature of the search, the search results would be from the local search index 206, which may be displayed without further identification, such as a password prompt or other form of identification (e.g., touch ID, facial recognition, and/or another form of identification).
  • In a further example and embodiment, a search result can be applications 208 that grouped by category. In this example, searching for the query “social,” may surface the social network applications that are installed on the client 202. This can allow for quick navigation to multiple applications of this category without the need to type in each application name or navigate through one or more layers of organization structure (e.g., folders).
  • In another example, bundling of event sets on results from different applications can be made much easier and faster for a query such as “holidays,” if each application marks their events with at least one topic tag as holiday. In a further example, news items may be grouped under categories such as “political,” “sports,” “local,” and/or other types of news categories that may allow a finer granulation for users.
  • In these examples, which topics are used for the categorization originate from the application-based topics associated and indexed with the search results and not from a static categorization that attempts to fit the search results into this static type of categorization. This allows for a greater breadth of available topics can be used to categorize the search results. In addition, these application-originated topics can allow for a finer categorization of topics (e.g., “local,” “breaking,” “politics,” “sports,” “national,” “foreign,” etc., as opposed to a single new category.
  • In a further embodiment, the grouping module 212 generates groupings at the category level. For example and in one embodiment, the grouping module 212 can find that different collections of applications form clusters of at the category level, such as based on the items these applications index, the items a user interacts with, from App store information, and/or from aggregate user behavior observed in feedback. In this example, different email applications can form one cluster of categories, messaging applications can form another cluster, and media applications can another cluster of categories. The grouping module 212 can, in this embodiment, group the categories of each of these clusters for these applications together.
  • In one embodiment, the grouping module 212 uses the ranking probabilities to rank grouped search results. For example and in one embodiment, if search results 2, 5, 12, and 34 have the overlapping topic of “politics,”, the grouping module 212 can use the ranking probabilities of the search results 2, 5, 12, and 34 to rank these search results within the presented category of “politics.” In this example, by grouping the search results into one or more categories, lower ranked search results may be surfaced via the categorization mechanism.
  • In a further embodiment, the grouping module 212 can use a machine learning model to refine the dynamic coalescing of the topics. In one embodiment, the machine learning model use at least user engagement of search results, where each engagement is an indication that a user has engaged, rendered, or abandoned the URL associated with that engagement. In addition, this can be used with a user's browser history to build a user interest model that can reflect which topics are of interest to the user. In this embodiment, topics that are favored to the user can be preferentially used to group search results. For example and in one embodiment, if the user topic module shows a preference for news-type topics over shopping-type topics, if there were potential groupings for news-type topics vs. shopping-type topics, the grouping module would preferentially use the news-type topics instead of (or rank the news-type topic groupings higher than a shopping-type topic grouping).
  • In one embodiment, the topic model is private to the client and not sent to a server. In a further embodiment, the client topic model is generated as described in U.S. patent application Ser. No. 15/356,189, entitled “Client-Side Search Result Re-Ranking” filed on Nov. 18, 2016 and incorporated herein. In one embodiment, the ranking algorithm uses crowd sourced knowledge to get a generalized interest vector for users. This knowledge helps the client 202 determine what topics might be more relevant to a user given how other users have consumed that info. This approach can be extended to be more personalized by using on-device interaction information (e.g., the private client topic model). In one embodiment, this on-device data can be fed to machine learning approaches for classifying topics as ‘Interested’ and ‘Not Interested’. The topics classified as ‘Interested’ can be shown with higher confidence in a user interface and can even be ranked higher.
  • By grouping the search results based on the topic information indexed with the donated content, this grouping is dynamic because the grouping is determined at the time the client 202 receives the search results and not based on static categories, such the domain that a search result resulted from. In one embodiment, donated items are annotated with a variety of tags with decreasing probability of each tag. Once a query is typed in, the results accumulated for the query are processed for their tags. A machine learning model, trained on a variety of result sets that were properly annotated, is used to infer the high-level categories for grouping results.
  • Once results are assigned to these high-level categories, the results can be ranked for display in a user interface. This dynamic categorization may result in generating different categories for the same query as on-device data and server result changes. For example and in one embodiment, consider a sample query for ‘shoes.’ If the user has applications for NIKE, ADIDAS, UNDER ARMOUR, and each of these applications donates items that describe shoes of different kinds like (sneakers, running, basketball), the machine learning model may pick sneakers and basketball shoes as two dynamic categories and categorize other results under ‘Other options’ category if is determined that the user is interested in basketball and lifestyle topics.
  • FIG. 3 is a flow diagram of one embodiment of a process 300 to index donated content from locally installed applications. In one embodiment, a local search service indexes donated content from locally installed applications, such as the local search service 112 as described in FIG. 1 above. In FIG. 3, process 300 begins by receiving application donated content at block 302. In one embodiment, the application donated content can be metadata relating to one or more objects that are created, used, modified, and/or otherwise associated with the corresponding application as described in FIG. 1 above. At block 304, process 300 performs topic modeling to label the donated content. In one embodiment, process 300 can perform latent semantic analysis to determine topic for the donated content, determine topics based on application categories, using application donated tags, another mechanism to tag the donated content, and/or a combination therein. For example and in one embodiment, process 300 can perform latent semantic analysis to determine topic for the donated content, determine topics based on application categories, and/or using application donated tags as described in FIG. 2 above. Process 300 indexes the content attributes, including any relevant topic information, of the donated content in the local search index at block 306. For example and in one embodiment, process 300 indexes the content attributes (e.g., the application donated contents), including any relevant topic information, of the donated content in the local search index as described in FIG. 1 above.
  • With the topic information part of the local search index, this topic information can be surfaced in search results and used to group search results. FIG. 4 is flow diagram of one embodiment of a process 400 to process a query request. In one embodiment, a local search service processes a query request, such as the local search service 220 as described in FIG. 2 above. In FIG. 4, process 400 begins by receiving a query request at block 402. At block 404, process 400 performs that query using the local search index. Process 400 returns the search results at block 406. In one embodiment, one, some, or all of the search results can include topic information that is retrieved from the local search index.
  • FIG. 5 is a flow diagram of one embodiment of a process 500 to dynamically categorize search results. In one embodiment, a grouping module dynamically categorizes the search results, such as the grouping module 212 as described in FIG. 2 above. In FIG. 5, process 500 begins by receiving the search results at block 502. In one embodiment, the search results are from a local search index. In another embodiment, the search results are from a remote search server. Alternatively, the search results can be from both the local search index and a remote search server. At block 504, process 500 determines overlaps between sets of search results based on the topics for the search results. In one embodiment, process 500 matches topics between search results to determine the overlaps. For example and in one embodiment, if two or more search results have the same topics, these search results could be placed in the same category with a category name that is the matching topic. In another embodiment, process 500 groups search results that can similar topics. For example and in one embodiment, if there are two search results with news-related topics (e.g., “local politics” and “foreign politics”), these two search results can be grouped together in a “politics” or “news” category. In one embodiment, topics can be related using a set of well-known tags (e.g., WIKIPEDIA categories), an ontology (e.g., WORDNET), and/or another set of well-known tags.
  • At block 506, process 500 selects likely categories for grouping and presenting the search results. In one embodiment, process 500 selects the likely categories based on the ranking of the search results. In one embodiment, likely categories can be selected based on a personalized ontology available on device, from the search server, or some other mechanism. The search server gets crowd sourced data about engagements and can use that information to pick relevant categories for a given query. These categories can then be sent along with result set. Once on client, the machine learning model can pick the most relevant ones from this sub-list provided by search server.
  • In another embodiment, process 500 uses a predictive model to determine which of the categories to select and present. In this embodiment, the predictive model can be based on a user browser history and search engagement as described in FIG. 2 above. In addition, process 500 can determine the relative order of the search results within the selected category using the rank probabilities of the search results. Process 500 groups the search results at block 508. In one embodiment, process 500 groups the search results that match the selected one or more categories using the category name determined from the related topic. In this embodiment, the search results that not part of any of the selected categories can be presented outside of one of the selected categories. In addition, the search results in the selected category can be presented at the top of the list of search results (with the category name), in the middle of the list of search results, or at the bottom of the list of search results.
  • FIG. 6 is a block diagram of one embodiment of grouping module 212 that dynamically categorizes search results. In one embodiment, the grouping module 212 includes receive search results module 602, overlap module 604, category module 606, and group results module 608. In one embodiment, the receive search results module 602 receives the search results as described in FIG. 5, block 502 above. The overlap module 604 determines topic overlaps as described in FIG. 5, block 504 above. The category module 606 selects likely categories as described in FIG. 5, block 506 above. The group results module 608 groups the search results as described in FIG. 5, block 508 above.
  • The present disclosure recognizes that the use of such 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 re-rank search results that is of greater interest to the user. Accordingly, use of such personal information data enables calculated control of the search results. 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.
  • FIG. 7 shows one example of a data processing system 700, which may be used with one embodiment of the present invention. For example, the system 700 may be implemented including a client 102 as shown in FIG. 1 or client 202 as shown in FIG. 2 above. Note that while FIG. 7 illustrates various components of a computer system, it is not intended to represent any particular architecture or manner of interconnecting the components as such details are not germane to the present invention. It will also be appreciated that network computers and other data processing systems or other consumer electronic devices, which have fewer components or perhaps more components, may also be used with the present invention.
  • As shown in FIG. 7, the computer system 700, which is a form of a data processing system, includes a bus 703 which is coupled to a microprocessor(s) 705 and a ROM (Read Only Memory) 707 and volatile RAM 709 and a non-volatile memory 711. The microprocessor 705 may include one or more CPU(s), GPU(s), a specialized processor, and/or a combination thereof. The microprocessor 705 may retrieve the instructions from the memories 707, 709, 711 and execute the instructions to perform operations described above. The bus 703 interconnects these various components together and also interconnects these components 705, 707, 709, and 711 to a display controller and display device 717 and to peripheral devices such as input/output (I/O) devices which may be mice, keyboards, modems, network interfaces, printers and other devices which are well known in the art. Typically, the input/output devices 715 are coupled to the system through input/output controllers 713. The volatile RAM (Random Access Memory) 709 is typically implemented as dynamic RAM (DRAM), which requires power continually in order to refresh or maintain the data in the memory.
  • The mass storage 711 is typically a magnetic hard drive or a magnetic optical drive or an optical drive or a DVD RAM or a flash memory or other types of memory systems, which maintain data (e.g. large amounts of data) even after power is removed from the system. Typically, the mass storage 711 will also be a random access memory although this is not required. While FIG. 7 shows that the mass storage 711 is a local device coupled directly to the rest of the components in the data processing system, it will be appreciated that the present invention may utilize a non-volatile memory which is remote from the system, such as a network storage device which is coupled to the data processing system through a network interface such as a modem, an Ethernet interface or a wireless network. The bus 703 may include one or more buses connected to each other through various bridges, controllers and/or adapters as is well known in the art.
  • FIG. 8 shows an example of another data processing system 800 which may be used with one embodiment of the present invention. For example, system 800 may be implemented as a client 102 as shown in FIG. 1 or a client 202 as shown in FIG. 2. The data processing system 800 shown in FIG. 8 includes a processing system 811, which may be one or more microprocessors, or which may be a system on a chip integrated circuit, and the system also includes memory 801 for storing data and programs for execution by the processing system. The system 800 also includes an audio input/output subsystem 805, which may include a microphone and a speaker for, for example, playing back music or providing telephone functionality through the speaker and microphone.
  • A display controller and display device 809 provide a visual user interface for the user; this digital interface may include a graphical user interface which is similar to that shown on a Macintosh computer when running OS X operating system software, or Apple iPhone when running the iOS operating system, etc. The system 800 also includes one or more wireless transceivers 803 to communicate with another data processing system, such as the system 800 of FIG. 8. A wireless transceiver may be a WLAN transceiver, an infrared transceiver, a Bluetooth transceiver, and/or a wireless cellular telephony transceiver. It will be appreciated that additional components, not shown, may also be part of the system 800 in certain embodiments, and in certain embodiments fewer components than shown in FIG. 8 may also be used in a data processing system. The system 800 further includes one or more communications ports 817 to communicate with another data processing system, such as the system 700 of FIG. 7. The communications port may be a USB port, Firewire port, Bluetooth interface, etc.
  • The data processing system 800 also includes one or more input devices 813, which are provided to allow a user to provide input to the system. These input devices may be a keypad or a keyboard or a touch panel or a multi touch panel. The data processing system 800 also includes an optional input/output device 815 which may be a connector for a dock. It will be appreciated that one or more buses, not shown, may be used to interconnect the various components as is well known in the art. The data processing system shown in FIG. 8 may be a handheld computer or a personal digital assistant (PDA), or a cellular telephone with PDA like functionality, or a handheld computer which includes a cellular telephone, or a media player, such as an iPod, or devices which combine aspects or functions of these devices, such as a media player combined with a PDA and a cellular telephone in one device or an embedded device or other consumer electronic devices. In other embodiments, the data processing system 800 may be a network computer or an embedded processing device within another device, or other types of data processing systems, which have fewer components or perhaps more components than that shown in FIG. 8.
  • At least certain embodiments of the inventions may be part of a digital media player, such as a portable music and/or video media player, which may include a media processing system to present the media, a storage device to store the media and may further include a radio frequency (RF) transceiver (e.g., an RF transceiver for a cellular telephone) coupled with an antenna system and the media processing system. In certain embodiments, media stored on a remote storage device may be transmitted to the media player through the RF transceiver. The media may be, for example, one or more of music or other audio, still pictures, or motion pictures.
  • The portable media player may include a media selection device, such as a click wheel input device on an iPod® or iPod Nano® media player from Apple, Inc. of Cupertino, Calif., a touch screen input device, pushbutton device, movable pointing input device or other input device. The media selection device may be used to select the media stored on the storage device and/or the remote storage device. The portable media player may, in at least certain embodiments, include a display device which is coupled to the media processing system to display titles or other indicators of media being selected through the input device and being presented, either through a speaker or earphone(s), or on the display device, or on both display device and a speaker or earphone(s). Examples of a portable media player are described in published U.S. Pat. No. 7,345,671 and U.S. published patent number 2004/0224638, both of which are incorporated herein by reference.
  • Portions of what was described above may be implemented with logic circuitry such as a dedicated logic circuit or with a microcontroller or other form of processing core that executes program code instructions. Thus processes taught by the discussion above may be performed with program code such as machine-executable instructions that cause a machine that executes these instructions to perform certain functions. In this context, a “machine” may be a machine that converts intermediate form (or “abstract”) instructions into processor specific instructions (e.g., an abstract execution environment such as a “virtual machine” (e.g., a Java Virtual Machine), an interpreter, a Common Language Runtime, a high-level language virtual machine, etc.), and/or, electronic circuitry disposed on a semiconductor chip (e.g., “logic circuitry” implemented with transistors) designed to execute instructions such as a general-purpose processor and/or a special-purpose processor. Processes taught by the discussion above may also be performed by (in the alternative to a machine or in combination with a machine) electronic circuitry designed to perform the processes (or a portion thereof) without the execution of program code.
  • The present invention also relates to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the required purpose, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), RAMs, EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
  • A machine readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine readable medium includes read only memory (“ROM”); random access memory (“RAM”); magnetic disk storage media; optical storage media; flash memory devices; etc.
  • An article of manufacture may be used to store program code. An article of manufacture that stores program code may be embodied as, but is not limited to, one or more memories (e.g., one or more flash memories, random access memories (static, dynamic or other)), optical disks, CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards or other type of machine-readable media suitable for storing electronic instructions. Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a propagation medium (e.g., via a communication link (e.g., a network connection)).
  • The preceding detailed descriptions are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the tools used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
  • It should be kept in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “detecting,” “associating,” “receiving,” “determining,” “computing,” “sending,” “performing,” “categorizing,” “indexing,” “generating,” “extracting,” “adding,” “retrieving,” “presenting,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
  • The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the operations described. The required structure for a variety of these systems will be evident from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
  • The foregoing discussion merely describes some exemplary embodiments of the present invention. One skilled in the art will readily recognize from such discussion, the accompanying drawings and the claims that various modifications can be made without departing from the spirit and scope of the invention.

Claims (20)

What is claimed is:
1. A machine-readable medium having executable instructions to cause one or more processing units to perform a method to index donated content from an application on a device, the method comprising:
receiving, with a device, donated content for an application object from the application;
associating a metadata tag for a topic to the donated content; and
indexing the donated content with the metadata tag in a local search index of the device.
2. The machine-readable medium of claim 1, further comprising:
receiving a query search for objects indexed in the local search index;
performing the query search using local search index to obtain a set of search results that includes the donated content; and
categorizing at least some of the set of search results using at least the metadata tag of the donated content.
3. The machine-readable medium of claim 1, further comprising:
generating the metadata tag for the donated content.
4. The machine-readable medium of claim 3, wherein generating the metadata tag comprises:
performing an analysis on the object, wherein the analysis is selected from the group consisting of latent semantic analysis, explicit semantic analysis, latent Dirichlet allocation, hierarchical Dirichlet process, non-negative matrix factorization, and expectation maximization;
extracting at least one topic from the analysis; and
adding the at least one topic to the metadata tag for the object.
5. The machine-readable medium of claim 3, wherein generating the metadata tag comprises:
retrieving an application category for the application; and
adding the application category to the metadata tag as a topic for the object.
6. The machine-readable medium of claim 1, wherein the application category for the application is retrieved from an application store.
7. The machine-readable medium of claim 1, wherein generating the metadata tag comprises:
retrieving a set of tags from the application.
8. The machine-readable medium of claim 1, wherein the application determines the set of tags based on at least a publicly set of available tags.
9. A machine-readable medium having executable instructions to cause one or more processing units to perform a method to categorize a plurality of search results, the method comprising:
receiving, with a device, a plurality of search results;
determining a category for at least a subset of the search results, wherein the category is determined using a metadata tag for a corresponding one of the subset of search results and the metadata tag and the corresponding one of the subset of search results is retrieved from a local search index stored on the device; and
causing a presentation of the subset of the search results.
10. The machine-readable medium of claim 9, wherein the metadata tag includes topic information.
11. The machine-readable medium of claim 10, wherein the topic information is generated from an analysis of an object corresponding to the one of the subset of search results, wherein the analysis is selected from the group consisting of latent semantic analysis, explicit semantic analysis, latent Dirichlet allocation, hierarchical Dirichlet process, non-negative matrix factorization, and expectation maximization.
12. The machine-readable medium of claim 10, wherein the topic information is generated from category information of an application that donated an object corresponding to the one of the subset of search results.
13. The machine-readable medium of claim 10, wherein the topic information is generated from a tag determined by an application that donated an object corresponding to the one of the subset of search results.
14. The machine-readable medium of claim 9, wherein the metadata tag is stored in a local search index.
15. The machine-readable medium of claim 9, wherein the determining a category comprises:
determining overlapping topic information from the subset of search results.
16. The machine-readable medium of claim 15, wherein the overlapping topic information is the same topic for each of the subset of search results.
17. The machine-readable medium of claim 15, wherein the overlapping topic information is a set of related topics associated with the subset of search results.
18. The machine-readable medium of claim 9, wherein the presenting the subset of the search results includes the category.
19. A method to index donated content from an application on a device, the method comprising:
receiving, with a device, donated content for an application object from the application;
associating a metadata tag for a topic to the donated content; and
indexing the donated content with the metadata tag in a local search index of the device.
20. A method to categorize a plurality of search results, the method comprising:
receiving, with a device, a plurality of search results;
determining a category for at least a subset of the search results, wherein the category is determined using a metadata tag for a corresponding one of the subset of search results and the metadata tag and the corresponding one of the subset of search results is retrieved from a local search index stored on the device; and
presenting the subset of the search results to a user of the device.
US15/721,197 2017-06-02 2017-09-29 Systems and methods for grouping search results into dynamic categories based on query and result set Abandoned US20180349467A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/721,197 US20180349467A1 (en) 2017-06-02 2017-09-29 Systems and methods for grouping search results into dynamic categories based on query and result set
US16/731,977 US11669550B2 (en) 2017-06-02 2019-12-31 Systems and methods for grouping search results into dynamic categories based on query and result set
US18/316,929 US20230281226A1 (en) 2017-06-02 2023-05-12 Systems and methods for grouping search results into dynamic categories based on query and result set

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762514717P 2017-06-02 2017-06-02
US15/721,197 US20180349467A1 (en) 2017-06-02 2017-09-29 Systems and methods for grouping search results into dynamic categories based on query and result set

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/731,977 Division US11669550B2 (en) 2017-06-02 2019-12-31 Systems and methods for grouping search results into dynamic categories based on query and result set

Publications (1)

Publication Number Publication Date
US20180349467A1 true US20180349467A1 (en) 2018-12-06

Family

ID=64459855

Family Applications (3)

Application Number Title Priority Date Filing Date
US15/721,197 Abandoned US20180349467A1 (en) 2017-06-02 2017-09-29 Systems and methods for grouping search results into dynamic categories based on query and result set
US16/731,977 Active 2037-12-10 US11669550B2 (en) 2017-06-02 2019-12-31 Systems and methods for grouping search results into dynamic categories based on query and result set
US18/316,929 Pending US20230281226A1 (en) 2017-06-02 2023-05-12 Systems and methods for grouping search results into dynamic categories based on query and result set

Family Applications After (2)

Application Number Title Priority Date Filing Date
US16/731,977 Active 2037-12-10 US11669550B2 (en) 2017-06-02 2019-12-31 Systems and methods for grouping search results into dynamic categories based on query and result set
US18/316,929 Pending US20230281226A1 (en) 2017-06-02 2023-05-12 Systems and methods for grouping search results into dynamic categories based on query and result set

Country Status (1)

Country Link
US (3) US20180349467A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200057779A1 (en) * 2018-08-15 2020-02-20 Chiun Mai Communication Systems, Inc. Electronic device and digital content managing method
US20220019750A1 (en) * 2020-07-17 2022-01-20 Spotify Ab Dynamic correlated topic model
CN115408401A (en) * 2022-10-31 2022-11-29 北京百分点科技集团股份有限公司 Data storage method and device, computer equipment and storage medium
US11556710B2 (en) * 2018-05-11 2023-01-17 International Business Machines Corporation Processing entity groups to generate analytics
US11669550B2 (en) 2017-06-02 2023-06-06 Apple Inc. Systems and methods for grouping search results into dynamic categories based on query and result set

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461417B2 (en) * 2020-03-05 2022-10-04 Kore.Ai, Inc. Methods for managing automated discovery and knowledge sharing in one or more networks and devices thereof

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050192955A1 (en) * 2004-03-01 2005-09-01 International Business Machines Corporation Organizing related search results
US20070033531A1 (en) * 2005-08-04 2007-02-08 Christopher Marsh Method and apparatus for context-specific content delivery
US20070250501A1 (en) * 2005-09-27 2007-10-25 Grubb Michael L Search result delivery engine
US20070255755A1 (en) * 2006-05-01 2007-11-01 Yahoo! Inc. Video search engine using joint categorization of video clips and queries based on multiple modalities
US20080195664A1 (en) * 2006-12-13 2008-08-14 Quickplay Media Inc. Automated Content Tag Processing for Mobile Media
US20090271283A1 (en) * 2008-02-13 2009-10-29 Catholic Content, Llc Network Media Distribution
US20120203764A1 (en) * 2011-02-04 2012-08-09 Wood Mark D Identifying particular images from a collection
US20140172821A1 (en) * 2012-12-19 2014-06-19 Microsoft Corporation Generating filters for refining search results
US20150161212A1 (en) * 2012-02-29 2015-06-11 Sophia Yang Search result previews
US20170132227A1 (en) * 2015-11-10 2017-05-11 International Business Machines Corporation Ordering search results based on a knowledge level of a user performing the search
US20180260417A1 (en) * 2017-03-07 2018-09-13 Yahoo! Inc. Computerized system and method for automatically identifying and providing digital content based on physical geographic location data
US10534783B1 (en) * 2016-02-08 2020-01-14 Microstrategy Incorporated Enterprise search

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7345671B2 (en) 2001-10-22 2008-03-18 Apple Inc. Method and apparatus for use of rotational user inputs
US7627343B2 (en) 2003-04-25 2009-12-01 Apple Inc. Media player system
US9081872B2 (en) 2004-06-25 2015-07-14 Apple Inc. Methods and systems for managing permissions data and/or indexes
WO2007137145A2 (en) * 2006-05-17 2007-11-29 Newsilike Media Group, Inc Certificate-based search
US20080071929A1 (en) * 2006-09-18 2008-03-20 Yann Emmanuel Motte Methods and apparatus for selection of information and web page generation
US20110113052A1 (en) 2007-06-08 2011-05-12 Hoernkvist John Query result iteration for multiple queries
US7917516B2 (en) 2007-06-08 2011-03-29 Apple Inc. Updating an inverted index
US7730070B2 (en) 2007-06-10 2010-06-01 Apple Inc. Index aging and merging
US8862579B2 (en) * 2009-04-15 2014-10-14 Vcvc Iii Llc Search and search optimization using a pattern of a location identifier
US8341196B2 (en) * 2009-11-23 2012-12-25 Nokia Corporation Method and apparatus for creating a contextual model based on offline user context data
US9665647B2 (en) 2010-06-11 2017-05-30 Doat Media Ltd. System and method for indexing mobile applications
US8577891B2 (en) 2010-10-27 2013-11-05 Apple Inc. Methods for indexing and searching based on language locale
US8380743B2 (en) 2010-11-05 2013-02-19 Palo Alto Research Center Incorporated System and method for supporting targeted sharing and early curation of information
US20120159337A1 (en) * 2010-12-17 2012-06-21 Kerry Travilla System and method for recommending media content
US9563644B1 (en) 2011-04-11 2017-02-07 Groupon, Inc. System, method, and computer program product for generation of local content corpus
US9384211B1 (en) 2011-04-11 2016-07-05 Groupon, Inc. System, method, and computer program product for automated discovery, curation and editing of online local content
US8676937B2 (en) * 2011-05-12 2014-03-18 Jeffrey Alan Rapaport Social-topical adaptive networking (STAN) system allowing for group based contextual transaction offers and acceptances and hot topic watchdogging
US20130151549A1 (en) 2011-12-07 2013-06-13 Taptu Ltd Method and Apparatus for Updating a Database of Online Content
US10387448B2 (en) 2012-05-15 2019-08-20 Splunk Inc. Replication of summary data in a clustered computing environment
US20150100569A1 (en) 2012-06-28 2015-04-09 Google Inc. Providing a search results document that includes a user interface for performing an action in connection with a web page identified in the search results document
US9736271B2 (en) 2012-12-21 2017-08-15 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism with usage-based billing
US20140207776A1 (en) * 2013-01-22 2014-07-24 Maluuba Inc. Method and system for linking data sources for processing composite concepts
US9778817B2 (en) 2013-12-31 2017-10-03 Findo, Inc. Tagging of images based on social network tags or comments
US10417301B2 (en) * 2014-09-10 2019-09-17 Adobe Inc. Analytics based on scalable hierarchical categorization of web content
WO2016054196A1 (en) * 2014-10-01 2016-04-07 Docurated, Inc. Document curation system
US20160210061A1 (en) * 2015-01-21 2016-07-21 Tektronix, Inc. Architecture for a transparently-scalable, ultra-high-throughput storage network
US10200824B2 (en) 2015-05-27 2019-02-05 Apple Inc. Systems and methods for proactively identifying and surfacing relevant content on a touch-sensitive device
US10621189B2 (en) 2015-06-05 2020-04-14 Apple Inc. In-application history search
US10922094B2 (en) 2015-06-05 2021-02-16 Apple Inc. Systems and methods for proactively providing recommendations to a user of a computing device
CN105049954B (en) * 2015-07-02 2020-07-10 中兴通讯股份有限公司 Multicast transmission method, device and system for OTT media
US10033702B2 (en) * 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
US20160049083A1 (en) * 2015-08-13 2016-02-18 Zoomi, Inc. Systems and methods for authoring an integrated and individualized course or textbook
US20170169401A1 (en) * 2015-12-11 2017-06-15 ecoATM, Inc. Systems and methods for recycling consumer electronic devices
US11210301B2 (en) 2016-06-10 2021-12-28 Apple Inc. Client-side search result re-ranking
US10102255B2 (en) * 2016-09-08 2018-10-16 Facebook, Inc. Categorizing objects for queries on online social networks
WO2018174884A1 (en) * 2017-03-23 2018-09-27 Rovi Guides, Inc. Systems and methods for calculating a predicted time when a user will be exposed to a spoiler of a media asset
US20180349467A1 (en) 2017-06-02 2018-12-06 Apple Inc. Systems and methods for grouping search results into dynamic categories based on query and result set
US10621246B2 (en) 2017-06-02 2020-04-14 Apple Inc. Systems and methods for building an on-device temporal web index for user curated/preferred web content

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050192955A1 (en) * 2004-03-01 2005-09-01 International Business Machines Corporation Organizing related search results
US20070033531A1 (en) * 2005-08-04 2007-02-08 Christopher Marsh Method and apparatus for context-specific content delivery
US20070250501A1 (en) * 2005-09-27 2007-10-25 Grubb Michael L Search result delivery engine
US20070255755A1 (en) * 2006-05-01 2007-11-01 Yahoo! Inc. Video search engine using joint categorization of video clips and queries based on multiple modalities
US20080195664A1 (en) * 2006-12-13 2008-08-14 Quickplay Media Inc. Automated Content Tag Processing for Mobile Media
US20090271283A1 (en) * 2008-02-13 2009-10-29 Catholic Content, Llc Network Media Distribution
US20120203764A1 (en) * 2011-02-04 2012-08-09 Wood Mark D Identifying particular images from a collection
US20150161212A1 (en) * 2012-02-29 2015-06-11 Sophia Yang Search result previews
US20140172821A1 (en) * 2012-12-19 2014-06-19 Microsoft Corporation Generating filters for refining search results
US20170132227A1 (en) * 2015-11-10 2017-05-11 International Business Machines Corporation Ordering search results based on a knowledge level of a user performing the search
US10534783B1 (en) * 2016-02-08 2020-01-14 Microstrategy Incorporated Enterprise search
US20180260417A1 (en) * 2017-03-07 2018-09-13 Yahoo! Inc. Computerized system and method for automatically identifying and providing digital content based on physical geographic location data

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11669550B2 (en) 2017-06-02 2023-06-06 Apple Inc. Systems and methods for grouping search results into dynamic categories based on query and result set
US11556710B2 (en) * 2018-05-11 2023-01-17 International Business Machines Corporation Processing entity groups to generate analytics
US20200057779A1 (en) * 2018-08-15 2020-02-20 Chiun Mai Communication Systems, Inc. Electronic device and digital content managing method
US10970332B2 (en) * 2018-08-15 2021-04-06 Chiun Mai Communication Systems, Inc. Electronic device and digital content managing method
US20220019750A1 (en) * 2020-07-17 2022-01-20 Spotify Ab Dynamic correlated topic model
US11727221B2 (en) * 2020-07-17 2023-08-15 Spotify Ab Dynamic correlated topic model
CN115408401A (en) * 2022-10-31 2022-11-29 北京百分点科技集团股份有限公司 Data storage method and device, computer equipment and storage medium

Also Published As

Publication number Publication date
US11669550B2 (en) 2023-06-06
US20200133960A1 (en) 2020-04-30
US20230281226A1 (en) 2023-09-07

Similar Documents

Publication Publication Date Title
US11669550B2 (en) Systems and methods for grouping search results into dynamic categories based on query and result set
US10528637B2 (en) Systems and methods for recommended content platform
US10897445B2 (en) System and method for contextual mail recommendations
US10175860B2 (en) Search intent preview, disambiguation, and refinement
CN107103016B (en) Method for matching image and content based on keyword representation
US20160275081A1 (en) Method and apparatus for personalized resource recommendations
US8112404B2 (en) Providing search results for mobile computing devices
US20110289015A1 (en) Mobile device recommendations
US20110191330A1 (en) Method of and System for Enhanced Content Discovery Based on Network and Device Access Behavior
US9678618B1 (en) Using an expanded view to display links related to a topic
US10262057B2 (en) Presenting content in accordance with a placement designation
US20160357831A1 (en) In-application history search
CN107491465B (en) Method and apparatus for searching for content and data processing system
US20130332462A1 (en) Generating content recommendations
US11748429B2 (en) Indexing native application data
US20220327130A1 (en) Triggering local extensions based on inferred intent
US10489470B2 (en) Method and system for filtering content in an electronic device
US8538946B1 (en) Creating model or list to identify queries
US9576077B2 (en) Generating and displaying media content search results on a computing device
CN107463590B (en) Automatic session phase discovery
US20230409657A1 (en) Identifying contextual objects from web content
CN112219201B (en) Triggering local extensions based on inferred intent

Legal Events

Date Code Title Description
AS Assignment

Owner name: APPLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MALHOTRA, ANUBHAV;HOERNKVIST, JOHN M.;REEL/FRAME:043781/0967

Effective date: 20170928

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION