IP Library Granted Patent US 8,676,830
Granted Patent B2
US 8,676,830 · App. 10/794,006 · Granted Mar 18, 2014

Keyword recommendation for internet search engines

Inventors: Shouvick Mukherjee (Koramangla, IN); Jayesh Vrajlal Bhayani (Saratoga, CA); Jagdish Chand (Santa Clara, CA); Ravi Narasimhan Raj (Los Altos, CA)
Assignee: Yahoo! Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,676,830
App. No.
10/794,006
Granted
Mar 18, 2014
Kind
B2
Abstract

A computer implemented method of generating keyword recommendations is provided, which includes providing keyword frequency data in computer readable media that indicate frequency counts of keywords used in past internet searches; providing keyword affinity data in computer readable media that indicate affinities between pairs of keywords used in past user internet searches; identifying keywords from the keyword frequency data that include the selected keyword; identifying keywords from the keyword affinity data that have an affinity to the selected keyword; and prioritizing the identified keywords based upon the keyword frequency.

Claims (111)

1. A method comprising:

storing, in a computer readable storage medium of a computer, keyword frequency data that indicates the number of times each keyword was received in past user entered internet searches over a prescribed period of time;

storing, prior to the occurrence of a current search being performed by a current user, in the computer readable storage medium, keyword affinity data that indicates affinities between pairs of keywords used in past user entered internet searches, the keyword affinity data based on a selection of a common Universal Resource Locator (“URL”) from search results of the past user entered internet searches performed prior to the current search being performed by the current user by both a first user and a second user and using a threshold number of occurrences of search terms and a threshold number of occurrences of paired associations of those search terms;

assigning, via a processor, a unique integer item code to individual keywords;

ordering, via the processor, the pairs of keywords based upon the unique integer item codes assigned to the individual keywords;

identifying, via the processor of the computer, keywords from the keyword frequency data that include a selected keyword;

identifying, via the processor of the computer, keywords from the keyword affinity data that have an affinity to the selected keyword;

prioritizing, via the processor of the computer, the identified keywords based upon the keyword frequency; and

communicating, via the processor of the computer, at least a portion of the prioritized identified keywords to the current user as one or more recommended keywords in response to the selected keyword.

2. The method of claim 1 ,

wherein identifying keywords from the keyword frequency data that include the selected keyword includes searching the keyword frequency data for keywords that include the selected keyword; and

wherein identifying keywords from the keyword affinity data that have an affinity to the selected keyword includes searching the keyword affinity data for keywords that include the selected keyword.

3. The method of claim 1 ,

wherein identifying keywords from the keyword frequency data that include the selected keyword includes producing a first table that includes a list of keywords that include the selected keyword; and

wherein identifying keywords from the keyword affinity data that have an affinity to the selected keyword includes producing a second table that includes a list of keywords that have an affinity with the selected keyword.

4. The method of claim 1 ,

wherein identifying keywords from the keyword frequency data that include the selected keyword includes producing a first table that includes a list of keywords that include the selected keyword;

wherein identifying keywords from the keyword affinity data that have an affinity to the selected keyword includes producing a second table that includes a list of keywords that have an affinity with the selected keyword;

wherein prioritizing the identified keywords includes associating frequency counts from the frequency data with keywords in the first table; and

wherein prioritizing the identified keywords includes associating frequency counts from the frequency data with keywords in the second table.

5. The method of claim 1 ,

wherein prioritizing the identified keywords includes ordering the keywords identified from the keyword frequency data according to the frequency counts indicated by the frequency data; and

wherein prioritizing the identified keywords includes ordering the keywords identified from the keyword affinity data as having an affinity to the selected keyword according to the frequency counts indicated by the frequency data.

6. The method of claim 1 ,

wherein prioritizing the identified keywords includes producing a data structure in which identified keywords from the frequency data and from the affinity data are ordered according to the frequency counts indicated by the frequency data.

7. The method of claim 1 ,

wherein identifying keywords from the keyword frequency data that include the selected keyword includes producing a first list that includes a list of keywords that include the selected keyword;

wherein identifying keywords from the keyword affinity data that have an affinity to the selected keyword includes producing a second list that includes a list of keywords that have an affinity with the selected keyword; and

wherein prioritizing identified keywords includes producing a third list in which identified keywords from the first list and from the second list are merged together and ordered according to the frequency counts indicated by the frequency data.

8. The method of claim 1 , further comprising

receiving a user-provided search request that includes the selected keyword; and

providing the prioritized identified keywords to the user who provided the search request.

9. The method of claim 1 ,

