IP Library Granted Patent US 9,058,347
Granted Patent B2
US 9,058,347 · App. 13/599,012 · Granted Jun 16, 2015

Prospective search of objects using K-D forest

Inventor: Vikram Chandrasekhar (Mountain View, CA)
Assignee: Facebook, Inc.
G06F17/30327G06F17/30625
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 9,058,347
App. No.
13/599,012
Granted
Jun 16, 2015
Kind
B2
Abstract

A collection of content objects and a representative content object may be stored in a k-dimensional tree. In one embodiment, a method includes receiving a content object; constructing a first k-dimensional tree in response to determining a second k-dimensional tree is storing information corresponding to a number of content objects that is equal to a number of nodes of the second k-dimensional tree; storing information corresponding to the received content object as a node in the first k-dimensional tree; and moving information corresponding to a stored content object from of each node of the second k-dimensional tree to a corresponding node of the first k-dimensional tree, wherein the corresponding node of the first k-dimensional tree is identified based at least in part on content of the content object.

Claims (60)

1. A method comprising, by a computing device:

receiving a content object; and

constructing a first k-dimensional tree in response to determining a second k-dimensional tree is storing information corresponding to a number of content objects that is equal to a number of nodes of the second k-dimensional tree, wherein:

the number of nodes of the second k-dimensional tree is smaller than a number of nodes of the first k-dimensional tree,

the first K-dimensional tree having a number of nodes at least equal to the received object plus the number of nodes of the second k-dimensional tree, the number of nodes of the first k-dimensional tree has twice the number of nodes of the second k-dimensional tree, and each node being configured to store a content object;

storing information corresponding to the received content object as a node in the first k-dimensional tree; and

moving information corresponding to a stored content object from each node of the second k-dimensional tree to a corresponding node of the first k-dimensional tree, wherein the corresponding node of the first k-dimensional tree is identified based at least in part on content of the content object.

2. The method of claim 1 , further comprising

Deleting a particular one of the stored content objects from the second k-dimensional forest, comprising:

locating a node of the second k-dimensional tree corresponding to the particular one of the stored content objects; and

marking the node in the second k-dimensional tree corresponding to the particular one of the stored content objects as being deleted from the second k-dimensional tree.

3. The method of claim 2 , wherein only information corresponding to stored content objects whose corresponding nodes in the second k-dimensional tree are not marked as being deleted are stored in moved to the first k-dimensional tree.

4. The method of claim 1 , further comprising:

creating a first entry in a cache corresponding to a cluster of content objects, the cache having a plurality of entries and each entry including a content object representative of the content objects of the cluster, a counter, a timestamp, and a list of content objects;

storing information of the received content object in the first entry as the representative object of the first entry;

initializing the counter of the first entry to 0; and

initializing the timestamp of the first entry to a time when the first entry is created.

5. The method of claim 1 , wherein the first-stored content object is an image, and wherein the content of the stored content object may be represented by a vector having plurality of elements.

6. One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

receive a content object; and

construct a first k-dimensional tree in response to determining a second k-dimensional tree is storing information corresponding to a number of content objects that is equal to a number of nodes of the second k-dimensional tree, wherein:

the number of nodes of the second k-dimensional tree is smaller than a number of nodes of the first k-dimensional tree,

the first K-dimensional tree having a number of nodes at least equal to the received object plus the number of nodes of the second k-dimensional tree, the number of nodes of the first k-dimensional tree has twice the number of nodes of the second k-dimensional tree, and

each node being configured to store a content object;

store information corresponding to the received content object as a node in the first k-dimensional tree; and

move information corresponding to a stored content object from each node of the second k-dimensional tree to a corresponding node of the first k-dimensional tree, wherein the corresponding node of the first k-dimensional tree is identified based at least in part on content of the content object.

7. The media of claim 6 , wherein the software is further operable when executed to:

Delete a particular one of the stored content objects from the second k-dimensional forest, comprising:

Locate a node of the second k-dimensional tree corresponding to the particular one of the stored content objects; and

mark the node in the second k-dimensional tree corresponding to the particular one of the stored content objects as being deleted from the second k-dimensional tree.

