IP Library Granted Patent US 8,577,669
Granted Patent B1
US 8,577,669 · App. 13/335,743 · Granted Nov 5, 2013

Efficient string search

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,577,669
App. No.
13/335,743
Granted
Nov 5, 2013
Kind
B1
Abstract

Some embodiments of an efficient string search have been presented. In one embodiment, a string of bytes representing content written in a non-delimited language is received, wherein the content has been classified into a predetermined category. In a single pass through the string of bytes, a set of N-grams is searched for simultaneously. Statistical information on occurrences of the N-grams, if any, in the string of bytes is collected. In some embodiments, a model is generated based on the statistical information, where the model is usable by a content filter to classify content.

Claims (45)

1. A method for searching a string of bytes, the method comprising:

receiving a set of a plurality of N-grams in memory, wherein each N-gram corresponds to a pre-selected keyword for identifying content of a type in a non-delimited language;

receiving a string of bytes representing non-segmented text written in the non-delimited language; and

executing instructions stored in memory, wherein execution of the instructions by a processor:

simultaneously searches for the plurality of N-grams in a single pass through the string of bytes using a finite state machine having a plurality of states, wherein the plurality of states are coupled to each other via one or more paths and the plurality of states are based on the plurality of N-grams; and

classifies the string of bytes as the type based on the search results for the plurality of N-grams meeting a predetermined number of conditions.

2. The method of claim 1 , further comprising generating the finite state machine, wherein generating the finite state machine comprises:

defining the plurality of states based on the plurality of N-grams;

constructing the finite state machine having the plurality of states, wherein the plurality of states are coupled to each other via one or more paths; and

mapping each of the plurality of states to the set of N-grams in an output table.

3. The method of claim 1 , further comprising collecting statistical information on occurrences of the plurality of N-grams in the string of bytes.

4. The method of claim 3 , wherein collecting the statistical information comprises counting a number of occurrences of each of the plurality of N-grams in the string of bytes.

5. The method of claim 3 , wherein simultaneously searching for the plurality of N-grams in the string of bytes comprises:

inputting the string of bytes into the finite state machine; and

tracing operations of the finite state machine over the string of bytes.

6. The method of claim 5 , wherein collecting the statistical information comprises counting a number of occurrences of each of the N-grams using the output table while tracing the operations of the finite state machine.

7. The method of claim 1 , wherein the non-delimited language is Chinese.

8. A non-transitory computer-readable storage medium having embodied thereon instructions executable by a processor to perform a method for searching a string of bytes, the method comprising:

receiving a set of a plurality of N-grams in memory, wherein each N-gram corresponds to a pre-selected keyword for identifying content of a type in a non-delimited language;

receiving a string of bytes representing non-segmented text written in a non-delimited language;

simultaneously searching for a plurality of N-grams in a single pass through the string of bytes using a finite state machine having the plurality of states, wherein the plurality of states are coupled to each other via one or more paths and the plurality of states are based on the plurality of N-grams; and

classifying the string of bytes as the type based on the search results for the plurality of N-grams meeting a predetermined number of conditions.

9. The non-transitory computer-readable storage medium of claim 8 , further comprising instructions executable by the processor to generate the finite state machine, wherein generating the finite state machine comprises:

defining the plurality of states based on the plurality of N-grams;

constructing the finite state machine having the plurality of states, wherein the plurality of states are coupled to each other via one or more paths; and

mapping each of the plurality of states to the set of N-grams in an output table.

10. The non-transitory computer-readable storage medium of claim 8 , further comprising collecting statistical information on occurrences of the plurality of N-grams in the string of bytes.

11. The non-transitory computer-readable storage medium of claim 10 , wherein collecting the statistical information comprises counting a number of occurrences of each of the plurality of N-grams in the string of bytes.

12. The non-transitory computer-readable storage medium of claim 10 , wherein simultaneously searching for the plurality of N-grams in the string of bytes further comprises:

inputting the string of bytes into the finite state machine; and

tracing operations of the finite state machine over the string of bytes.

13. The non-transitory computer-readable storage medium of claim 12 , wherein collecting the statistical information comprises counting a number of occurrences of each of the N-grams using the output table while tracing the operations of the finite state machine.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the non-delimited language is Chinese.

15. A system comprising:

a device for receiving:

a set of a plurality of N-grams in memory, wherein each N-gram corresponds to a pre-selected keyword for identifying content of a type in a non-delimited language, and

a string of bytes representing non-segmented text written in a non-delimited language; and

a finite state machine, coupled to the device, for:

simultaneously searching for the plurality of N-grams in a single pass through the string of bytes having the plurality of states, wherein the plurality of states are coupled to each other via one or more paths and the plurality of states are based on the plurality of N-grams, and

classifying the string of bytes as the type based on the search results for the plurality of N-grams meeting a predetermined number of conditions.

16. The system of claim 15 , further comprising a counting module, coupled to the finite state machine, to collect statistical information on occurrences of the plurality of N-grams in the string of bytes.

17. The system of claim 16 , wherein the counting module is further executable by a processor to count a number of occurrences of each of the plurality of N-grams in the string of bytes.

18. The system of claim 16 , wherein the finite state machine simultaneously searches for the plurality of N-grams in the string of byte by inputting the string of bytes into the finite state machine and tracing operations of the finite state machine over the string of bytes.

19. The system of claim 18 , wherein the counting module is further configured to count a number of occurrences of each of the N-grams using the output table while tracing the operations of the finite state machine.

20. The system of claim 15 , wherein the non-delimited language is Chinese.

Assignments (19)
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS RECORDED AT RF 046321/0393 Recorded Jun 16, 2025
From: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
To: SONICWALL US HOLDINGS INC.
Reel/Frame 071625/0887 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0414 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: SONICWALL US HOLDINGS INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 046321/0393 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Apr 2, 2018
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 045818/0566 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 041073 FRAME: 0001. ASSIGNOR(S) HEREBY CONFIRMS THE INTELLECTUAL PROPERTY ASSIGNMENT.. Recorded Apr 5, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS INC.
Reel/Frame 042168/0114 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 23, 2017
From: QUEST SOFTWARE INC.
To: SONICWALL US HOLDINGS, INC.
Reel/Frame 041073/0001 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
CONVERSION AND NAME CHANGE Recorded Dec 14, 2015
From: SONICWALL, INC.
To: SONICWALL L.L.C.
Reel/Frame 037288/0614 →
MERGER Recorded Dec 14, 2015
From: SONICWALL L.L.C.
To: DELL SOFTWARE INC.
Reel/Frame 037282/0658 →
MERGER Recorded Jul 26, 2013
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC. C/O THOMA BRAVO, LLC
Reel/Frame 030882/0199 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2013
From: RAFFILL, THOMAS E.; ZHU, SHUNHUI; YANOVSKY, ROMAN; YANOVSKY, BORIS; GMUENDER, JOHN
To: SONICWALL, INC.
Reel/Frame 030882/0165 →
CHANGE OF NAME Recorded Jul 26, 2013
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 030882/0218 →