wherein prioritizing the identified keywords includes producing a table in which identified keywords from the frequency data and from the affinity data are merged together and ordered according to the frequency counts indicated by the frequency data; and

further comprising the steps of:

receiving a user-provided search request that includes the selected keyword; and

providing the identified keywords, as ordered in the table, to the user who provided the search request.

10. The method of claim 1 ,

wherein receiving a user-provided search request involves receiving a request communicated by the user over the internet; and

wherein communicating the identified keywords involves communicating the request to the user over the internet.

11. A method comprising:

receiving, by a computing device, a user-provided search request that comprises a user indicated keyword;

storing, by the computing device, keyword frequency data that indicate the number of times each keyword was received in past user-entered internet searches over a prescribed period of time;

storing, prior to the occurrence of a current search being performed by a current user, by the computing device, keyword affinity data that indicate affinities between pairs of keywords used in past user-entered internet searches, the keyword affinity data based on a selection of a common Universal Resource Locator (“URL”) from search results of the past user internet searches performed prior to the current search being performed by the current user by both a first user and a second user and using a threshold number of occurrences of search terms and a threshold number of occurrences of paired associations of those search terms;

assigning, by the computing device, a unique integer item code to individual keywords;

ordering, by the computing device, the pairs of keywords based upon the unique integer item codes assigned to the individual keywords;

searching, by the computing device, the keyword frequency data to identify keywords that include the user indicated keyword;

searching, by the computing device, the keyword affinity data to identify keywords that have an affinity to the user indicated keyword;

producing, by the computing device, a data structure in which identified keywords from the frequency data and from the affinity data are ordered according to frequency counts indicated by the frequency data; and

transmitting, by the computing device, the ordered identified keywords to the current user.

12. A non-transitory computer readable storage medium encoded with computer readable code for execution by a processor, the computer readable code comprising:

keyword frequency data that indicate the number of times each keyword was received in past user-entered internet searches over a prescribed period of time;

keyword affinity data that indicate affinities between pairs of keywords used in past user-entered internet searches;

storing means for storing, prior to the occurrence of a current search being performed by a current user, the keyword affinity data;

computer code means for using a selected keyword to identify keywords from the keyword frequency data that include the selected keyword;

computer code means for using the selected keyword to identify keywords from the keyword affinity data that have an affinity to the selected keyword, the keyword affinity data based on a selection of a common Universal Resource Locator (“URL”) from search results of the past user-entered internet searches performed prior to the current search being performed by a current user by both a first user and a second user and using a threshold number of occurrences of search terms and a threshold number of occurrences of paired associations of those search terms;

computer code means for assigning a unique integer item code to individual keywords;

computer code means for ordering the pairs of keywords based upon the unique integer item codes assigned to the individual keywords;

computer code means for using the keyword frequency data to prioritize the identified keywords; and

computer code means for causing communication of at least one of the prioritized identified keywords to the current user.

13. The non-transitory computer readable storage medium of claim 12 further including:

computer code means for receiving a user-provided search request that includes the user selected keyword; and

computer code means for providing the ordered identified keywords to the user.

14. A non-transitory computer readable storage medium encoded with computer readable code for execution by a processor, the computer readable code comprising:

keyword frequency data media that indicate the number of times each keyword was received in past user-entered internet searches;

storing means for storing, prior to the occurrence of a current search being performed by a current user, the keyword affinity data;

keyword affinity data that indicate affinities between pairs of keywords used in past user-entered internet searches, the keyword affinity data based on a selection of a common Universal Resource Locator (“URL”) from search results of the past user internet searches performed prior to the current search being performed by a current user by both a first user and a second user over a prescribed period of time and using a threshold number of occurrences of search terms and a threshold number of occurrences of paired associations of those search terms;

computer code means for assigning a unique integer item code to individual keywords;

computer code means for ordering the pairs of keywords based upon the unique integer item codes assigned to the individual keywords;

computer code means for searching the keyword frequency data to identify keywords that include a selected keyword and for producing a first list that includes a list of keywords that include a selected keyword;

computer code means for searching the keyword affinity data to identify keywords that have an affinity to the selected keyword and for producing a second list that includes a list of keywords that have an affinity with the selected keyword;

computer code means for producing a third list in which identified keywords from the first list and from the second list are merged together and ordered according to the frequency counts indicated by the frequency data; and

computer code means for causing communication of at least one of the prioritized identified keywords to the current user.

15. The non-transitory computer readable storage medium of claim 14 further including:

computer code means for receiving a user-provided search request that includes the user selected keyword; and

computer code means for providing the ordered identified keywords to the user.

