IP Library Granted Patent US 8,086,441
Granted Patent B1
US 8,086,441 · App. 11/881,556 · Granted Dec 27, 2011

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,086,441
App. No.
11/881,556
Granted
Dec 27, 2011
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 (82)

1. A computer-implemented method comprising:

receiving, by a processor, a string of bytes representing non-segmented text written in a non-delimited language, wherein the non-segmented text has been classified into a predetermined category;

simultaneously searching, by the processor, for a plurality of N-grams in a single pass through the string of bytes;

collecting, by the processor, statistical information on occurrences of the plurality of N-grams in the string of bytes;

generating, by the processor, a model based on the statistical information, the model usable by a content filter to classify contents;

defining, by the processor, a plurality of states based on the plurality of N-grams;

constructing, by the processor, 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

mapping, by the processor, each of the plurality of states to a set of zero or more of the plurality of N-grams in an output table.

2. The method of claim 1 , wherein collecting the statistical information comprises:

counting, by the processor, a number of occurrences of each of the plurality of N-grams in the string of bytes.

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

inputting, by the processor, the string of bytes into the finite state machine; and

tracing, by the processor, operations of the finite state machine over the string of bytes.

4. The method of claim 3 , wherein collecting the statistical information comprises:

counting, by the processor, a number of occurrences of each of the N-grams using the output table while tracing the operations of the finite state machine.

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

6. A computer-implemented method comprising:

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

simultaneously searching, by the processor, for a plurality of N-grams in a single pass through the string of bytes;

collecting, by the processor, statistical information on occurrences of the plurality of N-grams in the string of bytes;

classifying, by the processor, the non-segmented text based on the statistical information;

blocking, by the processor, the non-segmented text if the non-segmented text is classified to be in a prohibited category;

causing, by the processor, a network access application to render the non-segmented text if the non-segmented text is content to be in an allowable category;

defining, by the processor, a plurality of states based on the plurality of N-grams;

constructing, by the processor, 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

mapping, by the processor, each of the plurality of states to a set of zero or more of the plurality of N-grams in an output table.

7. The method of claim 6 , wherein classifying the non-segmented text based on the statistical information comprises:

comparing, by the processor, the statistical information against a model generated from a previously classified document.

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

inputting, by the processor, the string of bytes into the finite state machine; and

tracing, by the processor, operations of the finite state machine over the string of bytes.

9. The method of claim 8 , wherein collecting the statistical information comprises:

counting, by the processor, a number of occurrences of each of the N-grams using the output table while tracing the operations of the finite state machine.

10. The method of claim 6 , wherein the non-delimited language is Japanese.

11. A non-transitory machine-accessible medium that provides instructions that, if executed by a processor, will cause the processor to perform operations comprising:

receiving a string of bytes representing non-segmented text written in a non-delimited language, wherein the non-segmented text has been classified into a predetermined category;

simultaneously searching for a plurality of N-grams in a single pass through the string of bytes;

collecting statistical information on occurrences of the plurality of N-grams in the string of bytes;

generating a model based on the statistical information, the model usable by a content filter to classify contents,

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

constructing 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

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

12. The non-transitory machine-accessible medium of claim 11 , wherein collecting the statistical information comprises:

counting a number of occurrences of each of the plurality of N-grams in the string of bytes.

13. The non-transitory machine-accessible medium of claim 11 , 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.

14. The non-transitory machine-accessible medium of claim 13 , 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.

15. A non-transitory machine-accessible medium that provides instructions that, if executed by a processor, will cause the processor to perform operations comprising:

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 incoming string of bytes;

collecting statistical information on occurrences of the plurality of N-grams in the string of bytes;

classifying the non-segmented text based on the statistical information;

blocking the non-segmented text if the non-segmented text is classified to be in a prohibited category;

causing a network access application to render the non-segmented text if the non-segmented text is classified to be in an allowable category;

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

constructing 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

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

16. The non-transitory machine-accessible medium of claim 15 , wherein classifying the non-segmented text based on the statistical information comprises:

comparing the statistical information against a model generated from a previously classified document.

17. The non-transitory machine-accessible medium of claim 15 , 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.

18. The non-transitory machine-accessible medium of claim 17 , 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.

19. An apparatus comprising:

a finite state machine having a plurality of states logically coupled to each other via one or more paths, the plurality of states being mapped to a plurality of N-grams in an output table, wherein the finite state machine is operable to simultaneously search for the plurality of N-grams through a string of bytes in a single pass, wherein the string of bytes represents non-segmented text written in a non-delimited language;

a counting module coupled to the finite state machine to count a number of occurrences of each of the plurality of N-grams in the string of bytes while tracing operations of the finite state machine over the string of bytes; and

a model generator coupled to the counting module to generate a model based on the number of occurrences of each of the plurality of N-grams, the model usable by a content filter to classify contents.

20. The apparatus of claim 19 , further comprising:

a repository coupled to the model generator to store the model.

21. An apparatus comprising:

a finite state machine having a plurality of states logically coupled to each other via one or more paths, the plurality of states being mapped to a plurality of N-grams in an output table, wherein the finite state machine is operable to simultaneously search for the plurality of N-grams through a string of bytes in a single pass, wherein the string of bytes represents non-segmented text written in a non-delimited language;

a counting module coupled to the finite state machine to count a number of occurrences of each of the plurality of N-grams in the string of bytes while tracing operations of the finite state machine over the string of bytes; and

a classifying engine coupled to the counting module to classify the non-segmented text based on the number of occurrences of each of the plurality of N-grams, to block the string of bytes and to generate an error message if the non-segmented text is classified to be in a prohibited category, and to cause a display device to render the non-segmented text if the non-segmented text is classified to be in an allowable category.

22. The apparatus of claim 21 , wherein the classifying engine is operable to compare the number of occurrences of each of the plurality of N-grams against corresponding information in a first model to determine if the non-segmented text is likely to be within the prohibited category.

23. The apparatus of claim 21 , wherein the classifying engine is operable to compare the number of occurrences of each of the plurality of N-grams against corresponding information in a second model to determine if the non-segmented text is likely to be within the allowable category.

24. A system comprising the apparatus of claim 21 , further comprising:

a client machine coupled to the apparatus, wherein the client machine comprises the display device.

25. The system of claim 24 , further comprising:

a repository coupled to the apparatus, to store one or more models for classifying contents.

Assignments (23)
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 →
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 →
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 →
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 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED ON REEL/FRAME 024823/0280 Recorded May 8, 2012
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; SONICWALL, INC.
Reel/Frame 028177/0126 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORDED ON REEL/FRAME 024776/0337 Recorded May 8, 2012
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; SONICWALL, INC.
Reel/Frame 028177/0115 →
SECURITY AGREEMENT Recorded Aug 3, 2010
From: AVENTAIL LLC; SONICWALL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 024776/0337 →
PATENT SECURITY AGREEMENT (SECOND LIEN) Recorded Aug 3, 2010
From: AVENTAIL LLC; SONICWALL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 024823/0280 →
MERGER Recorded Jul 28, 2010
From: SONICWALL, INC.
To: PSM MERGER SUB (DELAWARE), INC.
Reel/Frame 024755/0083 →
CHANGE OF NAME Recorded Jul 28, 2010
From: PSM MERGER SUB (DELAWARE), INC.
To: SONICWALL, INC.
Reel/Frame 024755/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2007
From: RAFFILL, THOMAS E.; ZHU, SHUNHUI; YANOVSKY, ROMAN; YANOVSKY, BORIS; GMUENDER, JOHN
To: SONICWALL, INC.
Reel/Frame 020161/0109 →