8. The media of claim 7 , wherein only information corresponding to stored content objects whose corresponding nodes in the second k-dimensional tree are not marked as being deleted are moved to the first k-dimensional tree.

9. The media of claim 6 , wherein the software is further operable when executed to:

create a first entry in a cache corresponding to a cluster of content objects, the cache having a plurality of entries and each entry including a content object representative of the content objects of the cluster, a counter, a timestamp, and a list of content objects;

store information of the received content object in the first entry as the representative object of the first entry;

initialize the counter of the first entry to 0; and

initialize the timestamp of the first entry to a time when the first entry is created.

10. The media of claim 6 , wherein the stored content object is an image, and wherein the content of the stored content object may be represented by a vector having plurality of elements.

11. A system comprising:

one or more processors; and

a memory coupled to the processors comprising instructions executable by the processors, the processors operable when executing the instructions to:

receive a content object;

construct a first k-dimensional tree in response to determining a second k-dimensional tree is storing information corresponding to a number of content objects that is equal to a number of nodes of the second k-dimensional tree, wherein:

the number of nodes of the second k-dimensional tree is smaller than a number of nodes of the first k-dimensional tree,

the first K-dimensional tree having a number of nodes at least equal to the received object plus the number of nodes of the second k-dimensional tree, the number of nodes of the first k-dimensional tree has twice the number of nodes of the second k-dimensional tree, and

each node being configured to store a content object;

store information corresponding to the received content object as a node in the first k-dimensional tree; and

move information corresponding to a stored content object from each node of the second k-dimensional tree to a corresponding node of the first k-dimensional tree, wherein the corresponding node of the first k-dimensional tree is identified based at least in part on content of the content object.

12. The system of claim 11 , wherein the processors are further operable when executing the instructions to:

Delete a particular one of the stored content objects from the second k-dimensional forest, comprising:

Locate a node of the second k-dimensional tree corresponding to the particular one of the stored content objects; and

mark the node in the second k-dimensional tree corresponding to the particular one of the stored content objects as being deleted from the second k-dimensional tree.

13. The system of claim 12 , wherein only information corresponding to stored content objects whose corresponding nodes in the second k-dimensional tree are not marked as being deleted are moved to the first k-dimensional tree.

14. The system of claim 11 , wherein the processors are further operable when executing the instructions to:

create a first entry in a cache corresponding to a cluster of content objects, the cache having a plurality of entries and each entry including a content object representative of the content objects of the cluster, a counter, a timestamp, and a list of content objects;

store information of the received content object in the first entry as the representative object of the first entry;

initialize the counter of the first entry to 0; and

initialize the timestamp of the first entry to a time when the first entry is created.

15. The method of claim 5 , further comprising sorting the stored content objects based at least in part on determining a median value of each of the plurality of elements.

16. The media of claim 10 , wherein the software is further operable when executed to sort the stored content objects based at least in part on determining a median value of each of the plurality of elements.

17. The system of claim 11 , wherein the stored content object is an image, and wherein the content of the stored content object may be represented by a vector having plurality of elements, and wherein the processors are further operable when executing the instructions to sort the stored content objects based at least in part on determining a median value of each of the plurality of elements.

Assignments (4)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058553/0802 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TITLE FROM "PERSPECTIVE" TO "PROSPECTIVE" PREVIOUSLY RECORDED ON REEL 029051 FRAME 0229. ASSIGNOR(S) HEREBY CONFIRMS THE INVENTOR CHANDRASEKHAR TO FACEBOOK, INC. Recorded Oct 16, 2013
From: CHANDRASEKHAR, VIKRAM
To: FACEBOOK, INC.
Reel/Frame 031420/0632 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2012
From: CHANDRASEKHAR, VIKRAM
To: FACEBOOK, INC.
Reel/Frame 029051/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 17, 2012
From: CHANDRASEKHAR, VIKRAM
To: FACEBOOK, INC.
Reel/Frame 028972/0335 →
Continuity (1)
Related Publication 20140067870A1 · Mar 6, 2014