16. A method comprising:

receiving, by a processor, a user-provided search request that includes a user indicated keyword;

storing, by the processor, keyword frequency data in computer readable storage media that indicate the number of times each keyword was received in past user-entered internet searches over a prescribed period of time;

storing, prior to the occurrence of a current search being performed by a current user, by the processor, keyword affinity data in the computer readable storage media that indicate affinities between pairs of keywords used in past user-entered internet searches, the affinity data based upon a selection of a common Universal Resource Locator (“URL”) from search results of the past user-entered internet searches performed prior to the current search being performed by a current user by both a first user and a second user and a threshold number of occurrences of search terms and a threshold number of occurrences of paired associations of those search terms;

assigning, by the processor, a unique integer item code to individual keywords;

ordering, by the processor, the pairs of keywords based upon the unique integer item codes assigned to the individual keywords;

searching, by the processor, the keyword frequency data to identify keywords from that include the user indicated keyword;

searching, by the processor, the keyword affinity data to identify keywords that have an affinity to the user indicated keyword;

producing, by the processor, a data structure in which identified keywords from the frequency data and from the affinity data are ordered according to frequency counts indicated by the frequency data;

providing, by the processor to the user, a list of one or more web pages that satisfy the user-provided search request; and

providing, by the processor to the current user, the ordered identified keywords.

17. A system comprising:

a computer implemented web server that retrieves one or more web pages in response to a user search request that includes a user-indicated keyword;

keyword frequency data stored in computer readable storage media that indicate the number of times each keyword was received in past user-entered internet searches over a prescribed period of time;

keyword affinity data stored, prior to the occurrence of a current search being performed by a current user, in computer readable storage media, that indicate affinities between pairs of keywords used in past user-entered internet searches, the affinity data based upon a selection of a common Universal Resource Locator (“URL”) from search results of the past user-entered internet searches performed prior to the current search being performed by a current user by both a first user and a second user and using a threshold number of occurrences of search terms and a threshold number of occurrences of paired associations of those search terms;

a keyword recommendation server that is coupled to communicate with the web server and that,

assigns a unique integer item code to individual keywords;

orders the pairs of keywords based upon the unique integer item codes assigned to the individual keywords;

searches the keyword frequency data to identify keywords that include the user-indicated keyword,

searches the keyword affinity data to identify keywords that have an affinity to the user-indicated keyword,

prioritizes the identified keywords from the frequency data and from the affinity data according to frequency counts indicated by the frequency data, and

causes communication of at least one of the prioritized identified keywords to the current user.

18. The system of claim 17 ,

wherein the server produces a first table that includes a list of keywords from the keyword frequency data that include the user-indicated keyword; and

wherein the server produces a second table that includes a list of keywords from the affinity data that have an affinity with the selected keyword.

19. The system of claim 17 ,

wherein the server produces a list of identified keywords from the keyword frequency data that include the user-indicated keyword;

wherein the server produces a list of identified keywords from the affinity data that have an affinity with the selected keyword;

wherein the server prioritizes identified keywords from the keyword frequency data by associating frequency counts from the frequency data with keywords in the first list; and

wherein the server prioritizes identified keywords from the affinity data by associating frequency counts from the frequency data with keywords in the second list.

20. The system of claim 17 ,

wherein the server produces a list of identified keywords from the keyword frequency data that include the user-indicated keyword;

wherein the server produces a list of identified keywords from the affinity data that have an affinity with the selected keyword; and

wherein the server prioritizes identified keywords by producing a third list in which identified keywords from the frequency data and from the affinity data are merged together and ordered according to the frequency counts indicated by the frequency data.

21. The system of claim 17 further including: an internet search engine coupled to communicate with the web server.

Assignments (15)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2021
From: EXCALIBUR IP, LLC
To: TWITTER, INC.
Reel/Frame 057010/0910 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 29, 2021
From: R2 SOLUTIONS LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 056832/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 053654 FRAME 0254. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST GRANTED PURSUANT TO THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED. Recorded Dec 30, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: R2 SOLUTIONS LLC
Reel/Frame 054981/0377 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038950/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: EXCALIBUR IP, LLC
To: YAHOO! INC.
Reel/Frame 038951/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038383/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2004
From: MUKHERJEE, SHOUVICK; BHAYANI, JAYESH VRAJLAL; CHAND, JAGDISH; RAJ, RAVI NARASIMHAN
To: YAHOO! INC.
Reel/Frame 015068/0453 →
Continuity (1)
Related Publication 20050198068A1 · Sep 8, 2005