mihanentalpo / fast-fuzzy-search
Fast fuzzy search in an array of strings for the most similiar ones
Installs: 24 917
Dependents: 4
Suggesters: 0
Security: 0
Stars: 21
Watchers: 5
Forks: 8
Open Issues: 1
Requires
- php: ^5.3.5 || ^7.0
README
FastFuzzySearch aimed to search an array of words for the most similiar to the specified one
The used algorythm is much faster than using levenstein distance, or similiar_text functions.
Usage:
require_once("./FastFuzzySearch.php"); //Get words array: (it's english names, starting from A,B,C) $words = array( 'Abbott', 'Abe', 'Addison', 'Adrian', 'Aiken', 'Ainsley', 'Al', 'Alan', 'Alaric', 'Alban', 'Albert', 'Albion', 'Aldrich', 'Alec', 'Alex', 'Alexander', 'Alexis', 'Alf', 'Alfie', 'Alfred', 'Alger', 'Algernon', 'Alick', 'Allan', 'Allen', 'Alton', 'Alvin', 'Ambrose', 'Andrew', 'Andy', 'Anthony', 'Archer', 'Armstrong', 'Arnold', 'Ashley', 'Aston', 'Atwater', 'Aubrey', 'Austin', 'Avery', 'Bailey', 'Baldwin', 'Barclay', 'Barrett', 'Bartholomew', 'Barton', 'Basil', 'Baxter', 'Baz', 'Benedict', 'Benjamin', 'Bennett', 'Benson', 'Bentley', 'Berkley', 'Bernard', 'Bert', 'Bill', 'Blake', 'Bob', 'Bobby', 'Bond', 'Brad', 'Bradley', 'Brent', 'Bret', 'Brewster', 'Brian', 'Brigham', 'Brooke', 'Bruce', 'Bruno', 'Bryant', 'Buck', 'Bud', 'Burgess', 'Burton', 'Byron', 'Cade', 'Caesar', 'Caldwell', 'Calvert', 'Calvin', 'Carl', 'Carlton', 'Carter', 'Carver', 'Cary', 'Casey', 'Cassian', 'Cecil', 'Cedric', 'Chad', 'Chandler', 'Chapman', 'Charles', 'Charlie', 'Charlton', 'Chase', 'Chester', 'Chris', 'Christian', 'Christopher', 'Chuck', 'Clarence', 'Claude', 'Clay', 'Clayton', 'Clement', 'Cliff', 'Clifford', 'Clifton', 'Clive', 'Clyde', 'Cole', 'Coleman', 'Colin', 'Conrad', 'Constant', 'Conway', 'Corwin', 'Courtney', 'Craig', 'Crispin', 'Crosby', 'Curtis', 'Cuthbert', 'Cyril' ); //Create FastFuzzySearch object: $ffs = new FastFuzzySearch($words); //Lets pretend, this is user's input: $input = "charter"; //Lets get three most similiar english names: $results = $ffs->find($input, 3); //End output it: print_r($results);
Results would be:
Array
(
[0] => Array
(
[word] => carter
[percent] => 0.75
)
[1] => Array
(
[word] => chad
[percent] => 0.33333333333333
)
[2] => Array
(
[word] => charlie
[percent] => 0.26666666666667
)
)